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

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

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

revision 1.2 by jmc, Wed Apr 7 23:40:34 2004 UTC revision 1.14 by dimitri, Fri May 23 09:56:25 2008 UTC
# Line 2  C $Header$ Line 2  C $Header$
2  C $Name$  C $Name$
3    
4  #include "THSICE_OPTIONS.h"  #include "THSICE_OPTIONS.h"
5    #ifdef ALLOW_AIM
6    # include "AIM_OPTIONS.h"
7    #endif
8    
9  CBOP  CBOP
10  C     !ROUTINE: THSICE_INI_VARS  C     !ROUTINE: THSICE_INI_VARS
# Line 22  C     === Global variables === Line 25  C     === Global variables ===
25  #include "SIZE.h"  #include "SIZE.h"
26  #include "EEPARAMS.h"  #include "EEPARAMS.h"
27  #include "PARAMS.h"  #include "PARAMS.h"
28  #include "GRID.h"  #include "FFIELDS.h"
29  c #include "DYNVARS.h"  #include "DYNVARS.h"
30  #include "THSICE_PARAMS.h"  #include "THSICE_PARAMS.h"
31  #include "THSICE_VARS.h"  #include "THSICE_VARS.h"
32    #ifdef ALLOW_AIM
33    # include "AIM_FFIELDS.h"
34    #endif
35    
36  C     !INPUT/OUTPUT PARAMETERS:  C     !INPUT/OUTPUT PARAMETERS:
37  C     == Routine arguments ==  C     == Routine arguments ==
38  C     myThid -  Number of this instance of INI_RBCS  C     myThid :: My Thread Id. number
39        INTEGER myThid        INTEGER myThid
40  CEOP  CEOP
41    
# Line 38  C     == Local variables == Line 44  C     == Local variables ==
44  C     bi,bj  :: Loop counters  C     bi,bj  :: Loop counters
45  C     i,j    :: Loop counters  C     i,j    :: Loop counters
46        INTEGER bi, bj        INTEGER bi, bj
47        INTEGER I, J        INTEGER i, j
48        INTEGER prec        INTEGER prec
49        CHARACTER*(MAX_LEN_FNAM) fn  c     CHARACTER*(MAX_LEN_FNAM) fn
50        _RL v2Loc        _RL v2Loc
51    
52    
53  c     set up ice arrays to zero if starting ice  c     set up ice arrays to zero if starting ice
54          DO bj = myByLo(myThid), myByHi(myThid)        DO bj = myByLo(myThid), myByHi(myThid)
55           DO bi = myBxLo(myThid), myBxHi(myThid)          DO bi = myBxLo(myThid), myBxHi(myThid)
56  C-        state variables :  C-        state variables :
57            DO j=1-Oly,sNy+Oly            DO j=1-OLy,sNy+OLy
58             DO i=1-Olx,sNx+Olx             DO i=1-OLx,sNx+OLx
59              iceMask(i,j,bi,bj)  = 0. _d 0              iceMask(i,j,bi,bj)  = 0. _d 0
60              iceHeight(i,j,bi,bj)= 0. _d 0              iceHeight(i,j,bi,bj)= 0. _d 0
61              snowHeight(i,j,bi,bj)=0. _d 0              snowHeight(i,j,bi,bj)=0. _d 0
# Line 62  C-        state variables : Line 68  C-        state variables :
68             ENDDO             ENDDO
69            ENDDO            ENDDO
70  C-        fluxes :  C-        fluxes :
71            DO j=1-Oly,sNy+Oly            DO j=1-OLy,sNy+OLy
72             DO i=1-Olx,sNx+Olx             DO i=1-OLx,sNx+OLx
73              sHeating(i,j,bi,bj) = 0. _d 0              sHeating(i,j,bi,bj) = 0. _d 0
74              flxCndBt(i,j,bi,bj) = 0. _d 0              flxCndBt(i,j,bi,bj) = 0. _d 0
75              snowPrc(i,j,bi,bj)  = 0. _d 0              snowPrc(i,j,bi,bj)  = 0. _d 0
76  #ifdef COUPLE_MODEL              siceAlb(i,j,bi,bj)  = 0. _d 0
77              dFdT(i,j,bi,bj)     = 0. _d 0              icFlxSW (i,j,bi,bj) = 0. _d 0
78  #endif              icFlxAtm(i,j,bi,bj) = 0. _d 0
79                icFrwAtm(i,j,bi,bj) = 0. _d 0
80    C-        needed when using advection/diffusion:
81                oceFWfx(i,j,bi,bj)  = 0. _d 0
82                oceSflx(i,j,bi,bj)  = 0. _d 0
83                oceQnet(i,j,bi,bj)  = 0. _d 0
84             ENDDO             ENDDO
85            ENDDO            ENDDO
86  C-        oceanic mixed layer state :  C-        oceanic mixed layer state :
87            v2Loc = vMxL_default*vMxL_default            v2Loc = vMxL_default*vMxL_default
88            DO j=1-Oly,sNy+Oly            DO j=1-OLy,sNy+OLy
89             DO i=1-Olx,sNx+Olx             DO i=1-OLx,sNx+OLx
90               hOceMxL(i,j,bi,bj) = hMxL_default               hOceMxL(i,j,bi,bj) = hMxL_default
91               tOceMxL(i,j,bi,bj) = 0. _d 0               tOceMxL(i,j,bi,bj) = 0. _d 0
92               sOceMxL(i,j,bi,bj) = sMxL_default               sOceMxL(i,j,bi,bj) = sMxL_default
93               v2ocMxL(i,j,bi,bj) = v2Loc               v2ocMxL(i,j,bi,bj) = v2Loc
94             ENDDO             ENDDO
95            ENDDO            ENDDO
96           ENDDO  #ifdef ALLOW_AIM
97              IF ( useAIM ) THEN
98    C-        Mask mixed layer depth : depth is used in thsice slab_ocean
99    C         and this mask is used in thsice_advdiff and if coupled
100               DO j=1-OLy,sNy+OLy
101                DO i=1-OLx,sNx+OLx
102                 IF ( aim_landFr(i,j,bi,bj).EQ.1. _d 0 )
103         &       hOceMxL(i,j,bi,bj) = 0.
104                ENDDO
105               ENDDO
106              ENDIF
107    #endif /* ALLOW_AIM */
108          ENDDO          ENDDO
109          ENDDO
110    
111    C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
112    
113        IF ( startIceModel.LE.0 .AND. nIter0.NE.0 ) THEN        IF ( startIceModel.LE.0 .AND. nIter0.NE.0 ) THEN
114  C--     Read ice pickup fields  C--     Read ice pickup fields
# Line 91  C--     Read ice pickup fields Line 116  C--     Read ice pickup fields
116          prec=precFloat64          prec=precFloat64
117          CALL THSICE_READ_PICKUP( prec, nIter0, myThid )          CALL THSICE_READ_PICKUP( prec, nIter0, myThid )
118    
119          ELSE
120    C--     Read initial conditions:
121            _BEGIN_MASTER( myThid )
122            IF ( thSIceThick_InitFile .NE. ' ' ) THEN
123             CALL READ_REC_XY_RL(thSIceThick_InitFile,iceHeight,1,0,myThid)
124            ENDIF
125            IF ( thSIceFract_InitFile .NE. ' ' ) THEN
126             CALL READ_REC_XY_RL(thSIceFract_InitFile,iceMask,1,0,myThid)
127            ELSE
128    C     default to 100% ice concentration when thickness is non-zero
129             DO bj = myByLo(myThid), myByHi(myThid)
130              DO bi = myBxLo(myThid), myBxHi(myThid)
131               DO j=1-OLy,sNy+OLy
132                DO i=1-OLx,sNx+OLx
133                 IF (iceHeight(i,j,bi,bj) .NE. 0. _d 0)
134         &            iceMask(i,j,bi,bj) = 1. _d 0
135                ENDDO
136               ENDDO
137              ENDDO
138             ENDDO
139            ENDIF
140            IF ( thSIceSnowH_InitFile .NE. ' ' ) THEN
141             CALL READ_REC_XY_RL(thSIceSnowH_InitFile,snowHeight,1,0,myThid)
142            ELSE
143    C     default to <= 20 cm snow thickness where there is ice
144             DO bj = myByLo(myThid), myByHi(myThid)
145              DO bi = myBxLo(myThid), myBxHi(myThid)
146               DO j=1-OLy,sNy+OLy
147                DO i=1-OLx,sNx+OLx
148                 IF (iceMask(i,j,bi,bj) .NE. 0. _d 0)
149         &            snowHeight(i,j,bi,bj) = 0.2 _d 0
150                ENDDO
151               ENDDO
152              ENDDO
153             ENDDO
154            ENDIF
155            IF ( thSIceSnowA_InitFile .NE. ' ' ) THEN
156             CALL READ_REC_XY_RL(thSIceSnowA_InitFile,snowAge,1,0,myThid)
157            ELSE
158    C     default to 3 days for snow age
159             DO bj = myByLo(myThid), myByHi(myThid)
160              DO bi = myBxLo(myThid), myBxHi(myThid)
161               DO j=1-OLy,sNy+OLy
162                DO i=1-OLx,sNx+OLx
163                 IF (snowHeight(i,j,bi,bj) .NE. 0. _d 0)
164         &            snowAge(i,j,bi,bj) = 259200. _d 0
165                ENDDO
166               ENDDO
167              ENDDO
168             ENDDO
169            ENDIF
170            IF ( thSIceEnthp_InitFile .NE. ' ' ) THEN
171             CALL READ_REC_XY_RL(thSIceEnthp_InitFile,Qice1,1,0,myThid)
172             CALL READ_REC_XY_RL(thSIceEnthp_InitFile,Qice2,2,0,myThid)
173            ELSE
174    C     default to 3.4e5 J/kg for enthalpy where there is sea ice
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                 IF (iceMask(i,j,bi,bj) .NE. 0. _d 0) THEN
180                  Qice1(i,j,bi,bj) = 3.4 _d 5
181                  Qice2(i,j,bi,bj) = 3.4 _d 5
182                 ENDIF
183                ENDDO
184               ENDDO
185              ENDDO
186             ENDDO
187            ENDIF
188            IF ( thSIceTsurf_InitFile .NE. ' ' ) THEN
189             CALL READ_REC_XY_RS(thSIceTsurf_InitFile,Tsrf,1,0,myThid)
190            ENDIF
191            _END_MASTER(myThid)
192          ENDIF
193    
194          _EXCH_XY_R8(iceMask,myThid)          _EXCH_XY_R8(iceMask,myThid)
195          _EXCH_XY_R8(iceHeight, myThid)          _EXCH_XY_R8(iceHeight, myThid)
196          _EXCH_XY_R8(snowHeight,myThid)          _EXCH_XY_R8(snowHeight,myThid)
# Line 100  C--     Read ice pickup fields Line 200  C--     Read ice pickup fields
200          _EXCH_XY_R8(Qice1,  myThid)          _EXCH_XY_R8(Qice1,  myThid)
201          _EXCH_XY_R8(Qice2,  myThid)          _EXCH_XY_R8(Qice2,  myThid)
202          _EXCH_XY_R8(snowAge,myThid)          _EXCH_XY_R8(snowAge,myThid)
203  #ifdef COUPLE_MODEL  
204          _EXCH_XY_R8(dFdT, myThid)  C--     Initialise Sea-Ice Loading for SeaIce-Dynamics :
205  #endif          IF ( useSEAICE ) THEN
206        ENDIF            DO bj = myByLo(myThid), myByHi(myThid)
207               DO bi = myBxLo(myThid), myBxHi(myThid)
208                DO j=1-OLy,sNy+OLy
209                 DO i=1-OLx,sNx+OLx
210                   sIceLoad(i,j,bi,bj) = ( snowHeight(i,j,bi,bj)*rhos
211         &                               + iceHeight(i,j,bi,bj)*rhoi
212         &                               )*iceMask(i,j,bi,bj)
213                 ENDDO
214                ENDDO
215               ENDDO
216              ENDDO
217            ENDIF
218    
219  #endif /* ALLOW_THSICE */  #endif /* ALLOW_THSICE */
220    

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.14

  ViewVC Help
Powered by ViewVC 1.1.22