Changeset 10661


Ignore:
Timestamp:
2019-02-12T18:08:39+01:00 (16 months ago)
Author:
dford
Message:

Add option to apply phosphate increments.

Location:
branches/UKMO/AMM15_v3_6_STABLE_package_collate_BGC_DA/NEMOGCM
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/AMM15_v3_6_STABLE_package_collate_BGC_DA/NEMOGCM/CONFIG/SHARED/namelist_ref

    r10622 r10661  
    12811281    ln_pno3inc     = .false. !  Logical switch for applying pno3 increments 
    12821282    ln_psi4inc     = .false. !  Logical switch for applying psi4 increments 
     1283    ln_ppo4inc     = .false. !  Logical switch for applying ppo4 increments 
    12831284    ln_pdicinc     = .false. !  Logical switch for applying pdic increments 
    12841285    ln_palkinc     = .false. !  Logical switch for applying palk increments 
  • branches/UKMO/AMM15_v3_6_STABLE_package_collate_BGC_DA/NEMOGCM/NEMO/OPA_SRC/ASM/asmbgc.F90

    r10624 r10661  
    135135   LOGICAL, PUBLIC :: ln_pno3inc     = .FALSE. !: No profile nitrate                       increment 
    136136   LOGICAL, PUBLIC :: ln_psi4inc     = .FALSE. !: No profile silicate                      increment 
     137   LOGICAL, PUBLIC :: ln_ppo4inc     = .FALSE. !: No profile phosphate                     increment 
    137138   LOGICAL, PUBLIC :: ln_pdicinc     = .FALSE. !: No profile dissolved inorganic carbon    increment 
    138139   LOGICAL, PUBLIC :: ln_palkinc     = .FALSE. !: No profile alkalinity                    increment 
     
    175176   REAL(wp), DIMENSION(:,:,:),   ALLOCATABLE :: pno3_bkginc     ! pno3 inc 
    176177   REAL(wp), DIMENSION(:,:,:),   ALLOCATABLE :: psi4_bkginc     ! psi4 inc 
     178   REAL(wp), DIMENSION(:,:,:),   ALLOCATABLE :: ppo4_bkginc     ! ppo4 inc 
    177179   REAL(wp), DIMENSION(:,:,:),   ALLOCATABLE :: pdic_bkginc     ! pdic inc 
    178180   REAL(wp), DIMENSION(:,:,:),   ALLOCATABLE :: palk_bkginc     ! palk inc 
     
    229231 
    230232#if defined key_hadocc 
    231       IF ( ln_slchldiainc .OR. ln_slchlnoninc .OR. ln_slphydiainc .OR. & 
    232          & ln_slphynoninc .OR. ln_psi4inc .OR. ln_pphinc .OR. ln_po2inc ) THEN 
    233          CALL ctl_stop( ' Cannot assimilate PFTs, Si4, pH or O2 into HadOCC' ) 
     233      IF ( ln_slchldiainc .OR. ln_slchlnoninc .OR. ln_slchlnaninc .OR. & 
     234         & ln_slchldininc .OR. ln_slchlpicinc .OR. ln_slphydiainc .OR. & 
     235         & ln_slphynoninc .OR. ln_psi4inc     .OR. ln_pphinc      .OR. & 
     236         & ln_po2inc      .OR. ln_ppo4inc ) THEN 
     237         CALL ctl_stop( ' Cannot assimilate PFTs, Si4, PO4, pH or O2 into HadOCC' ) 
    234238      ENDIF 
    235239#endif 
     
    238242      IF ( .NOT. ln_foam_medusa ) THEN 
    239243         CALL ctl_stop( ' MEDUSA data assimilation options not turned on: set ln_foam_medusa' ) 
     244      ENDIF 
     245 
     246      IF ( ln_ppo4inc ) THEN 
     247         CALL ctl_stop( ' Cannot assimilate PO4 into MEDUSA' ) 
    240248      ENDIF 
    241249#endif 
     
    419427         ALLOCATE( psi4_bkginc(jpi,jpj,jpk) ) 
    420428         CALL asm_bgc_read_incs_3d( knum, 'bckinpsi4', psi4_bkginc ) 
     429      ENDIF 
     430       
     431      IF ( ln_ppo4inc ) THEN 
     432         ALLOCATE( ppo4_bkginc(jpi,jpj,jpk) ) 
     433         CALL asm_bgc_read_incs_3d( knum, 'bckinppo4', ppo4_bkginc ) 
    421434      ENDIF 
    422435       
     
    24412454         ENDIF 
    24422455 
     2456         IF ( ln_ppo4inc ) THEN 
     2457#if defined key_fabm 
     2458            it = jp_fabm_n1p 
     2459 
     2460            IF ( ln_phytobal ) THEN 
     2461               ppo4_bkginc(:,:,:) = ppo4_bkginc(:,:,:) - phyto2d_balinc(:,:,:,it) 
     2462            ENDIF 
     2463            IF ( ln_plchltotinc .OR. ln_pchltotinc ) THEN 
     2464               ppo4_bkginc(:,:,:) = ppo4_bkginc(:,:,:) - phyto3d_balinc(:,:,:,it) 
     2465            ENDIF 
     2466            IF ( ln_sfco2inc .OR. ln_spco2inc ) THEN 
     2467               ppo4_bkginc(:,:,:) = ppo4_bkginc(:,:,:) - pco2_balinc(:,:,:,it) 
     2468            ENDIF 
     2469            IF ( ln_pphinc ) THEN 
     2470               ppo4_bkginc(:,:,:) = ppo4_bkginc(:,:,:) - ph_balinc(:,:,:,it) 
     2471            ENDIF 
     2472#else 
     2473            CALL ctl_stop ( ' bgc3d_asm_inc: no compatible BGC model defined' ) 
     2474#endif 
     2475         ENDIF 
     2476 
    24432477         IF ( ln_pdicinc ) THEN 
    24442478#if defined key_hadocc || defined key_medusa || defined key_fabm 
     
    25852619            ENDIF 
    25862620 
     2621            IF ( ln_ppo4inc ) THEN 
     2622#if defined key_fabm 
     2623               WHERE( ppo4_bkginc(:,:,:) > 0.0_wp .OR. & 
     2624                  &   trn(:,:,:,jp_fabm_n1p) + ppo4_bkginc(:,:,:) * zincwgt > 0.0_wp ) 
     2625                  trn(:,:,:,jp_fabm_n1p) = trn(:,:,:,jp_fabm_n1p) + ppo4_bkginc(:,:,:) * zincwgt 
     2626                  trb(:,:,:,jp_fabm_n1p) = trb(:,:,:,jp_fabm_n1p) + ppo4_bkginc(:,:,:) * zincwgt 
     2627               END WHERE 
     2628#else 
     2629               CALL ctl_stop ( ' bgc3d_asm_inc: no compatible BGC model defined' ) 
     2630#endif 
     2631            ENDIF 
     2632 
    25872633            IF ( ln_pdicinc ) THEN 
    25882634#if defined key_hadocc 
     
    26542700               IF ( ln_pno3inc ) DEALLOCATE( pno3_bkginc ) 
    26552701               IF ( ln_psi4inc ) DEALLOCATE( psi4_bkginc ) 
     2702               IF ( ln_ppo4inc ) DEALLOCATE( ppo4_bkginc ) 
    26562703               IF ( ln_pdicinc ) DEALLOCATE( pdic_bkginc ) 
    26572704               IF ( ln_palkinc ) DEALLOCATE( palk_bkginc ) 
     
    27182765            ENDIF 
    27192766 
     2767            IF ( ln_ppo4inc ) THEN 
     2768#if defined key_fabm 
     2769               WHERE( ppo4_bkginc(:,:,:) > 0.0_wp .OR. & 
     2770                  &   trn(:,:,:,jp_fabm_n1p) + ppo4_bkginc(:,:,:) > 0.0_wp ) 
     2771                  trn(:,:,:,jp_fabm_n1p) = trn(:,:,:,jp_fabm_n1p) + ppo4_bkginc(:,:,:) 
     2772                  trb(:,:,:,jp_fabm_n1p) = trn(:,:,:,jp_fabm_n1p) 
     2773               END WHERE 
     2774#else 
     2775               CALL ctl_stop ( ' bgc3d_asm_inc: no compatible BGC model defined' ) 
     2776#endif 
     2777            ENDIF 
     2778 
    27202779            IF ( ln_pdicinc ) THEN 
    27212780#if defined key_hadocc 
     
    27862845            IF ( ln_pno3inc ) DEALLOCATE( pno3_bkginc ) 
    27872846            IF ( ln_psi4inc ) DEALLOCATE( psi4_bkginc ) 
     2847            IF ( ln_ppo4inc ) DEALLOCATE( ppo4_bkginc ) 
    27882848            IF ( ln_pdicinc ) DEALLOCATE( pdic_bkginc ) 
    27892849            IF ( ln_palkinc ) DEALLOCATE( palk_bkginc ) 
  • branches/UKMO/AMM15_v3_6_STABLE_package_collate_BGC_DA/NEMOGCM/NEMO/OPA_SRC/ASM/asminc.F90

    r10622 r10661  
    172172         &                 ln_sfco2inc, ln_plchltotinc, ln_pchltotinc,     & 
    173173         &                 ln_pno3inc, ln_psi4inc, ln_pdicinc, ln_palkinc, & 
    174          &                 ln_pphinc, ln_po2inc,                           & 
     174         &                 ln_pphinc, ln_po2inc, ln_ppo4inc,               & 
    175175         &                 ln_asmdin, ln_asmiau,                           & 
    176176         &                 nitbkg, nitdin, nitiaustr, nitiaufin, niaufn,   & 
     
    242242         WRITE(numout,*) '      Logical switch for applying pno3 increments             ln_pno3inc = ', ln_pno3inc 
    243243         WRITE(numout,*) '      Logical switch for applying psi4 increments             ln_psi4inc = ', ln_psi4inc 
     244         WRITE(numout,*) '      Logical switch for applying ppo4 increments             ln_ppo4inc = ', ln_ppo4inc 
    244245         WRITE(numout,*) '      Logical switch for applying pdic increments             ln_pdicinc = ', ln_pdicinc 
    245246         WRITE(numout,*) '      Logical switch for applying palk increments             ln_palkinc = ', ln_palkinc 
     
    304305         & ln_plchltotinc .OR. ln_pchltotinc  .OR. ln_pno3inc     .OR. & 
    305306         & ln_psi4inc     .OR. ln_pdicinc     .OR. ln_palkinc     .OR. & 
    306          & ln_pphinc      .OR. ln_po2inc ) THEN 
     307         & ln_pphinc      .OR. ln_po2inc      .OR. ln_ppo4inc ) THEN 
    307308         lk_bgcinc = .TRUE. 
    308309      ENDIF 
     
    13831384      ! Remaining bgc profile variables 
    13841385      IF ( ln_pno3inc .OR. ln_psi4inc .OR. ln_pdicinc .OR. & 
    1385          & ln_palkinc .OR. ln_po2inc ) THEN 
     1386         & ln_palkinc .OR. ln_po2inc  .OR. ln_ppo4inc ) THEN 
    13861387         CALL bgc3d_asm_inc( kt, ln_asmdin, ln_asmiau, icycper, wgtiau ) 
    13871388      ENDIF 
Note: See TracChangeset for help on using the changeset viewer.