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 13355 for branches/UKMO/dev_r5518_GO6_package_FOAMv14/NEMOGCM/NEMO/OPA_SRC/SBC/sbcssr.F90 – NEMO

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

Merged in changes to fix 1d running - documented in UKMO ocean utils ticket 367

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/dev_r5518_GO6_package_FOAMv14/NEMOGCM/NEMO/OPA_SRC/SBC/sbcssr.F90

    r11442 r13355  
    2424   USE lbclnk         ! ocean lateral boundary conditions (or mpp link) 
    2525   USE timing         ! Timing 
    26    USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
     26   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined) 
    2727   USE stopack 
    2828   USE wrk_nemo       ! Memory Allocation 
     
    4242   REAL(wp)        ::   rn_dqdt         ! restoring factor on SST and SSS 
    4343   REAL(wp)        ::   rn_deds         ! restoring factor on SST and SSS 
    44    LOGICAL         ::   ln_sssr_bnd     ! flag to bound erp term  
     44   LOGICAL         ::   ln_sssr_bnd     ! flag to bound erp term 
    4545   REAL(wp)        ::   rn_sssr_bnd     ! ABS(Max./Min.) value of erp term [mm/day] 
    4646 
     
    101101               rn_dqdt_s(:,:) = rn_dqdt 
    102102 
    103                IF( ln_stopack .AND. nn_spp_dqdt > 0 ) & 
    104                   & CALL spp_gen( kt, rn_dqdt_s, nn_spp_dqdt, rn_dqdt_sd, jk_spp_dqdt ) 
     103#if defined key_traldf_c2d || key_traldf_c3d 
     104            IF( ln_stopack .AND. nn_spp_dqdt > 0 ) & 
     105               & CALL spp_gen( kt, rn_dqdt_s, nn_spp_dqdt, rn_dqdt_sd, jk_spp_dqdt ) 
     106#else 
     107            IF ( ln_stopack .AND. nn_spp_dqdt > 0 ) & 
     108               & CALL ctl_stop( 'sbc_ssr: parameter perturbation will only work with '// & 
     109                                'key_traldf_c2d or key_traldf_c3d') 
     110#endif 
     111 
    105112               DO jj = 1, jpj 
    106113                  DO ji = 1, jpi 
     
    117124               CALL wrk_alloc( jpi, jpj, zsrp) 
    118125               zsrp(:,:) = rn_deds 
     126#if defined key_traldf_c2d || key_traldf_c3d 
    119127               IF( ln_stopack .AND. nn_spp_dedt > 0 ) & 
    120128                  & CALL spp_gen(kt, zsrp, nn_spp_dedt, rn_dedt_sd, jk_spp_deds ) 
     129#else 
     130            IF ( ln_stopack .AND. nn_spp_icealb > 0 ) & 
     131               & CALL ctl_stop( 'sbc_ssr: parameter perturbation will only work with '// & 
     132                                'key_traldf_c2d or key_traldf_c3d') 
     133#endif 
     134 
     135 
    121136!CDIR COLLAPSE 
    122137               DO jj = 1, jpj 
    123138                  DO ji = 1, jpi 
    124139                     zerp = (zsrp(ji,jj)/rday) * ( 1. - 2.*rnfmsk(ji,jj) )   &      ! No damping in vicinity of river mouths 
    125                         &        * ( sss_m(ji,jj) - sf_sss(1)%fnow(ji,jj,1) )  
     140                        &        * ( sss_m(ji,jj) - sf_sss(1)%fnow(ji,jj,1) ) 
    126141                     sfx(ji,jj) = sfx(ji,jj) + zerp                 ! salt flux 
    127142                     erp(ji,jj) = zerp / MAX( sss_m(ji,jj), 1.e-20 ) ! converted into an equivalent volume flux (diagnostic only) 
     
    134149               CALL wrk_alloc( jpi, jpj, zsrp) 
    135150               zsrp(:,:) = rn_deds 
     151#if defined key_traldf_c2d || key_traldf_c3d 
    136152               IF( ln_stopack .AND. nn_spp_dedt > 0 ) & 
    137153                  & CALL spp_gen( kt, zsrp, nn_spp_dedt, rn_dedt_sd, jk_spp_deds ) 
    138                zerp_bnd = rn_sssr_bnd / rday                          !       -              -     
     154#else 
     155               IF ( ln_stopack .AND. nn_spp_dedt > 0 ) & 
     156                  & CALL ctl_stop( 'sbc_ssr: parameter perturbation will only work with '// & 
     157                                   'key_traldf_c2d or key_traldf_c3d') 
     158#endif 
     159               zerp_bnd = rn_sssr_bnd / rday                          !       -              - 
    139160!CDIR COLLAPSE 
    140161               DO jj = 1, jpj 
    141                   DO ji = 1, jpi                             
     162                  DO ji = 1, jpi 
    142163                     zerp = (zsrp(ji,jj)/rday) * ( 1. - 2.*rnfmsk(ji,jj) )   &      ! No damping in vicinity of river mouths 
    143164                        &        * ( sss_m(ji,jj) - sf_sss(1)%fnow(ji,jj,1) )   & 
     
    161182   END SUBROUTINE sbc_ssr 
    162183 
    163   
     184 
    164185   SUBROUTINE sbc_ssr_init 
    165186      !!--------------------------------------------------------------------- 
     
    184205      !!---------------------------------------------------------------------- 
    185206      ! 
    186   
    187       REWIND( numnam_ref )              ! Namelist namsbc_ssr in reference namelist :  
     207 
     208      REWIND( numnam_ref )              ! Namelist namsbc_ssr in reference namelist : 
    188209      READ  ( numnam_ref, namsbc_ssr, IOSTAT = ios, ERR = 901) 
    189210901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namsbc_ssr in reference namelist', lwp ) 
     
    240261      ENDIF 
    241262      ! 
    242       !                            !* Initialize qrp and erp if no restoring  
     263      !                            !* Initialize qrp and erp if no restoring 
    243264      IF( nn_sstr /= 1                   )   qrp(:,:) = 0._wp 
    244265      IF( nn_sssr /= 1 .OR. nn_sssr /= 2 )   erp(:,:) = 0._wp 
    245266      ! 
    246267   END SUBROUTINE sbc_ssr_init 
    247        
     268 
    248269   !!====================================================================== 
    249270END MODULE sbcssr 
Note: See TracChangeset for help on using the changeset viewer.