Changeset 9114


Ignore:
Timestamp:
2017-12-18T13:16:44+01:00 (3 years ago)
Author:
frrh
Message:

Apply changes developed under Met Office GMED ticket number 351 in development
branch branches/NERC/dev_r5518_GO6_ScalingCoupledChl.

The command issued to perform the merge is:

svn merge -r 8590:9053 svn+ssh://forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/branches/NERC/dev_r5518_GO6_ScalingCoupledChl

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  
    449449       <field id= "DMS_ANDM"   long_name="DMS Surface Concentration, Anderson modif" unit="nmol/L"      /> 
    450450       <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"   /> 
    451452       <field id= "ATM_XCO2"   long_name="Atmospheric xCO2"                          unit="ppm"         /> 
    452453       <field id= "OCN_FCO2"   long_name="Surface ocean fCO2"                        unit="uatm"        /> 
     
    703704      <field field_ref= "OCN_CO3"    name="OCN_CO3"    /> 
    704705      <field field_ref= "CO2FLUX"    name="CO2FLUX"    /> 
    705       <field field_ref= "FGCO2"      name="FGCO2"      /> 
    706706      <field field_ref= "OM_CAL"     name="OM_CAL"     /> 
    707707      <field field_ref= "OM_ARG"     name="OM_ARG"     /> 
     
    788788    </field_group> 
    789789 
     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 
    790798    <field_group id="groupMEDUSA_3dd" > 
    791799      <field field_ref= "TPP3"       name="TPP3"       /> 
  • branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/MEDUSA/bio_medusa_diag_slice.F90

    r8442 r9114  
    3939# endif 
    4040      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 
    4342      USE par_oce,           ONLY: jpi, jpj 
    4443      USE sbc_oce,           ONLY: lk_oasis, qsr, wndm 
     
    4847                                   jdms, ocal_ccd, xpar, xze,              & 
    4948                                   zb_co2_flx, zb_dms_srf,                 & 
    50                                    zn_co2_flx, zn_dms_srf, zn_chl_srf 
     49                                   zn_co2_flx, zn_dms_srf 
    5150      USE trc,               ONLY: med_diag 
    5251 
     
    6665      !! 
    6766      IF (jk.eq.1) THEN 
    68          !! JPALM -- 02-06-2017 -- 
    69          !! add Chl surf coupling 
    70          !! no need to output, just pass to cpl var 
    71          IF (lk_oasis) THEN 
    72             zn_chl_srf(:,:) = (trn(:,:,1,jpchd) + trn(:,:,1,jpchn)) * 1.0E-6  !! surf Chl in Kg-chl/m3 as needed for cpl 
    73             chloro_out_cpl(:,:) = zn_chl_srf(:,:)        !! Coupling Chl 
    74          END IF 
    7567         IF( med_diag%MED_QSR%dgsave ) THEN 
    7668            CALL iom_put( "MED_QSR"  , qsr ) ! 
  • branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/MEDUSA/bio_medusa_fin.F90

    r8521 r9114  
    3939# endif 
    4040      USE lbclnk,            ONLY: lbc_lnk 
     41      USE oce,               ONLY: chloro_out_cpl  
    4142      USE par_medusa,        ONLY: jp_medusa_2d, jp_medusa_3d,          & 
    42                                    jp_medusa_trd 
     43                                   jp_medusa_trd, jpchd, jpchn 
    4344      USE par_oce,           ONLY: jpi, jpim1, jpj, jpjm1, jpk 
    4445      USE phycst,            ONLY: rsmall 
     46      USE sbc_oce,           ONLY: lk_oasis 
    4547      USE sms_medusa,        ONLY: jinorgben, jorgben,                  & 
    4648                                   f3_co3, f3_h2co3, f3_hco3,           & 
     
    5153                                   zb_sed_n, zb_sed_si,                 & 
    5254                                   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  
    5558      USE trcnam_trp,        ONLY: ln_trcadv_cen2, ln_trcadv_tvd 
    5659  
     
    231234            ENDDO 
    232235         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 
    233256         !!---------------------------------------------------------------- 
    234257         !! Add in XML diagnostics stuff 
     
    261284            CALL iom_put( "CHL_MLD"  , fchl_ml ) 
    262285         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 
    263291         IF ( med_diag%PN_JLIM%dgsave ) THEN 
    264292            CALL iom_put( "PN_JLIM"  , fjln2d ) 
  • branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/MEDUSA/phytoplankton.F90

    r8521 r9114  
    5656                                   xvpd, xvpn, xxi 
    5757      USE zdfmxl,            ONLY: hmld 
     58      USE lbclnk,            ONLY: lbc_lnk 
    5859 
    5960   !!* Substitution 
     
    380381         ENDDO 
    381382      ENDDO 
     383      CALL lbc_lnk(fchl_ml(:,:),'T',1. ) 
    382384 
    383385      DO jj = 2,jpjm1 
  • branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/MEDUSA/sms_medusa.F90

    r8132 r9114  
    177177   INTEGER  ::  jdms_model   !: choice of DMS model passed to atmosphere 
    178178!!                              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 
    180183!! 
    181184   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  
    271271      zn_dms_srf(:,:)  = 0.0 
    272272      za_dms_srf(:,:)  = 0.0 
    273       zn_chl_srf(:,:)  = 2.0E-8 !! Chl srf 
     273      zn_chl_srf(:,:)  = 2.0E-8 !! Chl cpl - set first as surf 
    274274      !! 
    275275      IF(lwp) WRITE(numout,*) ' trc_ini_medusa: DMS and CO2 flux (UKESM) initialised to zero' 
     
    278278         CO2Flux_out_cpl(:,:) =  zn_co2_flx(:,:)   !! Coupling variable 
    279279         DMS_out_cpl(:,:)     =  zn_dms_srf(:,:)   !! Coupling variable 
    280          chloro_out_cpl(:,:)  =  zn_chl_srf(:,:)   !! Coupling variable 
     280         chloro_out_cpl(:,:)  =  zn_chl_srf(:,:) * scl_chl   !! Coupling variable 
    281281      END IF 
    282282      !! 
  • branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcnam_medusa.F90

    r8521 r9114  
    2424   USE sms_medusa      ! sms trends 
    2525   USE iom             ! I/O manager 
     26   USE sbc_oce, ONLY: lk_oasis 
    2627   !!USE trc_nam_dia     ! JPALM 13-11-2015 -- if iom_use for diag 
    2728 
     
    8586      &  jriver_n,jriver_si,jriver_c,jriver_alk,jriver_dep,   & 
    8687      &  xsdiss,                                              & 
    87       &  sedlam,sedlostpoc,jpkb,jdms,jdms_input,jdms_model 
     88      &  sedlam,sedlostpoc,jpkb,jdms,jdms_input,jdms_model,   & 
     89      &  scl_chl, chl_out 
    8890#if defined key_roam 
    8991      NAMELIST/natroam/ xthetaphy,xthetazoo,xthetanit,        & 
     
    246248      jdms_input  = 0 
    247249      jdms_model  = 0 
     250      scl_chl     = 1. 
     251      chl_out     = 1 
    248252             
    249253      !REWIND(numnatm) 
     
    400404!!                      1 = ANDR, 2 = SIMO, 3 = ARAN, 4 = HALL, 5 = ANDM 
    401405!! 
     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 
    402411      IF(lwp) THEN 
    403412!! 
     
    909918!! 
    910919!! 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 
    937962!! 
    938963      ENDIF 
     
    20592084          med_diag%CHL_MLD%dgsave = .FALSE. 
    20602085      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 
    20612091      !! 3D 
    20622092      IF  (iom_use("TPP3")) THEN  
  • branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/trc.F90

    r8521 r9114  
    135135                  TPP3, DETFLUX3, REMIN3N, PH3, OM_CAL3,                                             & ! end of regular 3D 
    136136! JPALM (01/09/17): additional UKESM 2D diag 
    137                   CHL_MLD,                                                                           & 
     137                  CHL_MLD, CHL_CPL,                                                                  & 
    138138! AXY (11/11/16): additional CMIP6 2D diagnostics 
    139139                  epC100, epCALC100, epN100, epSI100,                                                & 
  • branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/trcrst.F90

    r8427 r9114  
    277277      !!                     as proxy of org matter from the ocean 
    278278      !!                  -- 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 
    279283      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 
    281285         CALL iom_get( numrtr, jpdom_autoglo, 'N_CHL_srf',  zn_chl_srf(:,:)  ) 
    282286      ELSE 
    283          IF(lwp) WRITE(numout,*) 'Chl surf concentration - setting to zero ...' 
    284          zn_chl_srf(:,:)  = (trn(:,:,1,jpchn) + trn(:,:,1,jpchd)) * 1.E-6 
     287         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 ) 
    285289      ENDIF 
    286290      IF (lk_oasis) THEN 
    287          chloro_out_cpl(:,:) = zn_chl_srf(:,:)        !! Coupling variable 
     291         chloro_out_cpl(:,:) = zn_chl_srf(:,:) * scl_chl        !! Coupling variable 
    288292      END IF 
    289293      !! 
     
    297301      call trc_rst_dia_stat(zn_dms_srf(:,:), 'DMS surf') 
    298302      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 
    300306      !!   
    301307      !! JPALM 14-06-2016 -- add Carbonate chenistry variables through the restart 
     
    457463      CALL iom_rstput( kt, nitrst, numrtw, 'B_CO2_flx',  zb_co2_flx(:,:)  ) 
    458464      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. 
    459468      CALL iom_rstput( kt, nitrst, numrtw, 'N_CHL_srf',  zn_chl_srf(:,:)  ) 
    460469      !! 
     
    468477      call trc_rst_dia_stat(zn_dms_srf(:,:), 'DMS surf') 
    469478      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') 
    471480      !! 
    472481      IF(lwp) WRITE(numout,*) ' MEDUSA averaged prop. for dust and iron dep.' 
Note: See TracChangeset for help on using the changeset viewer.