20 |
#include "EEPARAMS.h" |
#include "EEPARAMS.h" |
21 |
#include "PARAMS.h" |
#include "PARAMS.h" |
22 |
#include "GRID.h" |
#include "GRID.h" |
|
c#include "PTRACERS_SIZE.h" |
|
|
c#include "PTRACERS_PARAMS.h" |
|
|
c#include "PTRACERS_FIELDS.h" |
|
|
#include "GCHEM.h" |
|
23 |
#include "DIC_VARS.h" |
#include "DIC_VARS.h" |
24 |
#include "DIC_LOAD.h" |
#include "DIC_LOAD.h" |
25 |
#ifdef ALLOW_THSICE |
#ifdef ALLOW_THSICE |
47 |
CEOP |
CEOP |
48 |
|
|
49 |
c |
c |
50 |
IF ( gchem_ForcingCycle.gt.0. _d 0 ) THEN |
IF ( dic_ForcingCycle.gt.0. _d 0 ) THEN |
51 |
|
|
52 |
|
|
53 |
C Now calculate whether it is time to update the forcing arrays |
C Now calculate whether it is time to update the forcing arrays |
54 |
rdt = 1. _d 0 / deltaTclock |
rdt = 1. _d 0 / deltaTclock |
55 |
nForcingPeriods = NINT(gchem_ForcingCycle/gchem_ForcingPeriod) |
nForcingPeriods = NINT(dic_ForcingCycle/dic_ForcingPeriod) |
56 |
cswd QQ change for placement of chem forcing (ie. after timestep) |
cswd QQ change for placement of chem forcing (ie. after timestep) |
57 |
Imytm = NINT(myTime*rdt) |
Imytm = NINT(myTime*rdt) |
58 |
Ifprd = NINT(gchem_ForcingPeriod*rdt) |
Ifprd = NINT(dic_ForcingPeriod*rdt) |
59 |
Ifcyc = NINT(gchem_ForcingCycle*rdt) |
Ifcyc = NINT(dic_ForcingCycle*rdt) |
60 |
Iftm = MOD( Imytm+Ifcyc-Ifprd/2, Ifcyc) |
Iftm = MOD( Imytm+Ifcyc-Ifprd/2, Ifcyc) |
61 |
|
|
62 |
intime0 = 1 + INT(Iftm/Ifprd) |
intime0 = 1 + INT(Iftm/Ifprd) |
84 |
_END_MASTER(myThid) |
_END_MASTER(myThid) |
85 |
|
|
86 |
|
|
87 |
IF ( WindFile .NE. ' ' ) THEN |
IF ( WindFileDic .NE. ' ' ) THEN |
88 |
CALL READ_REC_XY_RS( WindFile,wspeed0,intime0, |
CALL READ_REC_XY_RS( WindFileDic,wspeed0,intime0, |
89 |
& myIter,myThid ) |
& myIter,myThid ) |
90 |
CALL READ_REC_XY_RS( WindFile,wspeed1,intime1, |
CALL READ_REC_XY_RS( WindFileDic,wspeed1,intime1, |
91 |
& myIter,myThid ) |
& myIter,myThid ) |
92 |
ENDIF |
ENDIF |
93 |
IF ( AtmospFile .NE. ' ' ) THEN |
IF ( AtmospFileDic .NE. ' ' ) THEN |
94 |
CALL READ_REC_XY_RS( AtmospFile,atmosp0,intime0, |
CALL READ_REC_XY_RS( AtmospFileDic,atmosp0,intime0, |
95 |
& myIter,myThid ) |
& myIter,myThid ) |
96 |
CALL READ_REC_XY_RS( AtmospFile,atmosp1,intime1, |
CALL READ_REC_XY_RS( AtmospFileDic,atmosp1,intime1, |
97 |
& myIter,myThid ) |
& myIter,myThid ) |
98 |
ENDIF |
ENDIF |
99 |
IF ( SilicaFile .NE. ' ' ) THEN |
IF ( SilicaFileDic .NE. ' ' ) THEN |
100 |
CALL READ_REC_XY_RS( SilicaFile,silica0,intime0, |
CALL READ_REC_XY_RS( SilicaFileDic,silica0,intime0, |
101 |
& myIter,myThid ) |
& myIter,myThid ) |
102 |
CALL READ_REC_XY_RS( SilicaFile,silica1,intime1, |
CALL READ_REC_XY_RS( SilicaFileDic,silica1,intime1, |
103 |
& myIter,myThid ) |
& myIter,myThid ) |
104 |
ENDIF |
ENDIF |
105 |
IF ( IceFile .NE. ' ' ) THEN |
IF ( IceFileDic .NE. ' ' ) THEN |
106 |
CALL READ_REC_XY_RS( IceFile,ice0,intime0, |
CALL READ_REC_XY_RS( IceFileDic,ice0,intime0, |
107 |
& myIter,myThid ) |
& myIter,myThid ) |
108 |
CALL READ_REC_XY_RS( IceFile,ice1,intime1, |
CALL READ_REC_XY_RS( IceFileDic,ice1,intime1, |
109 |
& myIter,myThid ) |
& myIter,myThid ) |
110 |
ENDIF |
ENDIF |
111 |
#ifdef READ_PAR |
#ifdef READ_PAR |
117 |
ENDIF |
ENDIF |
118 |
#endif |
#endif |
119 |
#ifdef ALLOW_FE |
#ifdef ALLOW_FE |
120 |
IF ( IronFile .NE. ' ' ) THEN |
IF ( IronFileDic .NE. ' ' ) THEN |
121 |
CALL READ_REC_XY_RS( IronFile,feinput0,intime0, |
CALL READ_REC_XY_RS( IronFileDic,feinput0,intime0, |
122 |
& myIter,myThid ) |
& myIter,myThid ) |
123 |
CALL READ_REC_XY_RS( IronFile,feinput1,intime1, |
CALL READ_REC_XY_RS( IronFileDic,feinput1,intime1, |
124 |
& myIter,myThid ) |
& myIter,myThid ) |
125 |
ENDIF |
ENDIF |
126 |
#endif |
#endif |
130 |
|
|
131 |
DO bj = myByLo(myThid), myByHi(myThid) |
DO bj = myByLo(myThid), myByHi(myThid) |
132 |
DO bi = myBxLo(myThid), myBxHi(myThid) |
DO bi = myBxLo(myThid), myBxHi(myThid) |
133 |
IF ( WindFile .NE. ' ' ) THEN |
IF ( WindFileDic .NE. ' ' ) THEN |
134 |
DO j=1-Oly,sNy+Oly |
DO j=1-Oly,sNy+Oly |
135 |
DO i=1-Olx,sNx+Olx |
DO i=1-Olx,sNx+Olx |
136 |
WIND(i,j,bi,bj) = bWght*wspeed0(i,j,bi,bj) |
WIND(i,j,bi,bj) = bWght*wspeed0(i,j,bi,bj) |
143 |
c pisvel(i,j,bi,bj) =0.337*wind(i,j,bi,bj)**2/3.6d5 !QQQQ |
c pisvel(i,j,bi,bj) =0.337*wind(i,j,bi,bj)**2/3.6d5 !QQQQ |
144 |
ENDIF |
ENDIF |
145 |
#ifndef USE_PLOAD |
#ifndef USE_PLOAD |
146 |
IF ( AtmospFile .NE. ' ' ) THEN |
IF ( AtmospFileDic .NE. ' ' ) THEN |
147 |
DO j=1-Oly,sNy+Oly |
DO j=1-Oly,sNy+Oly |
148 |
DO i=1-Olx,sNx+Olx |
DO i=1-Olx,sNx+Olx |
149 |
AtmosP(i,j,bi,bj) = bWght*atmosp0(i,j,bi,bj) |
AtmosP(i,j,bi,bj) = bWght*atmosp0(i,j,bi,bj) |
152 |
ENDDO |
ENDDO |
153 |
ENDIF |
ENDIF |
154 |
#endif |
#endif |
155 |
IF ( SilicaFile .NE. ' ' ) THEN |
IF ( SilicaFileDic .NE. ' ' ) THEN |
156 |
DO j=1-Oly,sNy+Oly |
DO j=1-Oly,sNy+Oly |
157 |
DO i=1-Olx,sNx+Olx |
DO i=1-Olx,sNx+Olx |
158 |
SILICA(i,j,bi,bj) = bWght*silica0(i,j,bi,bj) |
SILICA(i,j,bi,bj) = bWght*silica0(i,j,bi,bj) |
160 |
ENDDO |
ENDDO |
161 |
ENDDO |
ENDDO |
162 |
ENDIF |
ENDIF |
163 |
IF ( IceFile .NE. ' ' ) THEN |
IF ( IceFileDic .NE. ' ' ) THEN |
164 |
DO j=1-Oly,sNy+Oly |
DO j=1-Oly,sNy+Oly |
165 |
DO i=1-Olx,sNx+Olx |
DO i=1-Olx,sNx+Olx |
166 |
FIce(i,j,bi,bj) = bWght*ice0(i,j,bi,bj) |
FIce(i,j,bi,bj) = bWght*ice0(i,j,bi,bj) |
186 |
ENDIF |
ENDIF |
187 |
#endif |
#endif |
188 |
#ifdef ALLOW_FE |
#ifdef ALLOW_FE |
189 |
IF ( IronFile .NE. ' ' ) THEN |
IF ( IronFileDic .NE. ' ' ) THEN |
190 |
DO j=1-Oly,sNy+Oly |
DO j=1-Oly,sNy+Oly |
191 |
DO i=1-Olx,sNx+Olx |
DO i=1-Olx,sNx+Olx |
192 |
InputFe(i,j,bi,bj) = bWght*feinput0(i,j,bi,bj) |
InputFe(i,j,bi,bj) = bWght*feinput0(i,j,bi,bj) |
198 |
ENDDO |
ENDDO |
199 |
ENDDO |
ENDDO |
200 |
|
|
201 |
C endif for gchem_ForcingCycle |
C endif for dic_ForcingCycle |
202 |
ENDIF |
ENDIF |
203 |
|
|
204 |
DO bj = myByLo(myThid), myByHi(myThid) |
DO bj = myByLo(myThid), myByHi(myThid) |