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 7279 – NEMO

Changeset 7279


Ignore:
Timestamp:
2016-11-21T11:23:19+01:00 (7 years ago)
Author:
jcastill
Message:

Final changes and bug fixes, tests successful

Location:
branches/UKMO/r5936_INGV1_WAVE-coupling/NEMOGCM
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/r5936_INGV1_WAVE-coupling/NEMOGCM/CONFIG/SHARED/namelist_ref

    r7167 r7279  
    250250                           !     =1 global mean of e-p-r set to zero at each time step 
    251251                           !     =2 annual global mean of e-p-r set to zero 
    252    ln_wave = .false.       !  Activate coupling with wave (either Stokes Drift or Drag coefficient, or both)  (T => fill namsbc_wave) 
    253    ln_cdgw = .false.       !  Neutral drag coefficient read from wave model (T => fill namsbc_wave) 
    254    ln_sdw  = .false.       !  Computation of 3D stokes drift                (T => fill namsbc_wave) 
    255    ln_tauoc= .false.       !  Activate ocean stress modified by external wave induced stress (T => fill namsbc_wave) 
    256    ln_stcor= .false.       !  Activate Stokes Coriolis term (T => fill namsbc_wave) 
     252   ln_wave = .false.       !  Activate coupling with wave (T => fill namsbc_wave)  
     253   ln_cdgw = .false.       !  Neutral drag coefficient read from wave model (T => ln_wave=.true. & fill namsbc_wave)  
     254   ln_sdw  = .false.       !  Read 2D Surf Stokes Drift & Computation of 3D stokes drift (T => ln_wave=.true. & fill namsbc_wave)   
     255   ln_tauoc= .false.       !  Activate ocean stress modified by external wave induced stress (T => ln_wave=.true. & fill namsbc_wave)  
     256   ln_stcor= .false.       !  Activate Stokes Coriolis term (T => ln_wave=.true. & ln_sdw=.true. & fill namsbc_wave)  
    257257   nn_lsm  = 0             !  =0 land/sea mask for input fields is not applied (keep empty land/sea mask filename field) , 
    258258                           !  =1:n number of iterations of land/sea mask application for input fields (fill land/sea mask filename field) 
     
    351351   sn_snd_crt    =       'none'                 ,    'no'    , 'spherical' , 'eastward-northward' ,  'T' 
    352352   sn_snd_co2    =       'coupled'              ,    'no'    ,     ''      ,         ''           ,   '' 
     353   sn_snd_crtw   =       'none'                 ,    'no'    ,     ''      ,         ''           , 'U,V' 
     354   sn_snd_ifrac  =       'none'                 ,    'no'    ,     ''      ,         ''           ,   '' 
     355   sn_snd_wlev   =       'coupled'              ,    'no'    ,     ''      ,         ''           ,   '' 
    353356! receive 
    354357   sn_rcv_w10m   =       'none'                 ,    'no'    ,     ''      ,         ''          ,   '' 
     
    362365   sn_rcv_cal    =       'coupled'              ,    'no'    ,     ''      ,         ''          ,   '' 
    363366   sn_rcv_co2    =       'coupled'              ,    'no'    ,     ''      ,         ''          ,   '' 
     367   sn_rcv_hsig   =       'none'                 ,    'no'    ,     ''      ,         ''          ,   '' 
     368   sn_rcv_iceflx =       'none'                 ,    'no'    ,     ''      ,         ''          ,   '' 
     369   sn_rcv_mslp   =       'none'                 ,    'no'    ,     ''      ,         ''          ,   '' 
     370   sn_rcv_phioc  =       'none'                 ,    'no'    ,     ''      ,         ''          ,   '' 
     371   sn_rcv_sdrfx  =       'none'                 ,    'no'    ,     ''      ,         ''          ,   '' 
     372   sn_rcv_sdrfy  =       'none'                 ,    'no'    ,     ''      ,         ''          ,   '' 
     373   sn_rcv_wper   =       'none'                 ,    'no'    ,     ''      ,         ''          ,   '' 
     374   sn_rcv_wnum   =       'none'                 ,    'no'    ,     ''      ,         ''          ,   '' 
     375   sn_rcv_wstrf  =       'none'                 ,    'no'    ,     ''      ,         ''          ,   '' 
     376   sn_rcv_wdrag  =       'none'                 ,    'no'    ,     ''      ,         ''          ,   '' 
    364377! 
    365378   nn_cplmodel   =     1     !  Maximum number of models to/from which NEMO is potentialy sending/receiving data 
     
    917930   ln_zdfexp   = .false.   !  time-stepping: split-explicit (T) or implicit (F) time stepping 
    918931   nn_zdfexp   =    3            !  number of sub-timestep for ln_zdfexp=T 
    919    ln_zdfqiao  = .false.   !  Enhanced wave vertical mixing Qiao (2010) 
     932   ln_zdfqiao  = .false.   !  Enhanced wave vertical mixing Qiao (2010) (T => ln_wave=.true. & ln_sdw=.true. & fill namsbc_wave) 
    920933/ 
    921934!----------------------------------------------------------------------- 
  • branches/UKMO/r5936_INGV1_WAVE-coupling/NEMOGCM/NEMO/OPA_SRC/DYN/dynstcor.F90

    r7167 r7279  
    7777      ENDDO 
    7878      ! 
    79       IF( nn_timing == 1 )  CALL timing_stop('dynst_cor') 
     79      IF( nn_timing == 1 )  CALL timing_stop('dyn_stcor') 
    8080      ! 
    8181   END SUBROUTINE dyn_stcor 
  • branches/UKMO/r5936_INGV1_WAVE-coupling/NEMOGCM/NEMO/OPA_SRC/SBC/cpl_oasis3.F90

    r7166 r7279  
    6666   INTEGER                    ::   nsnd         ! total number of fields sent  
    6767   INTEGER                    ::   ncplmodel    ! Maximum number of models to/from which NEMO is potentialy sending/receiving data 
    68    INTEGER, PUBLIC, PARAMETER ::   nmaxfld=50   ! Maximum number of coupling fields 
     68   INTEGER, PUBLIC, PARAMETER ::   nmaxfld=55   ! Maximum number of coupling fields 
    6969   INTEGER, PUBLIC, PARAMETER ::   nmaxcat=5    ! Maximum number of coupling fields 
    7070   INTEGER, PUBLIC, PARAMETER ::   nmaxcpl=5    ! Maximum number of coupling fields 
  • branches/UKMO/r5936_INGV1_WAVE-coupling/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_core.F90

    r7166 r7279  
    737737 
    738738      !! Neutral coefficients at 10m: 
    739       IF( ln_cdgw ) THEN      ! wave drag case 
     739      IF( ln_wave .AND. ln_cdgw ) THEN      ! wave drag case 
    740740         cdn_wave(:,:) = cdn_wave(:,:) + rsmall * ( 1._wp - tmask(:,:,1) ) 
    741741         ztmp0   (:,:) = cdn_wave(:,:) 
     
    783783         END IF 
    784784        
    785          IF( ln_cdgw ) THEN      ! surface wave case 
     785         IF( ln_wave .AND. ln_cdgw ) THEN      ! surface wave case 
    786786            sqrt_Cd = vkarmn / ( vkarmn / sqrt_Cd_n10 - zpsi_m_u )  
    787787            Cd      = sqrt_Cd * sqrt_Cd 
  • branches/UKMO/r5936_INGV1_WAVE-coupling/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90

    r7168 r7279  
    347347      !  
    348348      ! Vectors: change of sign at north fold ONLY if on the local grid 
     349      IF( TRIM( sn_rcv_tau%cldes ) == 'oce only' .OR. TRIM(sn_rcv_tau%cldes ) == 'oce and ice') THEN ! avoid working with the atmospheric fields if they are not coupled 
    349350      IF( TRIM( sn_rcv_tau%clvor ) == 'local grid' )   srcv(jpr_otx1:jpr_itz2)%nsgn = -1. 
    350351       
     
    414415         srcv(jpr_ity1)%clgrid = 'V'                  ! i.e. it is always at U- & V-points for i- & j-comp. resp. 
    415416      ENDIF 
     417      ENDIF 
    416418        
    417419      !                                                      ! ------------------------- ! 
     
    899901      IF( ln_dm2dc .AND. ln_cpl .AND. ncpl_qsr_freq /= 86400 )   & 
    900902         &   CALL ctl_stop( 'sbc_cpl_init: diurnal cycle reconstruction (ln_dm2dc) needs daily couping for solar radiation' ) 
    901       ncpl_qsr_freq = 86400 / ncpl_qsr_freq 
     903      IF( ln_dm2dc .AND. ln_cpl ) ncpl_qsr_freq = 86400 / ncpl_qsr_freq 
    902904 
    903905      CALL wrk_dealloc( jpi,jpj, zacs, zaos ) 
  • branches/UKMO/r5936_INGV1_WAVE-coupling/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90

    r7193 r7279  
    8989         &             ln_blk_mfs, ln_apr_dyn, nn_ice, nn_ice_embd, ln_dm2dc   , ln_rnf   ,   & 
    9090         &             ln_ssr    , nn_isf    , nn_fwb, ln_cdgw    , ln_wave    , ln_sdw   ,   & 
    91          &             ln_tauoc  , ln_stcor  , nn_lsm, nn_limflx  , nn_components, ln_cpl ,   & 
    92          &             ln_zdfqiao 
     91         &             ln_tauoc  , ln_stcor  , nn_lsm, nn_limflx  , nn_components, ln_cpl 
    9392      INTEGER  ::   ios 
    9493      INTEGER  ::   ierr, ierr0, ierr1, ierr2, ierr3, jpm 
     
    133132         WRITE(numout,*) '              ocean-atmosphere coupled formulation       ln_cpl      = ', ln_cpl 
    134133         WRITE(numout,*) '              forced-coupled mixed formulation           ln_mixcpl   = ', ln_mixcpl 
     134         WRITE(numout,*) '              wave physics                               ln_wave     = ', ln_wave 
     135         WRITE(numout,*) '                 Stokes drift corr. to vert. velocity    ln_sdw      = ', ln_sdw 
     136         WRITE(numout,*) '                 wave modified ocean stress              ln_tauoc    = ', ln_tauoc 
     137         WRITE(numout,*) '                 Stokes coriolis term                    ln_stcor    = ', ln_stcor 
     138         WRITE(numout,*) '                 neutral drag coefficient (CORE, MFS)    ln_cdgw     = ', ln_cdgw 
    135139         WRITE(numout,*) '              OASIS coupling (with atm or sas)           lk_oasis    = ', lk_oasis 
    136140         WRITE(numout,*) '              components of your executable            nn_components = ', nn_components 
     
    218222      IF ( ln_wave ) THEN 
    219223      !Activated wave module but neither drag nor stokes drift activated 
    220          IF ( .NOT.(ln_cdgw .OR. ln_sdw) )   THEN 
    221             CALL ctl_warn( 'Ask for wave coupling but nor drag coefficient (ln_cdgw=F) neither stokes drift activated (ln_sdw=F)' ) 
     224      IF ( .NOT.(ln_cdgw .OR. ln_sdw .OR. ln_tauoc .OR. ln_stcor ) )   THEN  
     225             CALL ctl_warn( 'Ask for wave coupling but ln_cdgw=F, ln_sdw=F, ln_tauoc=F, ln_stcor=F') 
    222226      !drag coefficient read from wave model definable only with mfs bulk formulae and core  
    223227         ELSEIF (ln_cdgw .AND. .NOT.(ln_blk_mfs .OR. ln_blk_core) )       THEN        
    224228             CALL ctl_stop( 'drag coefficient read from wave model definable only with mfs bulk formulae and core') 
     229         ELSEIF (ln_stcor .AND. .NOT. ln_sdw) THEN  
     230             CALL ctl_stop( 'Stokes-Coriolis term calculated only if activated Stokes Drift ln_sdw=T') 
    225231         ENDIF 
    226232      ELSE 
    227       IF ( ln_cdgw .OR. ln_sdw  )                                                           &  
     233      IF ( ln_cdgw .OR. ln_sdw .OR. ln_tauoc .OR. ln_stcor )                                &  
    228234         &   CALL ctl_stop( 'Not Activated Wave Module (ln_wave=F) but asked coupling ',    & 
    229          &                  'with drag coefficient (ln_cdgw =T) or Stokes drift (ln_sdw=T) ') 
     235         &                  'with drag coefficient (ln_cdgw =T) '  ,                        &  
     236         &                  'or Stokes Drift (ln_sdw=T) ' ,                                 &  
     237         &                  'or ocean stress modification due to waves (ln_tauoc=T) ',      &    
     238         &                  'or Stokes-Coriolis term (ln_stcori=T)'  )  
    230239      ENDIF  
    231240      !                          ! Choice of the Surface Boudary Condition (set nsbc) 
     
    362371                             CALL sbc_cpl_rcv ( kt, nn_fsbc, nn_ice )   ! OPA-SAS coupling: OPA receiving fields from SAS 
    363372      END SELECT 
    364       IF (ln_wave .AND. ln_tauoc) THEN 
     373      IF ( ln_wave .AND. ln_tauoc) THEN                                 ! Wave stress subctracted 
    365374            utau(:,:) = utau(:,:)*tauoc_wave(:,:) 
    366375            vtau(:,:) = vtau(:,:)*tauoc_wave(:,:) 
     
    369378            SELECT CASE( nsbc ) 
    370379            CASE(  0,1,2,3,5,-1 )  ; 
    371                 IF(lwp) WRITE(numout,*) 'WARNING: You are subtracting the wave stress to the ocean. & 
     380                IF(lwp .AND. kt == nit000 ) WRITE(numout,*) 'WARNING: You are subtracting the wave stress to the ocean. & 
    372381                        & If not requested select ln_tauoc=.false' 
    373382            END SELECT 
  • branches/UKMO/r5936_INGV1_WAVE-coupling/NEMOGCM/NEMO/OPA_SRC/step.F90

    r7168 r7279  
    134134      IF( lk_zdfgls  )   CALL zdf_gls( kstp )            ! GLS closure scheme for Kz 
    135135      IF( ln_zdfqiao )   THEN 
    136         CALL zdf_qiao(kstp )                             ! Qiao vertical mixing  
    137          DO jk = 1, jpkm1 
    138           DO jj = 1, jpj 
    139             DO ji = 1, jpi 
    140                avmu(ji,jj,jk) = (avmu(ji,jj,jk) + QBvu(ji,jj,jk)) * umask(ji,jj,jk) 
    141                avmv(ji,jj,jk) = (avmv(ji,jj,jk) + QBvv(ji,jj,jk)) * vmask(ji,jj,jk) 
    142                avt( ji,jj,jk) = (avt( ji,jj,jk) + QBv(ji,jj,jk))  * tmask(ji,jj,jk) 
     136         !Activated Qiao enhanced turbulence but neither ln_wave or ln_sdw are activated  
     137         IF ( .NOT.( ln_wave .AND. ln_sdw ) )   THEN  
     138            CALL ctl_stop ( 'Ask for wave Qiao enhanced turbulence but ln_wave and ln_sdw have to be activated')  
     139         ELSE  
     140            CALL zdf_qiao(kstp )                             ! Qiao vertical mixing  
     141            DO jk = 1, jpkm1 
     142               DO jj = 1, jpj 
     143                  DO ji = 1, jpi 
     144                     avmu(ji,jj,jk) = (avmu(ji,jj,jk) + QBvu(ji,jj,jk)) * umask(ji,jj,jk) 
     145                     avmv(ji,jj,jk) = (avmv(ji,jj,jk) + QBvv(ji,jj,jk)) * vmask(ji,jj,jk) 
     146                     avt( ji,jj,jk) = (avt( ji,jj,jk) + QBv(ji,jj,jk))  * tmask(ji,jj,jk) 
     147                  END DO 
     148               END DO 
    143149            END DO 
    144           END DO 
    145          END DO 
     150         ENDIF 
    146151      ENDIF 
    147152      ! 
     
    231236                         CALL dyn_adv       ( kstp )  ! advection (vector or flux form) 
    232237                         CALL dyn_vor       ( kstp )  ! vorticity term including Coriolis 
    233       IF( ln_stcor    )  CALL dyn_stcor     ( kstp )  ! Stokes-Coriolis forcing 
     238      IF( ln_wave .AND. ln_sdw .AND. ln_stcor    )  & 
     239               &         CALL dyn_stcor     ( kstp )  ! Stokes-Coriolis forcing 
    234240                         CALL dyn_ldf       ( kstp )  ! lateral mixing 
    235241                         CALL dyn_hpg       ( kstp )  ! horizontal gradient of Hydrostatic pressure 
Note: See TracChangeset for help on using the changeset viewer.