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 5782 for branches/2015/dev_r5721_CNRS9_NOC3_LDF/NEMOGCM/NEMO – NEMO

Ignore:
Timestamp:
2015-10-08T15:51:36+02:00 (9 years ago)
Author:
cetlod
Message:

Final step of improvements/simplifications of ADV & LDF momentum trends. The branch is now phased with the trunk at revision 5721 and is ready to be used

Location:
branches/2015/dev_r5721_CNRS9_NOC3_LDF/NEMOGCM/NEMO
Files:
15 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_r5721_CNRS9_NOC3_LDF/NEMOGCM/NEMO/OFF_SRC/domrea.F90

    r5737 r5782  
    6565      ENDIF 
    6666      ! 
    67       CALL dom_nam      ! read namelist ( namrun, namdom, namcla ) 
     67      CALL dom_nam      ! read namelist ( namrun, namdom ) 
    6868      CALL dom_zgr      ! Vertical mesh and bathymetry option 
    6969      CALL dom_grd      ! Create a domain file 
     
    109109      !! ** input   : - namrun namelist 
    110110      !!              - namdom namelist 
    111       !!              - namcla namelist 
    112111      !!---------------------------------------------------------------------- 
    113112      USE ioipsl 
     
    125124         &             ppsur, ppa0, ppa1, ppkth, ppacr, ppdzmin, pphmax, ldbletanh, & 
    126125         &             ppa2, ppkth2, ppacr2 
    127       NAMELIST/namcla/ nn_cla 
    128126#if defined key_netcdf4 
    129127      NAMELIST/namnc4/ nn_nchunks_i, nn_nchunks_j, nn_nchunks_k, ln_nc4zip 
     
    268266      rdtmax    = rn_rdtmin 
    269267      rdth      = rn_rdth 
    270  
    271       REWIND( numnam_ref )              ! Namelist namcla in reference namelist : Cross land advection 
    272       READ  ( numnam_ref, namcla, IOSTAT = ios, ERR = 905) 
    273 905   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcla in reference namelist', lwp ) 
    274  
    275       REWIND( numnam_cfg )              ! Namelist namcla in configuration namelist : Cross land advection 
    276       READ  ( numnam_cfg, namcla, IOSTAT = ios, ERR = 906 ) 
    277 906   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcla in configuration namelist', lwp ) 
    278       IF(lwm) WRITE( numond, namcla ) 
    279  
    280       IF(lwp) THEN 
    281          WRITE(numout,*) 
    282          WRITE(numout,*) '   Namelist namcla' 
    283          WRITE(numout,*) '      cross land advection                 nn_cla    = ', nn_cla 
    284       ENDIF 
    285268 
    286269#if defined key_netcdf4 
  • branches/2015/dev_r5721_CNRS9_NOC3_LDF/NEMOGCM/NEMO/OFF_SRC/dtadyn.F90

    r5737 r5782  
    2626   USE trc_oce         ! share ocean/biogeo variables 
    2727   USE phycst          ! physical constants 
     28   USE ldftra          ! lateral diffusivity coefficients 
    2829   USE trabbl          ! active tracer: bottom boundary layer 
    2930   USE ldfslp          ! lateral diffusion: iso-neutral slopes 
    30    USE ldfeiv          ! eddy induced velocity coef.  
    31    USE ldftra_oce      ! ocean tracer   lateral physics 
    3231   USE zdfmxl          ! vertical physics: mixed layer depth 
    3332   USE eosbn2          ! equation of state - Brunt Vaisala frequency 
     
    4039   USE fldread         ! read input fields  
    4140   USE timing          ! Timing 
     41   USE wrk_nemo 
    4242 
    4343   IMPLICIT NONE 
     
    5050   LOGICAL            ::   ln_dynwzv    !: vertical velocity read in a file (T) or computed from u/v (F) 
    5151   LOGICAL            ::   ln_dynbbl    !: bbl coef read in a file (T) or computed (F) 
    52    LOGICAL            ::   ln_degrad    !: degradation option enabled or not 
    5352   LOGICAL            ::   ln_dynrnf    !: read runoff data in file (T) or set to zero (F) 
    5453 
    55    INTEGER  , PARAMETER ::   jpfld = 21     ! maximum number of fields to read 
     54   INTEGER  , PARAMETER ::   jpfld = 15     ! maximum number of fields to read 
    5655   INTEGER  , SAVE      ::   jf_tem         ! index of temperature 
    5756   INTEGER  , SAVE      ::   jf_sal         ! index of salinity 
     
    6867   INTEGER  , SAVE      ::   jf_ubl         ! index of u-bbl coef 
    6968   INTEGER  , SAVE      ::   jf_vbl         ! index of v-bbl coef 
    70    INTEGER  , SAVE      ::   jf_ahu         ! index of u-diffusivity coef 
    71    INTEGER  , SAVE      ::   jf_ahv         ! index of v-diffusivity coef  
    72    INTEGER  , SAVE      ::   jf_ahw         ! index of w-diffusivity coef 
    73    INTEGER  , SAVE      ::   jf_eiu         ! index of u-eiv 
    74    INTEGER  , SAVE      ::   jf_eiv         ! index of v-eiv 
    75    INTEGER  , SAVE      ::   jf_eiw         ! index of w-eiv 
    7669   INTEGER  , SAVE      ::   jf_fmf         ! index of downward salt flux 
    7770 
     
    112105      !!             - interpolates data if needed 
    113106      !!---------------------------------------------------------------------- 
    114       ! 
    115       USE oce, ONLY:  zts    => tsa  
     107      USE oce, ONLY:  zts    => tsa 
    116108      USE oce, ONLY:  zuslp  => ua   , zvslp  => va 
    117       USE oce, ONLY:  zwslpi => rotb , zwslpj => rotn 
    118       USE oce, ONLY:  zu     => ub   , zv     => vb,  zw => hdivb 
     109      USE oce, ONLY:  zwslpi => ua_sv , zwslpj => va_sv 
     110      USE oce, ONLY:  zu     => ub   , zv     => vb,  zw => rke 
    119111      ! 
    120112      INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
     113      ! 
     114!      REAL(wp), DIMENSION(jpi,jpj,jpk,jpts)  :: zts 
     115!      REAL(wp), DIMENSION(jpi,jpj,jpk     )  :: zuslp, zvslp, zwslpi, zwslpj 
     116!      REAL(wp), DIMENSION(jpi,jpj,jpk     )  :: zu, zv, zw 
     117      ! 
    121118      ! 
    122119      INTEGER  ::   ji, jj     ! dummy loop indices 
     
    138135         CALL fld_read( kt, 1, sf_dyn )      !==   read data at kt time step   ==! 
    139136         ! 
    140          IF( lk_ldfslp .AND. .NOT.lk_c1d .AND. sf_dyn(jf_tem)%ln_tint ) THEN    ! Computes slopes (here avt is used as workspace)                        
     137         IF( l_ldfslp .AND. .NOT.lk_c1d .AND. sf_dyn(jf_tem)%ln_tint ) THEN    ! Computes slopes (here avt is used as workspace)                        
    141138            zts(:,:,:,jp_tem) = sf_dyn(jf_tem)%fdta(:,:,:,1) * tmask(:,:,:)   ! temperature 
    142139            zts(:,:,:,jp_sal) = sf_dyn(jf_sal)%fdta(:,:,:,1) * tmask(:,:,:)   ! salinity  
     
    162159      ENDIF 
    163160      !  
    164       IF( lk_ldfslp .AND. .NOT.lk_c1d ) THEN    ! Computes slopes (here avt is used as workspace)                        
     161      IF( l_ldfslp .AND. .NOT.lk_c1d ) THEN    ! Computes slopes (here avt is used as workspace)                        
    165162         iswap_tem = 0 
    166163         IF(  kt /= nit000 .AND. ( sf_dyn(jf_tem)%nrec_a(2) - nrecprev_tem ) /= 0 )  iswap_tem = 1 
     
    267264      rnf (:,:)        = sf_dyn(jf_rnf)%fnow(:,:,1) * tmask(:,:,1)    ! river runoffs  
    268265 
     266      !                                               ! update eddy diffusivity coeff. and/or eiv coeff. at kt 
     267      IF( l_ldftra_time .OR. l_ldfeiv_time )   CALL ldf_tra( kt )  
    269268      !                                                      ! bbl diffusive coef 
    270269#if defined key_trabbl && ! defined key_c1d 
     
    276275         CALL bbl( kt, nit000, 'TRC') 
    277276      END IF 
    278 #endif 
    279 #if ( ! defined key_degrad && defined key_traldf_c2d && defined key_traldf_eiv ) && ! defined key_c1d  
    280       aeiw(:,:)        = sf_dyn(jf_eiw)%fnow(:,:,1) * tmask(:,:,1)    ! w-eiv 
    281       !                                                           ! Computes the horizontal values from the vertical value 
    282       DO jj = 2, jpjm1 
    283          DO ji = fs_2, fs_jpim1   ! vector opt. 
    284             aeiu(ji,jj) = .5 * ( aeiw(ji,jj) + aeiw(ji+1,jj  ) )  ! Average the diffusive coefficient at u- v- points 
    285             aeiv(ji,jj) = .5 * ( aeiw(ji,jj) + aeiw(ji  ,jj+1) )  ! at u- v- points 
    286          END DO 
    287       END DO 
    288       CALL lbc_lnk( aeiu, 'U', 1. )   ;   CALL lbc_lnk( aeiv, 'V', 1. )    ! lateral boundary condition 
    289 #endif 
    290        
    291 #if defined key_degrad && ! defined key_c1d  
    292       !                                          ! degrad option : diffusive and eiv coef are 3D 
    293       ahtu(:,:,:) = sf_dyn(jf_ahu)%fnow(:,:,:) * umask(:,:,:) 
    294       ahtv(:,:,:) = sf_dyn(jf_ahv)%fnow(:,:,:) * vmask(:,:,:) 
    295       ahtw(:,:,:) = sf_dyn(jf_ahw)%fnow(:,:,:) * tmask(:,:,:) 
    296 #  if defined key_traldf_eiv  
    297       aeiu(:,:,:) = sf_dyn(jf_eiu)%fnow(:,:,:) * umask(:,:,:) 
    298       aeiv(:,:,:) = sf_dyn(jf_eiv)%fnow(:,:,:) * vmask(:,:,:) 
    299       aeiw(:,:,:) = sf_dyn(jf_eiw)%fnow(:,:,:) * tmask(:,:,:) 
    300 #  endif 
    301277#endif 
    302278      ! 
     
    339315      TYPE(FLD_N), DIMENSION(jpfld) ::  slf_d    ! array of namelist informations on the fields to read 
    340316      TYPE(FLD_N) :: sn_tem, sn_sal, sn_mld, sn_emp, sn_ice, sn_qsr, sn_wnd, sn_rnf  ! informations about the fields to be read 
    341       TYPE(FLD_N) :: sn_uwd, sn_vwd, sn_wwd, sn_avt, sn_ubl, sn_vbl          !   "                                 " 
    342       TYPE(FLD_N) :: sn_ahu, sn_ahv, sn_ahw, sn_eiu, sn_eiv, sn_eiw, sn_fmf  !   "                                 " 
    343       !!---------------------------------------------------------------------- 
    344       ! 
    345       NAMELIST/namdta_dyn/cn_dir, ln_dynwzv, ln_dynbbl, ln_degrad, ln_dynrnf,    & 
     317      TYPE(FLD_N) :: sn_uwd, sn_vwd, sn_wwd, sn_avt, sn_ubl, sn_vbl, sn_fmf          !   "                                 " 
     318      NAMELIST/namdta_dyn/cn_dir, ln_dynwzv, ln_dynbbl, ln_dynrnf,    & 
    346319         &                sn_tem, sn_sal, sn_mld, sn_emp, sn_ice, sn_qsr, sn_wnd, sn_rnf,  & 
    347          &                sn_uwd, sn_vwd, sn_wwd, sn_avt, sn_ubl, sn_vbl,          & 
    348          &                sn_ahu, sn_ahv, sn_ahw, sn_eiu, sn_eiv, sn_eiw, sn_fmf 
     320         &                sn_uwd, sn_vwd, sn_wwd, sn_avt, sn_ubl, sn_vbl, sn_fmf   
     321      !!---------------------------------------------------------------------- 
    349322      ! 
    350323      REWIND( numnam_ref )              ! Namelist namdta_dyn in reference namelist : Offline: init. of dynamical data 
     
    365338         WRITE(numout,*) '      vertical velocity read from file (T) or computed (F) ln_dynwzv  = ', ln_dynwzv 
    366339         WRITE(numout,*) '      bbl coef read from file (T) or computed (F)          ln_dynbbl  = ', ln_dynbbl 
    367          WRITE(numout,*) '      degradation option enabled (T) or not (F)            ln_degrad  = ', ln_degrad 
    368340         WRITE(numout,*) '      river runoff option enabled (T) or not (F)           ln_dynrnf  = ', ln_dynrnf 
    369341         WRITE(numout,*) 
    370342      ENDIF 
    371343      !  
    372       IF( ln_degrad .AND. .NOT.lk_degrad ) THEN 
    373          CALL ctl_warn( 'dta_dyn_init: degradation option requires key_degrad activated ; force ln_degrad to false' ) 
    374          ln_degrad = .FALSE. 
    375       ENDIF 
    376344      IF( ln_dynbbl .AND. ( .NOT.lk_trabbl .OR. lk_c1d ) ) THEN 
    377345         CALL ctl_warn( 'dta_dyn_init: bbl option requires key_trabbl activated ; force ln_dynbbl to false' ) 
     
    395363      ENDIF 
    396364 
    397       ! 
    398       IF( .NOT.ln_degrad ) THEN     ! no degrad option 
    399          IF( lk_traldf_eiv .AND. ln_dynbbl ) THEN        ! eiv & bbl 
    400                  jf_ubl  = jfld + 1 ;        jf_vbl  = jfld + 2 ;        jf_eiw  = jfld + 3   ;   jfld = jf_eiw 
    401            slf_d(jf_ubl) = sn_ubl  ;   slf_d(jf_vbl) = sn_vbl  ;   slf_d(jf_eiw) = sn_eiw 
    402          ENDIF 
    403          IF( .NOT.lk_traldf_eiv .AND. ln_dynbbl ) THEN   ! no eiv & bbl 
     365      IF( ln_dynbbl ) THEN         ! eiv & bbl 
    404366                 jf_ubl  = jfld + 1 ;        jf_vbl  = jfld + 2 ;  jfld = jf_vbl 
    405367           slf_d(jf_ubl) = sn_ubl  ;   slf_d(jf_vbl) = sn_vbl 
    406          ENDIF 
    407          IF( lk_traldf_eiv .AND. .NOT.ln_dynbbl ) THEN   ! eiv & no bbl 
    408            jf_eiw = jfld + 1 ; jfld = jf_eiw ; slf_d(jf_eiw) = sn_eiw 
    409          ENDIF 
    410       ELSE 
    411               jf_ahu  = jfld + 1 ;        jf_ahv  = jfld + 2 ;        jf_ahw  = jfld + 3  ;  jfld = jf_ahw 
    412         slf_d(jf_ahu) = sn_ahu  ;   slf_d(jf_ahv) = sn_ahv  ;   slf_d(jf_ahw) = sn_ahw 
    413         IF( lk_traldf_eiv .AND. ln_dynbbl ) THEN         ! eiv & bbl 
    414                  jf_ubl  = jfld + 1 ;        jf_vbl  = jfld + 2 ; 
    415            slf_d(jf_ubl) = sn_ubl  ;   slf_d(jf_vbl) = sn_vbl 
    416                  jf_eiu  = jfld + 3 ;        jf_eiv  = jfld + 4 ;    jf_eiw  = jfld + 5   ;  jfld = jf_eiw  
    417            slf_d(jf_eiu) = sn_eiu  ;   slf_d(jf_eiv) = sn_eiv  ;    slf_d(jf_eiw) = sn_eiw 
    418         ENDIF 
    419         IF( .NOT.lk_traldf_eiv .AND. ln_dynbbl ) THEN    ! no eiv & bbl 
    420                  jf_ubl  = jfld + 1 ;        jf_vbl  = jfld + 2 ;  jfld = jf_vbl 
    421            slf_d(jf_ubl) = sn_ubl  ;   slf_d(jf_vbl) = sn_vbl 
    422         ENDIF 
    423         IF( lk_traldf_eiv .AND. .NOT.ln_dynbbl ) THEN    ! eiv & no bbl 
    424                  jf_eiu  = jfld + 1 ;         jf_eiv  = jfld + 2 ;    jf_eiw  = jfld + 3   ; jfld = jf_eiw  
    425            slf_d(jf_eiu) = sn_eiu  ;   slf_d(jf_eiv) = sn_eiv  ;   slf_d(jf_eiw) = sn_eiw 
    426         ENDIF 
    427       ENDIF 
    428    
     368      ENDIF 
     369 
     370 
    429371      ALLOCATE( sf_dyn(jfld), STAT=ierr )         ! set sf structure 
    430372      IF( ierr > 0 ) THEN 
     
    451393      CALL fld_fill( sf_dyn, slf_d, cn_dir, 'dta_dyn_init', 'Data in file', 'namdta_dyn' ) 
    452394      ! 
    453       IF( lk_ldfslp .AND. .NOT.lk_c1d ) THEN                  ! slopes  
     395      IF( l_ldfslp .AND. .NOT.lk_c1d ) THEN                  ! slopes  
    454396         IF( sf_dyn(jf_tem)%ln_tint ) THEN      ! time interpolation 
    455397            ALLOCATE( uslpdta (jpi,jpj,jpk,2), vslpdta (jpi,jpj,jpk,2),    & 
     
    515457         END DO 
    516458      END DO 
     459      !                              !  update the horizontal divergence with the runoff inflow 
     460      IF( ln_dynrnf )  zhdiv(:,:,1) = zhdiv(:,:,1) - rnf(:,:) * r1_rau0 / fse3t(:,:,1) 
     461      ! 
    517462      CALL lbc_lnk( zhdiv, 'T', 1. )      ! Lateral boundary conditions on zhdiv 
    518       ! 
    519463      ! computation of vertical velocity from the bottom 
    520464      pw(:,:,jpk) = 0._wp 
     
    539483      REAL(wp), DIMENSION(jpi,jpj,jpk)     , INTENT(out) :: pwslpj   ! meridional diapycnal slopes 
    540484      !!--------------------------------------------------------------------- 
    541 #if defined key_ldfslp && ! defined key_c1d 
    542       CALL eos    ( pts, rhd, rhop, gdept_0(:,:,:) ) 
    543       CALL eos_rab( pts, rab_n )       ! now local thermal/haline expension ratio at T-points 
    544       CALL bn2    ( pts, rab_n, rn2  ) ! now    Brunt-Vaisala 
    545  
    546       ! Partial steps: before Horizontal DErivative 
    547       IF( ln_zps  .AND. .NOT. ln_isfcav)                            & 
    548          &            CALL zps_hde    ( kt, jpts, pts, gtsu, gtsv,  &  ! Partial steps: before horizontal gradient 
    549          &                                        rhd, gru , grv    )  ! of t, s, rd at the last ocean level 
    550       IF( ln_zps .AND.        ln_isfcav)                            & 
    551          &            CALL zps_hde_isf( kt, jpts, pts, gtsu, gtsv,  &    ! Partial steps for top cell (ISF) 
    552          &                                        rhd, gru , grv , aru , arv , gzu , gzv , ge3ru , ge3rv ,   & 
    553          &                                 gtui, gtvi, grui, grvi, arui, arvi, gzui, gzvi, ge3rui, ge3rvi    ) ! of t, s, rd at the first ocean level 
    554  
    555       rn2b(:,:,:) = rn2(:,:,:)         ! need for zdfmxl 
    556       CALL zdf_mxl( kt )            ! mixed layer depth 
    557       CALL ldf_slp( kt, rhd, rn2 )  ! slopes 
    558       puslp (:,:,:) = uslp (:,:,:)  
    559       pvslp (:,:,:) = vslp (:,:,:)  
    560       pwslpi(:,:,:) = wslpi(:,:,:)  
    561       pwslpj(:,:,:) = wslpj(:,:,:)  
    562 #else 
    563       puslp (:,:,:) = 0.            ! to avoid warning when compiling 
    564       pvslp (:,:,:) = 0. 
    565       pwslpi(:,:,:) = 0. 
    566       pwslpj(:,:,:) = 0. 
    567 #endif 
     485      IF( l_ldfslp .AND. .NOT.lk_c1d ) THEN    ! Computes slopes (here avt is used as workspace)                        
     486         CALL eos    ( pts, rhd, rhop, gdept_0(:,:,:) ) 
     487         CALL eos_rab( pts, rab_n )       ! now local thermal/haline expension ratio at T-points 
     488         CALL bn2    ( pts, rab_n, rn2  ) ! now    Brunt-Vaisala 
     489 
     490         ! Partial steps: before Horizontal DErivative 
     491         IF( ln_zps  .AND. .NOT. ln_isfcav)                            & 
     492            &            CALL zps_hde    ( kt, jpts, pts, gtsu, gtsv,  &  ! Partial steps: before horizontal gradient 
     493            &                                        rhd, gru , grv    )  ! of t, s, rd at the last ocean level 
     494         IF( ln_zps .AND.        ln_isfcav)                            & 
     495            &            CALL zps_hde_isf( kt, jpts, pts, gtsu, gtsv,  &    ! Partial steps for top cell (ISF) 
     496            &                                        rhd, gru , grv , aru , arv , gzu , gzv , ge3ru , ge3rv ,   & 
     497            &                                 gtui, gtvi, grui, grvi, arui, arvi, gzui, gzvi, ge3rui, ge3rvi    ) ! of t, s, rd at the first ocean level 
     498 
     499         rn2b(:,:,:) = rn2(:,:,:)         ! need for zdfmxl 
     500         CALL zdf_mxl( kt )            ! mixed layer depth 
     501         CALL ldf_slp( kt, rhd, rn2 )  ! slopes 
     502         puslp (:,:,:) = uslp (:,:,:)  
     503         pvslp (:,:,:) = vslp (:,:,:)  
     504         pwslpi(:,:,:) = wslpi(:,:,:)  
     505         pwslpj(:,:,:) = wslpj(:,:,:)  
     506     ELSE 
     507         puslp (:,:,:) = 0.            ! to avoid warning when compiling 
     508         pvslp (:,:,:) = 0. 
     509         pwslpi(:,:,:) = 0. 
     510         pwslpj(:,:,:) = 0. 
     511     ENDIF 
    568512      ! 
    569513   END SUBROUTINE dta_dyn_slp 
  • branches/2015/dev_r5721_CNRS9_NOC3_LDF/NEMOGCM/NEMO/OFF_SRC/nemogcm.F90

    r5504 r5782  
    2626   USE traqsr          ! solar radiation penetration    (tra_qsr_init routine) 
    2727   USE trabbl          ! bottom boundary layer          (tra_bbl_init routine) 
     28   USE traldf          ! lateral physics                (tra_ldf_init routine) 
    2829   USE zdfini          ! vertical physics: initialization 
    2930   USE sbcmod          ! surface boundary condition       (sbc_init     routine) 
     
    283284                            CALL     sbc_init   ! Forcings : surface module 
    284285 
    285 #if ! defined key_degrad 
    286286                            CALL ldf_tra_init   ! Lateral ocean tracer physics 
    287 #endif 
    288       IF( lk_ldfslp )       CALL ldf_slp_init   ! slope of lateral mixing 
     287                            CALL ldf_eiv_init   ! Eddy induced velocity param 
     288                            CALL tra_ldf_init   ! lateral mixing 
     289      IF( l_ldfslp )        CALL ldf_slp_init   ! slope of lateral mixing 
    289290 
    290291                            CALL tra_qsr_init   ! penetrative solar radiation qsr 
     
    444445      USE dom_oce,      ONLY: dom_oce_alloc 
    445446      USE zdf_oce,      ONLY: zdf_oce_alloc 
    446       USE ldftra_oce,   ONLY: ldftra_oce_alloc 
    447447      USE trc_oce,      ONLY: trc_oce_alloc 
    448448      ! 
     
    453453      ierr = ierr + dia_wri_alloc   () 
    454454      ierr = ierr + dom_oce_alloc   ()          ! ocean domain 
    455       ierr = ierr + ldftra_oce_alloc()          ! ocean lateral  physics : tracers 
    456455      ierr = ierr + zdf_oce_alloc   ()          ! ocean vertical physics 
    457456      ! 
  • branches/2015/dev_r5721_CNRS9_NOC3_LDF/NEMOGCM/NEMO/OPA_SRC/ASM/asminc.F90

    r5777 r5782  
    736736               ENDIF 
    737737            ENDIF 
    738  
    739 #if defined key_zdfkpp 
    740             CALL eos( tsn, rhd, fsdept_n(:,:,:) )                      ! Compute rhd 
    741 !!gm fabien            CALL eos( tsn, rhd )                      ! Compute rhd 
    742 #endif 
    743738            ! 
    744739            DEALLOCATE( t_bkginc ) 
  • branches/2015/dev_r5721_CNRS9_NOC3_LDF/NEMOGCM/NEMO/OPA_SRC/C1D/step_c1d.F90

    r5758 r5782  
    123123      IF( ln_traqsr )   CALL tra_qsr( kstp )       ! penetrative solar radiation qsr 
    124124      IF( ln_tradmp )   CALL tra_dmp( kstp )       ! internal damping trends- tracers 
    125       IF( lk_zdfkpp )   CALL tra_kpp( kstp )       ! KPP non-local tracer fluxes 
    126125                        CALL tra_zdf( kstp )       ! vertical mixing 
    127126                        CALL eos( tsn, rhd, rhop, gdept_0(:,:,:) )   ! now potential density for zdfmxl 
  • branches/2015/dev_r5721_CNRS9_NOC3_LDF/NEMOGCM/NEMO/OPA_SRC/DOM/dommsk.F90

    r5770 r5782  
    198198         END DO   
    199199      END DO   
    200  
    201 !!gm  ???? 
    202 #if defined key_zdfkpp 
    203       IF( cp_cfg == 'orca' ) THEN 
    204          IF( jp_cfg == 2 )   THEN       ! land point on Bab el Mandeb zonal section 
    205             ij0 =  87   ;   ij1 =  88 
    206             ii0 = 160   ;   ii1 = 161 
    207             tmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) , 1:jpk ) = 0._wp 
    208          ELSE 
    209             IF(lwp) WRITE(numout,*) 
    210             IF(lwp) WRITE(numout,cform_war) 
    211             IF(lwp) WRITE(numout,*) 
    212             IF(lwp) WRITE(numout,*)'          A mask must be applied on Bab el Mandeb strait' 
    213             IF(lwp) WRITE(numout,*)'          in case of ORCAs configurations' 
    214             IF(lwp) WRITE(numout,*)'          This is a problem which is not yet solved' 
    215             IF(lwp) WRITE(numout,*) 
    216          ENDIF 
    217       ENDIF 
    218 #endif 
    219 !!gm end 
    220200 
    221201      ! Interior domain mask (used for global sum) 
  • branches/2015/dev_r5721_CNRS9_NOC3_LDF/NEMOGCM/NEMO/OPA_SRC/LDF/ldfdyn.F90

    r5777 r5782  
    103103         WRITE(numout,*) 'ldf_dyn : lateral momentum physics' 
    104104         WRITE(numout,*) '~~~~~~~' 
    105          WRITE(numout,*) '   Namelist nam_dynldf : set lateral mixing parameters' 
     105         WRITE(numout,*) '   Namelist namdyn_ldf : set lateral mixing parameters' 
    106106         ! 
    107107         WRITE(numout,*) '      type :' 
  • branches/2015/dev_r5721_CNRS9_NOC3_LDF/NEMOGCM/NEMO/OPA_SRC/LDF/ldftra.F90

    r5777 r5782  
    2626   USE diaar5, ONLY:   lk_diaar5 
    2727   ! 
     28   USE trc_oce, ONLY: lk_offline ! offline flag 
    2829   USE in_out_manager  ! I/O manager 
    2930   USE iom             ! I/O module for ehanced bottom friction file 
     
    352353      END SELECT 
    353354      ! 
    354       CALL iom_put( "ahtu_2d", ahtu(:,:,1) )   ! surface u-eddy diffusivity coeff. 
    355       CALL iom_put( "ahtv_2d", ahtv(:,:,1) )   ! surface v-eddy diffusivity coeff. 
    356       CALL iom_put( "ahtu_3d", ahtu(:,:,:) )   ! 3D      u-eddy diffusivity coeff. 
    357       CALL iom_put( "ahtv_3d", ahtv(:,:,:) )   ! 3D      v-eddy diffusivity coeff. 
    358       ! 
     355      IF( .NOT.lk_offline ) THEN 
     356         CALL iom_put( "ahtu_2d", ahtu(:,:,1) )   ! surface u-eddy diffusivity coeff. 
     357         CALL iom_put( "ahtv_2d", ahtv(:,:,1) )   ! surface v-eddy diffusivity coeff. 
     358         CALL iom_put( "ahtu_3d", ahtu(:,:,:) )   ! 3D      u-eddy diffusivity coeff. 
     359         CALL iom_put( "ahtv_3d", ahtv(:,:,:) )   ! 3D      v-eddy diffusivity coeff. 
     360         ! 
    359361!!gm  : THE IF below is to be checked (comes from Seb) 
    360       IF( ln_ldfeiv ) THEN 
    361         CALL iom_put( "aeiu_2d", aeiu(:,:,1) )   ! surface u-EIV coeff. 
    362         CALL iom_put( "aeiv_2d", aeiv(:,:,1) )   ! surface v-EIV coeff. 
    363         CALL iom_put( "aeiu_3d", aeiu(:,:,:) )   ! 3D      u-EIV coeff. 
    364         CALL iom_put( "aeiv_3d", aeiv(:,:,:) )   ! 3D      v-EIV coeff. 
    365       ENDIF      
     362         IF( ln_ldfeiv ) THEN 
     363           CALL iom_put( "aeiu_2d", aeiu(:,:,1) )   ! surface u-EIV coeff. 
     364           CALL iom_put( "aeiv_2d", aeiv(:,:,1) )   ! surface v-EIV coeff. 
     365           CALL iom_put( "aeiu_3d", aeiu(:,:,:) )   ! 3D      u-EIV coeff. 
     366           CALL iom_put( "aeiv_3d", aeiv(:,:,:) )   ! 3D      v-EIV coeff. 
     367         ENDIF      
     368      ENDIF 
    366369      ! 
    367370   END SUBROUTINE ldf_tra 
     
    393396      READ  ( numnam_cfg, namtra_ldfeiv, IOSTAT = ios, ERR = 902 ) 
    394397902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtra_ldfeiv in configuration namelist', lwp ) 
    395       WRITE ( numond, namtra_ldfeiv ) 
     398      IF(lwm)  WRITE ( numond, namtra_ldfeiv ) 
    396399 
    397400      IF(lwp) THEN                      ! control print 
     
    668671      IF( ln_ldfeiv_dia .AND. cdtype == 'TRA' )   CALL ldf_eiv_dia( zpsi_uw, zpsi_vw ) 
    669672      ! 
    670       CALL wrk_alloc( jpi,jpj,jpk,   zpsi_uw, zpsi_vw ) 
     673      CALL wrk_dealloc( jpi,jpj,jpk,   zpsi_uw, zpsi_vw ) 
    671674      ! 
    672675      IF( nn_timing == 1 )   CALL timing_stop( 'ldf_eiv_trp') 
  • branches/2015/dev_r5721_CNRS9_NOC3_LDF/NEMOGCM/NEMO/OPA_SRC/TRD/trdpen.F90

    r5777 r5782  
    100100                                   CALL wrk_alloc( jpi, jpj, z2d ) 
    101101                                   z2d(:,:) = wn(:,:,1) * ( & 
    102                                       &   - ( rab_n(:,:,1,jp_tem) + rab_pe(:,:,1,jp_tem) ) * tsn(:,:,1,jp_tem)    & 
    103                                       &   + ( rab_n(:,:,1,jp_sal) + rab_pe(:,:,1,jp_sal) ) * tsn(:,:,1,jp_sal)    & 
    104                                       &                  ) / fse3t(:,:,1) 
     102                                     &   - ( rab_n(:,:,1,jp_tem) + rab_pe(:,:,1,jp_tem) ) * tsn(:,:,1,jp_tem)    & 
     103                                     &   + ( rab_n(:,:,1,jp_sal) + rab_pe(:,:,1,jp_sal) ) * tsn(:,:,1,jp_sal)    & 
     104                                     & ) / fse3t(:,:,1) 
    105105                                   CALL iom_put( "petrd_sad" , z2d ) 
    106106                                   CALL wrk_dealloc( jpi, jpj, z2d ) 
  • branches/2015/dev_r5721_CNRS9_NOC3_LDF/NEMOGCM/NEMO/OPA_SRC/ZDF/zdf_oce.F90

    r5777 r5782  
    4545   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   avt_k , avm_k  ! not enhanced Kz 
    4646   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   avmu_k, avmv_k ! not enhanced Kz 
     47   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   en              !: now turbulent kinetic energy   [m2/s2] 
    4748 
    4849   !!---------------------------------------------------------------------- 
     
    6162         &     avtb(jpk) , bfrva(jpi,jpj) , avtb_2d(jpi,jpj) ,      & 
    6263         &     tfrua(jpi, jpj), tfrva(jpi, jpj)              ,      & 
    63          &     avmu  (jpi,jpj,jpk), avm   (jpi,jpj,jpk),            & 
    64          &     avmv  (jpi,jpj,jpk), avt   (jpi,jpj,jpk),            & 
    65          &     avt_k (jpi,jpj,jpk), avm_k (jpi,jpj,jpk),            &  
    66          &     avmu_k(jpi,jpj,jpk), avmv_k(jpi,jpj,jpk),       STAT = zdf_oce_alloc ) 
     64         &     avmu  (jpi,jpj,jpk), avm   (jpi,jpj,jpk)      ,      & 
     65         &     avmv  (jpi,jpj,jpk), avt   (jpi,jpj,jpk)      ,      & 
     66         &     avt_k (jpi,jpj,jpk), avm_k (jpi,jpj,jpk)      ,      &  
     67         &     avmu_k(jpi,jpj,jpk), avmv_k(jpi,jpj,jpk)      ,      & 
     68         &     en    (jpi,jpj,jpk), STAT = zdf_oce_alloc ) 
    6769         ! 
    6870      IF( zdf_oce_alloc /= 0 )   CALL ctl_warn('zdf_oce_alloc: failed to allocate arrays') 
  • branches/2015/dev_r5721_CNRS9_NOC3_LDF/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfgls.F90

    r5777 r5782  
    4242   LOGICAL , PUBLIC, PARAMETER ::   lk_zdfgls = .TRUE.   !: TKE vertical mixing flag 
    4343   ! 
    44    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   en      !: now turbulent kinetic energy 
    4544   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   mxln    !: now mixing length 
    4645   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   zwall   !: wall function 
     
    116115      !!                ***  FUNCTION zdf_gls_alloc  *** 
    117116      !!---------------------------------------------------------------------- 
    118       ALLOCATE( en(jpi,jpj,jpk),  mxln(jpi,jpj,jpk), zwall(jpi,jpj,jpk) ,     & 
    119          &      ustars2(jpi,jpj), ustarb2(jpi,jpj)                      , STAT= zdf_gls_alloc ) 
     117      ALLOCATE( mxln(jpi,jpj,jpk), zwall(jpi,jpj,jpk) ,     & 
     118         &      ustars2(jpi,jpj) , ustarb2(jpi,jpj)   , STAT= zdf_gls_alloc ) 
    120119         ! 
    121120      IF( lk_mpp             )   CALL mpp_sum ( zdf_gls_alloc ) 
  • branches/2015/dev_r5721_CNRS9_NOC3_LDF/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftke.F90

    r5777 r5782  
    8989   REAL(wp) ::   rhftau_scl = 1.0_wp       ! scale factor applied to HF part of taum  (nn_etau=3) 
    9090 
    91    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   en             !: now turbulent kinetic energy   [m2/s2] 
    9291   REAL(wp)        , ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   htau           ! depth of tke penetration (nn_htau) 
    9392   REAL(wp)        , ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   dissl          ! now mixing lenght of dissipation 
     
    118117         &      e_pdl(jpi,jpj,jpk) , e_ric(jpi,jpj,jpk) ,                          & 
    119118#endif 
    120          &      en   (jpi,jpj,jpk) , htau  (jpi,jpj)    , dissl(jpi,jpj,jpk) ,     &  
     119         &      htau  (jpi,jpj)    , dissl(jpi,jpj,jpk) ,     &  
    121120         &      apdlr(jpi,jpj,jpk) ,                                           STAT= zdf_tke_alloc      ) 
    122121         ! 
  • branches/2015/dev_r5721_CNRS9_NOC3_LDF/NEMOGCM/NEMO/SAS_SRC/diawri.F90

    r5766 r5782  
    2626   USE dom_oce         ! ocean space and time domain 
    2727   USE zdf_oce         ! ocean vertical physics 
    28    USE ldfdyn_oce      ! ocean dynamics: lateral physics 
    2928   USE sol_oce         ! solver variables 
    3029   USE sbc_oce         ! Surface boundary condition: ocean fields 
  • branches/2015/dev_r5721_CNRS9_NOC3_LDF/NEMOGCM/NEMO/TOP_SRC/TRP/trcdmp.F90

    r5766 r5782  
    208208      ENDIF 
    209209      ! 
    210       IF( lzoom )   nn_zdmp_tr = 0           ! restoring to climatology at closed north or south boundaries 
     210      IF( lzoom .AND. .NOT.lk_c1d )   nn_zdmp_tr = 0           ! restoring to climatology at closed north or south boundaries 
    211211      SELECT CASE ( nn_zdmp_tr ) 
    212212      CASE ( 0 )   ;   IF(lwp) WRITE(numout,*) '   tracer damping throughout the water column' 
     
    218218      END SELECT 
    219219 
    220       IF( .NOT. ln_tradmp )   & 
    221          &   CALL ctl_stop( 'passive trace damping need key_tradmp to compute damping coef.' ) 
    222       ! 
    223       !                          ! Read damping coefficients from file 
    224       !Read in mask from file 
    225       CALL iom_open ( cn_resto_tr, imask) 
    226       CALL iom_get  ( imask, jpdom_autoglo, 'resto', restotr) 
    227       CALL iom_close( imask ) 
    228       ! 
     220      IF( .NOT.lk_c1d ) THEN 
     221         IF( .NOT. ln_tradmp )   & 
     222            &   CALL ctl_stop( 'passive trace damping need ln_tradmp to compute damping coef.' ) 
     223         ! 
     224         !                          ! Read damping coefficients from file 
     225         !Read in mask from file 
     226         CALL iom_open ( cn_resto_tr, imask) 
     227         CALL iom_get  ( imask, jpdom_autoglo, 'resto', restotr) 
     228         CALL iom_close( imask ) 
     229         ! 
     230      ENDIF 
    229231      IF( nn_timing == 1 )  CALL timing_stop('trc_dmp_init') 
    230232      ! 
  • branches/2015/dev_r5721_CNRS9_NOC3_LDF/NEMOGCM/NEMO/TOP_SRC/TRP/trctrp.F90

    r5766 r5782  
    8686      ELSE                                               ! 1D vertical configuration 
    8787                                CALL trc_sbc( kt )            ! surface boundary condition 
     88         IF( ln_trcdmp )        CALL trc_dmp( kt )            ! internal damping trends 
    8889                                CALL trc_zdf( kt )            ! vertical mixing and after tracer fields 
    8990                                CALL trc_nxt( kt )            ! tracer fields at next time step      
Note: See TracChangeset for help on using the changeset viewer.