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 8962 for branches/2017/dev_CNRS_2017/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk.F90 – NEMO

Ignore:
Timestamp:
2017-12-08T16:15:25+01:00 (6 years ago)
Author:
clem
Message:

changes to improve test case SASBIPER

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2017/dev_CNRS_2017/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk.F90

    r8920 r8962  
    843843      REAL(wp) ::   zcoef_dqlw, zcoef_dqla   !   -      - 
    844844      REAL(wp) ::   zztmp, z1_lsub           !   -      - 
    845       REAL(wp) ::   zfrqsr_tr_i              ! sea ice shortwave fraction transmitted below through the ice 
    846       REAL(wp) ::   zfr1, zfr2, zfac         ! local variables 
     845      REAL(wp) ::   zfr1, zfr2               ! local variables 
    847846      REAL(wp), DIMENSION(jpi,jpj,jpl) ::   z_qlw         ! long wave heat flux over ice 
    848847      REAL(wp), DIMENSION(jpi,jpj,jpl) ::   z_qsb         ! sensible  heat flux over ice 
     
    951950      END DO 
    952951 
    953       ! --- absorbed and transmitted shortwave radiation (W/m2) --- ! 
    954       ! 
    955       ! former coding was 
    956       !     fr1_i0(:,:) = ( 0.18 * ( 1.0 - cldf_ice ) + 0.35 * cldf_ice ) 
    957       !     fr2_i0(:,:) = ( 0.82 * ( 1.0 - cldf_ice ) + 0.65 * cldf_ice ) 
    958  
    959       ! --- surface transmission parameter (i0, Grenfell Maykut 77) --- ! 
    960       zfr1 = ( 0.18 * ( 1.0 - cldf_ice ) + 0.35 * cldf_ice )            !   standard value 
    961       zfr2 = ( 0.82 * ( 1.0 - cldf_ice ) + 0.65 * cldf_ice )            !   zfr2 such that zfr1 + zfr2 to equal 1 
    962  
    963       qsr_ice_tr(:,:,:) = 0._wp 
    964  
    965       DO jl = 1, jpl 
    966          DO jj = 1, jpj 
    967             DO ji = 1, jpi 
    968                ! 
    969                zfac = MAX( 0._wp , 1._wp - phi(ji,jj,jl) * 10._wp )     !   linear weighting factor: =0 for phi=0, =1 for phi = 0.1 
    970                zfrqsr_tr_i = zfr1 + zfac * zfr2                         !   below 10 cm, linearly increase zfrqsr_tr_i until 1 at zero thickness 
    971                ! 
    972                IF ( phs(ji,jj,jl) <= 0._wp ) THEN   ;    zfrqsr_tr_i  = zfr1 + zfac * zfr2 
    973                ELSE                                 ;    zfrqsr_tr_i  = 0._wp                                  !   snow fully opaque 
    974                ENDIF 
    975                ! 
    976                qsr_ice_tr(ji,jj,jl) = zfrqsr_tr_i * qsr_ice(ji,jj,jl)   !   transmitted solar radiation  
    977                ! 
    978             END DO 
    979          END DO 
    980       END DO 
     952      ! --- shortwave radiation transmitted below the surface (W/m2, see Grenfell Maykut 77) --- ! 
     953      zfr1 = ( 0.18 * ( 1.0 - cldf_ice ) + 0.35 * cldf_ice )            ! transmission when hi>10cm 
     954      zfr2 = ( 0.82 * ( 1.0 - cldf_ice ) + 0.65 * cldf_ice )            ! zfr2 such that zfr1 + zfr2 to equal 1 
     955      ! 
     956      WHERE    ( phs(:,:,:) <= 0._wp .AND. phi(:,:,:) <  0.1_wp )       ! linear decrease from hi=0 to 10cm   
     957         qsr_ice_tr(:,:,:) = qsr_ice(:,:,:) * ( zfr1 + zfr2 * ( 1._wp - phi(:,:,:) * 10._wp ) ) 
     958      ELSEWHERE( phs(:,:,:) <= 0._wp .AND. phi(:,:,:) >= 0.1_wp )       ! constant (zfr1) when hi>10cm 
     959         qsr_ice_tr(:,:,:) = qsr_ice(:,:,:) * zfr1 
     960      ELSEWHERE                                                         ! zero when hs>0 
     961         qsr_ice_tr(:,:,:) = 0._wp  
     962      END WHERE 
    981963      ! 
    982964      IF(ln_ctl) THEN 
Note: See TracChangeset for help on using the changeset viewer.