New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 10141 for branches – NEMO

Changeset 10141 for branches


Ignore:
Timestamp:
2018-09-19T17:14:46+02:00 (6 years ago)
Author:
dford
Message:

Change cpp key key_foam_medusa to a logical switch ln_foam_medusa.

Location:
branches/UKMO/dev_r5518_GO6_package_asm_3d_bgc_v3/NEMOGCM
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/dev_r5518_GO6_package_asm_3d_bgc_v3/NEMOGCM/CONFIG/SHARED/namelist_medusa_ref

    r9258 r10141  
    305305      scl_chl    = 1.0      !! (IF key_oasis) scaling the exported to UM chlorophyll field 
    306306!! 
     307!! FOAM                         !! DAF 
     308      ln_foam_medusa = .false.  !! Calculate and save diagnostics for data assimilation 
     309!! 
    307310/ 
    308311!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
     
    319322!!                    = (119 / 106) = 1.1226 mol O2 / mol C 
    320323!!       xo2min    :  oxygen minimum concentration 
     324!!       xobs_xco2a:  observed atmospheric xCO2 (not used if <= 0) 
    321325! 
    322326&natroam 
     
    326330   xthetarem = 1.1226 
    327331   xo2min    = 4.0 
     332   xobs_xco2a= -999.0 
    328333/ 
    329334!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
  • branches/UKMO/dev_r5518_GO6_package_asm_3d_bgc_v3/NEMOGCM/NEMO/OPA_SRC/ASM/asmbgc.F90

    r10077 r10141  
    1010   !! 'key_hadocc'          : HadOCC model 
    1111   !! 'key_medusa'          : MEDUSA model 
    12    !! 'key_foam_medusa'     : MEDUSA extras for FOAM OBS and ASM 
    1312   !! 'key_roam'            : MEDUSA extras for carbonate cycle 
    1413   !! 'key_karaml'          : Kara mixed layer depth 
     
    5655      & jptra 
    5756#endif 
    58 #if defined key_medusa && defined key_foam_medusa 
     57#if defined key_medusa 
    5958   USE asmphyto2dbal_medusa, ONLY: & ! phyto2d balancing for MEDUSA 
    6059      & asm_phyto2d_bal_medusa 
     
    161160   REAL(wp), DIMENSION(:,:,:),   ALLOCATABLE :: pph_bkginc      ! pph inc 
    162161   REAL(wp), DIMENSION(:,:,:),   ALLOCATABLE :: po2_bkginc      ! po2 inc 
    163 #if defined key_top 
    164162   REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE :: phyto2d_balinc  ! Balancing incs from ocean colour 
    165163   REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE :: phyto3d_balinc  ! Balancing incs from p(l)chltot 
    166164   REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE :: pco2_balinc     ! Balancing incs from spco2/sfco2 
    167165   REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE :: ph_balinc       ! Balancing incs from pph 
    168 #endif 
    169  
    170 #if defined key_hadocc || (defined key_medusa && defined key_foam_medusa) 
     166 
    171167   REAL(wp), DIMENSION(:,:),     ALLOCATABLE :: pgrow_avg_bkg   ! Background phyto growth 
    172168   REAL(wp), DIMENSION(:,:),     ALLOCATABLE :: ploss_avg_bkg   ! Background phyto loss 
     
    174170   REAL(wp), DIMENSION(:,:),     ALLOCATABLE :: mld_max_bkg     ! Background max MLD 
    175171   REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE :: tracer_bkg      ! Background tracer state 
    176 #endif 
    177 #if defined key_hadocc 
    178172   REAL(wp), DIMENSION(:,:,:),   ALLOCATABLE :: chl_bkg         ! Background chl 
    179173   REAL(wp), DIMENSION(:,:,:),   ALLOCATABLE :: cchl_p_bkg      ! Background c:chl 
    180 #endif 
    181174 
    182175#  include "domzgr_substitute.h90" 
     
    197190      !!------------------------------------------------------------------------ 
    198191 
    199 #if ! defined key_top || ( ! defined key_hadocc && ( ! defined key_medusa || ! defined key_foam_medusa ) ) 
     192#if ! defined key_top || ( ! defined key_hadocc && ! defined key_medusa ) 
    200193      CALL ctl_stop( ' Attempting to assimilate biogeochemical observations', & 
    201194         &           ' but no compatible biogeochemical model is available' ) 
     
    206199         & ln_slphynoninc .OR. ln_psi4inc .OR. ln_pphinc .OR. ln_po2inc ) THEN 
    207200         CALL ctl_stop( ' Cannot assimilate PFTs, Si4, pH or O2 into HadOCC' ) 
     201      ENDIF 
     202#endif 
     203 
     204#if defined key_medusa 
     205      IF ( .NOT. ln_foam_medusa ) THEN 
     206         CALL ctl_stop( ' MEDUSA data assimilation options not turned on: set ln_foam_medusa' ) 
    208207      ENDIF 
    209208#endif 
     
    517516      !!------------------------------------------------------------------------ 
    518517 
    519 #if defined key_top && ( defined key_hadocc || (defined key_medusa && defined key_foam_medusa) ) 
     518#if defined key_top && ( defined key_hadocc || defined key_medusa ) 
    520519      IF ( ln_slchltotinc .OR. ln_slchldiainc .OR. ln_slchlnoninc .OR. & 
    521520         & ln_schltotinc  .OR. ln_slphytotinc .OR. ln_slphydiainc .OR. & 
     
    552551         chl_bkg(:,:,:)    = chl_bkg(:,:,:)    * tmask(:,:,:) 
    553552         cchl_p_bkg(:,:,:) = cchl_p_bkg(:,:,:) * tmask(:,:,:) 
    554 #elif defined key_medusa && defined key_foam_medusa 
     553#elif defined key_medusa 
    555554         CALL iom_get( inum, jpdom_autoglo, 'medusa_chn', tracer_bkg(:,:,:,jpchn) ) 
    556555         CALL iom_get( inum, jpdom_autoglo, 'medusa_chd', tracer_bkg(:,:,:,jpchd) ) 
     
    578577            CALL iom_get( inum, jpdom_autoglo, 'hadocc_dic', tracer_bkg(:,:,:,jp_had_dic) ) 
    579578            CALL iom_get( inum, jpdom_autoglo, 'hadocc_alk', tracer_bkg(:,:,:,jp_had_alk) ) 
    580 #elif defined key_medusa && defined key_foam_medusa 
     579#elif defined key_medusa 
    581580            CALL iom_get( inum, jpdom_autoglo, 'medusa_zmi', tracer_bkg(:,:,:,jpzmi) ) 
    582581            CALL iom_get( inum, jpdom_autoglo, 'medusa_zme', tracer_bkg(:,:,:,jpzme) ) 
     
    594593            CALL iom_get( inum, jpdom_autoglo, 'hadocc_dic', tracer_bkg(:,:,:,jp_had_dic) ) 
    595594            CALL iom_get( inum, jpdom_autoglo, 'hadocc_alk', tracer_bkg(:,:,:,jp_had_alk) ) 
    596 #elif defined key_medusa && defined key_foam_medusa 
     595#elif defined key_medusa 
    597596            CALL iom_get( inum, jpdom_autoglo, 'medusa_dic', tracer_bkg(:,:,:,jpdic) ) 
    598597            CALL iom_get( inum, jpdom_autoglo, 'medusa_alk', tracer_bkg(:,:,:,jpalk) ) 
     
    620619         CALL iom_get( inum, jpdom_autoglo, 'hadocc_dic', tracer_bkg(:,:,:,jp_had_dic) ) 
    621620         CALL iom_get( inum, jpdom_autoglo, 'hadocc_alk', tracer_bkg(:,:,:,jp_had_alk) ) 
    622 #elif defined key_medusa && defined key_foam_medusa 
     621#elif defined key_medusa 
    623622         CALL iom_get( inum, jpdom_autoglo, 'medusa_dic', tracer_bkg(:,:,:,jpdic) ) 
    624623         CALL iom_get( inum, jpdom_autoglo, 'medusa_alk', tracer_bkg(:,:,:,jpalk) ) 
     
    690689            & ln_schltotinc  .OR. ln_slphytotinc .OR. ln_slphydiainc .OR. & 
    691690            & ln_slphynoninc ) THEN 
    692 #if defined key_medusa && defined key_foam_medusa 
     691#if defined key_medusa 
    693692            CALL iom_rstput( kt, kt, inum, 'phy2d_chn', phyto2d_balinc(:,:,:,jpchn) ) 
    694693            CALL iom_rstput( kt, kt, inum, 'phy2d_chd', phyto2d_balinc(:,:,:,jpchd) ) 
     
    721720 
    722721         IF ( ln_plchltotinc .OR. ln_pchltotinc ) THEN 
    723 #if defined key_medusa && defined key_foam_medusa 
     722#if defined key_medusa 
    724723            CALL iom_rstput( kt, kt, inum, 'phy3d_chn', phyto3d_balinc(:,:,:,jpchn) ) 
    725724            CALL iom_rstput( kt, kt, inum, 'phy3d_chd', phyto3d_balinc(:,:,:,jpchd) ) 
     
    733732 
    734733         IF ( ln_spco2inc ) THEN 
    735 #if defined key_medusa && defined key_foam_medusa 
     734#if defined key_medusa 
    736735            CALL iom_rstput( kt, kt, inum, 'pco2_dic', pco2_balinc(:,:,:,jpdic) ) 
    737736            CALL iom_rstput( kt, kt, inum, 'pco2_alk', pco2_balinc(:,:,:,jpalk) ) 
     
    741740#endif 
    742741         ELSE IF ( ln_sfco2inc ) THEN 
    743 #if defined key_medusa && defined key_foam_medusa 
     742#if defined key_medusa 
    744743            CALL iom_rstput( kt, kt, inum, 'fco2_dic', pco2_balinc(:,:,:,jpdic) ) 
    745744            CALL iom_rstput( kt, kt, inum, 'fco2_alk', pco2_balinc(:,:,:,jpalk) ) 
     
    751750 
    752751         IF ( ln_pphinc ) THEN 
    753 #if defined key_medusa && defined key_foam_medusa 
     752#if defined key_medusa 
    754753            CALL iom_rstput( kt, kt, inum, 'ph_dic', ph_balinc(:,:,:,jpdic) ) 
    755754            CALL iom_rstput( kt, kt, inum, 'ph_alk', ph_balinc(:,:,:,jpalk) ) 
     
    806805      CALL iom_rstput( kt, nitbkg_r, knum, 'hadocc_chl'  , HADOCC_CHL(:,:,:)     ) 
    807806      CALL iom_rstput( kt, nitbkg_r, knum, 'hadocc_cchl' , cchl_p(:,:,:)         ) 
    808 #elif defined key_medusa && defined key_foam_medusa 
     807#elif defined key_medusa 
    809808      CALL iom_rstput( kt, nitbkg_r, knum, 'pgrow_avg'   , pgrow_avg        ) 
    810809      CALL iom_rstput( kt, nitbkg_r, knum, 'ploss_avg'   , ploss_avg        ) 
     
    904903      REAL(wp), DIMENSION(jpi,jpj) :: zinc_phytot ! Local phytot incs 
    905904      REAL(wp), DIMENSION(jpi,jpj) :: zbkg_phytot ! Local phytot bkg 
    906 #if defined key_medusa && defined key_foam_medusa 
     905#if defined key_medusa 
    907906      REAL(wp), DIMENSION(jpi,jpj) :: zinc_chldia ! Local chldia incs 
    908907      REAL(wp), DIMENSION(jpi,jpj) :: zbkg_chldia ! Local chldia bkg 
     
    924923         ! Total chlorophyll 
    925924         IF ( ln_slchltotinc ) THEN 
    926 #if defined key_medusa && defined key_foam_medusa 
     925#if defined key_medusa 
    927926            zbkg_chltot(:,:) = tracer_bkg(:,:,1,jpchn) + tracer_bkg(:,:,1,jpchd) 
    928927#elif defined key_hadocc 
     
    936935         ENDIF 
    937936 
    938 #if defined key_medusa && defined key_foam_medusa 
     937#if defined key_medusa 
    939938         ! Diatom chlorophyll 
    940939         IF ( ln_slchldiainc ) THEN 
     
    946945#endif 
    947946 
    948 #if defined key_medusa && defined key_foam_medusa 
     947#if defined key_medusa 
    949948         ! Non-diatom chlorophyll 
    950949         IF ( ln_slchlnoninc ) THEN 
     
    958957         ! Total phytoplankton carbon 
    959958         IF ( ln_slphytotinc ) THEN 
    960 #if defined key_medusa && defined key_foam_medusa 
     959#if defined key_medusa 
    961960            zbkg_phytot(:,:) = (trn(:,:,1,jpphn) * xthetapn) + (trn(:,:,1,jpphd) * xthetapd) 
    962961#elif defined key_hadocc 
     
    968967         ENDIF 
    969968 
    970 #if defined key_medusa && defined key_foam_medusa 
     969#if defined key_medusa 
    971970         ! Diatom phytoplankton carbon 
    972971         IF ( ln_slphydiainc ) THEN 
     
    978977#endif 
    979978 
    980 #if defined key_medusa && defined key_foam_medusa 
     979#if defined key_medusa 
    981980         ! Non-diatom phytoplankton carbon 
    982981         IF ( ln_slphynoninc ) THEN 
     
    990989         ! Select mixed layer 
    991990         IF ( ll_asmdin ) THEN 
    992 #if defined key_top && ( defined key_hadocc || (defined key_medusa && defined key_foam_medusa) ) 
     991#if defined key_top && ( defined key_hadocc || defined key_medusa ) 
    993992            CALL ctl_warn( ' Doing direct initialisation with ocean colour assimilation', & 
    994993               &           ' Mixed layer depth taken to be background maximum mld_max_bkg' ) 
     
    10261025         zincper = (nitiaufin_r - nitiaustr_r + 1) * rdt 
    10271026 
    1028 #if defined key_medusa && defined key_foam_medusa 
     1027#if defined key_medusa 
    10291028         CALL asm_phyto2d_bal_medusa( (ln_slchltotinc .OR. ln_schltotinc), & 
    10301029            &                         zinc_chltot,                         & 
     
    10841083            ! Add directly to trn and trb, rather than to tra, because tra gets 
    10851084            ! reset to zero at the start of trc_stp, called after this routine 
    1086 #if defined key_medusa && defined key_foam_medusa 
     1085#if defined key_medusa 
    10871086            WHERE( phyto2d_balinc(:,:,:,jp_msa0:jp_msa1) > 0.0_wp .OR. & 
    10881087               &   trn(:,:,:,jp_msa0:jp_msa1) + phyto2d_balinc(:,:,:,jp_msa0:jp_msa1) * zincwgt > 0.0_wp ) 
     
    11201119            CALL ctl_warn( ' Doing direct initialisation with phyto2d assimilation', & 
    11211120               &           ' Background state is taken from model rather than background file' ) 
    1122 #if defined key_medusa && defined key_foam_medusa 
     1121#if defined key_medusa 
    11231122            WHERE( phyto2d_balinc(:,:,:,jp_msa0:jp_msa1) > 0.0_wp .OR. & 
    11241123               &   trn(:,:,:,jp_msa0:jp_msa1) + phyto2d_balinc(:,:,:,jp_msa0:jp_msa1) > 0.0_wp ) 
     
    11871186            ! 3) Subtract background from analysis to get chl incs 
    11881187            ! If rn_maxchlinc > 0 then cap total absolute chlorophyll increment at that value 
    1189 #if defined key_medusa && defined key_foam_medusa 
     1188#if defined key_medusa 
    11901189            bkg_chl(:,:,:) = tracer_bkg(:,:,:,jpchn) + tracer_bkg(:,:,:,jpchd) 
    11911190#elif defined key_hadocc 
     
    12201219         ENDIF 
    12211220 
    1222 #if defined key_medusa && defined key_foam_medusa 
     1221#if defined key_medusa 
    12231222         ! Loop over each grid point partioning the increments based on existing ratios 
    12241223         DO jk = 1, jpk 
     
    12711270            ! Add directly to trn and trb, rather than to tra, because tra gets 
    12721271            ! reset to zero at the start of trc_stp, called after this routine 
    1273 #if defined key_medusa && defined key_foam_medusa 
     1272#if defined key_medusa 
    12741273            WHERE( phyto3d_balinc(:,:,:,jp_msa0:jp_msa1) > 0.0_wp .OR. & 
    12751274               &   trn(:,:,:,jp_msa0:jp_msa1) + phyto3d_balinc(:,:,:,jp_msa0:jp_msa1) * zincwgt > 0.0_wp ) 
     
    13071306            CALL ctl_warn( ' Doing direct initialisation with phyto3d assimilation', & 
    13081307               &           ' Background state is taken from model rather than background file' ) 
    1309 #if defined key_medusa && defined key_foam_medusa 
     1308#if defined key_medusa 
    13101309            WHERE( phyto3d_balinc(:,:,:,jp_msa0:jp_msa1) > 0.0_wp .OR. & 
    13111310               &   trn(:,:,:,jp_msa0:jp_msa1) + phyto3d_balinc(:,:,:,jp_msa0:jp_msa1) > 0.0_wp ) 
     
    13881387 
    13891388         IF ( ln_sfco2inc ) THEN 
    1390 #if defined key_medusa && defined key_foam_medusa && defined key_roam 
     1389#if defined key_medusa && defined key_roam 
    13911390            ! If assimilating fCO2, then convert to pCO2 using MEDUSA MOCSY subroutine 
    13921391            patm(1) = 1.0 
     
    14211420         ENDIF 
    14221421 
    1423 #if defined key_medusa && defined key_foam_medusa 
     1422#if defined key_medusa 
    14241423         ! Account for phytoplankton balancing if required 
    14251424         IF ( ln_phytobal ) THEN 
     
    14561455         ! Select mixed layer 
    14571456         IF ( ll_asmdin ) THEN 
    1458 #if defined key_hadocc || (defined key_medusa && defined key_foam_medusa) 
     1457#if defined key_hadocc || defined key_medusa 
    14591458            CALL ctl_warn( ' Doing direct initialisation with pCO2 assimilation', & 
    14601459               &           ' Mixed layer depth taken to be background maximum mld_max_bkg' ) 
     
    15411540            ! Add directly to trn and trb, rather than to tra, because tra gets 
    15421541            ! reset to zero at the start of trc_stp, called after this routine 
    1543 #if defined key_medusa && defined key_foam_medusa 
     1542#if defined key_medusa 
    15441543            WHERE( pco2_balinc(:,:,:,jp_msa0:jp_msa1) > 0.0_wp .OR. & 
    15451544               &   trn(:,:,:,jp_msa0:jp_msa1) + pco2_balinc(:,:,:,jp_msa0:jp_msa1) * zincwgt > 0.0_wp ) 
     
    15781577            CALL ctl_warn( ' Doing direct initialisation with pCO2 assimilation', & 
    15791578               &           ' Background state is taken from model rather than background file' ) 
    1580 #if defined key_medusa && defined key_foam_medusa 
     1579#if defined key_medusa 
    15811580            WHERE( pco2_balinc(:,:,:,jp_msa0:jp_msa1) > 0.0_wp .OR. & 
    15821581               &   trn(:,:,:,jp_msa0:jp_msa1) + pco2_balinc(:,:,:,jp_msa0:jp_msa1) > 0.0_wp ) 
     
    16491648      !!------------------------------------------------------------------------ 
    16501649 
    1651 #if ! (defined key_medusa && defined key_foam_medusa) 
     1650#if ! defined key_medusa 
    16521651      CALL ctl_stop( ' pH balancing only implemented for MEDUSA' ) 
    16531652#else 
     
    18581857 
    18591858         IF ( ln_pno3inc ) THEN 
    1860 #if defined key_hadocc || ( defined key_medusa && defined key_foam_medusa ) 
     1859#if defined key_hadocc || defined key_medusa 
    18611860#if defined key_hadocc 
    18621861            it = jp_had_nut 
    1863 #elif defined key_medusa && defined key_foam_medusa 
     1862#elif defined key_medusa 
    18641863            it = jpdin 
    18651864#endif 
     
    18821881 
    18831882         IF ( ln_psi4inc ) THEN 
    1884 #if defined key_medusa && defined key_foam_medusa 
     1883#if defined key_medusa 
    18851884            it = jpsil 
    18861885            IF ( ln_phytobal ) THEN 
     
    19021901 
    19031902         IF ( ln_pdicinc ) THEN 
    1904 #if defined key_hadocc || ( defined key_medusa && defined key_foam_medusa ) 
     1903#if defined key_hadocc || defined key_medusa 
    19051904#if defined key_hadocc 
    19061905            it = jp_had_dic 
    1907 #elif defined key_medusa && defined key_foam_medusa 
     1906#elif defined key_medusa 
    19081907            it = jpdic 
    19091908#endif 
     
    19261925 
    19271926         IF ( ln_palkinc ) THEN 
    1928 #if defined key_hadocc || ( defined key_medusa && defined key_foam_medusa ) 
     1927#if defined key_hadocc || defined key_medusa 
    19291928#if defined key_hadocc 
    19301929            it = jp_had_alk 
    1931 #elif defined key_medusa && defined key_foam_medusa 
     1930#elif defined key_medusa 
    19321931            it = jpalk 
    19331932#endif 
     
    19501949 
    19511950         IF ( ln_po2inc ) THEN 
    1952 #if defined key_medusa && defined key_foam_medusa 
     1951#if defined key_medusa 
    19531952            it = jpoxy 
    19541953            IF ( ln_phytobal ) THEN 
     
    20022001                  trb(:,:,:,jp_had_nut) = trb(:,:,:,jp_had_nut) + pno3_bkginc(:,:,:) * zincwgt 
    20032002               END WHERE 
    2004 #elif defined key_medusa && defined key_foam_medusa 
     2003#elif defined key_medusa 
    20052004               WHERE( pno3_bkginc(:,:,:) > 0.0_wp .OR. & 
    20062005                  &   trn(:,:,:,jpdin) + pno3_bkginc(:,:,:) * zincwgt > 0.0_wp ) 
     
    20142013 
    20152014            IF ( ln_psi4inc ) THEN 
    2016 #if defined key_medusa && defined key_foam_medusa 
     2015#if defined key_medusa 
    20172016               WHERE( psi4_bkginc(:,:,:) > 0.0_wp .OR. & 
    20182017                  &   trn(:,:,:,jpsil) + psi4_bkginc(:,:,:) * zincwgt > 0.0_wp ) 
     
    20322031                  trb(:,:,:,jp_had_dic) = trb(:,:,:,jp_had_dic) + pdic_bkginc(:,:,:) * zincwgt 
    20332032               END WHERE 
    2034 #elif defined key_medusa && defined key_foam_medusa 
     2033#elif defined key_medusa 
    20352034               WHERE( pdic_bkginc(:,:,:) > 0.0_wp .OR. & 
    20362035                  &   trn(:,:,:,jpdic) + pdic_bkginc(:,:,:) * zincwgt > 0.0_wp ) 
     
    20502049                  trb(:,:,:,jp_had_alk) = trb(:,:,:,jp_had_alk) + palk_bkginc(:,:,:) * zincwgt 
    20512050               END WHERE 
    2052 #elif defined key_medusa && defined key_foam_medusa 
     2051#elif defined key_medusa 
    20532052               WHERE( palk_bkginc(:,:,:) > 0.0_wp .OR. & 
    20542053                  &   trn(:,:,:,jpalk) + palk_bkginc(:,:,:) * zincwgt > 0.0_wp ) 
     
    20622061 
    20632062            IF ( ln_po2inc ) THEN 
    2064 #if defined key_medusa && defined key_foam_medusa 
     2063#if defined key_medusa 
    20652064               WHERE( po2_bkginc(:,:,:) > 0.0_wp .OR. & 
    20662065                  &   trn(:,:,:,jpoxy) + po2_bkginc(:,:,:) * zincwgt > 0.0_wp ) 
     
    20982097            CALL ctl_warn( ' Doing direct initialisation of HadOCC with 3D BGC assimilation', & 
    20992098               &           ' Background state is taken from model rather than background file' ) 
    2100 #elif defined key_medusa && defined key_foam_medusa 
     2099#elif defined key_medusa 
    21012100            CALL ctl_warn( ' Doing direct initialisation of MEDUSA with 3D BGC assimilation', & 
    21022101               &           ' Background state is taken from model rather than background file' ) 
     
    21102109                  trb(:,:,:,jp_had_nut) = trn(:,:,:,jp_had_nut) 
    21112110               END WHERE 
    2112 #elif defined key_medusa && defined key_foam_medusa 
     2111#elif defined key_medusa 
    21132112               WHERE( pno3_bkginc(:,:,:) > 0.0_wp .OR. & 
    21142113                  &   trn(:,:,:,jpdin) + pno3_bkginc(:,:,:) > 0.0_wp ) 
     
    21222121 
    21232122            IF ( ln_psi4inc ) THEN 
    2124 #if defined key_medusa && defined key_foam_medusa 
     2123#if defined key_medusa 
    21252124               WHERE( psi4_bkginc(:,:,:) > 0.0_wp .OR. & 
    21262125                  &   trn(:,:,:,jpsil) + psi4_bkginc(:,:,:) > 0.0_wp ) 
     
    21402139                  trb(:,:,:,jp_had_dic) = trn(:,:,:,jp_had_dic) 
    21412140               END WHERE 
    2142 #elif defined key_medusa && defined key_foam_medusa 
     2141#elif defined key_medusa 
    21432142               WHERE( pdic_bkginc(:,:,:) > 0.0_wp .OR. & 
    21442143                  &   trn(:,:,:,jpdic) + pdic_bkginc(:,:,:) > 0.0_wp ) 
     
    21582157                  trb(:,:,:,jp_had_alk) = trn(:,:,:,jp_had_alk) 
    21592158               END WHERE 
    2160 #elif defined key_medusa && defined key_foam_medusa 
     2159#elif defined key_medusa 
    21612160               WHERE( palk_bkginc(:,:,:) > 0.0_wp .OR. & 
    21622161                  &   trn(:,:,:,jpalk) + palk_bkginc(:,:,:) > 0.0_wp ) 
     
    21702169 
    21712170            IF ( ln_po2inc ) THEN 
    2172 #if defined key_medusa && defined key_foam_medusa 
     2171#if defined key_medusa 
    21732172               WHERE( po2_bkginc(:,:,:) > 0.0_wp .OR. & 
    21742173                  &   trn(:,:,:,jpoxy) + po2_bkginc(:,:,:) > 0.0_wp ) 
  • branches/UKMO/dev_r5518_GO6_package_asm_3d_bgc_v3/NEMOGCM/NEMO/OPA_SRC/ASM/asmphyto2dbal_medusa.F90

    r10055 r10141  
    1212   !! History :  3.6  ! 2017-08 (D. Ford)  Adapted from asmphyto2dbal_hadocc 
    1313   !!---------------------------------------------------------------------- 
    14 #if defined key_asminc && defined key_medusa && defined key_foam_medusa 
     14#if defined key_asminc && defined key_medusa 
    1515   !!---------------------------------------------------------------------- 
    1616   !! 'key_asminc'          : assimilation increment interface 
    1717   !! 'key_medusa'          : MEDUSA model 
    18    !! 'key_foam_medusa'     : MEDUSA extras for FOAM OBS and ASM 
    1918   !!---------------------------------------------------------------------- 
    2019   !! asm_phyto2d_bal_medusa : routine to calculate increments to MEDUSA 
  • branches/UKMO/dev_r5518_GO6_package_asm_3d_bgc_v3/NEMOGCM/NEMO/TOP_SRC/MEDUSA/air_sea.F90

    r10055 r10141  
    7474                                   jriver_alk, jriver_c,                  & 
    7575                                   jriver_n, jriver_si,                   & 
     76                                   ln_foam_medusa,                        & 
    7677                                   riv_alk, riv_c, riv_n, riv_si,         & 
    7778                                   zn_dms_chd, zn_dms_chn, zn_dms_din,    & 
    7879                                   zn_dms_mld, zn_dms_qsr,                & 
    79 # if defined key_foam_medusa 
    8080                                   f2_pco2w, f2_fco2w,                    & 
    81 # endif 
    8281                                   xnln, xnld  
    8382      USE trc,               ONLY: med_diag 
     
    9089#  else 
    9190      USE trcco2_medusa,     ONLY: trc_co2_medusa 
    92 #   if defined key_foam_medusa 
    9391      USE mocsy_mainmod,     ONLY: p2fCO2 
    94 #   endif 
    9592#  endif 
    9693      USE trcdms_medusa,     ONLY: trc_dms_medusa 
     
    333330                     iters, ' AT (', ji, ', ', jj, ', 1) AT ', kt 
    334331               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 
     332               IF ( ln_foam_medusa ) THEN 
     333                  !! DAF (Aug 2017): calculate fCO2 for observation operator 
     334                  CALL p2fCO2( f_pco2w, ztmp, f_pp0, 0.0, 1, f_fco2w ) 
     335               ENDIF 
    339336            ENDIF 
    340337         ENDDO 
     
    516513                              CO2flux_conv 
    517514               !! 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 
     515               IF ( ln_foam_medusa ) THEN 
     516                  !! DAF (Aug 2017): Save pCO2 and fCO2 for observation operator 
     517                  f2_pco2w(ji,jj) = f_pco2w(ji,jj) 
     518                  f2_fco2w(ji,jj) = f_pco2w(ji,jj) 
     519               ENDIF 
    523520               IF ( lk_iomput ) THEN 
    524521                  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

    r10055 r10141  
    4646                                   f3_co3, f3_h2co3, f3_hco3,           & 
    4747                                   f3_omarg, f3_omcal, f3_pH,           & 
    48 # if defined key_foam_medusa 
    49                                    mld_max, pgrow_avg,                  & 
     48                                   ln_foam_medusa, mld_max, pgrow_avg,  & 
    5049                                   ploss_avg, phyt_avg,                 & 
    51 # endif 
    5250                                   za_sed_c, za_sed_ca, za_sed_fe,      & 
    5351                                   za_sed_n, za_sed_si,                 & 
     
    5957      USE trc,               ONLY: med_diag, nittrc000, trn  
    6058      USE trcnam_trp,        ONLY: ln_trcadv_cen2, ln_trcadv_tvd 
    61 # if defined key_foam_medusa 
    6259      USE zdfmxl,            ONLY: hmld 
    63 # endif 
    6460  
    6561      !! time (integer timestep) 
     
    120116# endif       
    121117 
    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 
     118      IF ( ln_foam_medusa ) THEN 
     119         !!---------------------------------------------------------------------- 
     120         !! Diagnostics required for ocean colour assimilation: 
     121         !! Mixed layer average phytoplankton growth, loss and concentration 
     122         !! Maximum mixed layer depth 
     123         !!---------------------------------------------------------------------- 
     124         !! 
     125         DO jj = 2,jpjm1 
     126            DO ji = 2,jpim1 
     127               IF ( hmld(ji,jj) .GT. 0.0 ) THEN 
     128                  pgrow_avg(ji,jj) = pgrow_avg(ji,jj) / hmld(ji,jj) 
     129                  ploss_avg(ji,jj) = ploss_avg(ji,jj) / hmld(ji,jj) 
     130                  phyt_avg(ji,jj)  = phyt_avg(ji,jj)  / hmld(ji,jj) 
     131                  IF ( hmld(ji,jj) .GT. mld_max(ji,jj) ) THEN 
     132                     mld_max(ji,jj) = hmld(ji,jj) 
     133                  ENDIF 
     134               ENDIF 
     135            END DO 
    139136         END DO 
    140       END DO 
    141 # endif 
     137      ENDIF 
    142138 
    143139#  if defined key_debug_medusa 
  • branches/UKMO/dev_r5518_GO6_package_asm_3d_bgc_v3/NEMOGCM/NEMO/TOP_SRC/MEDUSA/bio_medusa_init.F90

    r10055 r10141  
    3535      USE bio_medusa_mod 
    3636      USE par_oce,           ONLY: jpi, jpj, jpk 
    37 # if defined key_foam_medusa 
    3837      USE sms_medusa,        ONLY: jdms, pgrow_avg, ploss_avg, phyt_avg, mld_max 
    39 # else 
    40       USE sms_medusa,        ONLY: jdms 
    41 # endif 
    4238      USE trc,               ONLY: ln_diatrc, med_diag, nittrc000  
    4339      USE in_out_manager,    ONLY: lwp, numout 
     
    200196# endif       
    201197      !! 
    202 # if defined key_foam_medusa 
    203198      pgrow_avg(:,:) = 0.0 
    204199      ploss_avg(:,:) = 0.0 
     
    207202         mld_max(:,:) = 0.0 
    208203      ENDIF 
    209 # endif 
    210204      !! 
    211205      !! allocate and initiate 2D diag 
  • branches/UKMO/dev_r5518_GO6_package_asm_3d_bgc_v3/NEMOGCM/NEMO/TOP_SRC/MEDUSA/plankton.F90

    r10055 r10141  
    3636                                   fdpn, fdpn2, fdzme, fdzme2,             & 
    3737                                   fdzmi, fdzmi2, fsdiss, fsin,            & 
    38 # if defined key_foam_medusa 
    3938                                   fdep1, fprn, fprd,                      & 
    4039                                   fgmepd, fgmepn, fgmipn,                 & 
    41 # endif 
    4240                                   zphd, zphn, zpds, zzme, zzmi 
    43 # if defined key_foam_medusa 
    4441      USE dom_oce,           ONLY: e3t_0, e3t_n, gdepw_0, gdepw_n, tmask 
    4542      USE par_kind,          ONLY: wp 
    46 # else 
    47       USE dom_oce,           ONLY: tmask 
    48 # endif 
    4943      USE par_oce,           ONLY: jpim1, jpjm1 
    5044      USE phytoplankton_mod, ONLY: phytoplankton 
    5145      USE sms_medusa,        ONLY: jmpd, jmpn, jmzme, jmzmi,               & 
    52 # if defined key_foam_medusa 
     46                                   ln_foam_medusa,                         & 
    5347                                   pgrow_avg, ploss_avg, phyt_avg,         & 
    54 # endif 
    5548                                   xkphd, xkphn, xkzme, xkzmi,             & 
    5649                                   xmetapd, xmetapn, xmetazme, xmetazmi,   & 
    5750                                   xmpd, xmpn, xmzme, xmzmi, xsdiss 
    58 # if defined key_foam_medusa 
    5951      USE zdfmxl,            ONLY: hmld 
    60 # endif 
    6152      USE zooplankton_mod,   ONLY: zooplankton 
    6253 
    63 # if defined key_foam_medusa 
    6454   !!* Substitution 
    6555#  include "domzgr_substitute.h90" 
    66 # endif 
    6756 
    6857      !! Level 
     
    7160      INTEGER :: ji, jj 
    7261 
    73 # if defined key_foam_medusa 
    7462      REAL(wp) :: fq0 
    75 # endif 
    7663 
    7764      !!------------------------------------------------------------------- 
     
    212199      ENDDO 
    213200 
    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 
     201      IF ( ln_foam_medusa ) THEN 
     202         !! Mixed layer averages for ocean colour assimilation 
     203         !! 
     204         DO jj = 2,jpjm1 
     205            DO ji = 2,jpim1 
     206               IF (tmask(ji,jj,jk) == 1) THEN 
     207                  if (fdep1(ji,jj).le.hmld(ji,jj)) then 
     208                     !! this level is entirely in the mixed layer 
     209                     fq0 = 1.0 
     210                  elseif (fsdepw(ji,jj,jk).ge.hmld(ji,jj)) then 
     211                     !! this level is entirely below the mixed layer 
     212                     fq0 = 0.0 
     213                  else 
     214                     !! this level straddles the mixed layer 
     215                     fq0 = (hmld(ji,jj) - fsdepw(ji,jj,jk)) / fse3t(ji,jj,jk) 
     216                  endif 
     217                  !! 
     218                  pgrow_avg(ji,jj) = pgrow_avg(ji,jj) +                   & 
     219                                     (((fprn(ji,jj) * zphn(ji,jj)) +      & 
     220                                       (fprd(ji,jj) * zphd(ji,jj))  ) *   & 
     221                                      fse3t(ji,jj,jk) * fq0) 
     222                  ploss_avg(ji,jj) = ploss_avg(ji,jj) +                   & 
     223                                     ((fgmepd(ji,jj) + fdpd(ji,jj) +      & 
     224                                       fdpd2(ji,jj)                +      & 
     225                                       fgmepn(ji,jj) + fdpn(ji,jj) +      & 
     226                                       fdpn2(ji,jj)  + fgmipn(ji,jj) ) *  & 
     227                                      fse3t(ji,jj,jk) * fq0) 
     228                  phyt_avg(ji,jj)  = phyt_avg(ji,jj)  +                   & 
     229                                     ((zphn(ji,jj) + zphd(ji,jj)) *       & 
     230                                      fse3t(ji,jj,jk) * fq0) 
     231               ENDIF 
     232            ENDDO 
     233         ENDDO 
     234      ENDIF 
    248235 
    249236   END SUBROUTINE plankton 
  • branches/UKMO/dev_r5518_GO6_package_asm_3d_bgc_v3/NEMOGCM/NEMO/TOP_SRC/MEDUSA/sms_medusa.F90

    r10055 r10141  
    212212   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: f2_ccd_arg  !: 2D aragonite CCD depth 
    213213!! 
    214 #if defined key_foam_medusa 
    215214!! 2D fields of pCO2 and fCO2 for observation operator 
    216215   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: f2_pco2w    !: 2D pCO2 
    217216   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: f2_fco2w    !: 2D fCO2 
    218217!! 
    219 #endif 
    220218!! 2D fields of organic and inorganic material sedimented on the seafloor 
    221219   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: zb_sed_n    !: 2D organic nitrogen   (before) 
     
    295293   INTEGER  :: co2_rec 
    296294   REAL(wp) :: co2_yinit, co2_yend    !: First and Last year read in the xCO2.atm file 
     295   REAL(wp) :: xobs_xco2a             !: Observed atmospheric xCO2, from namelist 
    297296#endif 
    298297 
     
    305304#else 
    306305   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 
    310306#endif 
    311307 
     
    358354   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: cmask       !: ??? 
    359355 
    360 #if defined key_foam_medusa 
    361356!!---------------------------------------------------------------------- 
    362357!! Parameters required for ocean colour assimilation 
    363358!!---------------------------------------------------------------------- 
    364359!! 
     360   LOGICAL :: ln_foam_medusa                                 !: Flag to calculate and save diagnostics 
    365361   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: pgrow_avg  !: Mixed layer average phytoplankton growth 
    366362   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: ploss_avg  !: Mixed layer average phytoplankton loss 
     
    368364   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: mld_max    !: Maximum mixed layer depth 
    369365!! 
    370 #endif 
    371366 
    372367   !!---------------------------------------------------------------------- 
     
    392387      !* 2D and 3D fields of carbonate system parameters 
    393388      ALLOCATE( f2_ccd_cal(jpi,jpj)  , f2_ccd_arg(jpi,jpj)  ,       & 
    394 #  if defined key_foam_medusa 
    395389                f2_pco2w(jpi,jpj)    , f2_fco2w(jpi,jpj)    ,       & 
    396 #  endif 
    397390         &      f3_pH(jpi,jpj,jpk)   , f3_h2co3(jpi,jpj,jpk),       & 
    398391         &      f3_hco3(jpi,jpj,jpk) , f3_co3(jpi,jpj,jpk)  ,       & 
     
    443436         &      ffln(jpi,jpj,jpk)    , fflf(jpi,jpj,jpk)    ,       & 
    444437         &      ffls(jpi,jpj,jpk)    , cmask(jpi,jpj)       ,    STAT=ierr(8) )  
    445 # if defined key_foam_medusa 
     438      !* Fields for ocean colour data assimilation 
    446439      ALLOCATE( pgrow_avg(jpi,jpj)   , ploss_avg(jpi,jpj)   ,       & 
    447440         &      phyt_avg(jpi,jpj)    , mld_max(jpi,jpj)     ,    STAT=ierr(9) ) 
    448 # endif 
    449441#endif 
    450442      ! 
  • branches/UKMO/dev_r5518_GO6_package_asm_3d_bgc_v3/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcbio_medusa.F90

    r10055 r10141  
    105105      USE sbc_oce,                    ONLY: lk_oasis 
    106106      USE sms_medusa,                 ONLY: hist_pco2, co2_yinit, co2_yend, & 
    107 # if defined key_foam_medusa 
    108                                             xobs_xco2a, pgrow_avg,          & 
     107# if defined key_roam 
     108                                            xobs_xco2a,                     & 
     109# endif 
     110                                            pgrow_avg,                      & 
    109111                                            ploss_avg, phyt_avg, mld_max,   & 
    110 # endif 
    111                                             lk_pi_co2 
     112                                            lk_pi_co2, ln_foam_medusa 
    112113      USE trc,                        ONLY: ln_rsttr, nittrc000, trn 
    113114      USE bio_medusa_init_mod,        ONLY: bio_medusa_init 
     
    334335         !! f_xco2a(:,:) = 284.725       !! CMIP5 pre-industrial pCO2 
    335336         f_xco2a(:,:) = 284.317          !! CMIP6 pre-industrial pCO2  
    336 #  if defined key_foam_medusa 
    337337      ELSEIF ( xobs_xco2a > 0.0 ) THEN 
    338338         IF(lwp) WRITE(numout,*) ' using observed atm pCO2 = ', xobs_xco2a 
    339339         f_xco2a(:,:) = xobs_xco2a 
    340 #  endif 
    341340      ELSE       
    342341         !! xCO2 from file 
     
    427426      !! now use the NEMO calendar tool : nsec_month to be sure to call  
    428427      !! at the beginning of a new month . 
    429 #if defined key_foam_medusa 
    430428      !! DAF: For FOAM we want to run daily 
    431429      IF ( (kt == nittrc000 .AND. .NOT.ln_rsttr) .OR.                        & 
    432            (MOD(kt*rdt, 86400.0) == rdt) ) THEN 
    433 #else 
    434       IF ( (kt == nittrc000 .AND. .NOT.ln_rsttr) .OR.                        & 
    435            ( nsec_month .LE. INT(rdt) ) )  THEN 
    436 #endif 
     430           ( nsec_month .LE. INT(rdt) )          .OR.                        & 
     431           ( nsec_day   .LE. INT(rdt) .AND. ln_foam_medusa ) )  THEN 
    437432           IF ( lwp )  WRITE(numout,*)                                       &          
    438433                              ' *** 3D carb chem call *** -- kt:', kt,       & 
  • branches/UKMO/dev_r5518_GO6_package_asm_3d_bgc_v3/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcini_medusa.F90

    r10059 r10141  
    330330      !!---------------------------------------------------------------------- 
    331331      !!  
    332 # if defined key_foam_medusa 
    333332      IF( ( .NOT.lk_oasis ) .AND. ( .NOT.lk_pi_co2 ) .AND. ( xobs_xco2a <= 0.0 ) ) THEN 
    334 # else 
    335       IF( ( .NOT.lk_oasis ) .AND. ( .NOT.lk_pi_co2 ) ) THEN 
    336 # endif 
    337333         IF(lwp) WRITE(numout,*) ' trc_ini_medusa: initialisating atm CO2 record' 
    338334         CALL trc_ini_medusa_co2atm 
  • branches/UKMO/dev_r5518_GO6_package_asm_3d_bgc_v3/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcnam_medusa.F90

    r10055 r10141  
    8787      &  xsdiss,                                              & 
    8888      &  sedlam,sedlostpoc,jpkb,jdms,jdms_input,jdms_model,   & 
    89       &  scl_chl, chl_out, dmsmin, dmscut, dmsslp 
     89      &  scl_chl, chl_out, dmsmin, dmscut, dmsslp,            & 
     90      &  ln_foam_medusa 
    9091#if defined key_roam 
    9192      NAMELIST/natroam/ xthetaphy,xthetazoo,xthetanit,        & 
    92 # if defined key_foam_medusa 
    9393      &    xobs_xco2a,                                        & 
    94 # endif 
    9594      &    xthetarem,xo2min  
    9695#endif 
     
    258257      dmscut      = 1.72 !! Anderson DMS default 
    259258      dmsslp      = 8.24 !! Anderson DMS default 
     259!! 
     260      ln_foam_medusa = .FALSE. 
    260261             
    261262      !REWIND(numnatm) 
     
    418419!!       chl_out     : select the chl field to send at the UM: 
    419420!!                     1- Surf Chl ; 2- MLD Chl  
     421!! 
     422!! FOAM - observation operator and data assimilation 
     423!!       ln_foam_medusa : calculate required diagnostics 
    420424 
    421425      IF(lwp) THEN 
     
    493497         &   ' key_debug_medusa                                                       = INACTIVE' 
    494498# 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 
    502499         WRITE(numout,*) ' ' 
    503500 
     
    985982            ENDIF 
    986983         ENDIF ! IF lk_oasis=true 
     984!! FOAM 
     985         WRITE(numout,*) '=== FOAM-related parameters' 
     986         WRITE(numout,*)     & 
     987         &   ' calculate diagnostics for data assimilation,            ln_foam_medusa = ', ln_foam_medusa 
    987988!! 
    988989      ENDIF 
     
    10401041      xthetarem = 0. 
    10411042      xo2min    = 0. 
    1042 # if defined key_foam_medusa 
    10431043      xobs_xco2a = 0. 
    1044 # endif 
    10451044 
    10461045      !READ(numnatm,natroam) 
     
    10621061!!       xthetarem :  oxygen consumption by carbon remineralisation 
    10631062!!       xo2min    :  oxygen minimum concentration 
    1064 # if defined key_foam_medusa 
    1065 !!       xobs_xco2a : observed atmospheric xCO2 
    1066 # endif 
     1063!!       xobs_xco2a : observed atmospheric xCO2 (not used if <= 0) 
    10671064 
    10681065      IF(lwp) THEN 
     
    10821079          WRITE(numout,*)     & 
    10831080          &   ' oxygen minimum concentration                               xo2min      = ', xo2min 
    1084 # if defined key_foam_medusa 
    10851081          WRITE(numout,*)     & 
    1086           &   ' observed atmospheric xCO2                                  xobs_xco2a  = ', xobs_xco2a 
    1087 # endif 
     1082          &   ' observed atmospheric xCO2 (not used if <= 0)               xobs_xco2a  = ', xobs_xco2a 
    10881083       ENDIF 
    10891084 
  • branches/UKMO/dev_r5518_GO6_package_asm_3d_bgc_v3/NEMOGCM/NEMO/TOP_SRC/trcrst.F90

    r10055 r10141  
    4545   USE oce,     ONLY: CO2Flux_out_cpl, DMS_out_cpl, chloro_out_cpl  !! Coupling variable 
    4646   USE trcstat 
    47 #if defined key_foam_medusa 
    4847   USE obs_const, ONLY: obfillflt  ! Observation operator fill value 
    49 #endif 
    5048 
    5149   IMPLICIT NONE 
     
    342340      ENDIF 
    343341      ! 
    344 #  if defined key_foam_medusa 
    345       !! 2D fields of pCO2 and fCO2 for observation operator on first timestep 
    346       IF( iom_varid( numrtr, 'PCO2W', ldstop = .FALSE. ) > 0 ) THEN 
    347          IF(lwp) WRITE(numout,*) ' MEDUSA pCO2 present - reading in ...' 
    348          CALL iom_get( numrtr, jpdom_autoglo, 'PCO2W',  f2_pco2w(:,:)  ) 
    349          CALL iom_get( numrtr, jpdom_autoglo, 'FCO2W',  f2_fco2w(:,:)  ) 
    350       ELSE 
    351          IF(lwp) WRITE(numout,*) ' MEDUSA pCO2 absent - setting to fill ...' 
    352          f2_pco2w(:,:) = obfillflt * tmask(:,:,1) 
    353          f2_fco2w(:,:) = obfillflt * tmask(:,:,1) 
    354       ENDIF 
    355 #  endif 
     342      IF ( ln_foam_medusa ) THEN 
     343         !! 2D fields of pCO2 and fCO2 for observation operator on first timestep 
     344         IF( iom_varid( numrtr, 'PCO2W', ldstop = .FALSE. ) > 0 ) THEN 
     345            IF(lwp) WRITE(numout,*) ' MEDUSA pCO2 present - reading in ...' 
     346            CALL iom_get( numrtr, jpdom_autoglo, 'PCO2W',  f2_pco2w(:,:)  ) 
     347            CALL iom_get( numrtr, jpdom_autoglo, 'FCO2W',  f2_fco2w(:,:)  ) 
     348         ELSE 
     349            IF(lwp) WRITE(numout,*) ' MEDUSA pCO2 absent - setting to fill ...' 
     350            f2_pco2w(:,:) = obfillflt * tmask(:,:,1) 
     351            f2_fco2w(:,:) = obfillflt * tmask(:,:,1) 
     352         ENDIF 
     353      ENDIF 
    356354# endif 
    357 # if defined key_foam_medusa 
    358       !! Fields for ocean colour assimilation on first timestep 
    359       IF( iom_varid( numrtr, 'pgrow_avg', ldstop = .FALSE. ) > 0 ) THEN 
    360          IF(lwp) WRITE(numout,*) ' MEDUSA pgrow_avg present - reading in ...' 
    361          CALL iom_get( numrtr, jpdom_autoglo, 'pgrow_avg',  pgrow_avg(:,:)  ) 
    362          CALL iom_get( numrtr, jpdom_autoglo, 'ploss_avg',  ploss_avg(:,:)  ) 
    363          CALL iom_get( numrtr, jpdom_autoglo, 'phyt_avg',   phyt_avg(:,:)   ) 
    364          CALL iom_get( numrtr, jpdom_autoglo, 'mld_max',    mld_max(:,:)    ) 
    365       ELSE 
    366          IF(lwp) WRITE(numout,*) ' MEDUSA pgrow_avg absent - setting to zero ...' 
    367          pgrow_avg(:,:) = 0.0 
    368          ploss_avg(:,:) = 0.0 
    369          phyt_avg(:,:)  = 0.0 
    370          mld_max(:,:)   = 0.0 
    371       ENDIF 
    372 # endif 
     355      IF ( ln_foam_medusa ) THEN 
     356         !! Fields for ocean colour assimilation on first timestep 
     357         IF( iom_varid( numrtr, 'pgrow_avg', ldstop = .FALSE. ) > 0 ) THEN 
     358            IF(lwp) WRITE(numout,*) ' MEDUSA pgrow_avg present - reading in ...' 
     359            CALL iom_get( numrtr, jpdom_autoglo, 'pgrow_avg',  pgrow_avg(:,:)  ) 
     360            CALL iom_get( numrtr, jpdom_autoglo, 'ploss_avg',  ploss_avg(:,:)  ) 
     361            CALL iom_get( numrtr, jpdom_autoglo, 'phyt_avg',   phyt_avg(:,:)   ) 
     362            CALL iom_get( numrtr, jpdom_autoglo, 'mld_max',    mld_max(:,:)    ) 
     363         ELSE 
     364            IF(lwp) WRITE(numout,*) ' MEDUSA pgrow_avg absent - setting to zero ...' 
     365            pgrow_avg(:,:) = 0.0 
     366            ploss_avg(:,:) = 0.0 
     367            phyt_avg(:,:)  = 0.0 
     368            mld_max(:,:)   = 0.0 
     369         ENDIF 
     370      ENDIF 
    373371 
    374372#endif 
     
    541539      call trc_rst_dia_stat( f2_ccd_arg(:,:),'CCD_ARG') 
    542540      !! 
    543 #  if defined key_foam_medusa 
    544       !! Fields for observation operator on first timestep 
    545       IF(lwp) WRITE(numout,*) ' MEDUSA OBS fields - writing out ...' 
    546       CALL iom_rstput( kt, nitrst, numrtw, 'PCO2W', f2_pco2w(:,:)  ) 
    547       CALL iom_rstput( kt, nitrst, numrtw, 'FCO2W', f2_fco2w(:,:)  ) 
    548 #  endif 
     541      IF ( ln_foam_medusa ) THEN 
     542         !! Fields for observation operator on first timestep 
     543         IF(lwp) WRITE(numout,*) ' MEDUSA OBS fields - writing out ...' 
     544         CALL iom_rstput( kt, nitrst, numrtw, 'PCO2W', f2_pco2w(:,:)  ) 
     545         CALL iom_rstput( kt, nitrst, numrtw, 'FCO2W', f2_fco2w(:,:)  ) 
     546      ENDIF 
    549547# endif 
    550 # if defined key_foam_medusa 
    551       !! Fields for assimilation on first timestep 
    552       IF(lwp) WRITE(numout,*) ' MEDUSA ASM fields - writing out ...' 
    553       CALL iom_rstput( kt, nitrst, numrtw, 'pgrow_avg', pgrow_avg(:,:) ) 
    554       CALL iom_rstput( kt, nitrst, numrtw, 'ploss_avg', ploss_avg(:,:) ) 
    555       CALL iom_rstput( kt, nitrst, numrtw, 'phyt_avg',  phyt_avg(:,:)  ) 
    556       CALL iom_rstput( kt, nitrst, numrtw, 'mld_max',   mld_max(:,:)   ) 
    557 # endif 
     548      IF ( ln_foam_medusa ) THEN 
     549         !! Fields for assimilation on first timestep 
     550         IF(lwp) WRITE(numout,*) ' MEDUSA ASM fields - writing out ...' 
     551         CALL iom_rstput( kt, nitrst, numrtw, 'pgrow_avg', pgrow_avg(:,:) ) 
     552         CALL iom_rstput( kt, nitrst, numrtw, 'ploss_avg', ploss_avg(:,:) ) 
     553         CALL iom_rstput( kt, nitrst, numrtw, 'phyt_avg',  phyt_avg(:,:)  ) 
     554         CALL iom_rstput( kt, nitrst, numrtw, 'mld_max',   mld_max(:,:)   ) 
     555      ENDIF 
    558556!! 
    559557#endif 
Note: See TracChangeset for help on using the changeset viewer.