[3] | 1 | MODULE zdf_oce |
---|
| 2 | !!====================================================================== |
---|
| 3 | !! *** MODULE zdf_oce *** |
---|
| 4 | !! Ocean physics : define vertical mixing variables |
---|
| 5 | !!===================================================================== |
---|
[9019] | 6 | !! history : 1.0 ! 2002-06 (G. Madec) Original code |
---|
| 7 | !! 3.2 ! 2009-07 (G. Madec) addition of avm |
---|
| 8 | !! 4.0 ! 2017-05 (G. Madec) avm and drag coef. defined at t-point |
---|
[3] | 9 | !!---------------------------------------------------------------------- |
---|
[2715] | 10 | USE par_oce ! ocean parameters |
---|
| 11 | USE in_out_manager ! I/O manager |
---|
| 12 | USE lib_mpp ! MPP library |
---|
[3] | 13 | |
---|
| 14 | IMPLICIT NONE |
---|
| 15 | PRIVATE |
---|
| 16 | |
---|
[2715] | 17 | PUBLIC zdf_oce_alloc ! Called in nemogcm.F90 |
---|
| 18 | |
---|
[9019] | 19 | ! !!* namelist namzdf: vertical physics * |
---|
[10364] | 20 | ! ! Adaptive-implicit vertical advection flag |
---|
| 21 | LOGICAL , PUBLIC :: ln_zad_Aimp !: adaptive (Courant number-based) implicit vertical advection |
---|
[9019] | 22 | ! ! vertical closure scheme flags |
---|
| 23 | LOGICAL , PUBLIC :: ln_zdfcst !: constant coefficients |
---|
| 24 | LOGICAL , PUBLIC :: ln_zdfric !: Richardson depend coefficients |
---|
| 25 | LOGICAL , PUBLIC :: ln_zdftke !: Turbulent Kinetic Energy closure |
---|
| 26 | LOGICAL , PUBLIC :: ln_zdfgls !: Generic Length Scale closure |
---|
| 27 | LOGICAL , PUBLIC :: ln_zdfosm !: OSMOSIS BL closure |
---|
| 28 | ! ! convection |
---|
| 29 | LOGICAL , PUBLIC :: ln_zdfevd !: convection: enhanced vertical diffusion flag |
---|
| 30 | INTEGER , PUBLIC :: nn_evdm !: =0/1 flag to apply enhanced avm or not |
---|
| 31 | REAL(wp), PUBLIC :: rn_evd !: vertical eddy coeff. for enhanced vert. diff. (m2/s) |
---|
| 32 | LOGICAL , PUBLIC :: ln_zdfnpc !: convection: non-penetrative convection flag |
---|
| 33 | INTEGER , PUBLIC :: nn_npc !: non penetrative convective scheme call frequency |
---|
| 34 | INTEGER , PUBLIC :: nn_npcp !: non penetrative convective scheme print frequency |
---|
| 35 | ! ! double diffusion |
---|
| 36 | LOGICAL , PUBLIC :: ln_zdfddm !: double diffusive mixing flag |
---|
| 37 | REAL(wp), PUBLIC :: rn_avts !: maximum value of avs for salt fingering |
---|
| 38 | REAL(wp), PUBLIC :: rn_hsbfr !: heat/salt buoyancy flux ratio |
---|
| 39 | ! ! gravity wave-induced vertical mixing |
---|
| 40 | LOGICAL , PUBLIC :: ln_zdfswm !: surface wave-induced mixing flag |
---|
| 41 | LOGICAL , PUBLIC :: ln_zdfiwm !: internal wave-induced mixing flag |
---|
[11474] | 42 | LOGICAL , PUBLIC :: ln_zdftmx !: old tidal mixing scheme (Simmons et al 2004) |
---|
[9019] | 43 | ! ! coefficients |
---|
[4147] | 44 | REAL(wp), PUBLIC :: rn_avm0 !: vertical eddy viscosity (m2/s) |
---|
| 45 | REAL(wp), PUBLIC :: rn_avt0 !: vertical eddy diffusivity (m2/s) |
---|
| 46 | INTEGER , PUBLIC :: nn_avb !: constant or profile background on avt (=0/1) |
---|
[9019] | 47 | INTEGER , PUBLIC :: nn_havtb !: horizontal shape or not for avtb (=0/1) ! ! convection |
---|
[3] | 48 | |
---|
[1537] | 49 | |
---|
[9019] | 50 | REAL(wp), PUBLIC, SAVE, ALLOCATABLE, DIMENSION(:,:,:) :: avm, avt, avs !: vertical mixing coefficients (w-point) [m2/s] |
---|
| 51 | REAL(wp), PUBLIC, SAVE, ALLOCATABLE, DIMENSION(:,:,:) :: avm_k , avt_k !: Kz computed by turbulent closure alone [m2/s] |
---|
| 52 | REAL(wp), PUBLIC, SAVE, ALLOCATABLE, DIMENSION(:,:,:) :: en !: now turbulent kinetic energy [m2/s2] |
---|
| 53 | REAL(wp), PUBLIC, SAVE, ALLOCATABLE, DIMENSION(:) :: avmb , avtb !: background profile of avm and avt [m2/s] |
---|
| 54 | REAL(wp), PUBLIC, SAVE, ALLOCATABLE, DIMENSION(:,:) :: avtb_2d !: horizontal shape of background Kz profile [-] |
---|
[5656] | 55 | |
---|
[1492] | 56 | !!---------------------------------------------------------------------- |
---|
[9598] | 57 | !! NEMO/OCE 4.0 , NEMO Consortium (2018) |
---|
[10888] | 58 | !! $Id$ |
---|
[10068] | 59 | !! Software governed by the CeCILL license (see ./LICENSE) |
---|
[2715] | 60 | !!---------------------------------------------------------------------- |
---|
| 61 | CONTAINS |
---|
| 62 | |
---|
| 63 | INTEGER FUNCTION zdf_oce_alloc() |
---|
| 64 | !!---------------------------------------------------------------------- |
---|
| 65 | !! *** FUNCTION zdf_oce_alloc *** |
---|
| 66 | !!---------------------------------------------------------------------- |
---|
| 67 | ! |
---|
[9019] | 68 | ALLOCATE( avm (jpi,jpj,jpk) , avm_k(jpi,jpj,jpk) , avs(jpi,jpj,jpk) , & |
---|
| 69 | & avt (jpi,jpj,jpk) , avt_k(jpi,jpj,jpk) , en (jpi,jpj,jpk) , & |
---|
| 70 | & avmb(jpk) , avtb(jpk) , avtb_2d(jpi,jpj) , STAT = zdf_oce_alloc ) |
---|
[2715] | 71 | ! |
---|
[10425] | 72 | IF( zdf_oce_alloc /= 0 ) CALL ctl_stop( 'STOP', 'zdf_oce_alloc: failed to allocate arrays' ) |
---|
[2715] | 73 | ! |
---|
| 74 | END FUNCTION zdf_oce_alloc |
---|
| 75 | |
---|
[3] | 76 | !!====================================================================== |
---|
| 77 | END MODULE zdf_oce |
---|