Changeset 5457


Ignore:
Timestamp:
2015-06-22T12:36:03+02:00 (5 years ago)
Author:
emanuelaclementi
Message:

#1544: Wave-current developments: Tracer advection & surface stress

Location:
branches/2014/dev_r4822_INGV_WAVE/NEMOGCM
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • branches/2014/dev_r4822_INGV_WAVE/NEMOGCM/CONFIG/cfg.txt

    r4690 r5457  
    11GYRE_PISCES OPA_SRC TOP_SRC 
    22ORCA2_LIM_CFC_C14b OPA_SRC LIM_SRC_2 NST_SRC TOP_SRC 
    3 GYRE OPA_SRC 
    43GYRE_XIOS OPA_SRC 
    54ORCA2_OFF_PISCES OPA_SRC OFF_SRC TOP_SRC 
     
    1110ORCA2_LIM_PISCES OPA_SRC LIM_SRC_2 NST_SRC TOP_SRC 
    1211ORCA2_LIM3 OPA_SRC LIM_SRC_3 NST_SRC 
     12GYRE OPA_SRC 
  • branches/2014/dev_r4822_INGV_WAVE/NEMOGCM/NEMO/OPA_SRC/DYN/sshwzv.F90

    r4825 r5457  
    227227!     In case ln_wave and ln_sdw the surface vertical velocity is modified 
    228228!     accounting for Sokes Drift velocity 
    229       IF ( ln_sdw )  THEN 
     229      IF ( ln_wave .AND. ln_sdw )  THEN 
    230230       ALLOCATE(sshnu(jpi,jpj),sshnv(jpi,jpj),dsshnu(jpi,jpj),dsshnv(jpi,jpj)) 
    231231       sshnu (:,:) = 0._wp 
  • branches/2014/dev_r4822_INGV_WAVE/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_oce.F90

    r4306 r5457  
    5252   LOGICAL , PUBLIC ::   ln_cdgw        !: true if neutral drag coefficient from wave model 
    5353   LOGICAL , PUBLIC ::   ln_sdw         !: true if 3d stokes drift from wave model 
     54   LOGICAL , PUBLIC ::   ln_tauoc         !: true if normalized stress from wave is used 
    5455   ! 
    5556   LOGICAL , PUBLIC ::   ln_icebergs    !: Icebergs 
  • branches/2014/dev_r4822_INGV_WAVE/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90

    r4822 r5457  
    8484      NAMELIST/namsbc/ nn_fsbc   , ln_ana    , ln_flx,  ln_blk_clio, ln_blk_core, ln_cpl,   & 
    8585         &             ln_blk_mfs, ln_apr_dyn, nn_ice,  nn_ice_embd, ln_dm2dc   , ln_rnf,   & 
    86          &             ln_ssr    , nn_fwb    , ln_cdgw , ln_wave , ln_sdw, nn_lsm, cn_iceflx 
     86         &             ln_ssr    , nn_fwb    , ln_cdgw , ln_wave , ln_sdw, ln_tauoc,        & 
     87         &             nn_lsm, cn_iceflx 
    8788      INTEGER  ::   ios 
    8889      !!---------------------------------------------------------------------- 
     
    337338                       CALL sbc_cpl_rcv ( kt, nn_fsbc, nn_ice )   ! 
    338339      END SELECT 
    339  
     340      IF (ln_wave .AND. ln_tauoc) THEN 
     341            utau(:,:) = utau(:,:)*tauoc_wave(:,:) 
     342            vtau(:,:) = vtau(:,:)*tauoc_wave(:,:) 
     343            taum(:,:) = taum(:,:)*tauoc_wave(:,:) 
     344      ! 
     345            SELECT CASE( nsbc ) 
     346            CASE(  0,1,2,3,5,-1 )  ; 
     347                IF(lwp) WRITE(numout,*) 'WARNING: You are subtracting the wave stress to the ocean. & 
     348                        & If not requested select ln_tauoc=.false' 
     349            END SELECT 
     350      ! 
     351      END IF 
    340352      !                                            !==  Misc. Options  ==! 
    341353       
  • branches/2014/dev_r4822_INGV_WAVE/NEMOGCM/NEMO/OPA_SRC/SBC/sbcwave.F90

    r4962 r5457  
    3535   TYPE(FLD), ALLOCATABLE, DIMENSION(:)  :: sf_sd    ! structure of input fields (file informations, fields read) Stokes Drift 
    3636   TYPE(FLD), ALLOCATABLE, DIMENSION(:)  :: sf_wn    ! structure of input fields (file informations, fields read) wave number for Qiao 
     37   TYPE(FLD), ALLOCATABLE, DIMENSION(:)  :: sf_tauoc    ! structure of input fields (file informations, fields read) normalized wave stress into the ocean 
    3738   REAL(wp),PUBLIC,ALLOCATABLE,DIMENSION (:,:)       :: cdn_wave  
    3839   REAL(wp),ALLOCATABLE,DIMENSION (:,:)              :: usd2d,vsd2d 
     
    4041   REAL(wp),PUBLIC,ALLOCATABLE,DIMENSION (:,:)       :: usd2dt,vsd2dt,tsd2d 
    4142   REAL(wp),PUBLIC,ALLOCATABLE,DIMENSION (:,:,:)     :: usd3d,vsd3d,wsd3d  
     43   REAL(wp),PUBLIC,ALLOCATABLE,DIMENSION (:,:)       :: tauoc_wave 
    4244   LOGICAL, PUBLIC :: ln_stcor = .FALSE. 
    4345 
     
    8486      CHARACTER(len=100)     ::  cn_dir                          ! Root directory for location of drag coefficient files 
    8587      TYPE(FLD_N)            ::  sn_cdg, sn_usd, sn_vsd,  & 
    86                              &   sn_swh, sn_wmp, sn_wnum         ! informations about the fields to be read 
    87       !!--------------------------------------------------------------------- 
    88       NAMELIST/namsbc_wave/  sn_cdg, cn_dir, sn_usd, sn_vsd, sn_swh, sn_wmp, sn_wnum, ln_stcor 
     88                             &   sn_swh, sn_wmp, sn_wnum, sn_tauoc      ! informations about the fields to be read 
     89      !!--------------------------------------------------------------------- 
     90      NAMELIST/namsbc_wave/  sn_cdg, cn_dir, sn_usd, sn_vsd, sn_swh, sn_wmp, sn_wnum, ln_stcor, sn_tauoc 
    8991      !!--------------------------------------------------------------------- 
    9092 
     
    115117            cdn_wave(:,:) = 0.0 
    116118        ENDIF 
    117  
     119! 
     120         IF ( ln_tauoc ) THEN 
     121            ALLOCATE( sf_tauoc(1), STAT=ierror )           !* allocate and fill sf_wave with sn_tauoc 
     122            IF( ierror > 0 )   CALL ctl_stop( 'STOP', 'sbc_wave: unable to allocate sf_wave structure' ) 
     123            ! 
     124                                   ALLOCATE( sf_tauoc(1)%fnow(jpi,jpj,1)   ) 
     125            IF( sn_cdg%ln_tint )   ALLOCATE( sf_tauoc(1)%fdta(jpi,jpj,1,2) ) 
     126            CALL fld_fill( sf_tauoc, (/ sn_tauoc /), cn_dir, 'sbc_wave', 'Wave module', 'namsbc_wave' ) 
     127            ALLOCATE( tauoc_wave(jpi,jpj) ) 
     128            tauoc_wave(:,:) = 0.0 
     129        ENDIF 
     130! 
    118131         IF ( ln_sdw ) THEN 
    119132            slf_i(jp_usd) = sn_usd ; slf_i(jp_vsd) = sn_vsd; 
     
    152165         cdn_wave(:,:) = sf_cd(1)%fnow(:,:,1) 
    153166      ENDIF 
     167! 
     168      IF ( ln_tauoc ) THEN 
     169         CALL fld_read( kt, nn_fsbc, sf_tauoc )      !* read wave norm stress from external forcing 
     170         tauoc_wave(:,:) = sf_tauoc(1)%fnow(:,:,1) 
     171      ENDIF 
     172! 
    154173      IF ( ln_sdw )  THEN 
    155174          CALL fld_read( kt, nn_fsbc, sf_sd )      !* read wave parameters from external forcing 
     
    214233         CALL lbc_lnk( vsd3d(:,:,:), 'V', -1. ) 
    215234 
    216  
    217235          CALL wrk_alloc( jpi,jpj,jpk,udummy,vdummy,hdivdummy,rotdummy) 
    218236      !-------------------------------------------------------------------           
  • branches/2014/dev_r4822_INGV_WAVE/NEMOGCM/NEMO/OPA_SRC/TRA/traadv.F90

    r4624 r5457  
    77   !!            3.3  !  2010-09  (C. Ethe, G. Madec)  merge TRC-TRA + switch from velocity to transport 
    88   !!            4.0  !  2011-06  (G. Madec)  Addition of Mixed Layer Eddy parameterisation 
     9   !!            3.6  !  2015-06  (E. Clementi) Addition of Stokes drift in case of wave coupling 
    910   !!---------------------------------------------------------------------- 
    1011 
     
    3233   USE wrk_nemo        ! Memory Allocation 
    3334   USE timing          ! Timing 
    34  
     35   USE sbcwave         ! wave module 
     36   USE sbc_oce         ! surface boundary condition: ocean 
    3537 
    3638   IMPLICIT NONE 
     
    8082      ! 
    8183      CALL wrk_alloc( jpi, jpj, jpk, zun, zvn, zwn ) 
     84      ! 
     85      zun(:,:,:) = 0.0 
     86      zvn(:,:,:) = 0.0 
     87      zwn(:,:,:) = 0.0 
    8288      !                                          ! set time step 
    8389      IF( neuler == 0 .AND. kt == nit000 ) THEN     ! at nit000 
     
    8995      IF( nn_cla == 1 .AND. cp_cfg == 'orca' .AND. jp_cfg == 2 )   CALL cla_traadv( kt )       !==  Cross Land Advection  ==! (hor. advection) 
    9096      ! 
    91       !                                               !==  effective transport  ==! 
    92       DO jk = 1, jpkm1 
    93          zun(:,:,jk) = e2u(:,:) * fse3u(:,:,jk) * un(:,:,jk)                  ! eulerian transport only 
    94          zvn(:,:,jk) = e1v(:,:) * fse3v(:,:,jk) * vn(:,:,jk) 
    95          zwn(:,:,jk) = e1t(:,:) * e2t(:,:)      * wn(:,:,jk) 
    96       END DO 
     97      IF (ln_wave .AND. ln_sdw) THEN 
     98         DO jk = 1, jpkm1 
     99            zun(:,:,jk) = e2u(:,:) * fse3u(:,:,jk) *      & 
     100                        &  ( un(:,:,jk) + usd3d(:,:,jk) )                  !eulerian transport + Stokes Drift 
     101            zvn(:,:,jk) = e1v(:,:) * fse3v(:,:,jk) *      & 
     102                        &  ( vn(:,:,jk) + vsd3d(:,:,jk) )  
     103            zwn(:,:,jk) = e1t(:,:) * e2t(:,:)      *      & 
     104                        &  ( wn(:,:,jk) + wsd3d(:,:,jk) ) 
     105         END DO 
     106      ELSE 
     107         DO jk = 1, jpkm1 
     108            zun(:,:,jk) = e2u(:,:) * fse3u(:,:,jk) * un(:,:,jk)                  ! eulerian transport only 
     109            zvn(:,:,jk) = e1v(:,:) * fse3v(:,:,jk) * vn(:,:,jk) 
     110            zwn(:,:,jk) = e1t(:,:) * e2t(:,:)      * wn(:,:,jk) 
     111         END DO 
     112      ENDIF 
    97113      ! 
    98114      IF( ln_vvl_ztilde .OR. ln_vvl_layer ) THEN 
Note: See TracChangeset for help on using the changeset viewer.