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 3982 for branches/2013/dev_r3406_CNRS_LIM3 – NEMO

Ignore:
Timestamp:
2013-07-18T12:44:32+02:00 (11 years ago)
Author:
clem
Message:

bug correction for penetrative solar flux

Location:
branches/2013/dev_r3406_CNRS_LIM3/NEMOGCM/NEMO/LIM_SRC_3
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/2013/dev_r3406_CNRS_LIM3/NEMOGCM/NEMO/LIM_SRC_3/limsbc.F90

    r3977 r3982  
    109109      INTEGER  ::   ifvt, i1mfr, idfr               ! some switches 
    110110      INTEGER  ::   iflt, ial, iadv, ifral, ifrdv 
    111       REAL(wp) ::   zinda, zindb, zfons, zpme              ! local scalars 
     111      REAL(wp) ::   zinda, zfons, zpme              ! local scalars 
    112112      REAL(wp) ::   zfmm             ! IOVINO freezing minus melting (F-M)  
    113113      REAL(wp), POINTER, DIMENSION(:,:) ::   zfcm1 , zfcm2    ! solar/non solar heat fluxes 
    114114      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zalb, zalbp   ! 2D/3D workspace 
     115      REAL(wp) ::   zzfcm1, zfscmbq ! clem: for light penetration 
    115116      !!--------------------------------------------------------------------- 
    116117       
     
    127128         DO ji = 1, jpi 
    128129            zinda   = 1.0 - MAX( rzero , SIGN( rone , - ( 1.0 - pfrld(ji,jj) ) ) ) 
    129             zindb   = 1.0 - MAX( rzero , SIGN( rone , - iatte(ji,jj) ) ) 
    130130            ifvt    = zinda  *  MAX( rzero , SIGN( rone, - phicif(ji,jj) ) )  !subscripts are bad here 
    131131            i1mfr   = 1.0 - MAX( rzero , SIGN( rone ,  - at_i(ji,jj) ) ) 
     
    151151            !   computation the solar flux at ocean surface 
    152152            zfcm1(ji,jj)   = pfrld(ji,jj) * qsr(ji,jj)  + & 
    153                  &           zindb * ( 1. - pfrld(ji,jj) ) * fstric(ji,jj) / MAX( iatte(ji,jj), epsi20 ) 
     153                 &           ( 1. - pfrld(ji,jj) ) * fstric(ji,jj) / ( 1.0 - zinda + zinda * iatte(ji,jj) ) 
    154154            ! fstric     Solar flux transmitted trough the ice 
    155155            ! qsr        Net short wave heat flux on free ocean 
    156156            ! new line 
    157             fscmbq(ji,jj) = zindb * ( 1.0 - pfrld(ji,jj) ) * fstric(ji,jj) / MAX( iatte(ji,jj), epsi20 ) 
     157            fscmbq(ji,jj) = ( 1.0 - pfrld(ji,jj) ) * fstric(ji,jj) / ( 1.0 - zinda + zinda * iatte(ji,jj) ) 
     158 
     159            ! solar flux and fscmbq with light penetration (clem) 
     160            zzfcm1  = pfrld(ji,jj) * qsr(ji,jj) * oatte(ji,jj) + ( 1. - pfrld(ji,jj) ) * fstric(ji,jj) 
     161            zfscmbq = ( 1.0 - pfrld(ji,jj) ) * fstric(ji,jj) 
    158162 
    159163            !  computation the non solar heat flux at ocean surface 
    160             zfcm2(ji,jj) = - zfcm1(ji,jj)                  & 
    161                &           + iflt    * ( fscmbq(ji,jj) )   & ! total abl -> fscmbq is given to the ocean 
    162                ! fscmbq and ffltbif are obsolete 
    163                !              &           + iflt * ffltbif(ji,jj) !!! only if one category is used 
     164            zfcm2(ji,jj) = - zzfcm1                  & 
     165               &           + iflt    * zfscmbq   & ! total abl -> fscmbq is given to the ocean 
    164166               &           + ifral   * ( ial * qcmif(ji,jj) + (1 - ial) * qldif(ji,jj) ) * r1_rdtice   & 
    165167               &           + ifrdv   * ( qfvbq(ji,jj) + qdtcn(ji,jj) )                   * r1_rdtice   & 
  • branches/2013/dev_r3406_CNRS_LIM3/NEMOGCM/NEMO/LIM_SRC_3/limthd.F90

    r3979 r3982  
    185185            zinda          = tms(ji,jj) * (1.0 - MAX( zzero , SIGN( zone , - at_i(ji,jj) ) ) ) 
    186186            ! clem: set up ocean and ice attenuation to 1 (i.e. no attenuation) when there is no ice (zinda = 0) 
    187             iatte(ji,jj) = (1.0 - zinda ) + zinda * iatte(ji,jj) 
    188             oatte(ji,jj) = (1.0 - zinda ) + zinda * oatte(ji,jj) 
     187            !iatte(ji,jj) = (1.0 - zinda ) + zinda * iatte(ji,jj) 
     188            !oatte(ji,jj) = (1.0 - zinda ) + zinda * oatte(ji,jj) 
    189189            !           !  solar irradiance transmission at the mixed layer bottom and used in the lead heat budget 
    190190            !           !  practically no "direct lateral ablation" 
Note: See TracChangeset for help on using the changeset viewer.