File indexing completed on 2023-02-04 06:09:56 UTC
view on githubraw file Latest commit 2e3e8c33 on 2023-02-03 17:26:01 UTC
52a73f04fb Step*0001 #include "GCHEM_OPTIONS.h"
3f30a61ce1 Davi*0002 #ifdef ALLOW_DIC
0b2b69e236 Jean*0003 # include "DIC_OPTIONS.h"
0004 #endif
0005 #ifdef ALLOW_BLING
0006 # include "BLING_OPTIONS.h"
3f30a61ce1 Davi*0007 #endif
5dae554984 Oliv*0008 #ifdef ALLOW_DARWIN
0b2b69e236 Jean*0009 # include "DARWIN_OPTIONS.h"
5dae554984 Oliv*0010 #endif
0011
8120bbf77d Step*0012
969f3d7839 Mart*0013
52a73f04fb Step*0014
e1fb02e8f0 Jean*0015 SUBROUTINE GCHEM_FORCING_SEP( myTime, myIter, myThid )
52a73f04fb Step*0016
8120bbf77d Step*0017
969f3d7839 Mart*0018
0019
847df67610 Jean*0020
0021
969f3d7839 Mart*0022
8120bbf77d Step*0023
0024
52a73f04fb Step*0025 IMPLICIT NONE
0026 #include "SIZE.h"
0027 #include "EEPARAMS.h"
0028 #include "PARAMS.h"
d652e84639 Jean*0029 #include "GRID.h"
0030 #include "DYNVARS.h"
862edcc91c Jean*0031 #include "PTRACERS_SIZE.h"
d652e84639 Jean*0032 #include "PTRACERS_PARAMS.h"
847df67610 Jean*0033 #include "PTRACERS_FIELDS.h"
5dae554984 Oliv*0034 #include "GCHEM.h"
9217bf430c Step*0035 #ifdef ALLOW_DIC
0b2b69e236 Jean*0036 # include "DIC_VARS.h"
969f3d7839 Mart*0037 #endif /* ALLOW_DIC */
0b2b69e236 Jean*0038 #ifdef ALLOW_BLING
0039 # include "BLING_VARS.h"
0040 #endif /* ALLOW_BLING */
312383bc20 Step*0041 #ifdef ALLOW_DARWIN
0b2b69e236 Jean*0042 # include "DARWIN_FLUX.h"
0043 # include "DARWIN_SIZE.h"
312383bc20 Step*0044 #endif
52a73f04fb Step*0045
0046
0047
0048 _RL myTime
e1fb02e8f0 Jean*0049 INTEGER myIter, myThid
8120bbf77d Step*0050
52a73f04fb Step*0051
0052 #ifdef ALLOW_GCHEM
bdb0f70f18 Mart*0053 #ifdef GCHEM_SEPARATE_FORCING
52a73f04fb Step*0054
e1fb02e8f0 Jean*0055
0056
0057
0058
0059 INTEGER bi,bj,iMin,iMax,jMin,jMax
0060
5979b35251 Jean*0061 PARAMETER( iMin = 1 , iMax = sNx )
0062 PARAMETER( jMin = 1 , jMax = sNy )
6967cafe86 Jean*0063 #if (defined ALLOW_OBCS) || (defined ALLOW_DIAGNOSTICS)
d652e84639 Jean*0064 INTEGER iTr
6967cafe86 Jean*0065 #endif
0066 #ifdef ALLOW_DIAGNOSTICS
d652e84639 Jean*0067 CHARACTER*8 diagName
0068 #endif /* ALLOW_DIAGNOSTICS */
0069
5979b35251 Jean*0070 #ifdef ALLOW_DEBUG
0071 IF (debugMode) CALL DEBUG_ENTER('GCHEM_FORCING_SEP',myThid)
0072 #endif
0073
d652e84639 Jean*0074 #ifdef ALLOW_DIAGNOSTICS
0075 IF ( useDiagnostics ) THEN
0076
3c00322f26 Jean*0077 DO iTr = 1,gchem_sepFTr_num
d652e84639 Jean*0078 diagName = ' '
0079 WRITE(diagName,'(A5,A2)') 'GC_Tr', PTRACERS_ioLabel(iTr)
0080 CALL DIAGNOSTICS_FILL( pTracer(1-OLx,1-OLy,1,1,1,iTr), diagName,
0081 & 0, Nr, 0, 1, 1, myThid )
0082 ENDDO
0083 ENDIF
0084 #endif /* ALLOW_DIAGNOSTICS */
e1fb02e8f0 Jean*0085
52a73f04fb Step*0086
0087
0088
04d6738595 Davi*0089 #ifdef ALLOW_OLD_VIRTUALFLUX
312383bc20 Step*0090 #ifdef ALLOW_DIC
e3c76005ea Jean*0091 # ifdef ALLOW_AUTODIFF
3de72b607c Jean*0092 IF ( .NOT.useDIC ) STOP 'ABNORMAL END: S/R GCHEM_FORCING_SEP (1)'
e3c76005ea Jean*0093 # else /* ALLOW_AUTODIFF */
0094 IF ( useDIC ) THEN
0095 # endif /* ALLOW_AUTODIFF */
52a73f04fb Step*0096
71ebe3095c Davi*0097 gsm_s = 0. _d 0
0098 gsm_dic = 0. _d 0
0099 gsm_alk = 0. _d 0
7f498da5b5 Oliv*0100 CALL GCHEM_SURFMEAN(salt,gsm_s,myThid)
0101 CALL GCHEM_SURFMEAN(
35050126c6 Oliv*0102 & pTracer(1-OLx,1-OLy,1,1,1,1), gsm_dic, myThid )
7f498da5b5 Oliv*0103 CALL GCHEM_SURFMEAN(
35050126c6 Oliv*0104 & pTracer(1-OLx,1-OLy,1,1,1,2), gsm_alk, myThid )
e3c76005ea Jean*0105 # ifndef ALLOW_AUTODIFF
0106 ENDIF
0107 # endif /* ALLOW_AUTODIFF */
6967cafe86 Jean*0108 #endif /* ALLOW_DIC */
312383bc20 Step*0109 #ifdef ALLOW_DARWIN
6967cafe86 Jean*0110
312383bc20 Step*0111
0112 gsm_s = 0. _d 0
0113 gsm_dic = 0. _d 0
0114 gsm_alk = 0. _d 0
7f498da5b5 Oliv*0115 CALL GCHEM_SURFMEAN(salt,gsm_s,myThid)
0116 CALL GCHEM_SURFMEAN(
35050126c6 Oliv*0117 & pTracer(1-OLx,1-OLy,1,1,1,iDIC), gsm_dic, myThid )
7f498da5b5 Oliv*0118 CALL GCHEM_SURFMEAN(
35050126c6 Oliv*0119 & pTracer(1-OLx,1-OLy,1,1,1,iALK), gsm_alk, myThid )
6967cafe86 Jean*0120
312383bc20 Step*0121 #endif
52a73f04fb Step*0122
f54a5bbe52 Jean*0123 #endif /* ALLOW_OLD_VIRTUALFLUX */
52a73f04fb Step*0124
3f64833ab3 Oliv*0125 #ifdef ALLOW_DARWIN
6967cafe86 Jean*0126 IF ( useDARWIN ) THEN
0127 CALL DARWIN_CONS( myIter, myTime, myThid )
0128 ENDIF
3f64833ab3 Oliv*0129 #endif
52a73f04fb Step*0130
0131
0132
0133
f4faabd05a Step*0134
6967cafe86 Jean*0135 DO bj=myByLo(myThid),myByHi(myThid)
f4faabd05a Step*0136
6967cafe86 Jean*0137 DO bi=myBxLo(myThid),myBxHi(myThid)
52a73f04fb Step*0138
0139
fd9adddc17 Step*0140 #ifdef ALLOW_DIC
e3c76005ea Jean*0141 # ifdef ALLOW_AUTODIFF
3de72b607c Jean*0142 IF (.NOT.useDIC) STOP 'ABNORMAL END: S/R GCHEM_FORCING_SEP (2)'
e3c76005ea Jean*0143 # else /* ALLOW_AUTODIFF */
0144 IF ( useDIC ) THEN
0145 # endif /* ALLOW_AUTODIFF */
5979b35251 Jean*0146 #ifdef ALLOW_DEBUG
0147 IF (debugMode) CALL DEBUG_CALL('DIC_BIOTIC_FORCING',myThid)
0148 #endif
52a73f04fb Step*0149 #ifdef ALLOW_FE
e1fb02e8f0 Jean*0150 CALL DIC_BIOTIC_FORCING( pTracer(1-OLx,1-OLy,1,bi,bj,1),
0151 & pTracer(1-OLx,1-OLy,1,bi,bj,2),
0152 & pTracer(1-OLx,1-OLy,1,bi,bj,3),
0153 & pTracer(1-OLx,1-OLy,1,bi,bj,4),
0154 & pTracer(1-OLx,1-OLy,1,bi,bj,5),
0155 & pTracer(1-OLx,1-OLy,1,bi,bj,6),
8a77e77698 Jean*0156 & bi, bj, iMin, iMax, jMin, jMax,
2e3e8c330d Jona*0157 & myTime, myIter, myThid )
52a73f04fb Step*0158 #else
25bac1e456 Step*0159 #ifdef ALLOW_O2
8a77e77698 Jean*0160 CALL DIC_BIOTIC_FORCING( pTracer(1-OLx,1-OLy,1,bi,bj,1),
e1fb02e8f0 Jean*0161 & pTracer(1-OLx,1-OLy,1,bi,bj,2),
0162 & pTracer(1-OLx,1-OLy,1,bi,bj,3),
0163 & pTracer(1-OLx,1-OLy,1,bi,bj,4),
0164 & pTracer(1-OLx,1-OLy,1,bi,bj,5),
8a77e77698 Jean*0165 & bi, bj, iMin, iMax, jMin, jMax,
2e3e8c330d Jona*0166 & myTime, myIter, myThid )
25bac1e456 Step*0167 #else
8a77e77698 Jean*0168 CALL DIC_BIOTIC_FORCING( pTracer(1-OLx,1-OLy,1,bi,bj,1),
e1fb02e8f0 Jean*0169 & pTracer(1-OLx,1-OLy,1,bi,bj,2),
0170 & pTracer(1-OLx,1-OLy,1,bi,bj,3),
0171 & pTracer(1-OLx,1-OLy,1,bi,bj,4),
8a77e77698 Jean*0172 & bi, bj, iMin, iMax, jMin, jMax,
2e3e8c330d Jona*0173 & myTime, myIter, myThid )
25bac1e456 Step*0174 #endif
52a73f04fb Step*0175 #endif
e3c76005ea Jean*0176 # ifndef ALLOW_AUTODIFF
0177 ENDIF
0178 # endif /* ALLOW_AUTODIFF */
6967cafe86 Jean*0179 #endif /* ALLOW_DIC */
52a73f04fb Step*0180
6967cafe86 Jean*0181
0b2b69e236 Jean*0182
0183 #ifdef ALLOW_BLING
39016d5e45 Matt*0184 IF ( useBLING ) THEN
a284455135 Matt*0185 # ifndef USE_BLING_V1
e0f9a7ba0b Matt*0186 # ifdef USE_SIBLING
0b2b69e236 Jean*0187 CALL BLING_MAIN( pTracer(1-OLx,1-OLy,1,bi,bj,1),
0188 & pTracer(1-OLx,1-OLy,1,bi,bj,2),
0189 & pTracer(1-OLx,1-OLy,1,bi,bj,3),
0190 & pTracer(1-OLx,1-OLy,1,bi,bj,4),
0191 & pTracer(1-OLx,1-OLy,1,bi,bj,5),
0192 & pTracer(1-OLx,1-OLy,1,bi,bj,6),
0193 & pTracer(1-OLx,1-OLy,1,bi,bj,7),
0194 & pTracer(1-OLx,1-OLy,1,bi,bj,8),
0195 & pTracer(1-OLx,1-OLy,1,bi,bj,9),
e0f9a7ba0b Matt*0196 # ifdef ADVECT_PHYTO
0197 & pTracer(1-OLx,1-OLy,1,bi,bj,10),
0198 # endif
0b2b69e236 Jean*0199 & bi, bj, iMin, iMax, jMin, jMax,
e0f9a7ba0b Matt*0200 & myTime, myIter, myThid )
0201 # else /* USE_SIBLING */
0202 CALL BLING_MAIN( pTracer(1-OLx,1-OLy,1,bi,bj,1),
0203 & pTracer(1-OLx,1-OLy,1,bi,bj,2),
0204 & pTracer(1-OLx,1-OLy,1,bi,bj,3),
0205 & pTracer(1-OLx,1-OLy,1,bi,bj,4),
0206 & pTracer(1-OLx,1-OLy,1,bi,bj,5),
0207 & pTracer(1-OLx,1-OLy,1,bi,bj,6),
0208 & pTracer(1-OLx,1-OLy,1,bi,bj,7),
0209 & pTracer(1-OLx,1-OLy,1,bi,bj,8),
0210 # ifdef ADVECT_PHYTO
0211 & pTracer(1-OLx,1-OLy,1,bi,bj,9),
0212 # endif
0213 & bi, bj, iMin, iMax, jMin, jMax,
0214 & myTime, myIter, myThid )
0215 # endif /* USE_SIBLING */
0216 # else /* USE_BLING_v1 */
0217 CALL BLING_MAIN( pTracer(1-OLx,1-OLy,1,bi,bj,1),
0218 & pTracer(1-OLx,1-OLy,1,bi,bj,2),
0219 & pTracer(1-OLx,1-OLy,1,bi,bj,3),
0220 & pTracer(1-OLx,1-OLy,1,bi,bj,4),
0221 & pTracer(1-OLx,1-OLy,1,bi,bj,5),
0222 & pTracer(1-OLx,1-OLy,1,bi,bj,6),
0223 # ifdef ADVECT_PHYTO
0224 & pTracer(1-OLx,1-OLy,1,bi,bj,7),
0225 # endif
0226 & bi, bj, iMin, iMax, jMin, jMax,
0227 & myTime, myIter, myThid )
0228 # endif /* USE_BLING_v1 */
39016d5e45 Matt*0229 ENDIF
0b2b69e236 Jean*0230 #endif /* ALLOW_BLING */
0231
0232
5dae554984 Oliv*0233 #ifdef ALLOW_DARWIN
6967cafe86 Jean*0234 IF ( useDARWIN ) THEN
5dae554984 Oliv*0235 #ifdef NUT_SUPPLY
0236
5979b35251 Jean*0237 #ifdef ALLOW_DEBUG
0238 IF (debugMode) CALL DEBUG_CALL('DARWIN_NUT_SUPPLY',myThid)
0239 #endif
e1fb02e8f0 Jean*0240 CALL DARWIN_NUT_SUPPLY( pTracer(1-OLx,1-OLy,1,bi,bj,1),
8a77e77698 Jean*0241 & bi, bj, iMin, iMax, jMin, jMax,
0242 & myIter, myTime, myThid )
e1fb02e8f0 Jean*0243 CALL DARWIN_NUT_SUPPLY( pTracer(1-OLx,1-OLy,1,bi,bj,2),
8a77e77698 Jean*0244 & bi, bj, iMin, iMax, jMin, jMax,
0245 & myIter, myTime, myThid )
e1fb02e8f0 Jean*0246 CALL DARWIN_NUT_SUPPLY( pTracer(1-OLx,1-OLy,1,bi,bj,3),
8a77e77698 Jean*0247 & bi, bj, iMin, iMax, jMin, jMax,
0248 & myIter, myTime, myThid )
e1fb02e8f0 Jean*0249 CALL DARWIN_NUT_SUPPLY( pTracer(1-OLx,1-OLy,1,bi,bj,4),
8a77e77698 Jean*0250 & bi, bj, iMin, iMax, jMin, jMax,
0251 & myIter, myTime, myThid )
5dae554984 Oliv*0252 #endif
0253
0254
0255
5979b35251 Jean*0256 #ifdef ALLOW_DEBUG
0257 IF (debugMode) CALL DEBUG_CALL('DARWIN_FORCING',myThid)
0258 #endif
e1fb02e8f0 Jean*0259 CALL DARWIN_FORCING( pTracer(1-OLx,1-OLy,1,1,1,1),
8a77e77698 Jean*0260 & bi, bj, iMin, iMax, jMin, jMax,
0261 & myIter, myTime, myThid )
6967cafe86 Jean*0262 ENDIF
3f64833ab3 Oliv*0263 #endif /* ALLOW_DARWIN */
3a785bc7ce Step*0264
6967cafe86 Jean*0265 #ifdef ALLOW_OBCS
0266
0267
0268
0269
8a77e77698 Jean*0270 IF ( useOBCS .AND. .NOT.useDIC ) THEN
5979b35251 Jean*0271 #ifdef ALLOW_DEBUG
0272 IF (debugMode) CALL DEBUG_CALL('OBCS_APPLY_PTRACER',myThid)
0273 #endif
3c00322f26 Jean*0274 DO iTr = 1,gchem_sepFTr_num
6967cafe86 Jean*0275 CALL OBCS_APPLY_PTRACER(
0276 I bi, bj, 0, iTr,
0277 U pTracer(1-OLx,1-OLy,1,bi,bj,iTr),
0278 I myThid )
0279 ENDDO
0280 ENDIF
0281 #endif /* ALLOW_OBCS */
0282
52a73f04fb Step*0283 ENDDO
6967cafe86 Jean*0284 ENDDO
52a73f04fb Step*0285
3f64833ab3 Oliv*0286 #ifdef ALLOW_DARWIN
6967cafe86 Jean*0287 IF ( useDARWIN ) THEN
e1fb02e8f0 Jean*0288 CALL DARWIN_CONS( myIter, myTime, myThid )
3f64833ab3 Oliv*0289 #ifdef ALLOW_CARBON
0290 CALL DIC_ATMOS( 1, myTime, myIter, myThid )
0291 #endif
6967cafe86 Jean*0292 ENDIF
3f64833ab3 Oliv*0293 #endif /* ALLOW_DARWIN */
0294
3771641ead Step*0295 #ifdef ALLOW_DIC
3de72b607c Jean*0296 # ifdef ALLOW_AUTODIFF
0297 IF ( .NOT.useDIC ) STOP 'ABNORMAL END: S/R GCHEM_FORCING_SEP (3)'
0298 # else /* ALLOW_AUTODIFF */
6967cafe86 Jean*0299 IF ( useDIC ) THEN
3de72b607c Jean*0300 # endif /* ALLOW_AUTODIFF */
5979b35251 Jean*0301 #ifdef ALLOW_DEBUG
0302 IF (debugMode) CALL DEBUG_CALL('DIC_ATMOS',myThid)
0303 #endif
3de72b607c Jean*0304 CALL DIC_ATMOS( myTime, myIter, myThid )
6967cafe86 Jean*0305 # ifdef COMPONENT_MODULE
cdaaeac08c Davi*0306 CALL DIC_STORE_FLUXCO2( myTime, myIter, myThid )
6967cafe86 Jean*0307 # endif
0308 # ifdef ALLOW_COST
21a58cf9c9 Patr*0309 CALL DIC_COST( myTime, myIter, myThid )
6967cafe86 Jean*0310 # endif
3de72b607c Jean*0311 # ifndef ALLOW_AUTODIFF
6967cafe86 Jean*0312 ENDIF
3de72b607c Jean*0313 # endif /* ALLOW_AUTODIFF */
e5e08e2882 Jean*0314 #endif /* ALLOW_DIC */
21a58cf9c9 Patr*0315
5979b35251 Jean*0316 #ifdef ALLOW_DEBUG
0317 IF (debugMode) CALL DEBUG_LEAVE('GCHEM_FORCING_SEP',myThid)
0318 #endif
0319
bdb0f70f18 Mart*0320 #endif /* GCHEM_SEPARATE_FORCING */
52a73f04fb Step*0321 #endif /* ALLOW_GCHEM */
0322
0323 RETURN
0324 END