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 10661 for branches/UKMO/AMM15_v3_6_STABLE_package_collate_BGC_DA/NEMOGCM/NEMO/OPA_SRC/ASM/asmbgc.F90 – NEMO

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

Add option to apply phosphate increments.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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 ) 
Note: See TracChangeset for help on using the changeset viewer.