/[MITgcm]/MITgcm/pkg/seaice/seaice_init_varia.F
ViewVC logotype

Annotation of /MITgcm/pkg/seaice/seaice_init_varia.F

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


Revision 1.76 - (hide annotations) (download)
Thu Oct 25 19:43:44 2012 UTC (11 years, 7 months ago) by heimbach
Branch: MAIN
Changes since 1.75: +2 -1 lines
Add averaging variable

1 heimbach 1.76 C $Header: /u/gcmpack/MITgcm/pkg/seaice/seaice_init_varia.F,v 1.75 2012/10/22 21:14:06 heimbach Exp $
2 heimbach 1.1 C $Name: $
3    
4     #include "SEAICE_OPTIONS.h"
5 jmc 1.63 #ifdef ALLOW_OBCS
6     # include "OBCS_OPTIONS.h"
7     #endif
8 heimbach 1.1
9     CStartOfInterface
10     SUBROUTINE SEAICE_INIT_VARIA( myThid )
11 jmc 1.47 C *==========================================================*
12 heimbach 1.1 C | SUBROUTINE SEAICE_INIT_VARIA |
13     C | o Initialization of sea ice model. |
14 jmc 1.47 C *==========================================================*
15     C *==========================================================*
16 heimbach 1.1 IMPLICIT NONE
17 jmc 1.23
18 heimbach 1.1 C === Global variables ===
19     #include "SIZE.h"
20     #include "EEPARAMS.h"
21     #include "PARAMS.h"
22     #include "GRID.h"
23 dimitri 1.21 #include "DYNVARS.h"
24 jmc 1.50 #include "FFIELDS.h"
25 heimbach 1.54 #include "SEAICE_SIZE.h"
26 jmc 1.50 #include "SEAICE_PARAMS.h"
27 heimbach 1.1 #include "SEAICE.h"
28 heimbach 1.54 #include "SEAICE_TRACER.h"
29 jmc 1.50 #include "SEAICE_TAVE.h"
30 jmc 1.63 #ifdef OBCS_UVICE_OLD
31 jmc 1.57 # include "OBCS_GRID.h"
32 dimitri 1.24 #endif
33 heimbach 1.1
34     C === Routine arguments ===
35 jmc 1.62 C myThid :: Thread no. that called this routine.
36 heimbach 1.1 INTEGER myThid
37     CEndOfInterface
38 jmc 1.23
39 heimbach 1.1 C === Local variables ===
40 jmc 1.62 C i,j,k,bi,bj :: Loop counters
41 heimbach 1.1
42 jmc 1.55 INTEGER i, j, bi, bj
43 mlosch 1.8 _RL PSTAR
44 jmc 1.59 INTEGER kSurface
45 jmc 1.55 #ifdef SEAICE_CGRID
46 heimbach 1.1 _RS mask_uice
47 jmc 1.55 #endif
48 jmc 1.50 INTEGER k
49 gforget 1.60 #ifdef ALLOW_SITRACER
50     INTEGER iTr, jTh
51     #endif
52 jmc 1.63 #ifdef OBCS_UVICE_OLD
53 dimitri 1.53 INTEGER I_obc, J_obc
54     #endif /* ALLOW_OBCS */
55 heimbach 1.1
56 jmc 1.23 IF ( buoyancyRelation .EQ. 'OCEANICP' ) THEN
57 mlosch 1.44 kSurface = Nr
58 jmc 1.23 ELSE
59 mlosch 1.44 kSurface = 1
60 jmc 1.23 ENDIF
61 dimitri 1.11
62 jmc 1.23 C-- Initialise all variables in common blocks:
63 heimbach 1.1 DO bj=myByLo(myThid),myByHi(myThid)
64     DO bi=myBxLo(myThid),myBxHi(myThid)
65 mlosch 1.42 DO j=1-OLy,sNy+OLy
66     DO i=1-OLx,sNx+OLx
67 mlosch 1.43 HEFF(i,j,bi,bj)=0. _d 0
68     AREA(i,j,bi,bj)=0. _d 0
69 heimbach 1.75 CToM<<<
70     #ifdef SEAICE_ITD
71     DO k=1,nITD
72     AREAITD(i,j,k,bi,bj) =0. _d 0
73     HEFFITD(i,j,k,bi,bj) =0. _d 0
74     ENDDO
75     #endif
76     C>>>ToM
77 mlosch 1.43 UICE(i,j,bi,bj)=0. _d 0
78     VICE(i,j,bi,bj)=0. _d 0
79 heimbach 1.65 #ifdef SEAICE_ALLOW_FREEDRIFT
80 heimbach 1.64 uice_fd(i,j,bi,bj)=0. _d 0
81     vice_fd(i,j,bi,bj)=0. _d 0
82 heimbach 1.65 #endif
83 mlosch 1.43 C
84 mlosch 1.42 uIceNm1(i,j,bi,bj)=0. _d 0
85     vIceNm1(i,j,bi,bj)=0. _d 0
86 jmc 1.68 #ifdef SEAICE_GROWTH_LEGACY
87 mlosch 1.42 areaNm1(i,j,bi,bj)=0. _d 0
88     hEffNm1(i,j,bi,bj)=0. _d 0
89 jmc 1.68 #endif
90 jmc 1.23 ETA (i,j,bi,bj) = 0. _d 0
91     ZETA(i,j,bi,bj) = 0. _d 0
92     FORCEX(i,j,bi,bj) = 0. _d 0
93     FORCEY(i,j,bi,bj) = 0. _d 0
94 jmc 1.68 uIceC(i,j,bi,bj) = 0. _d 0
95     vIceC(i,j,bi,bj) = 0. _d 0
96 jmc 1.23 #ifdef SEAICE_CGRID
97     seaiceMassC(i,j,bi,bj)=0. _d 0
98     seaiceMassU(i,j,bi,bj)=0. _d 0
99     seaiceMassV(i,j,bi,bj)=0. _d 0
100     stressDivergenceX(i,j,bi,bj) = 0. _d 0
101     stressDivergenceY(i,j,bi,bj) = 0. _d 0
102 heimbach 1.39 # ifdef SEAICE_ALLOW_EVP
103 jmc 1.23 seaice_sigma1 (i,j,bi,bj) = 0. _d 0
104     seaice_sigma2 (i,j,bi,bj) = 0. _d 0
105     seaice_sigma12(i,j,bi,bj) = 0. _d 0
106     # endif /* SEAICE_ALLOW_EVP */
107     #else /* SEAICE_CGRID */
108     AMASS(i,j,bi,bj) = 0. _d 0
109     DAIRN(i,j,bi,bj) = 0. _d 0
110     WINDX(i,j,bi,bj) = 0. _d 0
111     WINDY(i,j,bi,bj) = 0. _d 0
112 dimitri 1.25 GWATX(i,j,bi,bj) = 0. _d 0
113     GWATY(i,j,bi,bj) = 0. _d 0
114 jmc 1.23 #endif /* SEAICE_CGRID */
115     DWATN(i,j,bi,bj) = 0. _d 0
116     PRESS0(i,j,bi,bj) = 0. _d 0
117     FORCEX0(i,j,bi,bj)= 0. _d 0
118     FORCEY0(i,j,bi,bj)= 0. _d 0
119     ZMAX(i,j,bi,bj) = 0. _d 0
120     ZMIN(i,j,bi,bj) = 0. _d 0
121     HSNOW(i,j,bi,bj) = 0. _d 0
122 heimbach 1.75 CToM<<<
123     #ifdef SEAICE_ITD
124     DO k=1,nITD
125     HSNOWITD(i,j,k,bi,bj)=0. _d 0
126     ENDDO
127     #endif
128     C>>>ToM
129 ifenty 1.56 #ifdef SEAICE_VARIABLE_SALINITY
130 jmc 1.23 HSALT(i,j,bi,bj) = 0. _d 0
131     #endif
132 gforget 1.60 #ifdef ALLOW_SITRACER
133     DO iTr = 1, SItrMaxNum
134     SItracer(i,j,bi,bj,iTr) = 0. _d 0
135     SItrBucket(i,j,bi,bj,iTr) = 0. _d 0
136     c "ice concentration" tracer that should remain .EQ.1.
137     if (SItrName(iTr).EQ.'one') SItracer(i,j,bi,bj,iTr)=1. _d 0
138     ENDDO
139     DO jTh = 1, 5
140     SItrHEFF (i,j,bi,bj,jTh) = 0. _d 0
141     ENDDO
142 gforget 1.61 DO jTh = 1, 3
143     SItrAREA (i,j,bi,bj,jTh) = 0. _d 0
144     ENDDO
145 gforget 1.60 #endif
146 jmc 1.23 TICE(i,j,bi,bj) = 0. _d 0
147 gforget 1.70 DO k=1,MULTDIM
148     TICES(i,j,k,bi,bj)=0. _d 0
149     ENDDO
150 jmc 1.23 TAUX(i,j,bi,bj) = 0. _d 0
151     TAUY(i,j,bi,bj) = 0. _d 0
152     #ifdef ALLOW_SEAICE_COST_EXPORT
153     uHeffExportCell(i,j,bi,bj) = 0. _d 0
154     vHeffExportCell(i,j,bi,bj) = 0. _d 0
155 heimbach 1.76 icevolMeanCell(i,j,bi,bj) = 0. _d 0
156 dimitri 1.18 #endif
157 heimbach 1.32 saltWtrIce(i,j,bi,bj) = 0. _d 0
158     frWtrIce(i,j,bi,bj) = 0. _d 0
159 heimbach 1.72 #if (defined (ALLOW_MEAN_SFLUX_COST_CONTRIBUTION) || defined (ALLOW_SSH_GLOBMEAN_COST_CONTRIBUTION))
160 heimbach 1.49 frWtrAtm(i,j,bi,bj) = 0. _d 0
161 heimbach 1.72 AREAforAtmFW(i,j,bi,bj)=0. _d 0
162 heimbach 1.49 #endif
163 heimbach 1.1 ENDDO
164     ENDDO
165     ENDDO
166     ENDDO
167    
168 jmc 1.50 #ifdef ALLOW_TIMEAVE
169     C Initialize averages to zero
170     DO bj = myByLo(myThid), myByHi(myThid)
171     DO bi = myBxLo(myThid), myBxHi(myThid)
172     CALL TIMEAVE_RESET( FUtave , 1, bi, bj, myThid )
173     CALL TIMEAVE_RESET( FVtave , 1, bi, bj, myThid )
174     CALL TIMEAVE_RESET( EmPmRtave, 1, bi, bj, myThid )
175     CALL TIMEAVE_RESET( QNETtave , 1, bi, bj, myThid )
176     CALL TIMEAVE_RESET( QSWtave , 1, bi, bj, myThid )
177     CALL TIMEAVE_RESET( UICEtave , 1, bi, bj, myThid )
178     CALL TIMEAVE_RESET( VICEtave , 1, bi, bj, myThid )
179     CALL TIMEAVE_RESET( HEFFtave , 1, bi, bj, myThid )
180     CALL TIMEAVE_RESET( AREAtave , 1, bi, bj, myThid )
181     SEAICE_timeAve(bi,bj) = ZERO
182     ENDDO
183     ENDDO
184     #endif /* ALLOW_TIMEAVE */
185    
186 mlosch 1.40 C-- Initialize (variable) grid info. As long as we allow masking of
187     C-- velocities outside of ice covered areas (in seaice_dynsolver)
188     C-- we need to re-initialize seaiceMaskU/V here for TAF/TAMC
189 mlosch 1.66 #ifdef SEAICE_CGRID
190 heimbach 1.1 DO bj=myByLo(myThid),myByHi(myThid)
191     DO bi=myBxLo(myThid),myBxHi(myThid)
192 jmc 1.23 DO j=1-OLy+1,sNy+OLy
193     DO i=1-OLx+1,sNx+OLx
194     seaiceMaskU(i,j,bi,bj)= 0.0 _d 0
195     seaiceMaskV(i,j,bi,bj)= 0.0 _d 0
196     mask_uice=HEFFM(i,j,bi,bj)+HEFFM(i-1,j ,bi,bj)
197 heimbach 1.45 IF(mask_uice.GT.1.5 _d 0) seaiceMaskU(i,j,bi,bj)=1.0 _d 0
198 jmc 1.23 mask_uice=HEFFM(i,j,bi,bj)+HEFFM(i ,j-1,bi,bj)
199 heimbach 1.45 IF(mask_uice.GT.1.5 _d 0) seaiceMaskV(i,j,bi,bj)=1.0 _d 0
200 dimitri 1.22 ENDDO
201     ENDDO
202 mlosch 1.40 ENDDO
203     ENDDO
204 mlosch 1.66 #endif /* SEAICE_CGRID */
205 dimitri 1.11
206 mlosch 1.40 DO bj=myByLo(myThid),myByHi(myThid)
207     DO bi=myBxLo(myThid),myBxHi(myThid)
208 jmc 1.63 #ifdef OBCS_UVICE_OLD
209     #ifdef SEAICE_CGRID
210 dimitri 1.16 IF (useOBCS) THEN
211 dimitri 1.22 C-- If OBCS is turned on, close southern and western boundaries
212 jmc 1.67 DO i=1-OLx,sNx+OLx
213 dimitri 1.11 C Southern boundary
214 dimitri 1.53 J_obc = OB_Js(i,bi,bj)
215 jmc 1.73 IF ( J_obc.NE.OB_indexNone ) THEN
216 dimitri 1.53 seaiceMaskU(i,J_obc,bi,bj)= 0.0 _d 0
217     seaiceMaskV(i,J_obc,bi,bj)= 0.0 _d 0
218 dimitri 1.16 ENDIF
219     ENDDO
220 jmc 1.67 DO j=1-OLy,sNy+OLy
221 dimitri 1.11 C Western boundary
222 jmc 1.73 I_obc = OB_Iw(j,bi,bj)
223     IF ( I_obc.NE.OB_indexNone ) THEN
224 dimitri 1.53 seaiceMaskU(I_obc,j,bi,bj)= 0.0 _d 0
225     seaiceMaskV(I_obc,j,bi,bj)= 0.0 _d 0
226 dimitri 1.16 ENDIF
227     ENDDO
228     ENDIF
229 dimitri 1.11 #endif /* SEAICE_CGRID */
230 jmc 1.63 #endif /* OBCS_UVICE_OLD */
231 heimbach 1.1
232     DO j=1-OLy,sNy+OLy
233     DO i=1-OLx,sNx+OLx
234 jmc 1.23 TICE(i,j,bi,bj)=273.0 _d 0
235 heimbach 1.1 DO k=1,MULTDIM
236 jmc 1.23 TICES(i,j,k,bi,bj)=273.0 _d 0
237 heimbach 1.1 ENDDO
238     #ifndef SEAICE_CGRID
239 jmc 1.23 AMASS (i,j,bi,bj)=1000.0 _d 0
240 heimbach 1.1 #else
241 jmc 1.23 seaiceMassC(i,j,bi,bj)=1000.0 _d 0
242     seaiceMassU(i,j,bi,bj)=1000.0 _d 0
243     seaiceMassV(i,j,bi,bj)=1000.0 _d 0
244 heimbach 1.1 #endif
245     ENDDO
246     ENDDO
247    
248     ENDDO
249     ENDDO
250    
251     C-- Update overlap regions
252     #ifdef SEAICE_CGRID
253     CALL EXCH_UV_XY_RL(seaiceMaskU,seaiceMaskV,.FALSE.,myThid)
254     #else
255 jmc 1.67 _EXCH_XY_RS(UVM, myThid)
256 heimbach 1.1 #endif
257    
258     C-- Now lets look at all these beasts
259 jmc 1.59 IF ( debugLevel .GE. debLevC ) THEN
260 heimbach 1.1 CALL PLOT_FIELD_XYRL( HEFFM , 'Current HEFFM ' ,
261 jmc 1.59 & nIter0, myThid )
262 heimbach 1.1 #ifdef SEAICE_CGRID
263     CALL PLOT_FIELD_XYRL( seaiceMaskU, 'Current seaiceMaskU',
264 jmc 1.59 & nIter0, myThid )
265 heimbach 1.1 CALL PLOT_FIELD_XYRL( seaiceMaskV, 'Current seaiceMaskV',
266 jmc 1.59 & nIter0, myThid )
267 heimbach 1.1 #else
268 jmc 1.67 CALL PLOT_FIELD_XYRS( UVM , 'Current UVM ' ,
269 jmc 1.59 & nIter0, myThid )
270 heimbach 1.1 #endif
271     ENDIF
272    
273     C-- Set model variables to initial/restart conditions
274 mlosch 1.26 IF ( .NOT. ( startTime .EQ. baseTime .AND. nIter0 .EQ. 0
275     & .AND. pickupSuff .EQ. ' ') ) THEN
276 heimbach 1.1
277     CALL SEAICE_READ_PICKUP ( myThid )
278    
279     ELSE
280    
281     DO bj=myByLo(myThid),myByHi(myThid)
282     DO bi=myBxLo(myThid),myBxHi(myThid)
283     DO j=1-OLy,sNy+OLy
284     DO i=1-OLx,sNx+OLx
285 mlosch 1.43 HEFF(i,j,bi,bj)=SEAICE_initialHEFF*HEFFM(i,j,bi,bj)
286     UICE(i,j,bi,bj)=ZERO
287     VICE(i,j,bi,bj)=ZERO
288 heimbach 1.1 ENDDO
289     ENDDO
290     ENDDO
291     ENDDO
292    
293 jmc 1.62 C-- Read initial sea-ice velocity from file (if available)
294     IF ( uIceFile .NE. ' ' )
295     & CALL READ_FLD_XY_RL( uIceFile, ' ', uIce, 0, myThid )
296     IF ( vIceFile .NE. ' ' )
297     & CALL READ_FLD_XY_RL( vIceFile, ' ', vIce, 0, myThid )
298     IF ( uIceFile .NE. ' ' .OR. vIceFile .NE. ' ' ) THEN
299     #ifdef SEAICE_CGRID
300     DO bj=myByLo(myThid),myByHi(myThid)
301     DO bi=myBxLo(myThid),myBxHi(myThid)
302     DO j=1-OLy,sNy+OLy
303     DO i=1-OLx,sNx+OLx
304     uIce(i,j,bi,bj) = uIce(i,j,bi,bj)*seaiceMaskU(i,j,bi,bj)
305     vIce(i,j,bi,bj) = vIce(i,j,bi,bj)*seaiceMaskV(i,j,bi,bj)
306     ENDDO
307     ENDDO
308     ENDDO
309     ENDDO
310     #endif /* SEAICE_CGRID */
311     CALL EXCH_UV_XY_RL( uIce, vIce, .TRUE., myThid )
312     ENDIF
313    
314 heimbach 1.1 C-- Read initial sea-ice thickness from file if available.
315     IF ( HeffFile .NE. ' ' ) THEN
316 mlosch 1.43 CALL READ_FLD_XY_RL( HeffFile, ' ', HEFF, 0, myThid )
317     _EXCH_XY_RL(HEFF,myThid)
318 heimbach 1.1 DO bj=myByLo(myThid),myByHi(myThid)
319     DO bi=myBxLo(myThid),myBxHi(myThid)
320     DO j=1-OLy,sNy+OLy
321     DO i=1-OLx,sNx+OLx
322 mlosch 1.43 HEFF(i,j,bi,bj) = MAX(HEFF(i,j,bi,bj),ZERO)
323 heimbach 1.1 ENDDO
324     ENDDO
325     ENDDO
326     ENDDO
327     ENDIF
328    
329     DO bj=myByLo(myThid),myByHi(myThid)
330     DO bi=myBxLo(myThid),myBxHi(myThid)
331     DO j=1-OLy,sNy+OLy
332     DO i=1-OLx,sNx+OLx
333 mlosch 1.43 IF(HEFF(i,j,bi,bj).GT.ZERO) AREA(i,j,bi,bj)=ONE
334 heimbach 1.1 ENDDO
335     ENDDO
336     ENDDO
337     ENDDO
338 jmc 1.23
339 dimitri 1.27 C-- Read initial sea-ice area from file if available.
340 mlosch 1.7 IF ( AreaFile .NE. ' ' ) THEN
341 mlosch 1.43 CALL READ_FLD_XY_RL( AreaFile, ' ', AREA, 0, myThid )
342     _EXCH_XY_RL(AREA,myThid)
343 mlosch 1.7 DO bj=myByLo(myThid),myByHi(myThid)
344     DO bi=myBxLo(myThid),myBxHi(myThid)
345     DO j=1-OLy,sNy+OLy
346     DO i=1-OLx,sNx+OLx
347 mlosch 1.43 AREA(i,j,bi,bj) = MAX(AREA(i,j,bi,bj),ZERO)
348     AREA(i,j,bi,bj) = MIN(AREA(i,j,bi,bj),ONE)
349     IF ( AREA(i,j,bi,bj) .LE. ZERO ) HEFF(i,j,bi,bj) = ZERO
350     IF ( HEFF(i,j,bi,bj) .LE. ZERO ) AREA(i,j,bi,bj) = ZERO
351 mlosch 1.7 ENDDO
352     ENDDO
353     ENDDO
354     ENDDO
355     ENDIF
356    
357     DO bj=myByLo(myThid),myByHi(myThid)
358     DO bi=myBxLo(myThid),myBxHi(myThid)
359     DO j=1-OLy,sNy+OLy
360     DO i=1-OLx,sNx+OLx
361 jmc 1.47 HSNOW(i,j,bi,bj) = 0.2 _d 0 * AREA(i,j,bi,bj)
362 mlosch 1.7 ENDDO
363     ENDDO
364     ENDDO
365     ENDDO
366 dimitri 1.9
367     C-- Read initial snow thickness from file if available.
368     IF ( HsnowFile .NE. ' ' ) THEN
369 mlosch 1.43 CALL READ_FLD_XY_RL( HsnowFile, ' ', HSNOW, 0, myThid )
370     _EXCH_XY_RL(HSNOW,myThid)
371 dimitri 1.9 DO bj=myByLo(myThid),myByHi(myThid)
372     DO bi=myBxLo(myThid),myBxHi(myThid)
373     DO j=1-OLy,sNy+OLy
374     DO i=1-OLx,sNx+OLx
375 mlosch 1.43 HSNOW(i,j,bi,bj) = MAX(HSNOW(i,j,bi,bj),ZERO)
376 dimitri 1.9 ENDDO
377     ENDDO
378     ENDDO
379     ENDDO
380     ENDIF
381 dimitri 1.18
382 heimbach 1.75 #ifdef SEAICE_ITD
383     DO bj=myByLo(myThid),myByHi(myThid)
384     DO bi=myBxLo(myThid),myBxHi(myThid)
385     DO j=1-OLy,sNy+OLy
386     DO i=1-OLx,sNx+OLx
387     AREAITD(I,J,1,bi,bj) =AREA(I,J,bi,bj)
388     HEFFITD(I,J,1,bi,bj) =HEFF(I,J,bi,bj)
389     HSNOWITD(I,J,1,bi,bj)=HSNOW(I,J,bi,bj)
390     ENDDO
391     ENDDO
392     ENDDO
393     ENDDO
394     C DO bj=myByLo(myThid),myByHi(myThid)
395     C DO bi=myBxLo(myThid),myBxHi(myThid)
396     C CALL SEAICE_ITD_REDIST(bi, bj, myTime, myIter, myThid)
397     C ENDDO
398     C ENDDO
399     C it is sufficient to have first call of SEAICE_ITD_REDIST before SEAICE_GROWTH
400     #endif
401    
402 ifenty 1.56 #ifdef SEAICE_VARIABLE_SALINITY
403 dimitri 1.20 DO bj=myByLo(myThid),myByHi(myThid)
404     DO bi=myBxLo(myThid),myBxHi(myThid)
405 jmc 1.23 DO j=1-OLy,sNy+OLy
406     DO i=1-OLx,sNx+OLx
407 mlosch 1.44 HSALT(i,j,bi,bj)=HEFF(i,j,bi,bj)*salt(i,j,kSurface,bi,bj)*
408 jmc 1.71 & SEAICE_rhoIce*SEAICE_saltFrac
409     cif & ICE2WATR*rhoConstFresh*SEAICE_saltFrac
410 ifenty 1.56
411 dimitri 1.20 ENDDO
412     ENDDO
413     ENDDO
414     ENDDO
415    
416 dimitri 1.18 C-- Read initial sea ice salinity from file if available.
417     IF ( HsaltFile .NE. ' ' ) THEN
418 mlosch 1.43 CALL READ_FLD_XY_RL( HsaltFile, ' ', HSALT, 0, myThid )
419     _EXCH_XY_RL(HSALT,myThid)
420 dimitri 1.18 ENDIF
421 ifenty 1.56 #endif /* SEAICE_VARIABLE_SALINITY */
422 jmc 1.23
423 gforget 1.69 #ifdef ALLOW_SITRACER
424 dimitri 1.33 C-- Read initial sea ice age from file if available.
425 gforget 1.69 DO iTr = 1, SItrMaxNum
426     IF ( SItrFile(iTr) .NE. ' ' ) THEN
427     CALL READ_FLD_XY_RL( siTrFile(iTr), ' ',
428     & SItracer(1-OLx,1-OLy,1,1,iTr), 0, myThid )
429     _EXCH_XY_RL(SItracer(1-OLx,1-OLy,1,1,iTr),myThid)
430 heimbach 1.54 ENDIF
431     ENDDO
432 gforget 1.69 #endif /* ALLOW_SITRACER */
433 dimitri 1.33
434 heimbach 1.1 ENDIF
435    
436 heimbach 1.72 #if (defined (ALLOW_MEAN_SFLUX_COST_CONTRIBUTION) || defined (ALLOW_SSH_GLOBMEAN_COST_CONTRIBUTION))
437     DO bj=myByLo(myThid),myByHi(myThid)
438     DO bi=myBxLo(myThid),myBxHi(myThid)
439     DO j=1-OLy,sNy+OLy
440     DO i=1-OLx,sNx+OLx
441     AREAforAtmFW(i,j,bi,bj) = AREA(i,j,bi,bj)
442     ENDDO
443     ENDDO
444     ENDDO
445     ENDDO
446     #endif
447    
448 jmc 1.58 #ifdef ALLOW_OBCS
449 jmc 1.52 C-- In case we use scheme with a large stencil that extends into overlap:
450 jmc 1.58 C no longer needed with the right masking in advection & diffusion S/R.
451     c IF ( useOBCS ) THEN
452     c DO bj=myByLo(myThid),myByHi(myThid)
453     c DO bi=myBxLo(myThid),myBxHi(myThid)
454 jmc 1.67 c CALL OBCS_COPY_TRACER( HEFF(1-OLx,1-OLy,bi,bj),
455 jmc 1.58 c I 1, bi, bj, myThid )
456 jmc 1.67 c CALL OBCS_COPY_TRACER( AREA(1-OLx,1-OLy,bi,bj),
457 jmc 1.58 c I 1, bi, bj, myThid )
458 jmc 1.67 c CALL OBCS_COPY_TRACER( HSNOW(1-OLx,1-OLy,bi,bj),
459 jmc 1.58 c I 1, bi, bj, myThid )
460 ifenty 1.56 #ifdef SEAICE_VARIABLE_SALINITY
461 jmc 1.67 c CALL OBCS_COPY_TRACER( HSALT(1-OLx,1-OLy,bi,bj),
462 jmc 1.58 c I 1, bi, bj, myThid )
463 jmc 1.52 #endif
464 jmc 1.58 c ENDDO
465     c ENDDO
466     c ENDIF
467 jmc 1.52 #endif /* ALLOW_OBCS */
468    
469 heimbach 1.1 C--- Complete initialization
470 mlosch 1.8 PSTAR = SEAICE_strength
471 heimbach 1.1 DO bj=myByLo(myThid),myByHi(myThid)
472     DO bi=myBxLo(myThid),myBxHi(myThid)
473     DO j=1-OLy,sNy+OLy
474     DO i=1-OLx,sNx+OLx
475 mlosch 1.48 ZETA(i,j,bi,bj) = HEFF(i,j,bi,bj)*(1.0 _d 11)
476     ETA(i,j,bi,bj) = ZETA(i,j,bi,bj)/SEAICE_eccen**2
477     PRESS0(i,j,bi,bj) = PSTAR*HEFF(i,j,bi,bj)
478 mlosch 1.43 & *EXP(-20.0 _d 0*(ONE-AREA(i,j,bi,bj)))
479 mlosch 1.48 ZMAX(I,J,bi,bj) = SEAICE_zetaMaxFac*PRESS0(I,J,bi,bj)
480     ZMIN(i,j,bi,bj) = SEAICE_zetaMin
481     PRESS0(i,j,bi,bj) = PRESS0(i,j,bi,bj)*HEFFM(i,j,bi,bj)
482 heimbach 1.1 ENDDO
483     ENDDO
484     IF ( useRealFreshWaterFlux .AND. .NOT.useThSIce ) THEN
485     DO j=1-OLy,sNy+OLy
486     DO i=1-OLx,sNx+OLx
487 mlosch 1.43 sIceLoad(i,j,bi,bj) = HEFF(i,j,bi,bj)*SEAICE_rhoIce
488 mlosch 1.36 & + HSNOW(i,j,bi,bj)*SEAICE_rhoSnow
489 jmc 1.23
490 heimbach 1.1 ENDDO
491     ENDDO
492     ENDIF
493     ENDDO
494     ENDDO
495    
496     RETURN
497     END

  ViewVC Help
Powered by ViewVC 1.1.22