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 9326 for branches/UKMO – NEMO

Changeset 9326 for branches/UKMO


Ignore:
Timestamp:
2018-02-13T17:34:40+01:00 (6 years ago)
Author:
dford
Message:

Apply 3D chlorophyll increments.

Location:
branches/UKMO/dev_r5518_GO6_package_asm_3d_bgc/NEMOGCM/NEMO/OPA_SRC/ASM
Files:
2 edited

Legend:

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

    r9322 r9326  
    1919   !! asm_bgc_bal_wri       : write out bgc balancing increments 
    2020   !! asm_bgc_bkg_wri       : write out bgc background 
    21    !! phyto_asm_inc         : apply the ocean colour increments 
     21   !! phyto2d_asm_inc       : apply the ocean colour increments 
     22   !! phyto3d_asm_inc       : apply the 3D phytoplankton increments 
    2223   !! pco2_asm_inc          : apply the pCO2/fCO2 increments 
    2324   !! ph_asm_inc            : apply the pH increments 
     
    7475      & asm_pco2_bal 
    7576   USE par_hadocc             ! HadOCC parameters 
     77   USE had_bgc_const          ! HadOCC parameters 
    7678   USE trc, ONLY:           & ! HadOCC diagnostic variables 
    7779      & pgrow_avg,          & 
     
    9496   PUBLIC  asm_bgc_bal_wri        ! called by nemo_gcm in nemogcm.F90 
    9597   PUBLIC  asm_bgc_bkg_wri        ! called by asm_bkg_wri in asmbkg.F90 
    96    PUBLIC  phyto_asm_inc          ! called by bgc_asm_inc in asminc.F90 
     98   PUBLIC  phyto2d_asm_inc        ! called by bgc_asm_inc in asminc.F90 
     99   PUBLIC  phyto3d_asm_inc        ! called by bgc_asm_inc in asminc.F90 
    97100   PUBLIC  pco2_asm_inc           ! called by bgc_asm_inc in asminc.F90 
    98101   PUBLIC  ph_asm_inc             ! called by bgc_asm_inc in asminc.F90 
     
    156159   REAL(wp), DIMENSION(:,:,:),   ALLOCATABLE :: po2_bkginc      ! po2 inc 
    157160#if defined key_top 
    158    REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE :: phyto_balinc    ! Balancing incs from ocean colour 
     161   REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE :: phyto2d_balinc  ! Balancing incs from ocean colour 
     162   REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE :: phyto3d_balinc  ! Balancing incs from p(l)chltot 
    159163   REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE :: pco2_balinc     ! Balancing incs from spco2/sfco2 
    160164   REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE :: ph_balinc       ! Balancing incs from pph 
     
    356360         & ln_slphynoninc ) THEN 
    357361#if defined key_top 
    358          ALLOCATE( phyto_balinc(jpi,jpj,jpk,jptra) ) 
    359          phyto_balinc(:,:,:,:) = 0.0 
     362         ALLOCATE( phyto2d_balinc(jpi,jpj,jpk,jptra) ) 
     363         phyto2d_balinc(:,:,:,:) = 0.0 
     364#else 
     365         CALL ctl_stop( ' key_top must be set for balancing increments' ) 
     366#endif 
     367      ENDIF 
     368       
     369      IF ( ln_plchltotinc .OR. ln_pchltotinc ) THEN 
     370#if defined key_top 
     371         ALLOCATE( phyto3d_balinc(jpi,jpj,jpk,jptra) ) 
     372         phyto3d_balinc(:,:,:,:) = 0.0 
    360373#else 
    361374         CALL ctl_stop( ' key_top must be set for balancing increments' ) 
     
    653666         IF ( ln_slchltotinc ) THEN 
    654667#if defined key_medusa 
    655             CALL iom_rstput( kt, kt, inum, 'logchl_balinc_chn', phyto_balinc(:,:,:,jpchn) ) 
    656             CALL iom_rstput( kt, kt, inum, 'logchl_balinc_chd', phyto_balinc(:,:,:,jpchd) ) 
     668            CALL iom_rstput( kt, kt, inum, 'logchl_balinc_chn', phyto2d_balinc(:,:,:,jpchn) ) 
     669            CALL iom_rstput( kt, kt, inum, 'logchl_balinc_chd', phyto2d_balinc(:,:,:,jpchd) ) 
    657670            IF ( ln_phytobal ) THEN 
    658                CALL iom_rstput( kt, kt, inum, 'logchl_balinc_phn', phyto_balinc(:,:,:,jpphn) ) 
    659                CALL iom_rstput( kt, kt, inum, 'logchl_balinc_phd', phyto_balinc(:,:,:,jpphd) ) 
    660                CALL iom_rstput( kt, kt, inum, 'logchl_balinc_pds', phyto_balinc(:,:,:,jppds) ) 
    661                CALL iom_rstput( kt, kt, inum, 'logchl_balinc_zmi', phyto_balinc(:,:,:,jpzmi) ) 
    662                CALL iom_rstput( kt, kt, inum, 'logchl_balinc_zme', phyto_balinc(:,:,:,jpzme) ) 
    663                CALL iom_rstput( kt, kt, inum, 'logchl_balinc_din', phyto_balinc(:,:,:,jpdin) ) 
    664                CALL iom_rstput( kt, kt, inum, 'logchl_balinc_sil', phyto_balinc(:,:,:,jpsil) ) 
    665                CALL iom_rstput( kt, kt, inum, 'logchl_balinc_fer', phyto_balinc(:,:,:,jpfer) ) 
    666                CALL iom_rstput( kt, kt, inum, 'logchl_balinc_det', phyto_balinc(:,:,:,jpdet) ) 
    667                CALL iom_rstput( kt, kt, inum, 'logchl_balinc_dtc', phyto_balinc(:,:,:,jpdtc) ) 
    668                CALL iom_rstput( kt, kt, inum, 'logchl_balinc_dic', phyto_balinc(:,:,:,jpdic) ) 
    669                CALL iom_rstput( kt, kt, inum, 'logchl_balinc_alk', phyto_balinc(:,:,:,jpalk) ) 
    670                CALL iom_rstput( kt, kt, inum, 'logchl_balinc_oxy', phyto_balinc(:,:,:,jpoxy) ) 
     671               CALL iom_rstput( kt, kt, inum, 'logchl_balinc_phn', phyto2d_balinc(:,:,:,jpphn) ) 
     672               CALL iom_rstput( kt, kt, inum, 'logchl_balinc_phd', phyto2d_balinc(:,:,:,jpphd) ) 
     673               CALL iom_rstput( kt, kt, inum, 'logchl_balinc_pds', phyto2d_balinc(:,:,:,jppds) ) 
     674               CALL iom_rstput( kt, kt, inum, 'logchl_balinc_zmi', phyto2d_balinc(:,:,:,jpzmi) ) 
     675               CALL iom_rstput( kt, kt, inum, 'logchl_balinc_zme', phyto2d_balinc(:,:,:,jpzme) ) 
     676               CALL iom_rstput( kt, kt, inum, 'logchl_balinc_din', phyto2d_balinc(:,:,:,jpdin) ) 
     677               CALL iom_rstput( kt, kt, inum, 'logchl_balinc_sil', phyto2d_balinc(:,:,:,jpsil) ) 
     678               CALL iom_rstput( kt, kt, inum, 'logchl_balinc_fer', phyto2d_balinc(:,:,:,jpfer) ) 
     679               CALL iom_rstput( kt, kt, inum, 'logchl_balinc_det', phyto2d_balinc(:,:,:,jpdet) ) 
     680               CALL iom_rstput( kt, kt, inum, 'logchl_balinc_dtc', phyto2d_balinc(:,:,:,jpdtc) ) 
     681               CALL iom_rstput( kt, kt, inum, 'logchl_balinc_dic', phyto2d_balinc(:,:,:,jpdic) ) 
     682               CALL iom_rstput( kt, kt, inum, 'logchl_balinc_alk', phyto2d_balinc(:,:,:,jpalk) ) 
     683               CALL iom_rstput( kt, kt, inum, 'logchl_balinc_oxy', phyto2d_balinc(:,:,:,jpoxy) ) 
    671684            ENDIF 
    672685#elif defined key_hadocc 
    673             CALL iom_rstput( kt, kt, inum, 'logchl_balinc_phy', phyto_balinc(:,:,:,jp_had_phy) ) 
     686            CALL iom_rstput( kt, kt, inum, 'logchl_balinc_phy', phyto2d_balinc(:,:,:,jp_had_phy) ) 
    674687            IF ( ln_phytobal ) THEN 
    675                CALL iom_rstput( kt, kt, inum, 'logchl_balinc_nut', phyto_balinc(:,:,:,jp_had_nut) ) 
    676                CALL iom_rstput( kt, kt, inum, 'logchl_balinc_zoo', phyto_balinc(:,:,:,jp_had_zoo) ) 
    677                CALL iom_rstput( kt, kt, inum, 'logchl_balinc_det', phyto_balinc(:,:,:,jp_had_pdn) ) 
    678                CALL iom_rstput( kt, kt, inum, 'logchl_balinc_dic', phyto_balinc(:,:,:,jp_had_dic) ) 
    679                CALL iom_rstput( kt, kt, inum, 'logchl_balinc_alk', phyto_balinc(:,:,:,jp_had_alk) ) 
     688               CALL iom_rstput( kt, kt, inum, 'logchl_balinc_nut', phyto2d_balinc(:,:,:,jp_had_nut) ) 
     689               CALL iom_rstput( kt, kt, inum, 'logchl_balinc_zoo', phyto2d_balinc(:,:,:,jp_had_zoo) ) 
     690               CALL iom_rstput( kt, kt, inum, 'logchl_balinc_det', phyto2d_balinc(:,:,:,jp_had_pdn) ) 
     691               CALL iom_rstput( kt, kt, inum, 'logchl_balinc_dic', phyto2d_balinc(:,:,:,jp_had_dic) ) 
     692               CALL iom_rstput( kt, kt, inum, 'logchl_balinc_alk', phyto2d_balinc(:,:,:,jp_had_alk) ) 
    680693            ENDIF 
    681694#endif 
     
    774787   !!=========================================================================== 
    775788 
    776    SUBROUTINE phyto_asm_inc( kt, ll_asmdin, ll_asmiau, kcycper, pwgtiau ) 
    777       !!------------------------------------------------------------------------ 
    778       !!                    ***  ROUTINE phyto_asm_inc  *** 
     789   SUBROUTINE phyto2d_asm_inc( kt, ll_asmdin, ll_asmiau, kcycper, pwgtiau ) 
     790      !!------------------------------------------------------------------------ 
     791      !!                    ***  ROUTINE phyto2d_asm_inc  *** 
    779792      !!           
    780793      !! ** Purpose : Apply the chlorophyll assimilation increments. 
     
    813826            &                        pgrow_avg_bkg, ploss_avg_bkg,           & 
    814827            &                        phyt_avg_bkg, mld_max_bkg,              & 
    815             &                        tracer_bkg, phyto_balinc ) 
     828            &                        tracer_bkg, phyto2d_balinc ) 
    816829#elif defined key_hadocc 
    817830         CALL asm_logchl_bal_hadocc( slchltot_bkginc, zincper, mld_choice_bgc, & 
     
    820833            &                        phyt_avg_bkg, mld_max_bkg,              & 
    821834            &                        chl_bkg(:,:,1), cchl_p_bkg(:,:,1),      & 
    822             &                        tracer_bkg, phyto_balinc ) 
     835            &                        tracer_bkg, phyto2d_balinc ) 
    823836#else 
    824837         CALL ctl_stop( 'Attempting to assimilate slchltot, ', & 
     
    853866            DO jk = 1, jpkm1 
    854867               trn(:,:,jk,jp_msa0:jp_msa1) = trn(:,:,jk,jp_msa0:jp_msa1) + & 
    855                   &                          phyto_balinc(:,:,jk,jp_msa0:jp_msa1) * zincwgt 
     868                  &                          phyto2d_balinc(:,:,jk,jp_msa0:jp_msa1) * zincwgt 
    856869               trb(:,:,jk,jp_msa0:jp_msa1) = trb(:,:,jk,jp_msa0:jp_msa1) + & 
    857                   &                          phyto_balinc(:,:,jk,jp_msa0:jp_msa1) * zincwgt 
     870                  &                          phyto2d_balinc(:,:,jk,jp_msa0:jp_msa1) * zincwgt 
    858871            END DO 
    859872#elif defined key_hadocc 
    860873            DO jk = 1, jpkm1 
    861874               trn(:,:,jk,jp_had0:jp_had1) = trn(:,:,jk,jp_had0:jp_had1) + & 
    862                   &                          phyto_balinc(:,:,jk,jp_had0:jp_had1) * zincwgt 
     875                  &                          phyto2d_balinc(:,:,jk,jp_had0:jp_had1) * zincwgt 
    863876               trb(:,:,jk,jp_had0:jp_had1) = trb(:,:,jk,jp_had0:jp_had1) + & 
    864                   &                          phyto_balinc(:,:,jk,jp_had0:jp_had1) * zincwgt 
     877                  &                          phyto2d_balinc(:,:,jk,jp_had0:jp_had1) * zincwgt 
    865878            END DO 
    866879#endif 
     
    886899               &           ' Background state is taken from model rather than background file' ) 
    887900            trn(:,:,:,jp_msa0:jp_msa1) = trn(:,:,:,jp_msa0:jp_msa1) + & 
    888                &                         phyto_balinc(:,:,:,jp_msa0:jp_msa1) 
     901               &                         phyto2d_balinc(:,:,:,jp_msa0:jp_msa1) 
    889902            trb(:,:,:,jp_msa0:jp_msa1) = trn(:,:,:,jp_msa0:jp_msa1) 
    890903#elif defined key_hadocc 
     
    894907               &           ' Background state is taken from model rather than background file' ) 
    895908            trn(:,:,:,jp_had0:jp_had1) = trn(:,:,:,jp_had0:jp_had1) + & 
    896                &                         phyto_balinc(:,:,:,jp_had0:jp_had1) 
     909               &                         phyto2d_balinc(:,:,:,jp_had0:jp_had1) 
    897910            trb(:,:,:,jp_had0:jp_had1) = trn(:,:,:,jp_had0:jp_had1) 
    898911#endif 
     
    904917      ENDIF 
    905918      ! 
    906    END SUBROUTINE phyto_asm_inc 
     919   END SUBROUTINE phyto2d_asm_inc 
     920 
     921   !!=========================================================================== 
     922   !!=========================================================================== 
     923   !!=========================================================================== 
     924 
     925   SUBROUTINE phyto3d_asm_inc( kt, ll_asmdin, ll_asmiau, kcycper, pwgtiau ) 
     926      !!------------------------------------------------------------------------ 
     927      !!                    ***  ROUTINE phyto3d_asm_inc  *** 
     928      !!           
     929      !! ** Purpose : Apply the profile chlorophyll assimilation increments. 
     930      !! 
     931      !! ** Method  : Calculate increments to state variables. 
     932      !!              Direct initialization or Incremental Analysis Updating. 
     933      !! 
     934      !! ** Action  :  
     935      !!------------------------------------------------------------------------ 
     936      INTEGER,  INTENT(IN) :: kt        ! Current time step 
     937      LOGICAL,  INTENT(IN) :: ll_asmdin ! Flag for direct initialisation 
     938      LOGICAL,  INTENT(IN) :: ll_asmiau ! Flag for incremental analysis update 
     939      INTEGER,  INTENT(IN) :: kcycper   ! Dimension of pwgtiau 
     940      REAL(wp), DIMENSION(kcycper), INTENT(IN) :: pwgtiau   ! IAU weights 
     941      ! 
     942      INTEGER                          :: ji, jj, jk ! Loop counters 
     943      INTEGER                          :: it         ! Index 
     944      REAL(wp)                         :: zincwgt    ! IAU weight for time step 
     945      REAL(wp)                         :: zfrac_chn  ! Fraction of jpchn 
     946      REAL(wp)                         :: zfrac_chd  ! Fraction of jpchd 
     947      REAL(wp), DIMENSION(jpi,jpj,jpk) :: chl_inc    ! Chlorophyll increments 
     948      REAL(wp), DIMENSION(jpi,jpj,jpk) :: bkg_chl    ! Chlorophyll background 
     949      !!------------------------------------------------------------------------ 
     950 
     951      IF ( kt <= nit000 ) THEN 
     952 
     953         IF ( ln_plchltotinc ) THEN 
     954            ! Convert log10(chlorophyll) increment back to a chlorophyll increment 
     955            ! In order to transform logchl incs to chl incs, need to account for model 
     956            ! background, cannot simply do 10^logchl_bkginc. Need to: 
     957            ! 1) Add logchl inc to log10(background) to get log10(analysis) 
     958            ! 2) Take 10^log10(analysis) to get analysis 
     959            ! 3) Subtract background from analysis to get chl incs 
     960            ! If rn_maxchlinc > 0 then cap total absolute chlorophyll increment at that value 
     961#if defined key_medusa && defined key_foam_medusa 
     962            bkg_chl(:,:,:) = tracer_bkg(:,:,:,jpchn) + tracer_bkg(:,:,:,jpchd) 
     963#elif defined key_hadocc 
     964            bkg_chl(:,:,:) = chl_bkg(:,:,:) 
     965#endif 
     966            DO jk = 1, jpk 
     967               DO jj = 1, jpj 
     968                  DO ji = 1, jpi 
     969                     IF ( bkg_chl(ji,jj,jk) > 0.0 ) THEN 
     970                        chl_inc(ji,jj,jk) = 10**( LOG10( bkg_chl(ji,jj,jk) ) + plchltot_bkginc(ji,jj,jk) ) - bkg_chl(ji,jj,jk) 
     971                        IF ( rn_maxchlinc > 0.0 ) THEN 
     972                           chl_inc(ji,jj,jk) = MAX( -1.0 * rn_maxchlinc, MIN( chl_inc(ji,jj,jk), rn_maxchlinc ) ) 
     973                        ENDIF 
     974                     ELSE 
     975                        chl_inc(ji,jj,jk) = 0.0 
     976                     ENDIF 
     977                  END DO 
     978               END DO 
     979            END DO 
     980         ELSE IF ( ln_pchltotinc ) THEN 
     981            DO jk = 1, jpk 
     982               DO jj = 1, jpj 
     983                  DO ji = 1, jpi 
     984                     IF ( rn_maxchlinc > 0.0 ) THEN 
     985                        chl_inc(ji,jj,jk) = MAX( -1.0 * rn_maxchlinc, MIN( pchltot_bkginc(ji,jj,jk), rn_maxchlinc ) ) 
     986                     ELSE 
     987                        chl_inc(ji,jj,jk) = pchltot_bkginc(ji,jj,jk) 
     988                     ENDIF 
     989                  END DO 
     990               END DO 
     991            END DO 
     992         ENDIF 
     993 
     994#if defined key_medusa && defined key_foam_medusa 
     995         ! Loop over each grid point partioning the increments based on existing ratios 
     996         DO jk = 1, jpk 
     997            DO jj = 1, jpj 
     998               DO ji = 1, jpi 
     999                  IF ( ( tracer_bkg(ji,jj,jk,jpchn) > 0.0 ) .AND. ( tracer_bkg(ji,jj,jk,jpchd) > 0.0 ) ) THEN 
     1000                     zfrac_chn = tracer_bkg(ji,jj,jk,jpchn) / (tracer_bkg(ji,jj,jk,jpchn) + tracer_bkg(ji,jj,jk,jpchd)) 
     1001                     zfrac_chd = 1.0 - zfrac_chn 
     1002                     phyto3d_balinc(ji,jj,jk,jpchn) = chl_inc(ji,jj,jk) * zfrac_chn 
     1003                     phyto3d_balinc(ji,jj,jk,jpchd) = chl_inc(ji,jj,jk) * zfrac_chd 
     1004                  ENDIF 
     1005               END DO 
     1006            END DO 
     1007         END DO 
     1008#elif defined key_hadocc 
     1009         phyto3d_balinc(:,:,:,jp_had_phy) = ( cchl_p_bkg(:,:,:) / (mw_carbon * c2n_p) ) * chl_inc(:,:,:) 
     1010#else 
     1011         CALL ctl_stop( 'Attempting to assimilate p(l)chltot, ', & 
     1012            &           'but not defined a biogeochemical model' ) 
     1013#endif 
     1014 
     1015      ENDIF 
     1016 
     1017      IF ( ll_asmiau ) THEN 
     1018 
     1019         !-------------------------------------------------------------------- 
     1020         ! Incremental Analysis Updating 
     1021         !-------------------------------------------------------------------- 
     1022 
     1023         IF ( ( kt >= nitiaustr_r ).AND.( kt <= nitiaufin_r ) ) THEN 
     1024 
     1025            it = kt - nit000 + 1 
     1026            zincwgt = pwgtiau(it)      ! IAU weight for the current time step 
     1027            ! note this is not a tendency so should not be divided by rdt 
     1028 
     1029            IF(lwp) THEN 
     1030               WRITE(numout,*)  
     1031               WRITE(numout,*) 'phyto3d_asm_inc : phyto3d IAU at time step = ', & 
     1032                  &  kt,' with IAU weight = ', pwgtiau(it) 
     1033               WRITE(numout,*) '~~~~~~~~~~~~' 
     1034            ENDIF 
     1035 
     1036            ! Update the biogeochemical variables 
     1037            ! Add directly to trn and trb, rather than to tra, because tra gets 
     1038            ! reset to zero at the start of trc_stp, called after this routine 
     1039#if defined key_medusa && defined key_foam_medusa 
     1040            WHERE( phyto3d_balinc(:,:,:,:) > 0.0_wp .OR. & 
     1041               &   trn(:,:,:,jp_msa0:jp_msa1) + phyto3d_balinc(:,:,:,:) * zincwgt > 0.0_wp ) 
     1042               trn(:,:,:,jp_msa0:jp_msa1) = trn(:,:,:,jp_msa0:jp_msa1) + & 
     1043                  &                         phyto3d_balinc(:,:,:,jp_msa0:jp_msa1) * zincwgt 
     1044               trb(:,:,:,jp_msa0:jp_msa1) = trb(:,:,:,jp_msa0:jp_msa1) + & 
     1045                  &                         phyto3d_balinc(:,:,:,jp_msa0:jp_msa1) * zincwgt 
     1046            END WHERE 
     1047#elif defined key_hadocc 
     1048            WHERE( phyto3d_balinc(:,:,:,:) > 0.0_wp .OR. & 
     1049               &   trn(:,:,:,jp_had0:jp_had1) + phyto3d_balinc(:,:,:,:) * zincwgt > 0.0_wp ) 
     1050               trn(:,:,:,jp_had0:jp_had1) = trn(:,:,:,jp_had0:jp_had1) + & 
     1051                  &                         phyto3d_balinc(:,:,:,jp_had0:jp_had1) * zincwgt 
     1052               trb(:,:,:,jp_had0:jp_had1) = trb(:,:,:,jp_had0:jp_had1) + & 
     1053                  &                         phyto3d_balinc(:,:,:,jp_had0:jp_had1) * zincwgt 
     1054            END WHERE 
     1055#endif 
     1056 
     1057            ! Do not deallocate arrays - needed by asm_bgc_bal_wri 
     1058            ! which is called at end of model run 
     1059         ENDIF 
     1060 
     1061      ELSEIF ( ll_asmdin ) THEN  
     1062 
     1063         !-------------------------------------------------------------------- 
     1064         ! Direct Initialization 
     1065         !-------------------------------------------------------------------- 
     1066          
     1067         IF ( kt == nitdin_r ) THEN 
     1068 
     1069            neuler = 0                    ! Force Euler forward step 
     1070 
     1071            ! Initialize the now fields with the background + increment 
     1072            ! Background currently is what the model is initialised with 
     1073            CALL ctl_warn( ' Doing direct initialisation with phyto3d assimilation', & 
     1074               &           ' Background state is taken from model rather than background file' ) 
     1075#if defined key_medusa && defined key_foam_medusa 
     1076            WHERE( phyto3d_balinc(:,:,:,:) > 0.0_wp .OR. & 
     1077               &   trn(:,:,:,jp_msa0:jp_msa1) + phyto3d_balinc(:,:,:,:) * zincwgt > 0.0_wp ) 
     1078               trn(:,:,:,jp_msa0:jp_msa1) = trn(:,:,:,jp_msa0:jp_msa1) + & 
     1079                  &                         phyto3d_balinc(:,:,:,jp_msa0:jp_msa1) 
     1080               trb(:,:,:,jp_msa0:jp_msa1) = trn(:,:,:,jp_msa0:jp_msa1) 
     1081            END WHERE 
     1082#elif defined key_hadocc 
     1083            WHERE( phyto3d_balinc(:,:,:,:) > 0.0_wp .OR. & 
     1084               &   trn(:,:,:,jp_had0:jp_had1) + phyto3d_balinc(:,:,:,:) * zincwgt > 0.0_wp ) 
     1085               trn(:,:,:,jp_had0:jp_had1) = trn(:,:,:,jp_had0:jp_had1) + & 
     1086                  &                         phyto3d_balinc(:,:,:,jp_had0:jp_had1) 
     1087               trb(:,:,:,jp_had0:jp_had1) = trn(:,:,:,jp_had0:jp_had1) 
     1088            END WHERE 
     1089#endif 
     1090  
     1091            ! Do not deallocate arrays - needed by asm_bgc_bal_wri 
     1092            ! which is called at end of model run 
     1093         ENDIF 
     1094         ! 
     1095      ENDIF 
     1096      ! 
     1097   END SUBROUTINE phyto3d_asm_inc 
    9071098 
    9081099   !!=========================================================================== 
     
    9751166            ! If assimilating fCO2, then convert to pCO2 using temperature 
    9761167            ! See flux_gas.F90 within HadOCC for details of calculation 
    977             pco2_bkginc_temp(:,:) = sfco2_bkginc(:,:) /                                                             & 
     1168            pco2_bkginc_temp(:,:) = sfco2_bkginc(:,:) /                                                            & 
    9781169               &                    EXP((zcoef_fco2_1                                                            + & 
    9791170               &                         zcoef_fco2_2 * (tsn(:,:,1,1)+rt0)                                       - & 
     
    9991190         ! Account for logchl balancing if required 
    10001191         IF ( ln_slchltotinc .AND. ln_phytobal ) THEN 
    1001             dic_bkg_temp(:,:) = tracer_bkg(:,:,1,jpdic) + phyto_balinc(:,:,1,jpdic) 
    1002             alk_bkg_temp(:,:) = tracer_bkg(:,:,1,jpalk) + phyto_balinc(:,:,1,jpalk) 
     1192            dic_bkg_temp(:,:) = tracer_bkg(:,:,1,jpdic) + phyto2d_balinc(:,:,1,jpdic) 
     1193            alk_bkg_temp(:,:) = tracer_bkg(:,:,1,jpalk) + phyto2d_balinc(:,:,1,jpalk) 
    10031194         ELSE 
    10041195            dic_bkg_temp(:,:) = tracer_bkg(:,:,1,jpdic) 
     
    10131204         ! Account for slchltot balancing if required 
    10141205         IF ( ln_slchltotinc .AND. ln_phytobal ) THEN 
    1015             dic_bkg_temp(:,:) = tracer_bkg(:,:,1,jp_had_dic) + phyto_balinc(:,:,1,jp_had_dic) 
    1016             alk_bkg_temp(:,:) = tracer_bkg(:,:,1,jp_had_alk) + phyto_balinc(:,:,1,jp_had_alk) 
     1206            dic_bkg_temp(:,:) = tracer_bkg(:,:,1,jp_had_dic) + phyto2d_balinc(:,:,1,jp_had_dic) 
     1207            alk_bkg_temp(:,:) = tracer_bkg(:,:,1,jp_had_alk) + phyto2d_balinc(:,:,1,jp_had_alk) 
    10171208         ELSE 
    10181209            dic_bkg_temp(:,:) = tracer_bkg(:,:,1,jp_had_dic) 
     
    12021393      CALL ctl_stop( ' pH balancing not yet implemented' ) 
    12031394       
     1395      ! See solve_at_general line 281 of mocsy_phsolvers.F90 
     1396      ! 
     1397      ! Or, call to mocsy_interface line 158 of carb_chem.F90 
     1398      ! Input variables (rest are output) are: 
     1399      ! ztmp(ji,jj),zsal(ji,jj),zalk(ji,jj), & 
     1400      ! zdic(ji,jj),zsil(ji,jj),zpho(ji,jj), & 
     1401      ! f_pp0(ji,jj),fsdept(ji,jj,jk),       & 
     1402      ! gphit(ji,jj),f_kw660(ji,jj),         & 
     1403      ! f_xco2a(ji,jj),1 
     1404      ! 
     1405      ! ztmp    = tsn(:,:,:,jp_tem) 
     1406      ! zsal    = tsn(:,:,:,jp_sal) 
     1407      ! zalk    = trn(:,:,:,jpalk) 
     1408      ! zdic    = trn(:,:,:,jpdic) 
     1409      ! zsil    = trn(:,:,:,jpsil) 
     1410      ! zpho    = trn(:,:,:,jpdin) / 16.0 
     1411      ! f_pp0   = 1.0 
     1412      ! fsdept  = fsdept(:,:,:) 
     1413      ! gphit   = gphit(:,:) 
     1414      ! f_kw660 = 1.0 
     1415      ! f_xco2a = f_xco2a(:,:) 
     1416       
    12041417      ! 
    12051418   END SUBROUTINE ph_asm_inc 
     
    12401453 
    12411454            it = kt - nit000 + 1 
    1242             !zincwgt = pwgtiau(it) / rdt   ! IAU weight for the current time step 
    1243             zincwgt = pwgtiau(it)   ! IAU weight for the current time step 
    1244             ! Check which we should use both here and for all others 
     1455            zincwgt = pwgtiau(it)      ! IAU weight for the current time step 
     1456            ! note this is not a tendency so should not be divided by rdt 
    12451457 
    12461458            IF(lwp) THEN 
  • branches/UKMO/dev_r5518_GO6_package_asm_3d_bgc/NEMOGCM/NEMO/OPA_SRC/ASM/asminc.F90

    r9322 r9326  
    12351235         & ln_schltotinc  .OR. ln_slphytotinc .OR. ln_slphydiainc .OR. & 
    12361236         & ln_slphynoninc ) THEN 
    1237          CALL phyto_asm_inc( kt, ln_asmdin, ln_asmiau, icycper, wgtiau ) 
     1237         CALL phyto2d_asm_inc( kt, ln_asmdin, ln_asmiau, icycper, wgtiau ) 
    12381238      ENDIF 
    12391239       
    12401240      IF ( ln_plchltotinc .OR. ln_pchltotinc ) THEN 
    1241          CALL ctl_stop( 'Not worked out what to do about profile chl yet' ) 
     1241         CALL phyto3d_asm_inc( kt, ln_asmdin, ln_asmiau, icycper, wgtiau ) 
    12421242      ENDIF 
    12431243       
Note: See TracChangeset for help on using the changeset viewer.