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 15603 for branches/UKMO/dev_r5518_GO6_starthour_obsoper/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfbfr.F90 – NEMO

Ignore:
Timestamp:
2021-12-16T10:39:55+01:00 (3 years ago)
Author:
mattmartin
Message:

Updated NEMO branch for coupled NWP at GO6 to include stochastic model perturbations.
For more info see ticket: https://code.metoffice.gov.uk/trac/nwpscience/ticket/1125.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/dev_r5518_GO6_starthour_obsoper/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfbfr.F90

    r12555 r15603  
    2626   USE wrk_nemo        ! Memory Allocation 
    2727   USE phycst, ONLY: vkarmn 
     28   USE stopack 
    2829 
    2930   IMPLICIT NONE 
     
    5253   REAL(wp), PUBLIC ::   rn_tfrz0     ! bottom roughness for loglayer bfr coeff (PUBLIC for TAM) 
    5354   LOGICAL , PUBLIC ::   ln_bfrimp    ! logical switch for implicit bottom friction 
    54    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:), PUBLIC ::  bfrcoef2d, tfrcoef2d   ! 2D bottom/top drag coefficient (PUBLIC for TAM) 
     55   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:), PUBLIC ::  bfrcoef2d, tfrcoef2d,bfrcoef2d0   ! 2D bottom/top drag coefficient (PUBLIC for TAM) 
    5556 
    5657   !! * Substitutions 
     
    6869      !!                ***  FUNCTION zdf_bfr_alloc  *** 
    6970      !!---------------------------------------------------------------------- 
    70       ALLOCATE( bfrcoef2d(jpi,jpj), tfrcoef2d(jpi,jpj), STAT=zdf_bfr_alloc ) 
     71      ALLOCATE( bfrcoef2d(jpi,jpj), tfrcoef2d(jpi,jpj), bfrcoef2d0(jpi,jpj),STAT=zdf_bfr_alloc ) 
    7172      ! 
    7273      IF( lk_mpp             )   CALL mpp_sum ( zdf_bfr_alloc ) 
     
    107108         IF(lflush) CALL flush(numout) 
    108109      ENDIF 
     110      ! 
     111#if defined key_traldf_c2d || key_traldf_c3d 
     112      IF( ln_stopack .AND. ( nn_spp_bfr > 0 ) ) THEN 
     113         bfrcoef2d = bfrcoef2d0 
     114         CALL spp_gen(kt, bfrcoef2d, nn_spp_bfr, rn_bfr_sd, jk_spp_bfr) 
     115      ENDIF 
     116#else 
     117      IF ( ln_stopack .AND. ( nn_spp_bfr > 0 ) ) & 
     118         & CALL ctl_stop( 'zdf_bfr: parameter perturbation will only work with '// & 
     119                          'key_traldf_c2d or key_traldf_c3d') 
     120#endif 
    109121      ! 
    110122      IF( nn_bfr == 2 ) THEN                 ! quadratic bottom friction only 
     
    135147               END DO 
    136148            END IF 
    137          !    
     149         ! 
    138150         ELSE 
    139151            zbfrt(:,:) = bfrcoef2d(:,:) 
     
    178190               DO ji = 2, jpim1 
    179191                  ! (ISF) ======================================================================== 
    180                   ikbu = miku(ji,jj)         ! ocean top level at u- and v-points  
     192                  ikbu = miku(ji,jj)         ! ocean top level at u- and v-points 
    181193                  ikbv = mikv(ji,jj)         ! (1st wet ocean u- and v-points) 
    182194                  ! 
     
    359371            bfrcoef2d(:,:) = rn_bfri2  ! initialize bfrcoef2d to the namelist variable 
    360372         ENDIF 
    361           
     373 
    362374         IF ( ln_isfcav ) THEN 
    363375            IF(ln_tfr2d) THEN 
     
    494506      ENDIF 
    495507      ! 
     508      bfrcoef2d0(:,:) = bfrcoef2d(:,:) 
    496509      IF( nn_timing == 1 )  CALL timing_stop('zdf_bfr_init') 
    497510      ! 
Note: See TracChangeset for help on using the changeset viewer.