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

Annotation 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 - (hide 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 jahn 1.8 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 jahn 1.2 C $Name: $
3 jahn 1.1
4     #include "CPP_OPTIONS.h"
5     #include "PTRACERS_OPTIONS.h"
6     #include "DARWIN_OPTIONS.h"
7 jahn 1.8 #ifdef ALLOW_EXF
8     #include "EXF_OPTIONS.h"
9     #endif
10 jahn 1.1
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 jahn 1.5 #include "SEAICE_SIZE.h"
38 jahn 1.1 #include "SEAICE.h"
39     #endif
40     #ifdef ALLOW_THSICE
41     #include "THSICE_VARS.h"
42     #endif
43 jahn 1.8 #ifdef ALLOW_EXF
44     #include "EXF_FIELDS.h"
45 jahn 1.1 #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 jahn 1.4 _END_MASTER(myThid)
261    
262 jahn 1.7 _BARRIER
263    
264 jahn 1.1 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 jahn 1.6 CALL EXCH_3D_RS (oasim_es1, tlam, myThid)
454 jahn 1.1 #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 jahn 1.8 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 jahn 1.1 #ifdef ALLOW_THSICE
476 jahn 1.8 IF ( darwin_useiceMask ) THEN
477     FIce(i,j,bi,bj) = iceMask(i,j,bi,bj)
478 jahn 1.1 ENDIF
479     #endif
480 jahn 1.8 #ifdef ALLOW_SEAICE
481     IF ( darwin_useAREA ) THEN
482     FIce(i,j,bi,bj) = AREA(i,j,bi,bj)
483 jahn 1.1 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 jahn 1.3 inputFe(i,j,bi,bj) = inputFe(i,j,bi,bj)*darwin_ironFileConv
491 jahn 1.1 ELSE
492     inputFe(i,j,bi,bj) = 0. _d 0
493     ENDIF
494 jahn 1.2 c light
495 jahn 1.1 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 jahn 1.2 c convert to uEin/m2/s
499     sur_par(i,j,bi,bj) = sur_par(i,j,bi,bj)*darwin_PARFileConv
500 jahn 1.1 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