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 1859 for branches/DEV_r1837_mass_heat_salt_fluxes/NEMO/OPA_SRC/SBC/sbcssr.F90 – NEMO

Ignore:
Timestamp:
2010-05-06T10:40:07+02:00 (14 years ago)
Author:
gm
Message:

ticket:#665 step 2 & 3: heat content in qns & new forcing terms

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/DEV_r1837_mass_heat_salt_fluxes/NEMO/OPA_SRC/SBC/sbcssr.F90

    r1730 r1859  
    66   !! History :  3.0  !  2006-06  (G. Madec)  Original code 
    77   !!            3.2  !  2009-04  (B. Lemaire)  Introduce iom_put 
     8   !!             -   !  2009-07  (C. Talandier, G. Madec)  Add a bound to the Erp  
     9   !!            3.3  !  2010-05  (Y. Aksenov G. Madec) salt flux + heat associated with emp 
    810   !!---------------------------------------------------------------------- 
    911 
     
    3739   REAL(wp)        ::   rn_deds     = -27.70    ! restoring factor on SST and SSS 
    3840   LOGICAL         ::   ln_sssr_bnd = .false.   ! flag to bound erp term  
    39    REAL(wp)        ::   rn_sssr_bnd =   0.e0    ! ABS(Max./Min.) value of erp term [mm/day] 
     41   REAL(wp)        ::   rn_sssr_bnd =   4.e0    ! ABS(Max./Min.) value of erp term [mm/day] 
    4042 
    4143   REAL(wp) , ALLOCATABLE, DIMENSION(:) ::   buffer   ! Temporary buffer for exchange 
     
    4648#  include "domzgr_substitute.h90" 
    4749   !!---------------------------------------------------------------------- 
    48    !! NEMO/OPA 3.2 , LOCEAN-IPSL (2009)  
     50   !! NEMO/OPA 3.3 , LOCEAN-IPSL (2010)  
    4951   !! $Id$ 
    5052   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
     
    7072      !! 
    7173      INTEGER  ::   ji, jj   ! dummy loop indices 
    72       REAL(wp) ::   zerp     ! local scalar for evaporation damping 
    73       REAL(wp) ::   zqrp     ! local scalar for heat flux damping 
    74       REAL(wp) ::   zsrp     ! local scalar for unit conversion of rn_deds factor 
    75       REAL(wp) ::   zerp_bnd ! local scalar for unit conversion of rn_epr_max factor 
    7674      INTEGER  ::   ierror   ! return error code 
    77       !! 
    78       CHARACTER(len=100) ::  cn_dir          ! Root directory for location of ssr files 
     75      REAL(wp) ::   zerp, zqrp, zsrp, zerp_bnd    ! local scalar 
     76      !! 
     77      CHARACTER(len=100) ::  cn_dir = './'   ! Root directory for location of ssr files 
    7978      TYPE(FLD_N) ::   sn_sst, sn_sss        ! informations about the fields to be read 
    8079      NAMELIST/namsbc_ssr/ cn_dir, nn_sstr, nn_sssr, rn_dqdt, rn_deds, sn_sst, sn_sss, ln_sssr_bnd, rn_sssr_bnd 
     
    8584         !                                            ! -------------------- ! 
    8685         !                            !* set file information 
    87          cn_dir  = './'            ! directory in which the model is executed 
    8886         ! ... default values (NB: frequency positive => hours, negative => months) 
    8987         !            !   file    ! frequency !  variable  ! time intep !  clim   ! 'yearly' or ! weights  ! rotation   ! 
     
    158156                  END DO 
    159157               END DO 
    160                CALL iom_put( "qrp", qrp )                             ! heat flux damping 
    161             ENDIF 
    162             ! 
    163             IF( nn_sssr == 1 ) THEN                   !* Salinity damping term (salt flux, emps only) 
     158               CALL iom_put( "qrp", qrp )                             ! heat flux damping  
     159            ENDIF 
     160            ! 
     161            IF( nn_sssr == 1 ) THEN                   !* Salinity damping term (salt flux only (emps)) 
    164162               zsrp = rn_deds / rday                                  ! from [mm/day] to [kg/m2/s] 
    165163!CDIR COLLAPSE 
     
    167165                  DO ji = 1, jpi 
    168166                     zerp = zsrp * ( 1. - 2.*rnfmsk(ji,jj) )   &      ! No damping in vicinity of river mouths 
    169                         &        * ( sss_m(ji,jj) - sf_sss(1)%fnow(ji,jj) )   & 
    170                         &        / ( sss_m(ji,jj) + 1.e-20   ) 
     167                        &        * ( sss_m(ji,jj) - sf_sss(1)%fnow(ji,jj) ) 
    171168                     emps(ji,jj) = emps(ji,jj) + zerp 
    172                      erp( ji,jj) = zerp 
     169                     erp( ji,jj) = zerp / MAX( sss_m(ji,jj), 1.e-20  )  ! converted into an equivalent emp (diag. only) 
    173170                  END DO 
    174171               END DO 
    175172               CALL iom_put( "erp", erp )                             ! freshwater flux damping 
    176173               ! 
    177             ELSEIF( nn_sssr == 2 ) THEN               !* Salinity damping term (volume flux, emp and emps) 
     174            ELSEIF( nn_sssr == 2 ) THEN               !* Salinity damping term (volume flux (emp) and qns) 
    178175               zsrp = rn_deds / rday                                  ! from [mm/day] to [kg/m2/s] 
    179176               zerp_bnd = rn_sssr_bnd / rday                          !       -              -     
     
    183180                     zerp = zsrp * ( 1. - 2.*rnfmsk(ji,jj) )   &      ! No damping in vicinity of river mouths 
    184181                        &        * ( sss_m(ji,jj) - sf_sss(1)%fnow(ji,jj) )   & 
    185                         &        / ( sss_m(ji,jj) + 1.e-20   ) 
     182                        &        / MAX(  sss_m(ji,jj), 1.e-20  ) 
    186183                     IF( ln_sssr_bnd )   zerp = SIGN( 1., zerp ) * MIN( zerp_bnd, ABS(zerp) ) 
    187                      emp (ji,jj) = emp (ji,jj) + zerp 
    188                      emps(ji,jj) = emps(ji,jj) + zerp 
    189                      erp (ji,jj) = zerp 
     184!!gm better coding   IF( ln_sssr_bnd )   zerp = MAX( -zerp_bnd, MIN( zerp, zerp_bnd )  ) 
     185                     emp(ji,jj) = emp(ji,jj) + zerp 
     186                     qns(ji,jj) = qns(ji,jj) - zerp * rcp * sst_m(ji,jj) 
     187                     erp(ji,jj) = zerp 
    190188                  END DO 
    191189               END DO 
Note: See TracChangeset for help on using the changeset viewer.