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 13354 for branches – NEMO

Changeset 13354 for branches


Ignore:
Timestamp:
2020-07-30T12:08:31+02:00 (4 years ago)
Author:
jwhile
Message:

Merged in trunk

Location:
branches/UKMO/dev_1d_bugfixes_tocommit/NEMOGCM/NEMO
Files:
2 deleted
5 edited
2 copied

Legend:

Unmodified
Added
Removed
  • branches/UKMO/dev_1d_bugfixes_tocommit/NEMOGCM/NEMO/OPA_SRC/ASM/asmbgc.F90

    r13191 r13354  
    1818   !! asm_bgc_bal_wri       : write out bgc balancing increments 
    1919   !! asm_bgc_bkg_wri       : write out bgc background 
    20    !! phyto2d_asm_inc       : apply the ocean colour increments 
     20   !! asm_bgc_unlog_2d      : calculate non-log versions of 2D log increments 
     21   !! asm_bgc_unlog_3d      : calculate non-log versions of 3D log increments 
     22   !! phyto2d_asm_inc       : apply the 2D phytoplankton increments 
    2123   !! phyto3d_asm_inc       : apply the 3D phytoplankton increments 
    2224   !! pco2_asm_inc          : apply the pCO2/fCO2 increments 
     
    5658#endif 
    5759#if defined key_medusa 
    58    USE asmphyto2dbal_medusa, ONLY: & ! phyto2d balancing for MEDUSA 
    59       & asm_phyto2d_bal_medusa 
     60   USE asmphytobal_medusa, ONLY: & ! phytoplankton balancing for MEDUSA 
     61      & asm_phyto_bal_medusa 
    6062   USE asmpco2bal, ONLY:    & ! pCO2 balancing for MEDUSA 
    6163      & asm_pco2_bal 
     
    7072      & ploss_avg,          & 
    7173      & phyt_avg,           & 
     74      & pgrow_avg_3d,       & 
     75      & ploss_avg_3d,       & 
     76      & phyt_avg_3d,        & 
    7277      & mld_max 
    7378#elif defined key_hadocc 
    74    USE asmphyto2dbal_hadocc, ONLY: & ! phyto2d balancing for HadOCC 
    75       & asm_phyto2d_bal_hadocc 
     79   USE asmphytobal_hadocc, ONLY: & ! phytoplankton balancing for HadOCC 
     80      & asm_phyto_bal_hadocc 
    7681   USE asmpco2bal, ONLY:    & ! pCO2 balancing for HadOCC 
    7782      & asm_pco2_bal 
     
    8287      & ploss_avg,          & 
    8388      & phyt_avg,           & 
     89      & pgrow_avg_3d,       & 
     90      & ploss_avg_3d,       & 
     91      & phyt_avg_3d,        & 
    8492      & mld_max,            & 
    8593      & HADOCC_CHL 
     
    98106   PUBLIC  asm_bgc_bal_wri        ! called by nemo_gcm in nemogcm.F90 
    99107   PUBLIC  asm_bgc_bkg_wri        ! called by asm_bkg_wri in asmbkg.F90 
     108   PRIVATE asm_bgc_unlog_2d       ! called by phyto2d_asm_inc 
     109   PRIVATE asm_bgc_unlog_3d       ! called by phyto3d_asm_inc 
    100110   PUBLIC  phyto2d_asm_inc        ! called by bgc_asm_inc in asminc.F90 
    101111   PUBLIC  phyto3d_asm_inc        ! called by bgc_asm_inc in asminc.F90 
     
    168178   REAL(wp), DIMENSION(:,:),     ALLOCATABLE :: ploss_avg_bkg   ! Background phyto loss 
    169179   REAL(wp), DIMENSION(:,:),     ALLOCATABLE :: phyt_avg_bkg    ! Background phyto conc 
     180   REAL(wp), DIMENSION(:,:,:),   ALLOCATABLE :: pgrow_avg_3d_bkg   ! Background phyto growth 
     181   REAL(wp), DIMENSION(:,:,:),   ALLOCATABLE :: ploss_avg_3d_bkg   ! Background phyto loss 
     182   REAL(wp), DIMENSION(:,:,:),   ALLOCATABLE :: phyt_avg_3d_bkg    ! Background phyto conc 
    170183   REAL(wp), DIMENSION(:,:),     ALLOCATABLE :: mld_max_bkg     ! Background max MLD 
    171184   REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE :: tracer_bkg      ! Background tracer state 
     
    212225         & ( .NOT. ln_slchlnoninc ).AND.( .NOT. ln_schltotinc  ).AND. & 
    213226         & ( .NOT. ln_slphytotinc ).AND.( .NOT. ln_slphydiainc ).AND. & 
    214          & ( .NOT. ln_slphynoninc ) ) THEN 
     227         & ( .NOT. ln_slphynoninc ).AND.( .NOT. ln_plchltotinc ).AND. & 
     228         & ( .NOT. ln_pchltotinc  ) ) THEN 
    215229         CALL ctl_warn( ' Cannot calculate phytoplankton balancing increments', & 
    216             &           ' if not assimilating ocean colour,',                   & 
     230            &           ' if not assimilating phytoplankton,',                   & 
    217231            &           ' so ln_phytobal will be set to .false.') 
    218232         ln_phytobal = .FALSE. 
     
    524538         ALLOCATE( ploss_avg_bkg(jpi,jpj)        ) 
    525539         ALLOCATE( phyt_avg_bkg(jpi,jpj)         ) 
     540         ALLOCATE( pgrow_avg_3d_bkg(jpi,jpj,jpk) ) 
     541         ALLOCATE( ploss_avg_3d_bkg(jpi,jpj,jpk) ) 
     542         ALLOCATE( phyt_avg_3d_bkg(jpi,jpj,jpk)  ) 
    526543         ALLOCATE( mld_max_bkg(jpi,jpj)          ) 
    527544         ALLOCATE( tracer_bkg(jpi,jpj,jpk,jptra) ) 
     
    529546         ploss_avg_bkg(:,:)  = 0.0 
    530547         phyt_avg_bkg(:,:)   = 0.0 
     548         pgrow_avg_3d_bkg(:,:,:)  = 0.0 
     549         ploss_avg_3d_bkg(:,:,:)  = 0.0 
     550         phyt_avg_3d_bkg(:,:,:)   = 0.0 
    531551         mld_max_bkg(:,:)    = 0.0 
    532552         tracer_bkg(:,:,:,:) = 0.0 
     
    564584            CALL iom_get( inum, jpdom_autoglo, 'ploss_avg', ploss_avg_bkg ) 
    565585            CALL iom_get( inum, jpdom_autoglo, 'phyt_avg',  phyt_avg_bkg  ) 
     586            CALL iom_get( inum, jpdom_autoglo, 'pgrow_avg_3d', pgrow_avg_3d_bkg ) 
     587            CALL iom_get( inum, jpdom_autoglo, 'ploss_avg_3d', ploss_avg_3d_bkg ) 
     588            CALL iom_get( inum, jpdom_autoglo, 'phyt_avg_3d',  phyt_avg_3d_bkg  ) 
    566589            CALL iom_get( inum, jpdom_autoglo, 'mld_max',   mld_max_bkg   ) 
    567590            pgrow_avg_bkg(:,:) = pgrow_avg_bkg(:,:) * tmask(:,:,1) 
    568591            ploss_avg_bkg(:,:) = ploss_avg_bkg(:,:) * tmask(:,:,1) 
    569592            phyt_avg_bkg(:,:)  = phyt_avg_bkg(:,:)  * tmask(:,:,1) 
     593            pgrow_avg_3d_bkg(:,:,:) = pgrow_avg_3d_bkg(:,:,:) * tmask(:,:,:) 
     594            ploss_avg_3d_bkg(:,:,:) = ploss_avg_3d_bkg(:,:,:) * tmask(:,:,:) 
     595            phyt_avg_3d_bkg(:,:,:)  = phyt_avg_3d_bkg(:,:,:)  * tmask(:,:,:) 
    570596            mld_max_bkg(:,:)   = mld_max_bkg(:,:)   * tmask(:,:,1) 
    571597 
     
    726752            CALL iom_rstput( kt, kt, inum, 'phy3d_phd', phyto3d_balinc(:,:,:,jpphd) ) 
    727753            CALL iom_rstput( kt, kt, inum, 'phy3d_pds', phyto3d_balinc(:,:,:,jppds) ) 
     754            IF ( ln_phytobal ) THEN 
     755               CALL iom_rstput( kt, kt, inum, 'phy3d_zmi', phyto3d_balinc(:,:,:,jpzmi) ) 
     756               CALL iom_rstput( kt, kt, inum, 'phy3d_zme', phyto3d_balinc(:,:,:,jpzme) ) 
     757               CALL iom_rstput( kt, kt, inum, 'phy3d_din', phyto3d_balinc(:,:,:,jpdin) ) 
     758               CALL iom_rstput( kt, kt, inum, 'phy3d_sil', phyto3d_balinc(:,:,:,jpsil) ) 
     759               CALL iom_rstput( kt, kt, inum, 'phy3d_fer', phyto3d_balinc(:,:,:,jpfer) ) 
     760               CALL iom_rstput( kt, kt, inum, 'phy3d_det', phyto3d_balinc(:,:,:,jpdet) ) 
     761               CALL iom_rstput( kt, kt, inum, 'phy3d_dtc', phyto3d_balinc(:,:,:,jpdtc) ) 
     762               CALL iom_rstput( kt, kt, inum, 'phy3d_dic', phyto3d_balinc(:,:,:,jpdic) ) 
     763               CALL iom_rstput( kt, kt, inum, 'phy3d_alk', phyto3d_balinc(:,:,:,jpalk) ) 
     764               CALL iom_rstput( kt, kt, inum, 'phy3d_oxy', phyto3d_balinc(:,:,:,jpoxy) ) 
     765            ENDIF 
    728766#elif defined key_hadocc 
    729767            CALL iom_rstput( kt, kt, inum, 'phy3d_phy', phyto3d_balinc(:,:,:,jp_had_phy) ) 
     768            IF ( ln_phytobal ) THEN 
     769               CALL iom_rstput( kt, kt, inum, 'phy3d_nut', phyto3d_balinc(:,:,:,jp_had_nut) ) 
     770               CALL iom_rstput( kt, kt, inum, 'phy3d_zoo', phyto3d_balinc(:,:,:,jp_had_zoo) ) 
     771               CALL iom_rstput( kt, kt, inum, 'phy3d_det', phyto3d_balinc(:,:,:,jp_had_pdn) ) 
     772               CALL iom_rstput( kt, kt, inum, 'phy3d_dic', phyto3d_balinc(:,:,:,jp_had_dic) ) 
     773               CALL iom_rstput( kt, kt, inum, 'phy3d_alk', phyto3d_balinc(:,:,:,jp_had_alk) ) 
     774            ENDIF 
    730775#endif 
    731776         ENDIF 
     
    792837      !!------------------------------------------------------------------------ 
    793838 
    794 #if defined key_hadocc 
     839#if defined key_hadocc || defined key_medusa 
    795840      CALL iom_rstput( kt, nitbkg_r, knum, 'pgrow_avg'   , pgrow_avg             ) 
    796841      CALL iom_rstput( kt, nitbkg_r, knum, 'ploss_avg'   , ploss_avg             ) 
    797842      CALL iom_rstput( kt, nitbkg_r, knum, 'phyt_avg'    , phyt_avg              ) 
     843      CALL iom_rstput( kt, nitbkg_r, knum, 'pgrow_avg_3d', pgrow_avg_3d          ) 
     844      CALL iom_rstput( kt, nitbkg_r, knum, 'ploss_avg_3d', ploss_avg_3d          ) 
     845      CALL iom_rstput( kt, nitbkg_r, knum, 'phyt_avg_3d' , phyt_avg_3d           ) 
    798846      CALL iom_rstput( kt, nitbkg_r, knum, 'mld_max'     , mld_max               ) 
     847#if defined key_hadocc 
    799848      CALL iom_rstput( kt, nitbkg_r, knum, 'hadocc_nut'  , trn(:,:,:,jp_had_nut) ) 
    800849      CALL iom_rstput( kt, nitbkg_r, knum, 'hadocc_phy'  , trn(:,:,:,jp_had_phy) ) 
     
    806855      CALL iom_rstput( kt, nitbkg_r, knum, 'hadocc_cchl' , cchl_p(:,:,:)         ) 
    807856#elif defined key_medusa 
    808       CALL iom_rstput( kt, nitbkg_r, knum, 'pgrow_avg'   , pgrow_avg        ) 
    809       CALL iom_rstput( kt, nitbkg_r, knum, 'ploss_avg'   , ploss_avg        ) 
    810       CALL iom_rstput( kt, nitbkg_r, knum, 'phyt_avg'    , phyt_avg         ) 
    811       CALL iom_rstput( kt, nitbkg_r, knum, 'mld_max'     , mld_max          ) 
    812857      CALL iom_rstput( kt, nitbkg_r, knum, 'medusa_chn'  , trn(:,:,:,jpchn) ) 
    813858      CALL iom_rstput( kt, nitbkg_r, knum, 'medusa_chd'  , trn(:,:,:,jpchd) ) 
     
    826871      CALL iom_rstput( kt, nitbkg_r, knum, 'medusa_oxy'  , trn(:,:,:,jpoxy) ) 
    827872#endif 
     873#endif 
    828874 
    829875   END SUBROUTINE asm_bgc_bkg_wri 
     
    876922   !!=========================================================================== 
    877923 
     924   SUBROUTINE asm_bgc_unlog_3d( pbkg, pinc_log, pinc_nonlog ) 
     925      !!------------------------------------------------------------------------ 
     926      !!                    ***  ROUTINE asm_bgc_init_incs  *** 
     927      !! 
     928      !! ** Purpose :   convert log increments to non-log 
     929      !! 
     930      !! ** Method  :   need to account for model background, 
     931      !!                cannot simply do 10^log_inc. Need to: 
     932      !!                1) Add log_inc to log10(background) to get log10(analysis) 
     933      !!                2) Take 10^log10(analysis) to get analysis 
     934      !!                3) Subtract background from analysis to get non-log incs 
     935      !! 
     936      !! ** Action  :   return non-log increments 
     937      !! 
     938      !! References :    
     939      !!------------------------------------------------------------------------ 
     940      !! 
     941      REAL(wp), INTENT(in   ), DIMENSION(jpi,jpj,jpk) :: pbkg        ! Background 
     942      REAL(wp), INTENT(in   ), DIMENSION(jpi,jpj,jpk) :: pinc_log    ! Log incs 
     943      REAL(wp), INTENT(  out), DIMENSION(jpi,jpj,jpk) :: pinc_nonlog ! Non-log incs 
     944      ! 
     945      INTEGER                                         :: ji, jj, jk  ! Loop counters 
     946      !! 
     947      !!------------------------------------------------------------------------ 
     948 
     949      DO jk = 1, jpk 
     950         DO jj = 1, jpj 
     951            DO ji = 1, jpi 
     952               IF ( pbkg(ji,jj,jk) > 0.0 ) THEN 
     953                  pinc_nonlog(ji,jj,jk) = 10**( LOG10( pbkg(ji,jj,jk) ) + & 
     954                     &                          pinc_log(ji,jj,jk) )      & 
     955                     &                    - pbkg(ji,jj,jk) 
     956               ELSE 
     957                  pinc_nonlog(ji,jj,jk) = 0.0 
     958               ENDIF 
     959            END DO 
     960         END DO 
     961      END DO 
     962 
     963   END SUBROUTINE asm_bgc_unlog_3d 
     964 
     965   !!=========================================================================== 
     966   !!=========================================================================== 
     967   !!=========================================================================== 
     968 
    878969   SUBROUTINE phyto2d_asm_inc( kt, ll_asmdin, ll_asmiau, kcycper, pwgtiau ) 
    879970      !!------------------------------------------------------------------------ 
     
    894985      REAL(wp), DIMENSION(kcycper), INTENT(IN) :: pwgtiau   ! IAU weights 
    895986      ! 
    896       INTEGER                      :: jk          ! Loop counter 
    897       INTEGER                      :: it          ! Index 
    898       REAL(wp)                     :: zincwgt     ! IAU weight for current time step 
    899       REAL(wp)                     :: zincper     ! IAU interval in seconds 
    900       REAL(wp), DIMENSION(jpi,jpj) :: zmld        ! Mixed layer depth 
    901       REAL(wp), DIMENSION(jpi,jpj) :: zinc_chltot ! Local chltot incs 
    902       REAL(wp), DIMENSION(jpi,jpj) :: zbkg_chltot ! Local chltot bkg 
    903       REAL(wp), DIMENSION(jpi,jpj) :: zinc_phytot ! Local phytot incs 
    904       REAL(wp), DIMENSION(jpi,jpj) :: zbkg_phytot ! Local phytot bkg 
    905 #if defined key_medusa 
    906       REAL(wp), DIMENSION(jpi,jpj) :: zinc_chldia ! Local chldia incs 
    907       REAL(wp), DIMENSION(jpi,jpj) :: zbkg_chldia ! Local chldia bkg 
    908       REAL(wp), DIMENSION(jpi,jpj) :: zinc_chlnon ! Local chlnon incs 
    909       REAL(wp), DIMENSION(jpi,jpj) :: zbkg_chlnon ! Local chlnon bkg 
    910       REAL(wp), DIMENSION(jpi,jpj) :: zinc_phydia ! Local phydia incs 
    911       REAL(wp), DIMENSION(jpi,jpj) :: zbkg_phydia ! Local phydia bkg 
    912       REAL(wp), DIMENSION(jpi,jpj) :: zinc_phynon ! Local phynon incs 
    913       REAL(wp), DIMENSION(jpi,jpj) :: zbkg_phynon ! Local phynon bkg 
    914 #endif 
     987      INTEGER                        :: jk          ! Loop counter 
     988      INTEGER                        :: it          ! Index 
     989      REAL(wp)                       :: zincwgt     ! IAU weight for current time step 
     990      REAL(wp)                       :: zincper     ! IAU interval in seconds 
     991      REAL(wp), DIMENSION(jpi,jpj)   :: zmld        ! Mixed layer depth 
     992      REAL(wp), DIMENSION(jpi,jpj,1) :: zinc_chltot ! Local chltot incs 
     993      REAL(wp), DIMENSION(jpi,jpj)   :: zbkg_chltot ! Local chltot bkg 
     994      REAL(wp), DIMENSION(jpi,jpj,1) :: zinc_phytot ! Local phytot incs 
     995      REAL(wp), DIMENSION(jpi,jpj)   :: zbkg_phytot ! Local phytot bkg 
     996#if defined key_medusa 
     997      REAL(wp), DIMENSION(jpi,jpj,1) :: zinc_chldia ! Local chldia incs 
     998      REAL(wp), DIMENSION(jpi,jpj)   :: zbkg_chldia ! Local chldia bkg 
     999      REAL(wp), DIMENSION(jpi,jpj,1) :: zinc_chlnon ! Local chlnon incs 
     1000      REAL(wp), DIMENSION(jpi,jpj)   :: zbkg_chlnon ! Local chlnon bkg 
     1001      REAL(wp), DIMENSION(jpi,jpj,1) :: zinc_phydia ! Local phydia incs 
     1002      REAL(wp), DIMENSION(jpi,jpj)   :: zbkg_phydia ! Local phydia bkg 
     1003      REAL(wp), DIMENSION(jpi,jpj,1) :: zinc_phynon ! Local phynon incs 
     1004      REAL(wp), DIMENSION(jpi,jpj)   :: zbkg_phynon ! Local phynon bkg 
     1005#endif 
     1006      REAL(wp), DIMENSION(jpi,jpj,1) :: zpgrow_avg_bkg ! Local pgrow_avg_bkg 
     1007      REAL(wp), DIMENSION(jpi,jpj,1) :: zploss_avg_bkg ! Local ploss_avg_bkg 
     1008      REAL(wp), DIMENSION(jpi,jpj,1) :: zphyt_avg_bkg  ! Local phyt_avg_bkg 
    9151009      !!------------------------------------------------------------------------ 
    9161010 
     
    9281022            zbkg_chltot(:,:) = chl_bkg(:,:,1) 
    9291023#endif 
    930             CALL asm_bgc_unlog_2d( zbkg_chltot, slchltot_bkginc, zinc_chltot ) 
     1024            CALL asm_bgc_unlog_2d( zbkg_chltot, slchltot_bkginc, zinc_chltot(:,:,1) ) 
    9311025         ELSE IF ( ln_schltotinc ) THEN 
    932             zinc_chltot(:,:) = schltot_bkginc(:,:) 
     1026            zinc_chltot(:,:,1) = schltot_bkginc(:,:) 
    9331027         ELSE 
    934             zinc_chltot(:,:) = 0.0 
     1028            zinc_chltot(:,:,:) = 0.0 
    9351029         ENDIF 
    9361030 
     
    9391033         IF ( ln_slchldiainc ) THEN 
    9401034            zbkg_chldia(:,:) = tracer_bkg(:,:,1,jpchd) 
    941             CALL asm_bgc_unlog_2d( zbkg_chldia, slchldia_bkginc, zinc_chldia ) 
     1035            CALL asm_bgc_unlog_2d( zbkg_chldia, slchldia_bkginc, zinc_chldia(:,:,1) ) 
    9421036         ELSE 
    943             zinc_chldia(:,:) = 0.0 
     1037            zinc_chldia(:,:,:) = 0.0 
    9441038         ENDIF 
    9451039#endif 
     
    9491043         IF ( ln_slchlnoninc ) THEN 
    9501044            zbkg_chlnon(:,:) = tracer_bkg(:,:,1,jpchn) 
    951             CALL asm_bgc_unlog_2d( zbkg_chlnon, slchlnon_bkginc, zinc_chlnon ) 
     1045            CALL asm_bgc_unlog_2d( zbkg_chlnon, slchlnon_bkginc, zinc_chlnon(:,:,1) ) 
    9521046         ELSE 
    953             zinc_chlnon(:,:) = 0.0 
     1047            zinc_chlnon(:,:,:) = 0.0 
    9541048         ENDIF 
    9551049#endif 
     
    9621056            zbkg_phytot(:,:) = trn(:,:,1,jp_had_phy) * c2n_p 
    9631057#endif 
    964             CALL asm_bgc_unlog_2d( zbkg_phytot, slphytot_bkginc, zinc_phytot ) 
     1058            CALL asm_bgc_unlog_2d( zbkg_phytot, slphytot_bkginc, zinc_phytot(:,:,1) ) 
    9651059         ELSE 
    966             zinc_phytot(:,:) = 0.0 
     1060            zinc_phytot(:,:,:) = 0.0 
    9671061         ENDIF 
    9681062 
     
    9711065         IF ( ln_slphydiainc ) THEN 
    9721066            zbkg_phydia(:,:) = trn(:,:,1,jpphd) * xthetapd 
    973             CALL asm_bgc_unlog_2d( zbkg_phydia, slphydia_bkginc, zinc_phydia ) 
     1067            CALL asm_bgc_unlog_2d( zbkg_phydia, slphydia_bkginc, zinc_phydia(:,:,1) ) 
    9741068         ELSE 
    975             zinc_phydia(:,:) = 0.0 
     1069            zinc_phydia(:,:,:) = 0.0 
    9761070         ENDIF 
    9771071#endif 
     
    9811075         IF ( ln_slphynoninc ) THEN 
    9821076            zbkg_phynon(:,:) = trn(:,:,1,jpphn) * xthetapn 
    983             CALL asm_bgc_unlog_2d( zbkg_phynon, slphynon_bkginc, zinc_phynon ) 
     1077            CALL asm_bgc_unlog_2d( zbkg_phynon, slphynon_bkginc, zinc_phynon(:,:,1) ) 
    9841078         ELSE 
    985             zinc_phynon(:,:) = 0.0 
     1079            zinc_phynon(:,:,:) = 0.0 
    9861080         ENDIF 
    9871081#endif 
     
    10241118 
    10251119         zincper = (nitiaufin_r - nitiaustr_r + 1) * rdt 
    1026  
    1027 #if defined key_medusa 
    1028          CALL asm_phyto2d_bal_medusa( (ln_slchltotinc .OR. ln_schltotinc), & 
    1029             &                         zinc_chltot,                         & 
    1030             &                         ln_slchldiainc,                      & 
    1031             &                         zinc_chldia,                         & 
    1032             &                         ln_slchlnoninc,                      & 
    1033             &                         zinc_chlnon,                         & 
    1034             &                         ln_slphytotinc,                      & 
    1035             &                         zinc_phytot,                         & 
    1036             &                         ln_slphydiainc,                      & 
    1037             &                         zinc_phydia,                         & 
    1038             &                         ln_slphynoninc,                      & 
    1039             &                         zinc_phynon,                         & 
    1040             &                         zincper,                             & 
    1041             &                         rn_maxchlinc, ln_phytobal, zmld,     & 
    1042             &                         pgrow_avg_bkg, ploss_avg_bkg,        & 
    1043             &                         phyt_avg_bkg, mld_max_bkg,           & 
    1044             &                         tracer_bkg, phyto2d_balinc ) 
     1120          
     1121         zpgrow_avg_bkg(:,:,1) = pgrow_avg_bkg(:,:) 
     1122         zploss_avg_bkg(:,:,1) = ploss_avg_bkg(:,:) 
     1123         zphyt_avg_bkg(:,:,1)  = phyt_avg_bkg(:,:) 
     1124 
     1125#if defined key_medusa 
     1126         CALL asm_phyto_bal_medusa( 1,                                   & 
     1127            &                       (ln_slchltotinc .OR. ln_schltotinc), & 
     1128            &                       zinc_chltot,                         & 
     1129            &                       ln_slchldiainc,                      & 
     1130            &                       zinc_chldia,                         & 
     1131            &                       ln_slchlnoninc,                      & 
     1132            &                       zinc_chlnon,                         & 
     1133            &                       ln_slphytotinc,                      & 
     1134            &                       zinc_phytot,                         & 
     1135            &                       ln_slphydiainc,                      & 
     1136            &                       zinc_phydia,                         & 
     1137            &                       ln_slphynoninc,                      & 
     1138            &                       zinc_phynon,                         & 
     1139            &                       zincper,                             & 
     1140            &                       rn_maxchlinc, ln_phytobal, zmld,     & 
     1141            &                       zpgrow_avg_bkg, zploss_avg_bkg,      & 
     1142            &                       zphyt_avg_bkg, mld_max_bkg,          & 
     1143            &                       tracer_bkg, phyto2d_balinc ) 
    10451144#elif defined key_hadocc 
    1046          CALL asm_phyto2d_bal_hadocc( (ln_slchltotinc .OR. ln_schltotinc), & 
    1047             &                         zinc_chltot,                         & 
    1048             &                         ln_slphytotinc,                      & 
    1049             &                         zinc_phytot,                         & 
    1050             &                         zincper,                             & 
    1051             &                         rn_maxchlinc, ln_phytobal, zmld,     & 
    1052             &                         pgrow_avg_bkg, ploss_avg_bkg,        & 
    1053             &                         phyt_avg_bkg, mld_max_bkg,           & 
    1054             &                         cchl_p_bkg(:,:,1),                   & 
    1055             &                         tracer_bkg, phyto2d_balinc ) 
     1145         CALL asm_phyto_bal_hadocc( 1,                                   & 
     1146            &                       (ln_slchltotinc .OR. ln_schltotinc), & 
     1147            &                       zinc_chltot,                         & 
     1148            &                       ln_slphytotinc,                      & 
     1149            &                       zinc_phytot,                         & 
     1150            &                       zincper,                             & 
     1151            &                       rn_maxchlinc, ln_phytobal, zmld,     & 
     1152            &                       zpgrow_avg_bkg, zploss_avg_bkg,      & 
     1153            &                       zphyt_avg_bkg, mld_max_bkg,          & 
     1154            &                       cchl_p_bkg(:,:,1),                   & 
     1155            &                       tracer_bkg, phyto2d_balinc ) 
    10561156#else 
    10571157         CALL ctl_stop( 'Attempting to assimilate phyto2d data, ', & 
     
    11661266      INTEGER                          :: ji, jj, jk   ! Loop counters 
    11671267      INTEGER                          :: it           ! Index 
     1268      REAL(wp)                         :: zincper      ! IAU interval in seconds 
    11681269      REAL(wp)                         :: zincwgt      ! IAU weight for timestep 
    1169       REAL(wp)                         :: zfrac_chn    ! Fraction of jpchn 
    1170       REAL(wp)                         :: zfrac_chd    ! Fraction of jpchd 
    1171       REAL(wp)                         :: zrat_phn_chn ! jpphn:jpchn ratio 
    1172       REAL(wp)                         :: zrat_phd_chd ! jpphd:jpchd ratio 
    1173       REAL(wp)                         :: zrat_pds_chd ! jppds:jpchd ratio 
    1174       REAL(wp), DIMENSION(jpi,jpj,jpk) :: chl_inc      ! Chlorophyll increments 
    1175       REAL(wp), DIMENSION(jpi,jpj,jpk) :: bkg_chl      ! Chlorophyll background 
     1270      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zinc_chltot  ! Chlorophyll increments 
     1271      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zbkg_chltot  ! Chlorophyll background 
     1272      REAL(wp), DIMENSION(jpi,jpj)     :: zdummy_2d    ! Dummy array for call 
     1273      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zdummy_3d    ! Dummy array for call 
    11761274      !!------------------------------------------------------------------------ 
    11771275 
     
    11791277 
    11801278         IF ( ln_plchltotinc ) THEN 
    1181             ! Convert log10(chlorophyll) increment back to a chlorophyll increment 
    1182             ! In order to transform logchl incs to chl incs, need to account for model 
    1183             ! background, cannot simply do 10^logchl_bkginc. Need to: 
    1184             ! 1) Add logchl inc to log10(background) to get log10(analysis) 
    1185             ! 2) Take 10^log10(analysis) to get analysis 
    1186             ! 3) Subtract background from analysis to get chl incs 
    1187             ! If rn_maxchlinc > 0 then cap total absolute chlorophyll increment at that value 
    1188 #if defined key_medusa 
    1189             bkg_chl(:,:,:) = tracer_bkg(:,:,:,jpchn) + tracer_bkg(:,:,:,jpchd) 
     1279#if defined key_medusa 
     1280            zbkg_chltot(:,:,:) = tracer_bkg(:,:,:,jpchn) + tracer_bkg(:,:,:,jpchd) 
    11901281#elif defined key_hadocc 
    1191             bkg_chl(:,:,:) = chl_bkg(:,:,:) 
    1192 #endif 
    1193             DO jk = 1, jpk 
    1194                DO jj = 1, jpj 
    1195                   DO ji = 1, jpi 
    1196                      IF ( bkg_chl(ji,jj,jk) > 0.0 ) THEN 
    1197                         chl_inc(ji,jj,jk) = 10**( LOG10( bkg_chl(ji,jj,jk) ) + plchltot_bkginc(ji,jj,jk) ) - bkg_chl(ji,jj,jk) 
    1198                         IF ( rn_maxchlinc > 0.0 ) THEN 
    1199                            chl_inc(ji,jj,jk) = MAX( -1.0 * rn_maxchlinc, MIN( chl_inc(ji,jj,jk), rn_maxchlinc ) ) 
    1200                         ENDIF 
    1201                      ELSE 
    1202                         chl_inc(ji,jj,jk) = 0.0 
    1203                      ENDIF 
    1204                   END DO 
    1205                END DO 
    1206             END DO 
     1282            zbkg_chltot(:,:,:) = chl_bkg(:,:,:) 
     1283#endif 
     1284            CALL asm_bgc_unlog_3d( zbkg_chltot, plchltot_bkginc, zinc_chltot ) 
    12071285         ELSE IF ( ln_pchltotinc ) THEN 
    1208             DO jk = 1, jpk 
    1209                DO jj = 1, jpj 
    1210                   DO ji = 1, jpi 
    1211                      IF ( rn_maxchlinc > 0.0 ) THEN 
    1212                         chl_inc(ji,jj,jk) = MAX( -1.0 * rn_maxchlinc, MIN( pchltot_bkginc(ji,jj,jk), rn_maxchlinc ) ) 
    1213                      ELSE 
    1214                         chl_inc(ji,jj,jk) = pchltot_bkginc(ji,jj,jk) 
    1215                      ENDIF 
    1216                   END DO 
    1217                END DO 
    1218             END DO 
    1219          ENDIF 
    1220  
    1221 #if defined key_medusa 
    1222          ! Loop over each grid point partioning the increments based on existing ratios 
    1223          DO jk = 1, jpk 
    1224             DO jj = 1, jpj 
    1225                DO ji = 1, jpi 
    1226                   IF ( ( tracer_bkg(ji,jj,jk,jpchn) > 0.0 ) .AND. ( tracer_bkg(ji,jj,jk,jpchd) > 0.0 ) ) THEN 
    1227                      zfrac_chn = tracer_bkg(ji,jj,jk,jpchn) / (tracer_bkg(ji,jj,jk,jpchn) + tracer_bkg(ji,jj,jk,jpchd)) 
    1228                      zfrac_chd = 1.0 - zfrac_chn 
    1229                      phyto3d_balinc(ji,jj,jk,jpchn) = chl_inc(ji,jj,jk) * zfrac_chn 
    1230                      phyto3d_balinc(ji,jj,jk,jpchd) = chl_inc(ji,jj,jk) * zfrac_chd 
    1231                      zrat_phn_chn = tracer_bkg(ji,jj,jk,jpphn) / tracer_bkg(ji,jj,jk,jpchn) 
    1232                      zrat_phd_chd = tracer_bkg(ji,jj,jk,jpphd) / tracer_bkg(ji,jj,jk,jpchd) 
    1233                      zrat_pds_chd = tracer_bkg(ji,jj,jk,jppds) / tracer_bkg(ji,jj,jk,jpchd) 
    1234                      phyto3d_balinc(ji,jj,jk,jpphn) = phyto3d_balinc(ji,jj,jk,jpchn) * zrat_phn_chn 
    1235                      phyto3d_balinc(ji,jj,jk,jpphd) = phyto3d_balinc(ji,jj,jk,jpchd) * zrat_phd_chd 
    1236                      phyto3d_balinc(ji,jj,jk,jppds) = phyto3d_balinc(ji,jj,jk,jpchd) * zrat_pds_chd 
    1237                   ENDIF 
    1238                END DO 
    1239             END DO 
    1240          END DO 
     1286            zinc_chltot(:,:,:) = pchltot_bkginc(:,:,:) 
     1287         ENDIF 
     1288 
     1289         zincper = (nitiaufin_r - nitiaustr_r + 1) * rdt 
     1290 
     1291#if defined key_medusa 
     1292         CALL asm_phyto_bal_medusa( jpk,                                  & 
     1293            &                       (ln_plchltotinc .OR. ln_pchltotinc),  & 
     1294            &                       zinc_chltot,                          & 
     1295            &                       .FALSE.,                              & 
     1296            &                       zdummy_3d,                            & 
     1297            &                       .FALSE.,                              & 
     1298            &                       zdummy_3d,                            & 
     1299            &                       .FALSE.,                              & 
     1300            &                       zdummy_3d,                            & 
     1301            &                       .FALSE.,                              & 
     1302            &                       zdummy_3d,                            & 
     1303            &                       .FALSE.,                              & 
     1304            &                       zdummy_3d,                            & 
     1305            &                       zincper,                              & 
     1306            &                       rn_maxchlinc, ln_phytobal, zdummy_2d, & 
     1307            &                       pgrow_avg_3d_bkg, ploss_avg_3d_bkg,   & 
     1308            &                       phyt_avg_3d_bkg, mld_max_bkg,         & 
     1309            &                       tracer_bkg, phyto3d_balinc ) 
    12411310#elif defined key_hadocc 
    1242          phyto3d_balinc(:,:,:,jp_had_phy) = ( cchl_p_bkg(:,:,:) / (mw_carbon * c2n_p) ) * chl_inc(:,:,:) 
    1243 #else 
    1244          CALL ctl_stop( 'Attempting to assimilate p(l)chltot, ', & 
     1311         CALL asm_phyto_bal_hadocc( jpk,                                  & 
     1312            &                       (ln_plchltotinc .OR. ln_pchltotinc),  & 
     1313            &                       zinc_chltot,                          & 
     1314            &                       .FALSE.,                              & 
     1315            &                       zdummy_3d,                            & 
     1316            &                       zincper,                              & 
     1317            &                       rn_maxchlinc, ln_phytobal, zdummy_2d, & 
     1318            &                       pgrow_avg_3d_bkg, ploss_avg_3d_bkg,   & 
     1319            &                       phyt_avg_3d_bkg, mld_max_bkg,         & 
     1320            &                       cchl_p_bkg,                           & 
     1321            &                       tracer_bkg, phyto3d_balinc ) 
     1322#else 
     1323         CALL ctl_stop( 'Attempting to assimilate phyto3d data, ', & 
    12451324            &           'but not defined a biogeochemical model' ) 
    12461325#endif 
     
    14231502         ! Account for phytoplankton balancing if required 
    14241503         IF ( ln_phytobal ) THEN 
    1425             dic_bkg_temp(:,:) = tracer_bkg(:,:,1,jpdic) + phyto2d_balinc(:,:,1,jpdic) 
    1426             alk_bkg_temp(:,:) = tracer_bkg(:,:,1,jpalk) + phyto2d_balinc(:,:,1,jpalk) 
     1504            IF ( ALLOCATED(phyto2d_balinc) ) THEN 
     1505               dic_bkg_temp(:,:) = tracer_bkg(:,:,1,jpdic) + phyto2d_balinc(:,:,1,jpdic) 
     1506               alk_bkg_temp(:,:) = tracer_bkg(:,:,1,jpalk) + phyto2d_balinc(:,:,1,jpalk) 
     1507            ENDIF 
     1508            IF ( ALLOCATED(phyto3d_balinc) ) THEN 
     1509               dic_bkg_temp(:,:) = tracer_bkg(:,:,1,jpdic) + phyto3d_balinc(:,:,1,jpdic) 
     1510               alk_bkg_temp(:,:) = tracer_bkg(:,:,1,jpalk) + phyto3d_balinc(:,:,1,jpalk) 
     1511            ENDIF 
    14271512         ELSE 
    14281513            dic_bkg_temp(:,:) = tracer_bkg(:,:,1,jpdic) 
     
    14371522         ! Account for phytoplankton balancing if required 
    14381523         IF ( ln_phytobal ) THEN 
    1439             dic_bkg_temp(:,:) = tracer_bkg(:,:,1,jp_had_dic) + phyto2d_balinc(:,:,1,jp_had_dic) 
    1440             alk_bkg_temp(:,:) = tracer_bkg(:,:,1,jp_had_alk) + phyto2d_balinc(:,:,1,jp_had_alk) 
     1524            IF ( ALLOCATED(phyto2d_balinc) ) THEN 
     1525               dic_bkg_temp(:,:) = tracer_bkg(:,:,1,jp_had_dic) + phyto2d_balinc(:,:,1,jp_had_dic) 
     1526               alk_bkg_temp(:,:) = tracer_bkg(:,:,1,jp_had_alk) + phyto2d_balinc(:,:,1,jp_had_alk) 
     1527            ENDIF 
     1528            IF ( ALLOCATED(phyto3d_balinc) ) THEN 
     1529               dic_bkg_temp(:,:) = tracer_bkg(:,:,1,jp_had_dic) + phyto3d_balinc(:,:,1,jp_had_dic) 
     1530               alk_bkg_temp(:,:) = tracer_bkg(:,:,1,jp_had_alk) + phyto3d_balinc(:,:,1,jp_had_alk) 
     1531            ENDIF 
    14411532         ELSE 
    14421533            dic_bkg_temp(:,:) = tracer_bkg(:,:,1,jp_had_dic) 
     
    16771768         ! Account for phytoplankton balancing if required 
    16781769         IF ( ln_phytobal ) THEN 
    1679             dic_bkg_temp(:,:,:) = tracer_bkg(:,:,:,jpdic) + phyto2d_balinc(:,:,:,jpdic) 
    1680             alk_bkg_temp(:,:,:) = tracer_bkg(:,:,:,jpalk) + phyto2d_balinc(:,:,:,jpalk) 
    1681             din_bkg_temp(:,:,:) = tracer_bkg(:,:,:,jpdin) + phyto2d_balinc(:,:,:,jpdin) 
    1682             sil_bkg_temp(:,:,:) = tracer_bkg(:,:,:,jpsil) + phyto2d_balinc(:,:,:,jpsil) 
     1770            IF ( ALLOCATED(phyto2d_balinc) ) THEN 
     1771               dic_bkg_temp(:,:,:) = tracer_bkg(:,:,:,jpdic) + phyto2d_balinc(:,:,:,jpdic) 
     1772               alk_bkg_temp(:,:,:) = tracer_bkg(:,:,:,jpalk) + phyto2d_balinc(:,:,:,jpalk) 
     1773               din_bkg_temp(:,:,:) = tracer_bkg(:,:,:,jpdin) + phyto2d_balinc(:,:,:,jpdin) 
     1774               sil_bkg_temp(:,:,:) = tracer_bkg(:,:,:,jpsil) + phyto2d_balinc(:,:,:,jpsil) 
     1775            ENDIF 
     1776            IF ( ALLOCATED(phyto3d_balinc) ) THEN 
     1777               dic_bkg_temp(:,:,:) = tracer_bkg(:,:,:,jpdic) + phyto3d_balinc(:,:,:,jpdic) 
     1778               alk_bkg_temp(:,:,:) = tracer_bkg(:,:,:,jpalk) + phyto3d_balinc(:,:,:,jpalk) 
     1779               din_bkg_temp(:,:,:) = tracer_bkg(:,:,:,jpdin) + phyto3d_balinc(:,:,:,jpdin) 
     1780               sil_bkg_temp(:,:,:) = tracer_bkg(:,:,:,jpsil) + phyto3d_balinc(:,:,:,jpsil) 
     1781            ENDIF 
    16831782         ELSE 
    16841783            dic_bkg_temp(:,:,:) = tracer_bkg(:,:,:,jpdic) 
     
    18711970            it = jpdin 
    18721971#endif 
    1873             IF ( ln_phytobal ) THEN 
     1972            IF ( ALLOCATED(phyto2d_balinc) ) THEN 
    18741973               pno3_bkginc(:,:,:) = pno3_bkginc(:,:,:) - phyto2d_balinc(:,:,:,it) 
    18751974            ENDIF 
    1876             IF ( ln_plchltotinc .OR. ln_pchltotinc ) THEN 
     1975            IF ( ALLOCATED(phyto3d_balinc) ) THEN 
    18771976               pno3_bkginc(:,:,:) = pno3_bkginc(:,:,:) - phyto3d_balinc(:,:,:,it) 
    18781977            ENDIF 
     
    18911990#if defined key_medusa 
    18921991            it = jpsil 
    1893             IF ( ln_phytobal ) THEN 
     1992            IF ( ALLOCATED(phyto2d_balinc) ) THEN 
    18941993               psi4_bkginc(:,:,:) = psi4_bkginc(:,:,:) - phyto2d_balinc(:,:,:,it) 
    18951994            ENDIF 
    1896             IF ( ln_plchltotinc .OR. ln_pchltotinc ) THEN 
     1995            IF ( ALLOCATED(phyto3d_balinc) ) THEN 
    18971996               psi4_bkginc(:,:,:) = psi4_bkginc(:,:,:) - phyto3d_balinc(:,:,:,it) 
    18981997            ENDIF 
     
    19152014            it = jpdic 
    19162015#endif 
    1917             IF ( ln_phytobal ) THEN 
     2016            IF ( ALLOCATED(phyto2d_balinc) ) THEN 
    19182017               pdic_bkginc(:,:,:) = pdic_bkginc(:,:,:) - phyto2d_balinc(:,:,:,it) 
    19192018            ENDIF 
    1920             IF ( ln_plchltotinc .OR. ln_pchltotinc ) THEN 
     2019            IF ( ALLOCATED(phyto3d_balinc) ) THEN 
    19212020               pdic_bkginc(:,:,:) = pdic_bkginc(:,:,:) - phyto3d_balinc(:,:,:,it) 
    19222021            ENDIF 
     
    19392038            it = jpalk 
    19402039#endif 
    1941             IF ( ln_phytobal ) THEN 
     2040            IF ( ALLOCATED(phyto2d_balinc) ) THEN 
    19422041               palk_bkginc(:,:,:) = palk_bkginc(:,:,:) - phyto2d_balinc(:,:,:,it) 
    19432042            ENDIF 
    1944             IF ( ln_plchltotinc .OR. ln_pchltotinc ) THEN 
     2043            IF ( ALLOCATED(phyto3d_balinc) ) THEN 
    19452044               palk_bkginc(:,:,:) = palk_bkginc(:,:,:) - phyto3d_balinc(:,:,:,it) 
    19462045            ENDIF 
     
    19592058#if defined key_medusa 
    19602059            it = jpoxy 
    1961             IF ( ln_phytobal ) THEN 
     2060            IF ( ALLOCATED(phyto2d_balinc) ) THEN 
    19622061               po2_bkginc(:,:,:) = po2_bkginc(:,:,:) - phyto2d_balinc(:,:,:,it) 
    19632062            ENDIF 
    1964             IF ( ln_plchltotinc .OR. ln_pchltotinc ) THEN 
     2063            IF ( ALLOCATED(phyto3d_balinc) ) THEN 
    19652064               po2_bkginc(:,:,:) = po2_bkginc(:,:,:) - phyto3d_balinc(:,:,:,it) 
    19662065            ENDIF 
  • branches/UKMO/dev_1d_bugfixes_tocommit/NEMOGCM/NEMO/TOP_SRC/MEDUSA/bio_medusa_init.F90

    r10302 r13354  
    3535      USE bio_medusa_mod 
    3636      USE par_oce,           ONLY: jpi, jpj, jpk 
    37       USE sms_medusa,        ONLY: jdms, pgrow_avg, ploss_avg, phyt_avg, mld_max 
     37      USE sms_medusa,        ONLY: jdms, pgrow_avg, ploss_avg, phyt_avg, mld_max, & 
     38         &                         pgrow_avg_3d, ploss_avg_3d, phyt_avg_3d 
    3839      USE trc,               ONLY: ln_diatrc, med_diag, nittrc000  
    3940      USE in_out_manager,    ONLY: lwp, numout 
     
    199200      ploss_avg(:,:) = 0.0 
    200201      phyt_avg(:,:)  = 0.0 
     202      pgrow_avg_3d(:,:,:) = 0.0 
     203      ploss_avg_3d(:,:,:) = 0.0 
     204      phyt_avg_3d(:,:,:)  = 0.0 
    201205      IF( kt == nittrc000 ) THEN 
    202206         mld_max(:,:) = 0.0 
  • branches/UKMO/dev_1d_bugfixes_tocommit/NEMOGCM/NEMO/TOP_SRC/MEDUSA/plankton.F90

    r10302 r13354  
    4646                                   ln_foam_medusa,                         & 
    4747                                   pgrow_avg, ploss_avg, phyt_avg,         & 
     48                                   pgrow_avg_3d, ploss_avg_3d, phyt_avg_3d, & 
    4849                                   xkphd, xkphn, xkzme, xkzmi,             & 
    4950                                   xmetapd, xmetapn, xmetazme, xmetazmi,   & 
     
    229230                                     ((zphn(ji,jj) + zphd(ji,jj)) *       & 
    230231                                      fse3t(ji,jj,jk) * fq0) 
     232                  !! 
     233                  pgrow_avg_3d(ji,jj,jk) = (fprn(ji,jj) * zphn(ji,jj)) +  & 
     234                                           (fprd(ji,jj) * zphd(ji,jj)) 
     235                  ploss_avg_3d(ji,jj,jk) = fgmepd(ji,jj) + fdpd(ji,jj) +  & 
     236                                           fdpd2(ji,jj)                +  & 
     237                                           fgmepn(ji,jj) + fdpn(ji,jj) +  & 
     238                                           fdpn2(ji,jj)  + fgmipn(ji,jj) 
     239                  phyt_avg_3d(ji,jj,jk)  = zphn(ji,jj) + zphd(ji,jj) 
    231240               ENDIF 
    232241            ENDDO 
  • branches/UKMO/dev_1d_bugfixes_tocommit/NEMOGCM/NEMO/TOP_SRC/MEDUSA/sms_medusa.F90

    r10302 r13354  
    362362   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: ploss_avg  !: Mixed layer average phytoplankton loss 
    363363   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: phyt_avg   !: Mixed layer average phytoplankton 
     364   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: pgrow_avg_3d  !: Mixed layer average phytoplankton growth 
     365   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: ploss_avg_3d  !: Mixed layer average phytoplankton loss 
     366   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: phyt_avg_3d   !: Mixed layer average phytoplankton 
    364367   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: mld_max    !: Maximum mixed layer depth 
    365368!! 
     
    438441      !* Fields for ocean colour data assimilation 
    439442      ALLOCATE( pgrow_avg(jpi,jpj)   , ploss_avg(jpi,jpj)   ,       & 
     443         &      pgrow_avg_3d(jpi,jpj,jpk) , ploss_avg_3d(jpi,jpj,jpk) , & 
     444         &      phyt_avg_3d(jpi,jpj,jpk)  ,                         & 
    440445         &      phyt_avg(jpi,jpj)    , mld_max(jpi,jpj)     ,    STAT=ierr(9) ) 
    441446#endif 
  • branches/UKMO/dev_1d_bugfixes_tocommit/NEMOGCM/NEMO/TOP_SRC/trcrst.F90

    r10302 r13354  
    368368            mld_max(:,:)   = 0.0 
    369369         ENDIF 
     370         IF( iom_varid( numrtr, 'pgrow_avg_3d', ldstop = .FALSE. ) > 0 ) THEN 
     371            IF(lwp) WRITE(numout,*) ' MEDUSA pgrow_avg present - reading in ...' 
     372            CALL iom_get( numrtr, jpdom_autoglo, 'pgrow_avg_3d',  pgrow_avg_3d(:,:,:)  ) 
     373            CALL iom_get( numrtr, jpdom_autoglo, 'ploss_avg_3d',  ploss_avg_3d(:,:,:)  ) 
     374            CALL iom_get( numrtr, jpdom_autoglo, 'phyt_avg_3d',   phyt_avg_3d(:,:,:)   ) 
     375         ELSE 
     376            IF(lwp) WRITE(numout,*) ' MEDUSA pgrow_avg_3d absent - setting to zero ...' 
     377            pgrow_avg_3d(:,:,:) = 0.0 
     378            ploss_avg_3d(:,:,:) = 0.0 
     379            phyt_avg_3d(:,:,:)  = 0.0 
     380         ENDIF 
    370381      ENDIF 
    371382 
     
    553564         CALL iom_rstput( kt, nitrst, numrtw, 'phyt_avg',  phyt_avg(:,:)  ) 
    554565         CALL iom_rstput( kt, nitrst, numrtw, 'mld_max',   mld_max(:,:)   ) 
     566         CALL iom_rstput( kt, nitrst, numrtw, 'pgrow_avg_3d', pgrow_avg_3d(:,:,:) ) 
     567         CALL iom_rstput( kt, nitrst, numrtw, 'ploss_avg_3d', ploss_avg_3d(:,:,:) ) 
     568         CALL iom_rstput( kt, nitrst, numrtw, 'phyt_avg_3d',  phyt_avg_3d(:,:,:)  ) 
    555569      ENDIF 
    556570!! 
Note: See TracChangeset for help on using the changeset viewer.