Changeset 9114
- Timestamp:
- 2017-12-18T13:16:44+01:00 (5 years ago)
- Location:
- branches/UKMO/dev_r5518_GO6_package/NEMOGCM
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/dev_r5518_GO6_package/NEMOGCM/CONFIG/SHARED/field_def_bgc.xml
r8521 r9114 449 449 <field id= "DMS_ANDM" long_name="DMS Surface Concentration, Anderson modif" unit="nmol/L" /> 450 450 <field id= "CHL_MLD" long_name="MLD averaged Chlorophyll" unit="mg Chl/m3" /> 451 <field id= "CHL_CPL" long_name="Scaled Surf or MLD Chlorophyll to UM" unit="kg Chl/m3" /> 451 452 <field id= "ATM_XCO2" long_name="Atmospheric xCO2" unit="ppm" /> 452 453 <field id= "OCN_FCO2" long_name="Surface ocean fCO2" unit="uatm" /> … … 703 704 <field field_ref= "OCN_CO3" name="OCN_CO3" /> 704 705 <field field_ref= "CO2FLUX" name="CO2FLUX" /> 705 <field field_ref= "FGCO2" name="FGCO2" />706 706 <field field_ref= "OM_CAL" name="OM_CAL" /> 707 707 <field field_ref= "OM_ARG" name="OM_ARG" /> … … 788 788 </field_group> 789 789 790 <field_group id="groupMEDUSA_cpl" > 791 <field field_ref= "CHL_CPL" name="CHL_CPL" /> 792 <field field_ref= "FGCO2" name="FGCO2_CPL" /> 793 <field field_ref= "DMS_SURF" name="DMS_CPL" /> 794 <field field_ref= "ATM_XCO2" name="AXCO2_CPL" /> 795 <field field_ref= "AEOLIAN" name="DUST_CPL" /> 796 </field_group> 797 790 798 <field_group id="groupMEDUSA_3dd" > 791 799 <field field_ref= "TPP3" name="TPP3" /> -
branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/MEDUSA/bio_medusa_diag_slice.F90
r8442 r9114 39 39 # endif 40 40 USE lbclnk, ONLY: lbc_lnk 41 USE trc, ONLY: trn 42 USE oce, ONLY: CO2Flux_out_cpl, DMS_out_cpl, chloro_out_cpl 41 USE oce, ONLY: CO2Flux_out_cpl, DMS_out_cpl 43 42 USE par_oce, ONLY: jpi, jpj 44 43 USE sbc_oce, ONLY: lk_oasis, qsr, wndm … … 48 47 jdms, ocal_ccd, xpar, xze, & 49 48 zb_co2_flx, zb_dms_srf, & 50 zn_co2_flx, zn_dms_srf , zn_chl_srf49 zn_co2_flx, zn_dms_srf 51 50 USE trc, ONLY: med_diag 52 51 … … 66 65 !! 67 66 IF (jk.eq.1) THEN 68 !! JPALM -- 02-06-2017 --69 !! add Chl surf coupling70 !! no need to output, just pass to cpl var71 IF (lk_oasis) THEN72 zn_chl_srf(:,:) = (trn(:,:,1,jpchd) + trn(:,:,1,jpchn)) * 1.0E-6 !! surf Chl in Kg-chl/m3 as needed for cpl73 chloro_out_cpl(:,:) = zn_chl_srf(:,:) !! Coupling Chl74 END IF75 67 IF( med_diag%MED_QSR%dgsave ) THEN 76 68 CALL iom_put( "MED_QSR" , qsr ) ! -
branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/MEDUSA/bio_medusa_fin.F90
r8521 r9114 39 39 # endif 40 40 USE lbclnk, ONLY: lbc_lnk 41 USE oce, ONLY: chloro_out_cpl 41 42 USE par_medusa, ONLY: jp_medusa_2d, jp_medusa_3d, & 42 jp_medusa_trd 43 jp_medusa_trd, jpchd, jpchn 43 44 USE par_oce, ONLY: jpi, jpim1, jpj, jpjm1, jpk 44 45 USE phycst, ONLY: rsmall 46 USE sbc_oce, ONLY: lk_oasis 45 47 USE sms_medusa, ONLY: jinorgben, jorgben, & 46 48 f3_co3, f3_h2co3, f3_hco3, & … … 51 53 zb_sed_n, zb_sed_si, & 52 54 zn_sed_c, zn_sed_ca, zn_sed_fe, & 53 zn_sed_n, zn_sed_si 54 USE trc, ONLY: med_diag, nittrc000 55 zn_sed_n, zn_sed_si, zn_chl_srf, & 56 scl_chl, chl_out 57 USE trc, ONLY: med_diag, nittrc000, trn 55 58 USE trcnam_trp, ONLY: ln_trcadv_cen2, ln_trcadv_tvd 56 59 … … 231 234 ENDDO 232 235 ENDDO 236 237 !!!--------------------------------------------------------------- 238 !! Calculates Chl diag for UM coupling 239 !!!--------------------------------------------------------------- 240 !! JPALM -- 02-06-2017 -- 241 !! add Chl surf coupling 242 !! no need to output, just pass to cpl var 243 IF (lk_oasis) THEN 244 IF (chl_out.eq.1) THEN 245 !! export and scale surface chl 246 zn_chl_srf(:,:) = MAX( 0.0, (trn(:,:,1,jpchd) + trn(:,:,1,jpchn)) * 1.0E-6 ) 247 !! surf Chl in Kg-chl/m3 as needed for cpl 248 ELSEIF (chl_out.eq.2) THEN 249 !! export and scale mld chl 250 zn_chl_srf(:,:) = MAX( 0.0, fchl_ml(:,:) * 1.0E-6 ) 251 !! mld Chl in Kg-chl/m3 as needed for cpl 252 ENDIF 253 chloro_out_cpl(:,:) = zn_chl_srf(:,:) * scl_chl !! Coupling Chl 254 END IF 255 233 256 !!---------------------------------------------------------------- 234 257 !! Add in XML diagnostics stuff … … 261 284 CALL iom_put( "CHL_MLD" , fchl_ml ) 262 285 ENDIF 286 IF (lk_oasis) THEN 287 IF ( med_diag%CHL_CPL%dgsave ) THEN 288 CALL iom_put( "CHL_CPL" , chloro_out_cpl ) 289 ENDIF 290 ENDIF 263 291 IF ( med_diag%PN_JLIM%dgsave ) THEN 264 292 CALL iom_put( "PN_JLIM" , fjln2d ) -
branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/MEDUSA/phytoplankton.F90
r8521 r9114 56 56 xvpd, xvpn, xxi 57 57 USE zdfmxl, ONLY: hmld 58 USE lbclnk, ONLY: lbc_lnk 58 59 59 60 !!* Substitution … … 380 381 ENDDO 381 382 ENDDO 383 CALL lbc_lnk(fchl_ml(:,:),'T',1. ) 382 384 383 385 DO jj = 2,jpjm1 -
branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/MEDUSA/sms_medusa.F90
r8132 r9114 177 177 INTEGER :: jdms_model !: choice of DMS model passed to atmosphere 178 178 !! 1 = ANDR, 2 = SIMO, 3 = ARAN, 4 = HALL 179 !! 179 !! FOR UKESM 180 REAL(wp) :: scl_chl !: scaling factor for tuned Chl passed to the UM 181 INTEGER :: chl_out !: select Chl field exported and scaled for UM: 182 !: 1- Surface Chl ; 2- MLD Chl 180 183 !! 181 184 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: remdmp !: depth dependent damping coefficient of passive tracers -
branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcini_medusa.F90
r8147 r9114 271 271 zn_dms_srf(:,:) = 0.0 272 272 za_dms_srf(:,:) = 0.0 273 zn_chl_srf(:,:) = 2.0E-8 !! Chl srf273 zn_chl_srf(:,:) = 2.0E-8 !! Chl cpl - set first as surf 274 274 !! 275 275 IF(lwp) WRITE(numout,*) ' trc_ini_medusa: DMS and CO2 flux (UKESM) initialised to zero' … … 278 278 CO2Flux_out_cpl(:,:) = zn_co2_flx(:,:) !! Coupling variable 279 279 DMS_out_cpl(:,:) = zn_dms_srf(:,:) !! Coupling variable 280 chloro_out_cpl(:,:) = zn_chl_srf(:,:) !! Coupling variable280 chloro_out_cpl(:,:) = zn_chl_srf(:,:) * scl_chl !! Coupling variable 281 281 END IF 282 282 !! -
branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcnam_medusa.F90
r8521 r9114 24 24 USE sms_medusa ! sms trends 25 25 USE iom ! I/O manager 26 USE sbc_oce, ONLY: lk_oasis 26 27 !!USE trc_nam_dia ! JPALM 13-11-2015 -- if iom_use for diag 27 28 … … 85 86 & jriver_n,jriver_si,jriver_c,jriver_alk,jriver_dep, & 86 87 & xsdiss, & 87 & sedlam,sedlostpoc,jpkb,jdms,jdms_input,jdms_model 88 & sedlam,sedlostpoc,jpkb,jdms,jdms_input,jdms_model, & 89 & scl_chl, chl_out 88 90 #if defined key_roam 89 91 NAMELIST/natroam/ xthetaphy,xthetazoo,xthetanit, & … … 246 248 jdms_input = 0 247 249 jdms_model = 0 250 scl_chl = 1. 251 chl_out = 1 248 252 249 253 !REWIND(numnatm) … … 400 404 !! 1 = ANDR, 2 = SIMO, 3 = ARAN, 4 = HALL, 5 = ANDM 401 405 !! 406 !! UKESM1 - exported Chl to UM 407 !! scl_chl : scaling factor to tune the chl field sent to the UM 408 !! chl_out : select the chl field to send at the UM: 409 !! 1- Surf Chl ; 2- MLD Chl 410 402 411 IF(lwp) THEN 403 412 !! … … 909 918 !! 910 919 !! UKESM1 - new diagnostics !! Jpalm; AXY (08/07/15) 911 WRITE(numout,*) '=== UKESM1-related parameters' 912 WRITE(numout,*) & 913 & ' include DMS diagnostic?, jdms = ', jdms 914 if (jdms_input .eq. 0) then 915 WRITE(numout,*) & 916 & ' use instant (0) or diel-avg (1) inputs, jdms_input = instantaneous' 917 else 918 WRITE(numout,*) & 919 & ' use instant (0) or diel-avg (1) inputs, jdms_input = diel-average' 920 endif 921 if (jdms_model .eq. 1) then 922 WRITE(numout,*) & 923 & ' choice of DMS model passed to atmosphere, jdms_model = Anderson et al. (2001)' 924 elseif (jdms_model .eq. 2) then 925 WRITE(numout,*) & 926 & ' choice of DMS model passed to atmosphere, jdms_model = Simo & Dachs (2002)' 927 elseif (jdms_model .eq. 3) then 928 WRITE(numout,*) & 929 & ' choice of DMS model passed to atmosphere, jdms_model = Aranami & Tsunogai (2004)' 930 elseif (jdms_model .eq. 4) then 931 WRITE(numout,*) & 932 & ' choice of DMS model passed to atmosphere, jdms_model = Halloran et al. (2010)' 933 elseif (jdms_model .eq. 5) then 934 WRITE(numout,*) & 935 & ' choice of DMS model passed to atmosphere, jdms_model = Anderson et al. (2001; modified)' 936 endif 920 WRITE(numout,*) '=== UKESM1-related parameters ===' 921 WRITE(numout,*) ' ---- --- ---' 922 923 IF (lk_oasis) THEN 924 WRITE(numout,*) '=== UKESM1 -- coupled DMS to the atmosphere' 925 WRITE(numout,*) & 926 & ' include DMS diagnostic?, jdms = ', jdms 927 if (jdms_input .eq. 0) then 928 WRITE(numout,*) & 929 & ' use instant (0) or diel-avg (1) inputs, jdms_input = instantaneous' 930 else 931 WRITE(numout,*) & 932 & ' use instant (0) or diel-avg (1) inputs, jdms_input = diel-average' 933 endif 934 if (jdms_model .eq. 1) then 935 WRITE(numout,*) & 936 & ' choice of DMS model passed to atmosphere, jdms_model = Anderson et al. (2001)' 937 elseif (jdms_model .eq. 2) then 938 WRITE(numout,*) & 939 & ' choice of DMS model passed to atmosphere, jdms_model = Simo & Dachs (2002)' 940 elseif (jdms_model .eq. 3) then 941 WRITE(numout,*) & 942 & ' choice of DMS model passed to atmosphere, jdms_model = Aranami & Tsunogai (2004)' 943 elseif (jdms_model .eq. 4) then 944 WRITE(numout,*) & 945 & ' choice of DMS model passed to atmosphere, jdms_model = Halloran et al. (2010)' 946 elseif (jdms_model .eq. 5) then 947 WRITE(numout,*) & 948 & ' choice of DMS model passed to atmosphere, jdms_model = Anderson et al. (2001; modified)' 949 endif 950 951 WRITE(numout,*) '=== UKESM1 -- coupled Chl to the atmosphere' 952 WRITE(numout,*) & 953 & ' Scaling factor to export tuned Chl to the atmosphere scl_chl = ', scl_chl 954 IF (chl_out .eq. 1) THEN 955 WRITE(numout,*) & 956 & ' Chl field to be scaled and sent to the atmosphere: chl_out = Surface Chl field ' 957 ELSEIF (chl_out .eq. 2) THEN 958 WRITE(numout,*) & 959 & ' Chl field to be scaled and sent to the atmosphere: chl_out = MLD Chl field ' 960 ENDIF 961 ENDIF ! IF lk_oasis=true 937 962 !! 938 963 ENDIF … … 2059 2084 med_diag%CHL_MLD%dgsave = .FALSE. 2060 2085 ENDIF 2086 IF (iom_use("CHL_CPL")) THEN 2087 med_diag%CHL_CPL%dgsave = .TRUE. 2088 ELSE 2089 med_diag%CHL_CPL%dgsave = .FALSE. 2090 ENDIF 2061 2091 !! 3D 2062 2092 IF (iom_use("TPP3")) THEN -
branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/trc.F90
r8521 r9114 135 135 TPP3, DETFLUX3, REMIN3N, PH3, OM_CAL3, & ! end of regular 3D 136 136 ! JPALM (01/09/17): additional UKESM 2D diag 137 CHL_MLD, 137 CHL_MLD, CHL_CPL, & 138 138 ! AXY (11/11/16): additional CMIP6 2D diagnostics 139 139 epC100, epCALC100, epN100, epSI100, & -
branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/trcrst.F90
r8427 r9114 277 277 !! as proxy of org matter from the ocean 278 278 !! -- needed for the coupling with atm 279 !! 07-12-2017 -- To make things cleaner, we want to store an 280 !! unscaled Chl field in the restart and only 281 !! scale it when reading it in. 282 279 283 IF( iom_varid( numrtr, 'N_CHL_srf', ldstop = .FALSE. ) > 0 ) THEN 280 IF(lwp) WRITE(numout,*) 'Chl surf concentration - reading in ...'284 IF(lwp) WRITE(numout,*) 'Chl cpl concentration - reading in ... - scale by ', scl_chl 281 285 CALL iom_get( numrtr, jpdom_autoglo, 'N_CHL_srf', zn_chl_srf(:,:) ) 282 286 ELSE 283 IF(lwp) WRITE(numout,*) ' Chl surf concentration - setting to zero ...'284 zn_chl_srf(:,:) = (trn(:,:,1,jpchn) + trn(:,:,1,jpchd)) * 1.E-6287 IF(lwp) WRITE(numout,*) 'set Chl coupled concentration - scaled by ', scl_chl 288 zn_chl_srf(:,:) = MAX( 0.0, (trn(:,:,1,jpchn) + trn(:,:,1,jpchd)) * 1.E-6 ) 285 289 ENDIF 286 290 IF (lk_oasis) THEN 287 chloro_out_cpl(:,:) = zn_chl_srf(:,:) !! Coupling variable291 chloro_out_cpl(:,:) = zn_chl_srf(:,:) * scl_chl !! Coupling variable 288 292 END IF 289 293 !! … … 297 301 call trc_rst_dia_stat(zn_dms_srf(:,:), 'DMS surf') 298 302 call trc_rst_dia_stat(zn_co2_flx(:,:), 'CO2 flux') 299 call trc_rst_dia_stat(zn_chl_srf(:,:), 'CHL surf') 303 IF (lk_oasis) THEN 304 call trc_rst_dia_stat(chloro_out_cpl(:,:), 'CHL cpl') 305 END IF 300 306 !! 301 307 !! JPALM 14-06-2016 -- add Carbonate chenistry variables through the restart … … 457 463 CALL iom_rstput( kt, nitrst, numrtw, 'B_CO2_flx', zb_co2_flx(:,:) ) 458 464 CALL iom_rstput( kt, nitrst, numrtw, 'N_CO2_flx', zn_co2_flx(:,:) ) 465 !! JPALM 07-12-2017 -- To make things cleaner, we want to store an 466 !! unscaled Chl field in the restart and only 467 !! scale it when reading it in. 459 468 CALL iom_rstput( kt, nitrst, numrtw, 'N_CHL_srf', zn_chl_srf(:,:) ) 460 469 !! … … 468 477 call trc_rst_dia_stat(zn_dms_srf(:,:), 'DMS surf') 469 478 call trc_rst_dia_stat(zn_co2_flx(:,:), 'CO2 flux') 470 call trc_rst_dia_stat(zn_chl_srf(:,:), ' CHL surf')479 call trc_rst_dia_stat(zn_chl_srf(:,:), 'unscaled CHL cpl') 471 480 !! 472 481 IF(lwp) WRITE(numout,*) ' MEDUSA averaged prop. for dust and iron dep.'
Note: See TracChangeset
for help on using the changeset viewer.