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 7905 for branches/UKMO/r6232_HZG_WAVE-coupling/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90 – NEMO

Ignore:
Timestamp:
2017-04-13T12:07:16+02:00 (7 years ago)
Author:
jcastill
Message:

Series of small bug fixes and stetic changes:

-Fix possible bug in the calculation of Stokes-Coriolis
-Move all the wave control variables to namelist namsbc_wave
-Use one namelist variable instead of two to set Stokes drift velocity coupling
-Cap the values of the Craig and Banner constant as calculated from wave input fields to take into account small values of the friction velocity
-Add new Phillips parametrization for Stokes drift vertical velocity, using the inverse depth scale as in Breivik 2015, instead of the peak wave number as calculated from wave input fields
-Better control of the wave fields that are read from file depending on the wave parameters

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/r6232_HZG_WAVE-coupling/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90

    r7878 r7905  
    168168   TYPE(FLD_C) ::   sn_snd_ifrac, sn_snd_crtw, sn_snd_wlev   
    169169   ! Received from waves   
    170    TYPE(FLD_C) ::   sn_rcv_hsig,sn_rcv_phioc,sn_rcv_sdrfx,sn_rcv_sdrfy,sn_rcv_wper, & 
     170   TYPE(FLD_C) ::   sn_rcv_hsig,sn_rcv_phioc,sn_rcv_sdrft,sn_rcv_wper, & 
    171171                    sn_rcv_wfreq,sn_rcv_wnum,sn_rcv_tauoc,sn_rcv_wdrag 
    172172   ! Other namelist parameters                        ! 
     
    244244         &                  sn_rcv_w10m, sn_rcv_taumod, sn_rcv_tau   , sn_rcv_dqnsdt, sn_rcv_qsr,      &   
    245245         &                  sn_snd_ifrac, sn_snd_crtw , sn_snd_wlev  , sn_rcv_hsig  , sn_rcv_phioc ,   &   
    246          &                  sn_rcv_sdrfx, sn_rcv_sdrfy, sn_rcv_wper  , sn_rcv_wnum  , sn_rcv_wfreq,    & 
    247          &                  sn_rcv_tauoc, sn_rcv_wdrag, sn_rcv_qns   , sn_rcv_emp   , sn_rcv_rnf,      & 
    248          &                  sn_rcv_cal , sn_rcv_iceflx, sn_rcv_co2   , sn_rcv_mslp  , nn_cplmodel,     & 
    249          &                  ln_usecplmask 
     246         &                  sn_rcv_sdrft, sn_rcv_wper  , sn_rcv_wnum  , sn_rcv_wfreq, sn_rcv_tauoc,    & 
     247         &                  sn_rcv_wdrag, sn_rcv_qns   , sn_rcv_emp   , sn_rcv_rnf  , sn_rcv_cal ,     & 
     248         &                  sn_rcv_iceflx, sn_rcv_co2   , sn_rcv_mslp  , nn_cplmodel, ln_usecplmask 
    250249      !!--------------------------------------------------------------------- 
    251250      ! 
     
    290289         WRITE(numout,*)'      significant wave heigth         = ', TRIM(sn_rcv_hsig%cldes  ), ' (', TRIM(sn_rcv_hsig%clcat  ), ')'   
    291290         WRITE(numout,*)'      wave to oce energy flux         = ', TRIM(sn_rcv_phioc%cldes ), ' (', TRIM(sn_rcv_phioc%clcat ), ')'   
    292          WRITE(numout,*)'      Surface Stokes drift grid u     = ', TRIM(sn_rcv_sdrfx%cldes ), ' (', TRIM(sn_rcv_sdrfx%clcat ), ')'   
    293          WRITE(numout,*)'      Surface Stokes drift grid v     = ', TRIM(sn_rcv_sdrfy%cldes ), ' (', TRIM(sn_rcv_sdrfy%clcat ), ')'   
     291         WRITE(numout,*)'      Surface Stokes drift u,v        = ', TRIM(sn_rcv_sdrft%cldes ), ' (', TRIM(sn_rcv_sdrft%clcat ), ')'   
    294292         WRITE(numout,*)'      Mean wave period                = ', TRIM(sn_rcv_wper%cldes  ), ' (', TRIM(sn_rcv_wper%clcat  ), ')'   
    295293         WRITE(numout,*)'      Mean wave number                = ', TRIM(sn_rcv_wnum%cldes  ), ' (', TRIM(sn_rcv_wnum%clcat  ), ')'   
     
    549547      ENDIF  
    550548      srcv(jpr_sdrftx)%clname = 'O_Sdrfx'    ! Stokes drift in the u direction  
    551       IF( TRIM(sn_rcv_sdrfx%cldes ) == 'coupled' )  THEN  
     549      srcv(jpr_sdrfty)%clname = 'O_Sdrfy'    ! Stokes drift in the v direction  
     550      IF( TRIM(sn_rcv_sdrft%cldes ) == 'coupled' )  THEN  
    552551         srcv(jpr_sdrftx)%laction = .TRUE.  
    553          cpl_sdrftx = .TRUE.  
    554       ENDIF  
    555       srcv(jpr_sdrfty)%clname = 'O_Sdrfy'    ! Stokes drift in the v direction  
    556       IF( TRIM(sn_rcv_sdrfy%cldes ) == 'coupled' )  THEN  
    557552         srcv(jpr_sdrfty)%laction = .TRUE.  
    558          cpl_sdrfty = .TRUE.  
     553         cpl_sdrft = .TRUE.  
    559554      ENDIF  
    560555      srcv(jpr_wper)%clname = 'O_WPer'       ! mean wave period  
     
    964959      !!                        emp          upward mass flux [evap. - precip. (- runoffs) (- calving)] (ocean only case) 
    965960      !!---------------------------------------------------------------------- 
    966       USE zdf_oce,  ONLY : ln_zdfqiao 
    967961      USE sbcflx ,  ONLY : ln_shelf_flx 
    968962 
     
    11711165      IF( ln_sdw ) THEN  ! Stokes Drift correction activated  
    11721166      !                                                      ! ========================= !   
    1173       !                                                      !       Stokes drift u      !  
     1167      !                                                      !     Stokes drift u,v      !  
    11741168      !                                                      ! ========================= !   
    1175          IF( srcv(jpr_sdrftx)%laction ) ut0sd(:,:) = frcv(jpr_sdrftx)%z3(:,:,1)  
    1176       !  
    1177       !                                                      ! ========================= !   
    1178       !                                                      !       Stokes drift v      !  
    1179       !                                                      ! ========================= !   
    1180          IF( srcv(jpr_sdrfty)%laction ) vt0sd(:,:) = frcv(jpr_sdrfty)%z3(:,:,1)  
     1169         IF( srcv(jpr_sdrftx)%laction .AND. srcv(jpr_sdrfty)%laction ) THEN 
     1170                                        ut0sd(:,:) = frcv(jpr_sdrftx)%z3(:,:,1)  
     1171                                        vt0sd(:,:) = frcv(jpr_sdrfty)%z3(:,:,1)  
     1172         ENDIF 
    11811173      !  
    11821174      !                                                      ! ========================= !   
     
    12011193       
    12021194         ! Calculate the 3D Stokes drift both in coupled and not fully uncoupled mode  
    1203          IF( srcv(jpr_sdrftx)%laction .OR. srcv(jpr_sdrfty)%laction .OR. srcv(jpr_wper)%laction &  
    1204                                       .OR. srcv(jpr_hsig)%laction   .OR. srcv(jpr_wfreq)%laction) &  
     1195         IF( (srcv(jpr_sdrftx)%laction .AND. srcv(jpr_sdrfty)%laction) .OR. srcv(jpr_wper)%laction &  
     1196                                        .OR. srcv(jpr_hsig)%laction   .OR. srcv(jpr_wfreq)%laction) &  
    12051197            CALL sbc_stokes()  
    12061198      ENDIF  
     
    12151207      IF( srcv(jpr_phioc)%laction .AND. ln_phioc ) THEN 
    12161208         rn_crban(:,:) = 29.0 * frcv(jpr_phioc)%z3(:,:,1) 
     1209         WHERE( rn_crban <    0.0 ) rn_crban = 0.0 
     1210         WHERE( rn_crban > 1000.0 ) rn_crban = 1000.0 
    12171211      ENDIF 
    12181212       
Note: See TracChangeset for help on using the changeset viewer.