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 15455 for NEMO/branches/UKMO/r14075_ukmo_shelf/src/OCE/SBC/sbcssr.F90 – NEMO

Ignore:
Timestamp:
2021-10-28T11:23:37+02:00 (3 years ago)
Author:
jcastill
Message:

Code for uncoupled configurations, some changes for coupling may be needed yet - merged branch branches/UKMO/r14075_cpl-pressure@15423

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/UKMO/r14075_ukmo_shelf/src/OCE/SBC/sbcssr.F90

    r14075 r15455  
    4444   REAL(wp)        ::   rn_sssr_bnd     ! ABS(Max./Min.) value of erp term [mm/day] 
    4545   INTEGER         ::   nn_sssr_ice     ! Control of restoring under ice 
     46   LOGICAL         ::   ln_UKMO_haney   ! UKMO specific flag to calculate Haney forcing 
    4647 
    4748   REAL(wp) , ALLOCATABLE, DIMENSION(:) ::   buffer   ! Temporary buffer for exchange 
     
    7980      INTEGER  ::   ierror   ! return error code 
    8081      !! 
     82      REAL(wp) ::   sst1,sst2                      ! sea surface temperature  
     83      REAL(wp) ::   e_sst1, e_sst2                 ! saturation vapour pressure  
     84      REAL(wp) ::   qs1,qs2                        ! specific humidity  
     85      REAL(wp) ::   pr_tmp                         ! temporary variable for pressure  
     86 
     87      REAL(wp), DIMENSION(jpi,jpj) ::  hny_frc1    ! Haney forcing for sensible heat, correction for latent heat     
     88      REAL(wp), DIMENSION(jpi,jpj) ::  hny_frc2    ! Haney forcing for sensible heat, correction for latent heat     
     89      !! 
    8190      CHARACTER(len=100) ::  cn_dir          ! Root directory for location of ssr files 
    8291      TYPE(FLD_N) ::   sn_sst, sn_sss        ! informations about the fields to be read 
     
    93102            ! 
    94103            IF( nn_sstr == 1 ) THEN                                   !* Temperature restoring term 
    95                DO jj = 1, jpj 
    96                   DO ji = 1, jpi 
    97                      zqrp = rn_dqdt * ( sst_m(ji,jj) - sf_sst(1)%fnow(ji,jj,1) ) * tmask(ji,jj,1) 
    98                      qns(ji,jj) = qns(ji,jj) + zqrp 
    99                      qrp(ji,jj) = zqrp 
    100                   END DO 
    101                END DO 
     104               IF( ln_UKMO_haney ) THEN  
     105                  DO jj = 1, jpj  
     106                     DO ji = 1, jpi  
     107                        sst1   =  sst_m(ji,jj)  
     108                        sst2   =  sf_sst(1)%fnow(ji,jj,1)     
     109                        e_sst1 = 10**((0.7859+0.03477*sst1)/(1.+0.00412*sst1))  
     110                        e_sst2 = 10**((0.7859+0.03477*sst2)/(1.+0.00412*sst2))           
     111                        pr_tmp = 0.01*pressnow(ji,jj)  !pr_tmp = 1012.0  
     112                        qs1    = (0.62197*e_sst1)/(pr_tmp-0.378*e_sst1)  
     113                        qs2    = (0.62197*e_sst2)/(pr_tmp-0.378*e_sst2)  
     114                        hny_frc1(ji,jj) = sst1-sst2                     
     115                        hny_frc2(ji,jj) = qs1-qs2                       
     116                       !Might need to mask off land points.  
     117                        hny_frc1(ji,jj)=-hny_frc1(ji,jj)*wndm(ji,jj)*1.42  
     118                        hny_frc2(ji,jj)=-hny_frc2(ji,jj)*wndm(ji,jj)*4688.0  
     119                        qns(ji,jj)=qns(ji,jj)+hny_frc1(ji,jj)+hny_frc2(ji,jj)     
     120                        qrp(ji,jj) = 0.e0  
     121                     END DO  
     122                  END DO  
     123               ELSE  
     124                  DO jj = 1, jpj  
     125                     DO ji = 1, jpi  
     126                        zqrp = rn_dqdt * ( sst_m(ji,jj) - sf_sst(1)%fnow(ji,jj,1) )  
     127                        qns(ji,jj) = qns(ji,jj) + zqrp  
     128                        qrp(ji,jj) = zqrp  
     129                     END DO  
     130                  END DO  
     131               ENDIF 
    102132            ENDIF 
    103133            ! 
     
    170200      TYPE(FLD_N) ::   sn_sst, sn_sss        ! informations about the fields to be read 
    171201      NAMELIST/namsbc_ssr/ cn_dir, nn_sstr, nn_sssr, rn_dqdt, rn_deds, sn_sst, & 
    172               & sn_sss, ln_sssr_bnd, rn_sssr_bnd, nn_sssr_ice 
     202              & sn_sss, ln_sssr_bnd, rn_sssr_bnd, nn_sssr_ice, ln_UKMO_haney 
    173203      INTEGER     ::  ios 
    174204      !!---------------------------------------------------------------------- 
     
    202232         WRITE(numout,*) '          ( 1 = restoration everywhere  )' 
    203233         WRITE(numout,*) '          (>1 = enhanced restoration under ice  )' 
     234         WRITE(numout,*) '      Haney forcing                          ln_UKMO_haney  = ', ln_UKMO_haney 
    204235      ENDIF 
    205236      ! 
Note: See TracChangeset for help on using the changeset viewer.