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 10190 for NEMO/trunk/src – NEMO

Changeset 10190 for NEMO/trunk/src


Ignore:
Timestamp:
2018-10-12T14:50:10+02:00 (6 years ago)
Author:
lovato
Message:

Implement correction to sbcblk_algo_ncar for wave coupling (see #2014)

Location:
NEMO/trunk/src/OCE/SBC
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • NEMO/trunk/src/OCE/SBC/sbcblk.F90

    r10069 r10190  
    239239      !drag coefficient read from wave model definable only with mfs bulk formulae and core  
    240240         ELSEIF (ln_cdgw .AND. .NOT. ln_NCAR )       THEN        
    241              CALL ctl_stop( 'drag coefficient read from wave model definable only with mfs bulk formulae and core') 
     241             CALL ctl_stop( 'drag coefficient read from wave model definable only with NCAR and CORE bulk formulae') 
    242242         ELSEIF (ln_stcor .AND. .NOT. ln_sdw)                             THEN 
    243243             CALL ctl_stop( 'Stokes-Coriolis term calculated only if activated Stokes Drift ln_sdw=T') 
  • NEMO/trunk/src/OCE/SBC/sbcblk_algo_ncar.F90

    r10069 r10190  
    149149      Ch = 1.e-3*sqrt_Cd_n10*(18.*stab + 32.7*(1. - stab)) 
    150150      stab = sqrt_Cd_n10   ! Temporaty array !!! stab == SQRT(Cd) 
     151  
     152      IF( ln_cdgw )   Cen = Ce  ; Chn = Ch 
    151153 
    152154      !! Initializing values at z_u with z_t values: 
     
    186188         IF( ln_cdgw ) THEN      ! surface wave case 
    187189            stab = vkarmn / ( vkarmn / sqrt_Cd_n10 - ztmp2 )  ! (stab == SQRT(Cd)) 
    188             Cd      = stab * stab 
     190            Cd   = stab * stab 
     191            ztmp0 = (LOG(zu/10.) - zpsi_h_u) / vkarmn / sqrt_Cd_n10 
     192            ztmp2 = stab / sqrt_Cd_n10   ! (stab == SQRT(Cd)) 
     193            ztmp1 = 1. + Chn * ztmp0      
     194            Ch    = Chn * ztmp2 / ztmp1  ! L&Y 2004 eq. (10b) 
     195            ztmp1 = 1. + Cen * ztmp0 
     196            Ce    = Cen * ztmp2 / ztmp1  ! L&Y 2004 eq. (10c) 
     197 
    189198         ELSE 
    190199            ! Update neutral wind speed at 10m and neutral Cd at 10m (L&Y 2004 eq. 9a)... 
     
    205214            Cd      = ztmp0 / ( ztmp1*ztmp1 ) 
    206215            stab = SQRT( Cd ) ! Temporary array !!! (stab == SQRT(Cd)) 
    207          ENDIF 
    208  
    209          ztmp0 = (LOG(zu/10.) - zpsi_h_u) / vkarmn / sqrt_Cd_n10 
    210          ztmp2 = stab / sqrt_Cd_n10   ! (stab == SQRT(Cd)) 
    211          ztmp1 = 1. + Cx_n10*ztmp0    ! (Cx_n10 == Ch_n10) 
    212          Ch  = Cx_n10*ztmp2 / ztmp1   ! L&Y 2004 eq. (10b) 
    213  
    214          Cx_n10  = 1.e-3 * (34.6 * sqrt_Cd_n10)  ! L&Y 2004 eq. (6b)    ! Cx_n10 == Ce_n10 
    215          Cen(:,:) = Cx_n10 
    216          ztmp1 = 1. + Cx_n10*ztmp0 
    217          Ce  = Cx_n10*ztmp2 / ztmp1  ! L&Y 2004 eq. (10c) 
     216 
     217            ztmp0 = (LOG(zu/10.) - zpsi_h_u) / vkarmn / sqrt_Cd_n10 
     218            ztmp2 = stab / sqrt_Cd_n10   ! (stab == SQRT(Cd)) 
     219            ztmp1 = 1. + Cx_n10*ztmp0    ! (Cx_n10 == Ch_n10) 
     220            Ch  = Cx_n10*ztmp2 / ztmp1   ! L&Y 2004 eq. (10b) 
     221 
     222            Cx_n10  = 1.e-3 * (34.6 * sqrt_Cd_n10)  ! L&Y 2004 eq. (6b)    ! Cx_n10 == Ce_n10 
     223            Cen(:,:) = Cx_n10 
     224            ztmp1 = 1. + Cx_n10*ztmp0 
     225            Ce  = Cx_n10*ztmp2 / ztmp1  ! L&Y 2004 eq. (10c) 
     226            ENDIF 
    218227         ! 
    219228      END DO 
  • NEMO/trunk/src/OCE/SBC/sbcmod.F90

    r10068 r10190  
    157157         WRITE(numout,*) '               wave modified ocean stress component ln_tauw       = ', ln_tauw 
    158158         WRITE(numout,*) '               Stokes coriolis term                 ln_stcor      = ', ln_stcor 
    159          WRITE(numout,*) '               neutral drag coefficient (CORE, MFS) ln_cdgw       = ', ln_cdgw 
    160       ENDIF 
    161       ! 
     159         WRITE(numout,*) '               neutral drag coefficient (CORE,NCAR) ln_cdgw       = ', ln_cdgw 
     160      ENDIF 
     161      ! 
     162      IF( .NOT.ln_wave ) THEN 
     163         ln_sdw = .false. ; ln_cdgw = .false. ; ln_tauwoc = .false. ; ln_tauw = .false. ; ln_stcor = .false. 
     164      ENDIF  
    162165      IF( ln_sdw ) THEN 
    163166         IF( .NOT.(nn_sdrift==jp_breivik_2014 .OR. nn_sdrift==jp_li_2017 .OR. nn_sdrift==jp_peakfr) ) & 
Note: See TracChangeset for help on using the changeset viewer.