/[MITgcm]/MITgcm/pkg/thsice/thsice_ini_vars.F
ViewVC logotype

Contents of /MITgcm/pkg/thsice/thsice_ini_vars.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.24 - (show annotations) (download)
Fri Mar 24 23:51:14 2017 UTC (7 years, 1 month ago) by jmc
Branch: MAIN
CVS Tags: checkpoint66g, checkpoint66f, checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, checkpoint66h, HEAD
Changes since 1.23: +2 -4 lines
use new S/R RW_GET_SUFFIX to get file suffix (according to "rwSuffixType")

1 C $Header: /u/gcmpack/MITgcm/pkg/thsice/thsice_ini_vars.F,v 1.23 2016/01/02 00:53:30 jmc Exp $
2 C $Name: $
3
4 #include "THSICE_OPTIONS.h"
5 #ifdef ALLOW_AIM
6 # include "AIM_OPTIONS.h"
7 #endif
8
9 CBOP
10 C !ROUTINE: THSICE_INI_VARS
11 C !INTERFACE:
12 SUBROUTINE THSICE_INI_VARS( myThid )
13
14 C !DESCRIPTION: \bv
15 C *==========================================================*
16 C | S/R THSICE_INI_VARS
17 C | o initialize THermo_SeaICE variables
18 C *==========================================================*
19 C \ev
20
21 C !USES:
22 IMPLICIT NONE
23
24 C === Global variables ===
25 #include "SIZE.h"
26 #include "EEPARAMS.h"
27 #include "PARAMS.h"
28 #include "FFIELDS.h"
29 #include "THSICE_PARAMS.h"
30 #include "THSICE_VARS.h"
31 #ifdef ALLOW_AIM
32 # include "AIM_FFIELDS.h"
33 #endif
34
35 C !INPUT/OUTPUT PARAMETERS:
36 C == Routine arguments ==
37 C myThid :: My Thread Id. number
38 INTEGER myThid
39 CEOP
40
41 #ifdef ALLOW_THSICE
42 C == Local variables ==
43 C bi,bj :: Loop counters
44 C i,j :: Loop counters
45 INTEGER bi, bj
46 INTEGER i, j
47 c CHARACTER*(MAX_LEN_FNAM) fn
48 _RL v2Loc
49 _RL Tf
50
51 c set up ice arrays to zero if starting ice
52 DO bj = myByLo(myThid), myByHi(myThid)
53 DO bi = myBxLo(myThid), myBxHi(myThid)
54 C- state variables :
55 DO j=1-OLy,sNy+OLy
56 DO i=1-OLx,sNx+OLx
57 iceMask(i,j,bi,bj) = 0. _d 0
58 iceHeight(i,j,bi,bj)= 0. _d 0
59 snowHeight(i,j,bi,bj)=0. _d 0
60 Tsrf(i,j,bi,bj) = 0. _d 0
61 Tice1(i,j,bi,bj) = 0. _d 0
62 Tice2(i,j,bi,bj) = 0. _d 0
63 Qice1(i,j,bi,bj) = 0. _d 0
64 Qice2(i,j,bi,bj) = 0. _d 0
65 snowAge(i,j,bi,bj) = 0. _d 0
66 ENDDO
67 ENDDO
68 C- fluxes :
69 DO j=1-OLy,sNy+OLy
70 DO i=1-OLx,sNx+OLx
71 sHeating(i,j,bi,bj) = 0. _d 0
72 flxCndBt(i,j,bi,bj) = 0. _d 0
73 siceAlb(i,j,bi,bj) = 0. _d 0
74 icFlxSW (i,j,bi,bj) = 0. _d 0
75 icFlxAtm(i,j,bi,bj) = 0. _d 0
76 icFrwAtm(i,j,bi,bj) = 0. _d 0
77 C- needed when using advection/diffusion:
78 oceFWfx(i,j,bi,bj) = 0. _d 0
79 oceSflx(i,j,bi,bj) = 0. _d 0
80 oceQnet(i,j,bi,bj) = 0. _d 0
81 ENDDO
82 ENDDO
83 C- oceanic mixed layer state :
84 v2Loc = vMxL_default*vMxL_default
85 DO j=1-OLy,sNy+OLy
86 DO i=1-OLx,sNx+OLx
87 hOceMxL(i,j,bi,bj) = hMxL_default
88 tOceMxL(i,j,bi,bj) = 0. _d 0
89 sOceMxL(i,j,bi,bj) = sMxL_default
90 v2ocMxL(i,j,bi,bj) = v2Loc
91 ENDDO
92 ENDDO
93 #ifdef ALLOW_AIM
94 IF ( useAIM ) THEN
95 C- Mask mixed layer depth : depth is used in thsice slab_ocean
96 C and this mask is used in thsice_advdiff and if coupled
97 DO j=1-OLy,sNy+OLy
98 DO i=1-OLx,sNx+OLx
99 IF ( aim_landFr(i,j,bi,bj).EQ.1. _d 0 )
100 & hOceMxL(i,j,bi,bj) = 0.
101 ENDDO
102 ENDDO
103 ENDIF
104 #endif /* ALLOW_AIM */
105 ENDDO
106 ENDDO
107 adjustFrW = 0. _d 0
108
109 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
110
111 #ifdef ALLOW_OCN_COMPON_INTERF
112 IF ( useCoupler .AND. thSIce_skipThermo ) RETURN
113 #endif /* ALLOW_OCN_COMPON_INTERF */
114
115 IF ( startIceModel.LE.0 .AND.
116 & ( nIter0.NE.0 .OR. pickupSuff.NE.' ' )
117 & ) THEN
118 C-- Read ice pickup fields
119 CALL THSICE_READ_PICKUP( nIter0, myThid )
120
121 ELSE
122 C-- Read initial conditions:
123 IF ( thSIceFract_InitFile .NE. ' ' ) THEN
124 CALL READ_REC_XY_RL(thSIceFract_InitFile,iceMask,1,0,myThid)
125 ENDIF
126 IF ( thSIceThick_InitFile .NE. ' ' ) THEN
127 CALL READ_REC_XY_RL(thSIceThick_InitFile,iceHeight,1,0,myThid)
128 ENDIF
129 IF ( thSIceSnowH_InitFile .NE. ' ' ) THEN
130 CALL READ_REC_XY_RL(thSIceSnowH_InitFile,snowHeight,1,0,myThid)
131 ENDIF
132 IF ( thSIceSnowA_InitFile .NE. ' ' ) THEN
133 CALL READ_REC_XY_RL(thSIceSnowA_InitFile,snowAge,1,0,myThid)
134 ENDIF
135 IF ( thSIceEnthp_InitFile .NE. ' ' ) THEN
136 CALL READ_REC_XY_RL(thSIceEnthp_InitFile,Qice1,1,0,myThid)
137 CALL READ_REC_XY_RL(thSIceEnthp_InitFile,Qice2,2,0,myThid)
138 ENDIF
139 IF ( thSIceTsurf_InitFile .NE. ' ' ) THEN
140 CALL READ_REC_XY_RL(thSIceTsurf_InitFile,Tsrf,1,0,myThid)
141 ENDIF
142 IF ( thSIceEnthp_InitFile .EQ. ' ' ) THEN
143 C- enthalpy of new ice in J/kg, taken from thsice_extend.F with Tf beeing
144 C the freezing Temp of seawater computed from a fixed salinity (31.5 psu)
145 C Tf = -mu_Tf*salinity = -1.70 deg C; Qice1 ~ 3.2e5; Qice2 ~ 3.4e5
146 Tf = -1.70 _d 0
147 DO bj = myByLo(myThid), myByHi(myThid)
148 DO bi = myBxLo(myThid), myBxHi(myThid)
149 DO j=1-OLy,sNy+OLy
150 DO i=1-OLx,sNx+OLx
151 IF (iceMask(i,j,bi,bj) .NE. 0. _d 0) THEN
152 Qice1(i,j,bi,bj) = -cpWater*Tmlt1
153 & + cpIce *(Tmlt1-Tf) + Lfresh*(1. _d 0-Tmlt1/Tf)
154 Qice2(i,j,bi,bj) = -cpIce *Tf + Lfresh
155 ENDIF
156 ENDDO
157 ENDDO
158 ENDDO
159 ENDDO
160 ENDIF
161 ENDIF
162
163 _EXCH_XY_RL(iceMask,myThid)
164 _EXCH_XY_RL(iceHeight, myThid)
165 _EXCH_XY_RL(snowHeight,myThid)
166 _EXCH_XY_RL(Tsrf, myThid)
167 _EXCH_XY_RL(Tice1, myThid)
168 _EXCH_XY_RL(Tice2, myThid)
169 _EXCH_XY_RL(Qice1, myThid)
170 _EXCH_XY_RL(Qice2, myThid)
171 _EXCH_XY_RL(snowAge,myThid)
172
173 C-- Initialise Sea-Ice Loading for SeaIce-Dynamics :
174 IF ( useSEAICE ) THEN
175 DO bj = myByLo(myThid), myByHi(myThid)
176 DO bi = myBxLo(myThid), myBxHi(myThid)
177 DO j=1-OLy,sNy+OLy
178 DO i=1-OLx,sNx+OLx
179 sIceLoad(i,j,bi,bj) = ( snowHeight(i,j,bi,bj)*rhos
180 & + iceHeight(i,j,bi,bj)*rhoi
181 & )*iceMask(i,j,bi,bj)
182 ENDDO
183 ENDDO
184 ENDDO
185 ENDDO
186 ENDIF
187
188 #endif /* ALLOW_THSICE */
189
190 RETURN
191 END

  ViewVC Help
Powered by ViewVC 1.1.22