- Timestamp:
- 2018-08-20T15:17:09+02:00 (6 years ago)
- Location:
- branches/UKMO/dev_r5518_GO6_package_asm_3d_bgc_v3/NEMOGCM/NEMO/TOP_SRC/MEDUSA
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/dev_r5518_GO6_package_asm_3d_bgc_v3/NEMOGCM/NEMO/TOP_SRC/MEDUSA/air_sea.F90
r10020 r10055 77 77 zn_dms_chd, zn_dms_chn, zn_dms_din, & 78 78 zn_dms_mld, zn_dms_qsr, & 79 # if defined key_foam_medusa 80 f2_pco2w, f2_fco2w, & 81 # endif 79 82 xnln, xnld 80 83 USE trc, ONLY: med_diag … … 87 90 # else 88 91 USE trcco2_medusa, ONLY: trc_co2_medusa 92 # if defined key_foam_medusa 93 USE mocsy_mainmod, ONLY: p2fCO2 94 # endif 89 95 # endif 90 96 USE trcdms_medusa, ONLY: trc_dms_medusa … … 327 333 iters, ' AT (', ji, ', ', jj, ', 1) AT ', kt 328 334 endif 335 # if defined key_foam_medusa 336 !! DAF (Aug 2017): calculate fCO2 for observation operator 337 CALL p2fCO2( f_pco2w, ztmp, f_pp0, 0.0, 1, f_fco2w ) 338 # endif 329 339 ENDIF 330 340 ENDDO … … 506 516 CO2flux_conv 507 517 !! ENDIF 518 # if defined key_foam_medusa 519 !! DAF (Aug 2017): Save pCO2 and fCO2 for observation operator 520 f2_pco2w(ji,jj) = f_pco2w(ji,jj) 521 f2_fco2w(ji,jj) = f_pco2w(ji,jj) 522 # endif 508 523 IF ( lk_iomput ) THEN 509 524 IF( med_diag%ATM_PCO2%dgsave ) THEN -
branches/UKMO/dev_r5518_GO6_package_asm_3d_bgc_v3/NEMOGCM/NEMO/TOP_SRC/MEDUSA/bio_medusa_fin.F90
r10020 r10055 46 46 f3_co3, f3_h2co3, f3_hco3, & 47 47 f3_omarg, f3_omcal, f3_pH, & 48 # if defined key_foam_medusa 49 mld_max, pgrow_avg, & 50 ploss_avg, phyt_avg, & 51 # endif 48 52 za_sed_c, za_sed_ca, za_sed_fe, & 49 53 za_sed_n, za_sed_si, & … … 55 59 USE trc, ONLY: med_diag, nittrc000, trn 56 60 USE trcnam_trp, ONLY: ln_trcadv_cen2, ln_trcadv_tvd 61 # if defined key_foam_medusa 62 USE zdfmxl, ONLY: hmld 63 # endif 57 64 58 65 !! time (integer timestep) … … 113 120 # endif 114 121 122 # if defined key_foam_medusa 123 !!---------------------------------------------------------------------- 124 !! Diagnostics required for ocean colour assimilation: 125 !! Mixed layer average phytoplankton growth, loss and concentration 126 !! Maximum mixed layer depth 127 !!---------------------------------------------------------------------- 128 !! 129 DO jj = 2,jpjm1 130 DO ji = 2,jpim1 131 IF ( hmld(ji,jj) .GT. 0.0 ) THEN 132 pgrow_avg(ji,jj) = pgrow_avg(ji,jj) / hmld(ji,jj) 133 ploss_avg(ji,jj) = ploss_avg(ji,jj) / hmld(ji,jj) 134 phyt_avg(ji,jj) = phyt_avg(ji,jj) / hmld(ji,jj) 135 IF ( hmld(ji,jj) .GT. mld_max(ji,jj) ) THEN 136 mld_max(ji,jj) = hmld(ji,jj) 137 ENDIF 138 ENDIF 139 END DO 140 END DO 141 # endif 142 115 143 # if defined key_debug_medusa 116 144 !! AXY (12/07/17) -
branches/UKMO/dev_r5518_GO6_package_asm_3d_bgc_v3/NEMOGCM/NEMO/TOP_SRC/MEDUSA/bio_medusa_init.F90
r10020 r10055 35 35 USE bio_medusa_mod 36 36 USE par_oce, ONLY: jpi, jpj, jpk 37 # if defined key_foam_medusa 38 USE sms_medusa, ONLY: jdms, pgrow_avg, ploss_avg, phyt_avg, mld_max 39 # else 37 40 USE sms_medusa, ONLY: jdms 41 # endif 38 42 USE trc, ONLY: ln_diatrc, med_diag, nittrc000 39 43 USE in_out_manager, ONLY: lwp, numout … … 195 199 fslowsinkc(:,:) = 0.0 196 200 # endif 201 !! 202 # if defined key_foam_medusa 203 pgrow_avg(:,:) = 0.0 204 ploss_avg(:,:) = 0.0 205 phyt_avg(:,:) = 0.0 206 IF( kt == nittrc000 ) THEN 207 mld_max(:,:) = 0.0 208 ENDIF 209 # endif 197 210 !! 198 211 !! allocate and initiate 2D diag -
branches/UKMO/dev_r5518_GO6_package_asm_3d_bgc_v3/NEMOGCM/NEMO/TOP_SRC/MEDUSA/plankton.F90
r8441 r10055 36 36 fdpn, fdpn2, fdzme, fdzme2, & 37 37 fdzmi, fdzmi2, fsdiss, fsin, & 38 # if defined key_foam_medusa 39 fdep1, fprn, fprd, & 40 fgmepd, fgmepn, fgmipn, & 41 # endif 38 42 zphd, zphn, zpds, zzme, zzmi 43 # if defined key_foam_medusa 44 USE dom_oce, ONLY: e3t_0, e3t_n, gdepw_0, gdepw_n, tmask 45 USE par_kind, ONLY: wp 46 # else 39 47 USE dom_oce, ONLY: tmask 48 # endif 40 49 USE par_oce, ONLY: jpim1, jpjm1 41 50 USE phytoplankton_mod, ONLY: phytoplankton 42 51 USE sms_medusa, ONLY: jmpd, jmpn, jmzme, jmzmi, & 52 # if defined key_foam_medusa 53 pgrow_avg, ploss_avg, phyt_avg, & 54 # endif 43 55 xkphd, xkphn, xkzme, xkzmi, & 44 56 xmetapd, xmetapn, xmetazme, xmetazmi, & 45 57 xmpd, xmpn, xmzme, xmzmi, xsdiss 58 # if defined key_foam_medusa 59 USE zdfmxl, ONLY: hmld 60 # endif 46 61 USE zooplankton_mod, ONLY: zooplankton 62 63 # if defined key_foam_medusa 64 !!* Substitution 65 # include "domzgr_substitute.h90" 66 # endif 47 67 48 68 !! Level … … 50 70 51 71 INTEGER :: ji, jj 72 73 # if defined key_foam_medusa 74 REAL(wp) :: fq0 75 # endif 52 76 53 77 !!------------------------------------------------------------------- … … 188 212 ENDDO 189 213 214 # if defined key_foam_medusa 215 !! Mixed layer averages for ocean colour assimilation 216 !! 217 DO jj = 2,jpjm1 218 DO ji = 2,jpim1 219 IF (tmask(ji,jj,jk) == 1) THEN 220 if (fdep1(ji,jj).le.hmld(ji,jj)) then 221 !! this level is entirely in the mixed layer 222 fq0 = 1.0 223 elseif (fsdepw(ji,jj,jk).ge.hmld(ji,jj)) then 224 !! this level is entirely below the mixed layer 225 fq0 = 0.0 226 else 227 !! this level straddles the mixed layer 228 fq0 = (hmld(ji,jj) - fsdepw(ji,jj,jk)) / fse3t(ji,jj,jk) 229 endif 230 !! 231 pgrow_avg(ji,jj) = pgrow_avg(ji,jj) + & 232 (((fprn(ji,jj) * zphn(ji,jj)) + & 233 (fprd(ji,jj) * zphd(ji,jj)) ) * & 234 fse3t(ji,jj,jk) * fq0) 235 ploss_avg(ji,jj) = ploss_avg(ji,jj) + & 236 ((fgmepd(ji,jj) + fdpd(ji,jj) + & 237 fdpd2(ji,jj) + & 238 fgmepn(ji,jj) + fdpn(ji,jj) + & 239 fdpn2(ji,jj) + fgmipn(ji,jj) ) * & 240 fse3t(ji,jj,jk) * fq0) 241 phyt_avg(ji,jj) = phyt_avg(ji,jj) + & 242 ((zphn(ji,jj) + zphd(ji,jj)) * & 243 fse3t(ji,jj,jk) * fq0) 244 ENDIF 245 ENDDO 246 ENDDO 247 # endif 248 190 249 END SUBROUTINE plankton 191 250 -
branches/UKMO/dev_r5518_GO6_package_asm_3d_bgc_v3/NEMOGCM/NEMO/TOP_SRC/MEDUSA/sms_medusa.F90
r9385 r10055 212 212 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: f2_ccd_arg !: 2D aragonite CCD depth 213 213 !! 214 #if defined key_foam_medusa 215 !! 2D fields of pCO2 and fCO2 for observation operator 216 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: f2_pco2w !: 2D pCO2 217 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: f2_fco2w !: 2D fCO2 218 !! 219 #endif 214 220 !! 2D fields of organic and inorganic material sedimented on the seafloor 215 221 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: zb_sed_n !: 2D organic nitrogen (before) … … 299 305 #else 300 306 LOGICAL , PUBLIC :: lk_pi_co2 = .FALSE. !: PI xCO2 unused 307 # if defined key_foam_medusa 308 REAL(wp) :: xobs_xco2a !: Observed atmospheric xCO2, read in 309 # endif 301 310 #endif 302 311 … … 349 358 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: cmask !: ??? 350 359 360 #if defined key_foam_medusa 361 !!---------------------------------------------------------------------- 362 !! Parameters required for ocean colour assimilation 363 !!---------------------------------------------------------------------- 364 !! 365 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: pgrow_avg !: Mixed layer average phytoplankton growth 366 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: ploss_avg !: Mixed layer average phytoplankton loss 367 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: phyt_avg !: Mixed layer average phytoplankton 368 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: mld_max !: Maximum mixed layer depth 369 !! 370 #endif 371 351 372 !!---------------------------------------------------------------------- 352 373 !! NEMO/TOP 3.3 , NEMO Consortium (2010) … … 361 382 !!---------------------------------------------------------------------- 362 383 USE lib_mpp , ONLY: ctl_warn 363 INTEGER :: ierr( 8) ! Local variables384 INTEGER :: ierr(9) ! Local variables 364 385 !!---------------------------------------------------------------------- 365 386 ierr(:) = 0 … … 371 392 !* 2D and 3D fields of carbonate system parameters 372 393 ALLOCATE( f2_ccd_cal(jpi,jpj) , f2_ccd_arg(jpi,jpj) , & 394 # if defined key_foam_medusa 395 f2_pco2w(jpi,jpj) , f2_fco2w(jpi,jpj) , & 396 # endif 373 397 & f3_pH(jpi,jpj,jpk) , f3_h2co3(jpi,jpj,jpk), & 374 398 & f3_hco3(jpi,jpj,jpk) , f3_co3(jpi,jpj,jpk) , & … … 419 443 & ffln(jpi,jpj,jpk) , fflf(jpi,jpj,jpk) , & 420 444 & ffls(jpi,jpj,jpk) , cmask(jpi,jpj) , STAT=ierr(8) ) 445 # if defined key_foam_medusa 446 ALLOCATE( pgrow_avg(jpi,jpj) , ploss_avg(jpi,jpj) , & 447 & phyt_avg(jpi,jpj) , mld_max(jpi,jpj) , STAT=ierr(9) ) 448 # endif 421 449 #endif 422 450 ! -
branches/UKMO/dev_r5518_GO6_package_asm_3d_bgc_v3/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcbio_medusa.F90
r10020 r10055 105 105 USE sbc_oce, ONLY: lk_oasis 106 106 USE sms_medusa, ONLY: hist_pco2, co2_yinit, co2_yend, & 107 # if defined key_foam_medusa 108 xobs_xco2a, pgrow_avg, & 109 ploss_avg, phyt_avg, mld_max, & 110 # endif 107 111 lk_pi_co2 108 112 USE trc, ONLY: ln_rsttr, nittrc000, trn … … 330 334 !! f_xco2a(:,:) = 284.725 !! CMIP5 pre-industrial pCO2 331 335 f_xco2a(:,:) = 284.317 !! CMIP6 pre-industrial pCO2 336 # if defined key_foam_medusa 337 ELSEIF ( xobs_xco2a > 0.0 ) THEN 338 IF(lwp) WRITE(numout,*) ' using observed atm pCO2 = ', xobs_xco2a 339 f_xco2a(:,:) = xobs_xco2a 340 # endif 332 341 ELSE 333 342 !! xCO2 from file … … 418 427 !! now use the NEMO calendar tool : nsec_month to be sure to call 419 428 !! at the beginning of a new month . 429 #if defined key_foam_medusa 430 !! DAF: For FOAM we want to run daily 431 IF ( (kt == nittrc000 .AND. .NOT.ln_rsttr) .OR. & 432 (MOD(kt*rdt, 86400.0) == rdt) ) THEN 433 #else 420 434 IF ( (kt == nittrc000 .AND. .NOT.ln_rsttr) .OR. & 421 435 ( nsec_month .LE. INT(rdt) ) ) THEN 436 #endif 422 437 IF ( lwp ) WRITE(numout,*) & 423 438 ' *** 3D carb chem call *** -- kt:', kt, & -
branches/UKMO/dev_r5518_GO6_package_asm_3d_bgc_v3/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcini_medusa.F90
r9385 r10055 330 330 !!---------------------------------------------------------------------- 331 331 !! 332 # if defined key_foam_medusa 333 IF( ( .NOT.lk_oasis ) .AND. ( .NOT.lk_pi_co2 ) .AND. ( xobs_xco2a > 0.0 ) ) THEN 334 # else 332 335 IF( ( .NOT.lk_oasis ) .AND. ( .NOT.lk_pi_co2 ) ) THEN 336 # endif 333 337 IF(lwp) WRITE(numout,*) ' trc_ini_medusa: initialisating atm CO2 record' 334 338 CALL trc_ini_medusa_co2atm -
branches/UKMO/dev_r5518_GO6_package_asm_3d_bgc_v3/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcnam_medusa.F90
r9258 r10055 90 90 #if defined key_roam 91 91 NAMELIST/natroam/ xthetaphy,xthetazoo,xthetanit, & 92 # if defined key_foam_medusa 93 & xobs_xco2a, & 94 # endif 92 95 & xthetarem,xo2min 93 96 #endif … … 490 493 & ' key_debug_medusa = INACTIVE' 491 494 # endif 495 #if defined key_foam_medusa 496 WRITE(numout,*) & 497 & ' key_foam_medusa = ACTIVE' 498 #else 499 WRITE(numout,*) & 500 & ' key_foam_medusa = INACTIVE' 501 #endif 492 502 WRITE(numout,*) ' ' 493 503 … … 1030 1040 xthetarem = 0. 1031 1041 xo2min = 0. 1042 # if defined key_foam_medusa 1043 xobs_xco2a = 0. 1044 # endif 1032 1045 1033 1046 !READ(numnatm,natroam) … … 1049 1062 !! xthetarem : oxygen consumption by carbon remineralisation 1050 1063 !! xo2min : oxygen minimum concentration 1064 # if defined key_foam_medusa 1065 !! xobs_xco2a : observed atmospheric xCO2 1066 # endif 1051 1067 1052 1068 IF(lwp) THEN … … 1066 1082 WRITE(numout,*) & 1067 1083 & ' oxygen minimum concentration xo2min = ', xo2min 1084 # if defined key_foam_medusa 1085 WRITE(numout,*) & 1086 & ' observed atmospheric xCO2 xobs_xco2a = ', xobs_xco2a 1087 # endif 1068 1088 ENDIF 1069 1089
Note: See TracChangeset
for help on using the changeset viewer.