/[MITgcm]/MITgcm_contrib/darwin2/pkg/darwin/darwin_fields_load.F
ViewVC logotype

Contents of /MITgcm_contrib/darwin2/pkg/darwin/darwin_fields_load.F

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


Revision 1.8 - (show annotations) (download)
Wed Dec 4 21:27:54 2013 UTC (11 years, 7 months ago) by jahn
Branch: MAIN
CVS Tags: ctrb_darwin2_ckpt65w_20160512, ctrb_darwin2_ckpt65j_20150225, ctrb_darwin2_ckpt66g_20170424, ctrb_darwin2_ckpt66k_20171025, ctrb_darwin2_ckpt66n_20180118, ctrb_darwin2_ckpt65v_20160409, ctrb_darwin2_ckpt65s_20160114, ctrb_darwin2_ckpt65_20140718, ctrb_darwin2_ckpt66d_20170214, ctrb_darwin2_ckpt64r_20131210, ctrb_darwin2_ckpt65m_20150615, ctrb_darwin2_ckpt65q_20151118, ctrb_darwin2_ckpt65o_20150914, ctrb_darwin2_ckpt65p_20151023, ctrb_darwin2_ckpt65e_20140929, ctrb_darwin2_ckpt64v_20140411, ctrb_darwin2_ckpt64z_20140711, ctrb_darwin2_ckpt65l_20150504, ctrb_darwin2_ckpt65z_20160929, ctrb_darwin2_ckpt65n_20150729, ctrb_darwin2_ckpt64y_20140622, ctrb_darwin2_ckpt65d_20140915, ctrb_darwin2_ckpt64t_20140202, ctrb_darwin2_ckpt66h_20170602, ctrb_darwin2_ckpt64s_20140105, ctrb_darwin2_ckpt64x_20140524, ctrb_darwin2_ckpt65x_20160612, ctrb_darwin2_ckpt66f_20170407, ctrb_darwin2_ckpt65g_20141120, ctrb_darwin2_ckpt65k_20150402, ctrb_darwin2_ckpt64w_20140502, ctrb_darwin2_ckpt66a_20161020, ctrb_darwin2_ckpt65f_20141014, ctrb_darwin2_ckpt66b_20161219, ctrb_darwin2_ckpt64u_20140308, ctrb_darwin2_ckpt65i_20150123, ctrb_darwin2_ckpt66j_20170815, ctrb_darwin2_ckpt65y_20160801, ctrb_darwin2_ckpt66c_20170121, ctrb_darwin2_ckpt65a_20140728, ctrb_darwin2_ckpt65b_20140812, ctrb_darwin2_ckpt65t_20160221, ctrb_darwin2_ckpt66o_20180209, ctrb_darwin2_ckpt66e_20170314, ctrb_darwin2_ckpt65u_20160315, ctrb_darwin2_ckpt65r_20151221, ctrb_darwin2_ckpt66i_20170718, ctrb_darwin2_ckpt65c_20140830, ctrb_darwin2_ckpt66l_20171025, ctrb_darwin2_ckpt65h_20141217, ctrb_darwin2_ckpt66m_20171213, HEAD
Changes since 1.7: +22 -19 lines
read seaice fraction through exf
- set areamaskfile in data.exf to a file with multiple time records
  and provide timing information
- need to define EXF_SEAICE_FRACTION in EXF_OPTIONS.h for this to work

1 C $Header: /u/gcmpack/MITgcm_contrib/darwin2/pkg/darwin/darwin_fields_load.F,v 1.7 2013/12/04 21:21:49 jahn Exp $
2 C $Name: $
3
4 #include "CPP_OPTIONS.h"
5 #include "PTRACERS_OPTIONS.h"
6 #include "DARWIN_OPTIONS.h"
7 #ifdef ALLOW_EXF
8 #include "EXF_OPTIONS.h"
9 #endif
10
11 #ifdef ALLOW_PTRACERS
12 #ifdef ALLOW_DARWIN
13
14 CStartOfInterFace
15 SUBROUTINE DARWIN_FIELDS_LOAD (
16 I myIter,myTime,myThid)
17
18 C /==========================================================\
19 C | SUBROUTINE DARWIN_FIELDS_LOAD |
20 C | o Read in fields needed for ice fraction and |
21 C | iron aeolian flux terms, PAR and nut_wvel |
22 C | adapted from NPZD2Fe - Stephanie Dutkiewicz 2005 |
23 C |==========================================================|
24 IMPLICIT NONE
25
26 C == GLobal variables ==
27 #include "SIZE.h"
28 #include "EEPARAMS.h"
29 #include "PARAMS.h"
30 #include "GRID.h"
31 #include "DARWIN_SIZE.h"
32 #include "SPECTRAL_SIZE.h"
33 #include "DARWIN_IO.h"
34 #include "DARWIN_FLUX.h"
35 c#include "GCHEM.h"
36 #ifdef ALLOW_SEAICE
37 #include "SEAICE_SIZE.h"
38 #include "SEAICE.h"
39 #endif
40 #ifdef ALLOW_THSICE
41 #include "THSICE_VARS.h"
42 #endif
43 #ifdef ALLOW_EXF
44 #include "EXF_FIELDS.h"
45 #endif
46 #ifdef OASIM
47 #include "SPECTRAL.h"
48 #endif
49
50 C == Routine arguments ==
51 INTEGER myIter
52 _RL myTime
53 INTEGER myThid
54 C == Local variables ==
55 C msgBuf - Informational/error meesage buffer
56 CHARACTER*(MAX_LEN_MBUF) msgBuf
57 COMMON/ darwin_load /
58 & fice0, fice1, featmos0, featmos1, sur_par0, sur_par1
59 #ifdef ALLOW_CARBON
60 & ,dicwind0, dicwind1,atmosp0, atmosp1
61 #endif
62 #ifdef NUT_SUPPLY
63 & , nut_wvel0, nut_wvel1
64 #endif
65 #ifdef RELAX_NUTS
66 & , po4_obs0, po4_obs1, no3_obs0, no3_obs1
67 & , fet_obs0, fet_obs1, si_obs0, si_obs1
68 #endif
69 #ifdef FLUX_NUTS
70 & , po4_flx0, po4_flx1, no3_flx0, no3_flx1
71 & , fet_flx0, fet_flx1, si_flx0, si_flx1
72 #endif
73 #ifdef OASIM
74 & , oasim_ed0, oasim_ed1, oasim_es0, oasim_es1
75 #endif
76 _RS fice0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
77 _RS fice1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
78 _RS featmos0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
79 _RS featmos1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
80 _RS sur_par0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
81 _RS sur_par1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
82 #ifdef ALLOW_CARBON
83 _RS dicwind0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
84 _RS dicwind1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
85 _RS atmosp0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
86 _RS atmosp1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
87 #endif
88 #ifdef NUT_SUPPLY
89 _RS nut_wvel0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nR,nSx,nSy)
90 _RS nut_wvel1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nR,nSx,nSy)
91 #endif
92 #ifdef RELAX_NUTS
93 _RS po4_obs0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nR,nSx,nSy)
94 _RS po4_obs1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nR,nSx,nSy)
95 _RS no3_obs0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nR,nSx,nSy)
96 _RS no3_obs1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nR,nSx,nSy)
97 _RS fet_obs0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nR,nSx,nSy)
98 _RS fet_obs1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nR,nSx,nSy)
99 _RS si_obs0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nR,nSx,nSy)
100 _RS si_obs1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nR,nSx,nSy)
101 #endif
102 #ifdef FLUX_NUTS
103 _RS po4_flx0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nR,nSx,nSy)
104 _RS po4_flx1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nR,nSx,nSy)
105 _RS no3_flx0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nR,nSx,nSy)
106 _RS no3_flx1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nR,nSx,nSy)
107 _RS fet_flx0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nR,nSx,nSy)
108 _RS fet_flx1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nR,nSx,nSy)
109 _RS si_flx0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nR,nSx,nSy)
110 _RS si_flx1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nR,nSx,nSy)
111 #endif
112 #ifdef OASIM
113 _RS oasim_ed0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,tlam,nSx,nSy)
114 _RS oasim_ed1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,tlam,nSx,nSy)
115 _RS oasim_es0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,tlam,nSx,nSy)
116 _RS oasim_es1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,tlam,nSx,nSy)
117 _RS tmp1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
118 _RS tmp2(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
119 INTEGER ilam, fp, nj0, nj1
120 #endif
121 INTEGER bi,bj,i,j,k,intime0,intime1
122 _RL aWght,bWght,rdt
123 _RL tmp1Wght, tmp2Wght
124 INTEGER nForcingPeriods,Imytm,Ifprd,Ifcyc,Iftm
125 c
126 c
127 IF ( darwin_ForcingPeriod .NE. 0. _d 0 ) THEN
128
129 C First call requires that we initialize everything to zero for safety
130 cQQQ need to check timing
131 IF ( myIter .EQ. nIter0 ) THEN
132 CALL LEF_ZERO( fice0,myThid )
133 CALL LEF_ZERO( fice1,myThid )
134 CALL LEF_ZERO( featmos0,myThid )
135 CALL LEF_ZERO( featmos1,myThid )
136 CALL LEF_ZERO( sur_par0,myThid )
137 CALL LEF_ZERO( sur_par1,myThid )
138 #ifdef ALLOW_CARBON
139 CALL LEF_ZERO( dicwind0,myThid )
140 CALL LEF_ZERO( dicwind1,myThid )
141 CALL LEF_ZERO( atmosp0,myThid )
142 CALL LEF_ZERO( atmosp1,myThid )
143 #endif
144 #ifdef NUT_SUPPLY
145 DO bj = myByLo(myThid), myByHi(myThid)
146 DO bi = myBxLo(myThid), myBxHi(myThid)
147 DO j=1-Oly,sNy+Oly
148 DO i=1-Olx,sNx+Olx
149 DO k=1,nR
150 nut_wvel0(i,j,k,bi,bj) = 0. _d 0
151 nut_wvel1(i,j,k,bi,bj) = 0. _d 0
152 ENDDO
153 ENDDO
154 ENDDO
155 ENDDO
156 ENDDO
157 #endif
158 #ifdef RELAX_NUTS
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 DO k=1,nR
164 po4_obs0(i,j,k,bi,bj) = 0. _d 0
165 po4_obs1(i,j,k,bi,bj) = 0. _d 0
166 no3_obs0(i,j,k,bi,bj) = 0. _d 0
167 no3_obs1(i,j,k,bi,bj) = 0. _d 0
168 fet_obs0(i,j,k,bi,bj) = 0. _d 0
169 fet_obs1(i,j,k,bi,bj) = 0. _d 0
170 si_obs0(i,j,k,bi,bj) = 0. _d 0
171 si_obs1(i,j,k,bi,bj) = 0. _d 0
172 ENDDO
173 ENDDO
174 ENDDO
175 ENDDO
176 ENDDO
177 #endif
178 #ifdef FLUX_NUTS
179 DO bj = myByLo(myThid), myByHi(myThid)
180 DO bi = myBxLo(myThid), myBxHi(myThid)
181 DO j=1-Oly,sNy+Oly
182 DO i=1-Olx,sNx+Olx
183 DO k=1,nR
184 po4_flx0(i,j,k,bi,bj) = 0. _d 0
185 po4_flx1(i,j,k,bi,bj) = 0. _d 0
186 no3_flx0(i,j,k,bi,bj) = 0. _d 0
187 no3_flx1(i,j,k,bi,bj) = 0. _d 0
188 fet_flx0(i,j,k,bi,bj) = 0. _d 0
189 fet_flx1(i,j,k,bi,bj) = 0. _d 0
190 si_flx0(i,j,k,bi,bj) = 0. _d 0
191 si_flx1(i,j,k,bi,bj) = 0. _d 0
192 ENDDO
193 ENDDO
194 ENDDO
195 ENDDO
196 ENDDO
197 #endif
198 #ifdef OASIM
199 DO bj = myByLo(myThid), myByHi(myThid)
200 DO bi = myBxLo(myThid), myBxHi(myThid)
201 DO j=1-Oly,sNy+Oly
202 DO i=1-Olx,sNx+Olx
203 tmp1(i,j,bi,bj) = 0. _d 0
204 tmp2(i,j,bi,bj) = 0. _d 0
205 DO ilam=1,tlam
206 oasim_ed0(i,j,ilam,bi,bj) = 0. _d 0
207 oasim_ed1(i,j,ilam,bi,bj) = 0. _d 0
208 oasim_es0(i,j,ilam,bi,bj) = 0. _d 0
209 oasim_es1(i,j,ilam,bi,bj) = 0. _d 0
210 ENDDO
211 ENDDO
212 ENDDO
213 ENDDO
214 ENDDO
215 #endif
216
217
218
219 ENDIF
220
221
222 C Now calculate whether it is time to update the forcing arrays
223 rdt=1. _d 0 / deltaTclock
224 nForcingPeriods=
225 & int(darwin_ForcingCycle/darwin_ForcingPeriod+0.5 _d 0)
226 Imytm=int(myTime*rdt+0.5 _d 0)
227 Ifprd=int(darwin_ForcingPeriod*rdt+0.5 _d 0)
228 Ifcyc=int(darwin_ForcingCycle*rdt+0.5 _d 0)
229 Iftm=mod( Imytm+Ifcyc-Ifprd/2,Ifcyc)
230
231 intime0=int(Iftm/Ifprd)
232 intime1=mod(intime0+1,nForcingPeriods)
233 tmp1Wght = FLOAT( Iftm-Ifprd*intime0 )
234 tmp2Wght = FLOAT( Ifprd )
235 aWght = tmp1Wght / tmp2Wght
236 bWght = 1. _d 0 - aWght
237
238 intime0=intime0+1
239 intime1=intime1+1
240
241
242 cQQ something funny about timing here - need nIter0+1
243 c but seems okay for remaining timesteps
244 IF (
245 & Iftm-Ifprd*(intime0-1) .EQ. 0
246 & .OR. myIter .EQ. nIter0
247 & ) THEN
248
249
250 _BEGIN_MASTER(myThid)
251
252 C If the above condition is met then we need to read in
253 C data for the period ahead and the period behind myTime.
254 WRITE(msgBuf,'(A,1P1E20.12,X,I10)')
255 & 'S/R DARWIN_FIELDS_LOAD: Reading forcing data',
256 & myTime,myIter
257 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
258 & SQUEEZE_RIGHT, myThid )
259
260 _END_MASTER(myThid)
261
262 _BARRIER
263
264 IF ( darwin_iceFile .NE. ' ' ) THEN
265 CALL READ_REC_XY_RS( darwin_iceFile,fice0,intime0,
266 & myIter,myThid )
267 CALL READ_REC_XY_RS( darwin_IceFile,fice1,intime1,
268 & myIter,myThid )
269 ENDIF
270 IF ( darwin_ironFile .NE. ' ' ) THEN
271 CALL READ_REC_XY_RS( darwin_ironFile,featmos0,intime0,
272 & myIter,myThid )
273 CALL READ_REC_XY_RS( darwin_ironFile,featmos1,intime1,
274 & myIter,myThid )
275 ENDIF
276 IF ( darwin_PARFile .NE. ' ' ) THEN
277 CALL READ_REC_XY_RS( darwin_PARFile,sur_par0,intime0,
278 & myIter,myThid )
279 CALL READ_REC_XY_RS( darwin_PARFile,sur_par1,intime1,
280 & myIter,myThid )
281 ENDIF
282 #ifdef ALLOW_CARBON
283 IF ( DIC_windFile .NE. ' ' ) THEN
284 CALL READ_REC_XY_RS( DIC_windFile,dicwind0,intime0,
285 & myIter,myThid )
286 CALL READ_REC_XY_RS( DIC_windFile,dicwind1,intime1,
287 & myIter,myThid )
288 ENDIF
289 IF ( DIC_atmospFile .NE. ' ' ) THEN
290 CALL READ_REC_XY_RS( DIC_atmospFile,atmosp0,intime0,
291 & myIter,myThid )
292 CALL READ_REC_XY_RS( DIC_atmospFile,atmosp1,intime1,
293 & myIter,myThid )
294 ENDIF
295 #endif
296 #ifdef NUT_SUPPLY
297 IF ( darwin_nutWVelFile .NE. ' ' ) THEN
298 CALL READ_REC_XYZ_RS( darwin_nutWVelFile,nut_wvel0,intime0,
299 & myIter,myThid )
300 CALL READ_REC_XYZ_RS( darwin_nutWVelFile,nut_wvel1,intime1,
301 & myIter,myThid )
302 ENDIF
303 #endif
304 #ifdef RELAX_NUTS
305 IF ( darwin_PO4_RelaxFile .NE. ' ' ) THEN
306 CALL READ_REC_XYZ_RS( darwin_PO4_RelaxFile,po4_obs0,intime0,
307 & myIter,myThid )
308 CALL READ_REC_XYZ_RS( darwin_PO4_RelaxFile,po4_obs1,intime1,
309 & myIter,myThid )
310 ENDIF
311 IF ( darwin_NO3_RelaxFile .NE. ' ' ) THEN
312 CALL READ_REC_XYZ_RS( darwin_NO3_RelaxFile,no3_obs0,intime0,
313 & myIter,myThid )
314 CALL READ_REC_XYZ_RS( darwin_NO3_RelaxFile,no3_obs1,intime1,
315 & myIter,myThid )
316 ENDIF
317 IF ( darwin_Fet_RelaxFile .NE. ' ' ) THEN
318 CALL READ_REC_XYZ_RS( darwin_Fet_RelaxFile,fet_obs0,intime0,
319 & myIter,myThid )
320 CALL READ_REC_XYZ_RS( darwin_Fet_RelaxFile,fet_obs1,intime1,
321 & myIter,myThid )
322 ENDIF
323 IF ( darwin_Si_RelaxFile .NE. ' ' ) THEN
324 CALL READ_REC_XYZ_RS( darwin_Si_RelaxFile,si_obs0,intime0,
325 & myIter,myThid )
326 CALL READ_REC_XYZ_RS( darwin_Si_RelaxFile,si_obs1,intime1,
327 & myIter,myThid )
328 ENDIF
329 #endif
330 #ifdef FLUX_NUTS
331 IF ( darwin_PO4_FluxFile .NE. ' ' ) THEN
332 CALL READ_REC_XYZ_RS( darwin_PO4_FluxFile,po4_flx0,intime0,
333 & myIter,myThid )
334 CALL READ_REC_XYZ_RS( darwin_PO4_FluxFile,po4_flx1,intime1,
335 & myIter,myThid )
336 ENDIF
337 IF ( darwin_NO3_FluxFile .NE. ' ' ) THEN
338 CALL READ_REC_XYZ_RS( darwin_NO3_FluxFile,no3_flx0,intime0,
339 & myIter,myThid )
340 CALL READ_REC_XYZ_RS( darwin_NO3_FluxFile,no3_flx1,intime1,
341 & myIter,myThid )
342 ENDIF
343 IF ( darwin_Fet_FluxFile .NE. ' ' ) THEN
344 CALL READ_REC_XYZ_RS( darwin_Fet_FluxFile,fet_flx0,intime0,
345 & myIter,myThid )
346 CALL READ_REC_XYZ_RS( darwin_Fet_FluxFile,fet_flx1,intime1,
347 & myIter,myThid )
348 ENDIF
349 IF ( darwin_Si_FluxFile .NE. ' ' ) THEN
350 CALL READ_REC_XYZ_RS( darwin_Si_FluxFile,si_flx0,intime0,
351 & myIter,myThid )
352 CALL READ_REC_XYZ_RS( darwin_Si_FluxFile,si_flx1,intime1,
353 & myIter,myThid )
354 ENDIF
355 #endif
356 #ifdef OASIM
357 IF ( darwin_oasim_edFile .NE. ' ' ) THEN
358 nj0= (intime0-1)*tlam
359 nj1= (intime1-1)*tlam
360 c print*,'ZZ nj0,nj1',nj0, nj1, intime0, intime1
361 do ilam=1,tlam
362 nj0=nj0+1
363 CALL READ_REC_XY_RS( darwin_oasim_edFile, tmp1,nj0,
364 & myIter,myThid )
365 nj1=nj1+1
366 CALL READ_REC_XY_RS( darwin_oasim_edFile, tmp2,nj1,
367 & myIter,myThid )
368 DO bj = myByLo(myThid), myByHi(myThid)
369 DO bi = myBxLo(myThid), myBxHi(myThid)
370 DO j=1-Oly,sNy+Oly
371 DO i=1-Olx,sNx+Olx
372 oasim_ed0(i,j,ilam,bi,bj) = tmp1(i,j,bi,bj)
373 oasim_ed1(i,j,ilam,bi,bj) = tmp2(i,j,bi,bj)
374 ENDDO
375 ENDDO
376 ENDDO
377 ENDDO
378 c print*,oasim_ed0(1,1,ilam,1,1), oasim_ed1(1,1,ilam,1,1)
379 enddo
380 c CALL READ_MFLDS_3D_RS( darwin_oasim_edFile, oasim_ed0,
381 c & nj0, fp, tlam, myIter,myThid )
382 c CALL READ_MFLDS_3D_RS( darwin_oasim_edFile, oasim_ed1,
383 c & nj1, fp, tlam, myIter,myThid )
384 ENDIF
385 IF ( darwin_oasim_esFile .NE. ' ' ) THEN
386 nj0= (intime0-1)*tlam
387 nj1= (intime1-1)*tlam
388 do ilam=1,tlam
389 nj0=nj0+1
390 CALL READ_REC_XY_RS( darwin_oasim_esFile, tmp1,nj0,
391 & myIter,myThid )
392 nj1=nj1+1
393 CALL READ_REC_XY_RS( darwin_oasim_esFile, tmp2,nj1,
394 & myIter,myThid )
395 DO bj = myByLo(myThid), myByHi(myThid)
396 DO bi = myBxLo(myThid), myBxHi(myThid)
397 DO j=1-Oly,sNy+Oly
398 DO i=1-Olx,sNx+Olx
399 oasim_es0(i,j,ilam,bi,bj) = tmp1(i,j,bi,bj)
400 oasim_es1(i,j,ilam,bi,bj) = tmp2(i,j,bi,bj)
401 ENDDO
402 ENDDO
403 ENDDO
404 ENDDO
405 enddo
406 c CALL READ_MFLDS_3D_RS( darwin_oasim_esFile, oasim_es0,
407 c & nj0, fp, tlam, myIter,myThid )
408 c CALL READ_MFLDS_3D_RS( darwin_oasim_esFile, oasim_es1,
409 c & nj1, fp, tlam, myIter,myThid )
410 ENDIF
411 #endif
412 C
413 _EXCH_XY_RS(fice0, myThid )
414 _EXCH_XY_RS(fice1, myThid )
415 _EXCH_XY_RS(featmos0, myThid )
416 _EXCH_XY_RS(featmos1, myThid )
417 _EXCH_XY_RS(sur_par0, myThid )
418 _EXCH_XY_RS(sur_par1, myThid )
419 #ifdef ALLOW_CARBON
420 _EXCH_XY_RS(dicwind0, myThid )
421 _EXCH_XY_RS(dicwind1, myThid )
422 _EXCH_XY_RS(atmosp0, myThid )
423 _EXCH_XY_RS(atmosp1, myThid )
424 #endif
425 #ifdef NUT_SUPPLY
426 _EXCH_XYZ_RS(nut_wvel0, myThid )
427 _EXCH_XYZ_RS(nut_wvel1, myThid )
428 #endif
429 #ifdef RELAX_NUTS
430 _EXCH_XYZ_RS(po4_obs0, myThid )
431 _EXCH_XYZ_RS(po4_obs1, myThid )
432 _EXCH_XYZ_RS(no3_obs0, myThid )
433 _EXCH_XYZ_RS(no3_obs1, myThid )
434 _EXCH_XYZ_RS(fet_obs0, myThid )
435 _EXCH_XYZ_RS(fet_obs1, myThid )
436 _EXCH_XYZ_RS(si_obs0, myThid )
437 _EXCH_XYZ_RS(si_obs1, myThid )
438 #endif
439 #ifdef FLUX_NUTS
440 _EXCH_XYZ_RS(po4_flx0, myThid )
441 _EXCH_XYZ_RS(po4_flx1, myThid )
442 _EXCH_XYZ_RS(no3_flx0, myThid )
443 _EXCH_XYZ_RS(no3_flx1, myThid )
444 _EXCH_XYZ_RS(fet_flx0, myThid )
445 _EXCH_XYZ_RS(fet_flx1, myThid )
446 _EXCH_XYZ_RS(si_flx0, myThid )
447 _EXCH_XYZ_RS(si_flx1, myThid )
448 #endif
449 #ifdef OASIM
450 CALL EXCH_3D_RS (oasim_ed0, tlam, myThid)
451 CALL EXCH_3D_RS (oasim_ed1, tlam, myThid)
452 CALL EXCH_3D_RS (oasim_es0, tlam, myThid)
453 CALL EXCH_3D_RS (oasim_es1, tlam, myThid)
454 #endif
455
456
457 C
458 ENDIF
459
460 DO bj = myByLo(myThid), myByHi(myThid)
461 DO bi = myBxLo(myThid), myBxHi(myThid)
462 DO j=1-Oly,sNy+Oly
463 DO i=1-Olx,sNx+Olx
464 IF ( darwin_useiceFile ) THEN
465 FIce(i,j,bi,bj) = bWght*fice0(i,j,bi,bj)
466 & +aWght*fice1(i,j,bi,bj)
467 ENDIF
468 #ifdef ALLOW_EXF
469 #ifdef EXF_SEAICE_FRACTION
470 IF ( darwin_useareamask ) THEN
471 FIce(i,j,bi,bj) = areamask(i,j,bi,bj)
472 ENDIF
473 #endif
474 #endif
475 #ifdef ALLOW_THSICE
476 IF ( darwin_useiceMask ) THEN
477 FIce(i,j,bi,bj) = iceMask(i,j,bi,bj)
478 ENDIF
479 #endif
480 #ifdef ALLOW_SEAICE
481 IF ( darwin_useAREA ) THEN
482 FIce(i,j,bi,bj) = AREA(i,j,bi,bj)
483 ENDIF
484 #endif
485
486 IF ( darwin_ironFile .NE. ' ' ) THEN
487 inputFe(i,j,bi,bj) = bWght*featmos0(i,j,bi,bj)
488 & +aWght*featmos1(i,j,bi,bj)
489 c convert to mmol/m2/s
490 inputFe(i,j,bi,bj) = inputFe(i,j,bi,bj)*darwin_ironFileConv
491 ELSE
492 inputFe(i,j,bi,bj) = 0. _d 0
493 ENDIF
494 c light
495 IF ( darwin_PARFile .NE. ' ' ) THEN
496 sur_par(i,j,bi,bj) = bWght*sur_par0(i,j,bi,bj)
497 & +aWght*sur_par1(i,j,bi,bj)
498 c convert to uEin/m2/s
499 sur_par(i,j,bi,bj) = sur_par(i,j,bi,bj)*darwin_PARFileConv
500 ELSE
501 sur_par(i,j,bi,bj) = 200. _d 0*maskC(i,j,1,bi,bj)
502 ENDIF
503 #ifdef ALLOW_CARBON
504 IF ( DIC_windFile .NE. ' ' ) THEN
505 WIND(i,j,bi,bj) = bWght*dicwind0(i,j,bi,bj)
506 & + aWght*dicwind1(i,j,bi,bj)
507 ELSE
508 WIND(i,j,bi,bj) = 5. _d 0
509 ENDIF
510 #ifndef USE_PLOAD
511 IF ( DIC_atmospFile .NE. ' ' ) THEN
512 AtmosP(i,j,bi,bj) = bWght*atmosp0(i,j,bi,bj)
513 & + aWght*atmosp1(i,j,bi,bj)
514 ELSE
515 AtmosP(i,j,bi,bj) = 1. _d 0
516 ENDIF
517 #endif
518 #endif
519 #ifdef NUT_SUPPLY
520 c artificial wvel for nutrient supply in 1-d and 2-d models
521 IF ( darwin_nutWVelFile .NE. ' ' ) THEN
522 DO k=1,nR
523 nut_wvel(i,j,k,bi,bj) = bWght*nut_wvel0(i,j,k,bi,bj)
524 & +aWght*nut_wvel1(i,j,k,bi,bj)
525 ENDDO
526 ENDIF
527 #endif
528 #ifdef RELAX_NUTS
529 IF ( darwin_PO4_RelaxFile .NE. ' ' ) THEN
530 DO k=1,nR
531 po4_obs(i,j,k,bi,bj) = bWght*po4_obs0(i,j,k,bi,bj)
532 & +aWght*po4_obs1(i,j,k,bi,bj)
533 ENDDO
534 ENDIF
535 IF ( darwin_NO3_RelaxFile .NE. ' ' ) THEN
536 DO k=1,nR
537 no3_obs(i,j,k,bi,bj) = bWght*no3_obs0(i,j,k,bi,bj)
538 & +aWght*no3_obs1(i,j,k,bi,bj)
539 ENDDO
540 ENDIF
541 IF ( darwin_Fet_RelaxFile .NE. ' ' ) THEN
542 DO k=1,nR
543 fet_obs(i,j,k,bi,bj) = bWght*fet_obs0(i,j,k,bi,bj)
544 & +aWght*fet_obs1(i,j,k,bi,bj)
545 ENDDO
546 ENDIF
547 IF ( darwin_Si_RelaxFile .NE. ' ' ) THEN
548 DO k=1,nR
549 si_obs(i,j,k,bi,bj) = bWght*si_obs0(i,j,k,bi,bj)
550 & +aWght*si_obs1(i,j,k,bi,bj)
551 ENDDO
552 ENDIF
553 #endif
554 #ifdef FLUX_NUTS
555 IF ( darwin_PO4_FluxFile .NE. ' ' ) THEN
556 DO k=1,nR
557 po4_flx(i,j,k,bi,bj) = bWght*po4_flx0(i,j,k,bi,bj)
558 & +aWght*po4_flx1(i,j,k,bi,bj)
559 ENDDO
560 ENDIF
561 IF ( darwin_NO3_FluxFile .NE. ' ' ) THEN
562 DO k=1,nR
563 no3_flx(i,j,k,bi,bj) = bWght*no3_flx0(i,j,k,bi,bj)
564 & +aWght*no3_flx1(i,j,k,bi,bj)
565 ENDDO
566 ENDIF
567 IF ( darwin_Fet_FluxFile .NE. ' ' ) THEN
568 DO k=1,nR
569 fet_flx(i,j,k,bi,bj) = bWght*fet_flx0(i,j,k,bi,bj)
570 & +aWght*fet_flx1(i,j,k,bi,bj)
571 ENDDO
572 ENDIF
573 IF ( darwin_Si_FluxFile .NE. ' ' ) THEN
574 DO k=1,nR
575 si_flx(i,j,k,bi,bj) = bWght*si_flx0(i,j,k,bi,bj)
576 & +aWght*si_flx1(i,j,k,bi,bj)
577 ENDDO
578 ENDIF
579 #endif
580 #ifdef OASIM
581 IF ( darwin_oasim_edFile .NE. ' ' ) THEN
582 c oasim data (load as W/m2 per band)
583 DO ilam=1,tlam
584 oasim_ed(i,j,ilam,bi,bj) =
585 & bWght*oasim_ed0(i,j,ilam,bi,bj)
586 & +aWght*oasim_ed1(i,j,ilam,bi,bj)
587 c oasim_ed(i,j,ilam,bi,bj) =
588 c & oasim_ed(i,j,ilam,bi,bj)*1. _d 6/86400. _d 0
589 ENDDO
590 ENDIF
591 IF ( darwin_oasim_esFile .NE. ' ' ) THEN
592 DO ilam=1,tlam
593 oasim_es(i,j,ilam,bi,bj) =
594 & bWght*oasim_es0(i,j,ilam,bi,bj)
595 & +aWght*oasim_es1(i,j,ilam,bi,bj)
596 c oasim_es(i,j,ilam,bi,bj) =
597 c & oasim_es(i,j,ilam,bi,bj)*1. _d 6/86400. _d 0
598 ENDDO
599 ENDIF
600 #ifndef WAVEBANDS
601 c if not spectral add wavebands to give a single surface PAR
602 c and convert to uEin/m2/s
603 sur_par(i,j,bi,bj)= 0. _d 0
604 DO ilam=1,tlam
605 sur_par(i,j,bi,bj)=sur_par(i,j,bi,bj)+WtouEins(ilam)
606 & *(oasim_ed(i,j,ilam,bi,bj)+
607 & oasim_es(i,j,ilam,bi,bj))
608 ENDDO
609 #endif
610 #endif
611 c
612 ENDDO
613 ENDDO
614 ENDDO
615 ENDDO
616
617 C endif for periodicForcing
618 ENDIF
619
620 RETURN
621 END
622 #endif
623 #endif
624

  ViewVC Help
Powered by ViewVC 1.1.22