File indexing completed on 2023-11-08 06:10:16 UTC
view on githubraw file Latest commit 51e381e9 on 2023-11-07 18:00:07 UTC
6d54cf9ca1 Ed H*0001 #include "DIC_OPTIONS.h"
daab022f42 Step*0002
08536d17ba Step*0003
0004
0005
0006
daab022f42 Step*0007 SUBROUTINE DIC_FIELDS_LOAD (
2e3e8c330d Jona*0008 I myTime, myIter, myThid )
daab022f42 Step*0009
08536d17ba Step*0010
0011
daab022f42 Step*0012
08536d17ba Step*0013
0014 IMPLICIT NONE
daab022f42 Step*0015 #include "SIZE.h"
0016 #include "EEPARAMS.h"
0017 #include "PARAMS.h"
0018 #include "GRID.h"
2ef8966791 Davi*0019 #include "DIC_VARS.h"
29ad036528 Step*0020 #include "DIC_LOAD.h"
daab022f42 Step*0021
08536d17ba Step*0022
0023
2e3e8c330d Jona*0024
c6839165c8 Jean*0025
daab022f42 Step*0026 _RL myTime
2e3e8c330d Jona*0027 INTEGER myIter
daab022f42 Step*0028 INTEGER myThid
0029
63d67d9eeb Jean*0030 #ifdef ALLOW_DIC
08536d17ba Step*0031
0032
2e3e8c330d Jona*0033 INTEGER bi, bj, i, j
63d67d9eeb Jean*0034 INTEGER intimeP, intime0, intime1
0035 _RL aWght,bWght
2e3e8c330d Jona*0036 #ifdef DIC_CALCITE_SAT
0037 INTEGER k
0038 #endif
08536d17ba Step*0039
0040
c6839165c8 Jean*0041 IF ( DIC_forcingCycle.GT.0. _d 0 ) THEN
daab022f42 Step*0042
63d67d9eeb Jean*0043
0044 CALL GET_PERIODIC_INTERVAL(
0045 O intimeP, intime0, intime1, bWght, aWght,
0046 I DIC_forcingCycle, DIC_forcingPeriod,
c6839165c8 Jean*0047 I deltaTClock, myTime, myThid )
daab022f42 Step*0048
63d67d9eeb Jean*0049 bi = myBxLo(myThid)
0050 bj = myByLo(myThid)
0051 #ifdef ALLOW_DEBUG
7250857647 Jean*0052 IF ( debugLevel.GE.debLevB ) THEN
63d67d9eeb Jean*0053 _BEGIN_MASTER(myThid)
0054 WRITE(standardMessageUnit,'(A,I10,A,4I5,A,2F14.10)')
0055 & ' DIC_FIELDS_LOAD,', myIter,
0056 & ' : iP,iLd,i0,i1=', intimeP,DIC_ldRec(bi,bj), intime0,intime1,
0057 & ' ; Wght=', bWght, aWght
0058 _END_MASTER(myThid)
0059 ENDIF
0060 #endif /* ALLOW_DEBUG */
daab022f42 Step*0061
c6839165c8 Jean*0062 #ifdef ALLOW_AUTODIFF
63d67d9eeb Jean*0063
0064
0065
0066
0067 IF ( intime0.NE.intimeP .OR. myIter.EQ.nIter0 ) THEN
c6839165c8 Jean*0068 #else /* ALLOW_AUTODIFF */
63d67d9eeb Jean*0069
0070
0071
0072 IF ( intime1.NE.DIC_ldRec(bi,bj) ) THEN
c6839165c8 Jean*0073 #endif /* ALLOW_AUTODIFF */
daab022f42 Step*0074
63d67d9eeb Jean*0075
0076
7250857647 Jean*0077 IF ( debugLevel.GE.debLevZero ) THEN
0078 _BEGIN_MASTER(myThid)
0079 WRITE(standardMessageUnit,'(A,I10,A,2(2I5,A))')
0080 & ' DIC_FIELDS_LOAD, it=', myIter,
0081 & ' : Reading new data, i0,i1=', intime0, intime1,
63d67d9eeb Jean*0082 & ' (prev=', intimeP, DIC_ldRec(bi,bj), ' )'
7250857647 Jean*0083 _END_MASTER(myThid)
0084 ENDIF
b5faedaf88 Jean*0085
63d67d9eeb Jean*0086 _BARRIER
daab022f42 Step*0087
5625485478 Jean*0088 IF ( DIC_windFile .NE. ' ' ) THEN
ad6cffb5e8 Gael*0089 CALL READ_REC_XY_RS( DIC_windFile,dicwind0,intime0,
daab022f42 Step*0090 & myIter,myThid )
ad6cffb5e8 Gael*0091 CALL READ_REC_XY_RS( DIC_windFile,dicwind1,intime1,
daab022f42 Step*0092 & myIter,myThid )
5625485478 Jean*0093 ENDIF
0094 IF ( DIC_atmospFile .NE. ' ' ) THEN
946d3aa393 Jean*0095 CALL READ_REC_XY_RS( DIC_atmospFile,atmosp0,intime0,
daab022f42 Step*0096 & myIter,myThid )
946d3aa393 Jean*0097 CALL READ_REC_XY_RS( DIC_atmospFile,atmosp1,intime1,
daab022f42 Step*0098 & myIter,myThid )
5625485478 Jean*0099 ENDIF
0100 IF ( DIC_silicaFile .NE. ' ' ) THEN
a1d0e455fd Hann*0101 CALL READ_REC_XY_RS( DIC_silicaFile,silicaSurf0,intime0,
6891e8b81c Step*0102 & myIter,myThid )
a1d0e455fd Hann*0103 CALL READ_REC_XY_RS( DIC_silicaFile,silicaSurf1,intime1,
0104 & myIter,myThid )
0105 ENDIF
2e3e8c330d Jona*0106 #ifdef DIC_CALCITE_SAT
a1d0e455fd Hann*0107 IF ( DIC_deepSilicaFile .NE. ' ' ) THEN
0108 CALL READ_REC_XYZ_RS( DIC_deepSilicaFile,silicaDeep0,intime0,
0109 & myIter,myThid )
0110 CALL READ_REC_XYZ_RS( DIC_deepSilicaFile,silicaDeep1,intime1,
6891e8b81c Step*0111 & myIter,myThid )
5625485478 Jean*0112 ENDIF
2e3e8c330d Jona*0113 #endif
5625485478 Jean*0114 IF ( DIC_iceFile .NE. ' ' ) THEN
946d3aa393 Jean*0115 CALL READ_REC_XY_RS( DIC_iceFile,ice0,intime0,
daab022f42 Step*0116 & myIter,myThid )
946d3aa393 Jean*0117 CALL READ_REC_XY_RS( DIC_iceFile,ice1,intime1,
daab022f42 Step*0118 & myIter,myThid )
5625485478 Jean*0119 ENDIF
9b8a71f139 Step*0120 #ifdef READ_PAR
10167de8af Step*0121 IF ( DIC_parFile .NE. ' ' ) THEN
0122 CALL READ_REC_XY_RS( DIC_parFile,par0,intime0,
9b8a71f139 Step*0123 & myIter,myThid )
10167de8af Step*0124 CALL READ_REC_XY_RS( DIC_parFile,par1,intime1,
9b8a71f139 Step*0125 & myIter,myThid )
5625485478 Jean*0126 ENDIF
9b8a71f139 Step*0127 #endif
9e77a98ea8 Jean*0128 #ifdef LIGHT_CHL
0129
0130 IF ( DIC_chlaFile .NE. ' ' ) THEN
0131 CALL READ_REC_XY_RS( DIC_chlaFile,chlinput,1,
0132 & myIter,myThid )
0133 ENDIF
0134 #endif
29ad036528 Step*0135 #ifdef ALLOW_FE
5625485478 Jean*0136 IF ( DIC_ironFile .NE. ' ' ) THEN
946d3aa393 Jean*0137 CALL READ_REC_XY_RS( DIC_ironFile,feinput0,intime0,
daab022f42 Step*0138 & myIter,myThid )
946d3aa393 Jean*0139 CALL READ_REC_XY_RS( DIC_ironFile,feinput1,intime1,
daab022f42 Step*0140 & myIter,myThid )
5625485478 Jean*0141 ENDIF
daab022f42 Step*0142 #endif
63d67d9eeb Jean*0143
0144
0145 _EXCH_XY_RS(dicwind0, myThid )
0146 _EXCH_XY_RS(dicwind1, myThid )
0147 _EXCH_XY_RS(atmosp0, myThid )
0148 _EXCH_XY_RS(atmosp1, myThid )
a1d0e455fd Hann*0149 _EXCH_XY_RS(silicaSurf0, myThid )
0150 _EXCH_XY_RS(silicaSurf1, myThid )
2e3e8c330d Jona*0151 #ifdef DIC_CALCITE_SAT
0152 IF ( DIC_deepSilicaFile .NE. ' ' ) THEN
a1d0e455fd Hann*0153 _EXCH_XYZ_RS(silicaDeep0, myThid )
0154 _EXCH_XYZ_RS(silicaDeep1, myThid )
2e3e8c330d Jona*0155 ENDIF
0156 #endif
63d67d9eeb Jean*0157 _EXCH_XY_RS(ice0, myThid )
0158 _EXCH_XY_RS(ice1, myThid )
0159 #ifdef READ_PAR
0160 _EXCH_XY_RS(par0, myThid )
0161 _EXCH_XY_RS(par1, myThid )
0162 #endif
9e77a98ea8 Jean*0163 #ifdef LIGHT_CHL
0164 _EXCH_XY_RS(chlinput, myThid )
0165 #endif
63d67d9eeb Jean*0166 #ifdef ALLOW_FE
0167 _EXCH_XY_RS(feinput0, myThid )
0168 _EXCH_XY_RS(feinput1, myThid )
0169 #endif
0170
0171
0172 DO bj = myByLo(myThid), myByHi(myThid)
0173 DO bi = myBxLo(myThid), myBxHi(myThid)
0174 DIC_ldRec(bi,bj) = intime1
0175 ENDDO
0176 ENDDO
daab022f42 Step*0177
5625485478 Jean*0178
daab022f42 Step*0179 ENDIF
0180
0181 DO bj = myByLo(myThid), myByHi(myThid)
0182 DO bi = myBxLo(myThid), myBxHi(myThid)
946d3aa393 Jean*0183 IF ( DIC_windFile .NE. ' ' ) THEN
a34cef4f76 Jean*0184 DO j=1-OLy,sNy+OLy
0185 DO i=1-OLx,sNx+OLx
ad6cffb5e8 Gael*0186 WIND(i,j,bi,bj) = bWght*dicwind0(i,j,bi,bj)
0187 & + aWght*dicwind1(i,j,bi,bj)
e31f9c5af1 Davi*0188 ENDDO
0189 ENDDO
a1d0e455fd Hann*0190
946d3aa393 Jean*0191
0192
0193
4237a3338f Step*0194
e31f9c5af1 Davi*0195 ENDIF
0196 #ifndef USE_PLOAD
946d3aa393 Jean*0197 IF ( DIC_atmospFile .NE. ' ' ) THEN
a34cef4f76 Jean*0198 DO j=1-OLy,sNy+OLy
0199 DO i=1-OLx,sNx+OLx
e31f9c5af1 Davi*0200 AtmosP(i,j,bi,bj) = bWght*atmosp0(i,j,bi,bj)
0201 & + aWght*atmosp1(i,j,bi,bj)
0202 ENDDO
0203 ENDDO
0204 ENDIF
0205 #endif
2e3e8c330d Jona*0206 #ifdef DIC_CALCITE_SAT
0207 IF ( useCalciteSaturation .AND.
0208 & DIC_deepSilicaFile .NE. ' ' ) THEN
a1d0e455fd Hann*0209 DO k=1,Nr
0210 DO j=1-OLy,sNy+OLy
0211 DO i=1-OLx,sNx+OLx
0212 silicaDeep(i,j,k,bi,bj) = bWght*silicaDeep0(i,j,k,bi,bj)
0213 & + aWght*silicaDeep1(i,j,k,bi,bj)
0214 ENDDO
0215 ENDDO
0216 ENDDO
0217 ENDIF
2e3e8c330d Jona*0218 #endif
946d3aa393 Jean*0219 IF ( DIC_silicaFile .NE. ' ' ) THEN
a34cef4f76 Jean*0220 DO j=1-OLy,sNy+OLy
0221 DO i=1-OLx,sNx+OLx
a1d0e455fd Hann*0222
0223 silicaSurf(i,j,bi,bj) = bWght*silicaSurf0(i,j,bi,bj)
0224 & + aWght*silicaSurf1(i,j,bi,bj)
0225 ENDDO
0226 ENDDO
0227 #ifndef ALLOW_AUTODIFF
2e3e8c330d Jona*0228 #ifdef DIC_CALCITE_SAT
a1d0e455fd Hann*0229 ELSEIF ( DIC_deepSilicaFile .NE. ' ' ) THEN
0230 DO j=1-OLy,sNy+OLy
0231 DO i=1-OLx,sNx+OLx
0232
2e3e8c330d Jona*0233 silicaSurf(i,j,bi,bj) = bWght*silicaDeep0(i,j,1,bi,bj)
0234 & + aWght*silicaDeep1(i,j,1,bi,bj)
e31f9c5af1 Davi*0235 ENDDO
0236 ENDDO
2e3e8c330d Jona*0237 #endif /* DIC_CALCITE_SAT */
0238 #endif /* not ALLOW_AUTODIFF */
e31f9c5af1 Davi*0239 ENDIF
a1d0e455fd Hann*0240
946d3aa393 Jean*0241 IF ( DIC_iceFile .NE. ' ' ) THEN
a34cef4f76 Jean*0242 DO j=1-OLy,sNy+OLy
0243 DO i=1-OLx,sNx+OLx
f18a542536 Jean*0244 fIce(i,j,bi,bj) = bWght*ice0(i,j,bi,bj)
e31f9c5af1 Davi*0245 & + aWght*ice1(i,j,bi,bj)
0246 ENDDO
0247 ENDDO
0248 ENDIF
751b5628dd Step*0249
9b8a71f139 Step*0250 #ifdef READ_PAR
10167de8af Step*0251 IF ( DIC_parFile .NE. ' ' ) THEN
a34cef4f76 Jean*0252 DO j=1-OLy,sNy+OLy
0253 DO i=1-OLx,sNx+OLx
e31f9c5af1 Davi*0254 PAR(i,j,bi,bj) = bWght*par0(i,j,bi,bj)
0255 & + aWght*par1(i,j,bi,bj)
0256 ENDDO
0257 ENDDO
0258 ENDIF
9b8a71f139 Step*0259 #endif
9e77a98ea8 Jean*0260 #ifdef LIGHT_CHL
0261 IF ( DIC_chlaFile .NE. ' ' ) THEN
0262 DO j=1-OLy,sNy+OLy
0263 DO i=1-OLx,sNx+OLx
0264 CHL(i,j,bi,bj) = chlinput(i,j,bi,bj)
0265 ENDDO
0266 ENDDO
0267 ENDIF
0268 #endif
29ad036528 Step*0269 #ifdef ALLOW_FE
946d3aa393 Jean*0270 IF ( DIC_ironFile .NE. ' ' ) THEN
a34cef4f76 Jean*0271 DO j=1-OLy,sNy+OLy
0272 DO i=1-OLx,sNx+OLx
e31f9c5af1 Davi*0273 InputFe(i,j,bi,bj) = bWght*feinput0(i,j,bi,bj)
0274 & + aWght*feinput1(i,j,bi,bj)
0275 ENDDO
0276 ENDDO
0277 ENDIF
daab022f42 Step*0278 #endif
0279 ENDDO
0280 ENDDO
0281
946d3aa393 Jean*0282
b5faedaf88 Jean*0283 ENDIF
daab022f42 Step*0284
63d67d9eeb Jean*0285 #endif /* ALLOW_DIC */
daab022f42 Step*0286 RETURN
0287 END