Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
MODULE abl
!!======================================================================
!! *** MODULE abl ***
!! Abl : ABL dynamics and active tracers defined in memory
!!======================================================================
!! History : 4.0 ! 2019-03 (F. Lemarié & G. Samson) Original code
!!----------------------------------------------------------------------
USE par_abl ! abl parameters
USE lib_mpp ! MPP library
USE dom_oce, ONLY: glamt, gphit ! latitude/longitude
USE dom_oce, ONLY: e1t, e1u, e1v, e1f ! scale factors for horizontal grid
USE dom_oce, ONLY: e2t, e2u, e2v, e2f !
USE dom_oce, ONLY: rn_Dt ! oceanic time-step
USE sbc_oce, ONLY: ght_abl, ghw_abl, e3t_abl, e3w_abl, jpka ! scale factors and altitudes of ABL grid points in the vertical
IMPLICIT NONE
PRIVATE
PUBLIC abl_alloc ! routine called by nemo_init in nemogcm.F90
!! ABL dynamics and tracer fields !
!! -------------------------- !
REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:,:,:) :: u_abl !: i-horizontal velocity [m/s]
REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:,:,:) :: v_abl !: j-horizontal velocity [m/s]
REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:,:,:,:) :: tq_abl !: 4D T-q fields [Kelvin,kg/kg]
!! ABL TKE closure scheme !
!! --------------------------
REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:,:) :: avm_abl !: turbulent viscosity [m2/s]
REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:,:) :: avt_abl !: turbulent diffusivity [m2/s]
REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:,:) :: mxld_abl !: dissipative mixing length [m]
REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:,:) :: mxlm_abl !: master mixing length [m]
REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:,:,:) :: tke_abl !: turbulent kinetic energy [m2/s2]
REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:) :: fft_abl !: Coriolis parameter [1/s]
REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:) :: pblh !: PBL height [m]
!! ABL Land/sea mask and restoring term !
!! --------------------------
REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:) :: msk_abl
REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:) :: rest_eq
!
INTEGER , PUBLIC :: nt_n, nt_a !: now / after indices (equal 1 or 2)
!
!!----------------------------------------------------------------------
!! NEMO/OPA 4.0 , NEMO Consortium (2011)
!! $Id: abl.F90 4990 2014-12-15 16:42:49Z timgraham $
!! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
!!----------------------------------------------------------------------
CONTAINS
INTEGER FUNCTION abl_alloc()
!!----------------------------------------------------------------------
!! *** FUNCTION abl_alloc ***
!!----------------------------------------------------------------------
INTEGER :: ierr
!!----------------------------------------------------------------------
!
ALLOCATE( u_abl (1:jpi,1:jpj,1:jpka,jptime ), &
& v_abl (1:jpi,1:jpj,1:jpka,jptime ), &
& tq_abl (1:jpi,1:jpj,1:jpka,jptime,jptq), &
& tke_abl (1:jpi,1:jpj,1:jpka,jptime ), &
& avm_abl (1:jpi,1:jpj,1:jpka ), &
& avt_abl (1:jpi,1:jpj,1:jpka ), &
& mxld_abl(1:jpi,1:jpj,1:jpka ), &
& mxlm_abl(1:jpi,1:jpj,1:jpka ), &
& fft_abl (1:jpi,1:jpj ), &
& pblh (1:jpi,1:jpj ), &
& msk_abl (1:jpi,1:jpj ), &
& rest_eq (1:jpi,1:jpj ), &
& e3t_abl (1:jpka), e3w_abl(1:jpka) , &
& ght_abl (1:jpka), ghw_abl(1:jpka) , STAT=ierr )
!
abl_alloc = ierr
IF( abl_alloc /= 0 ) CALL ctl_warn('abl_alloc: failed to allocate arrays')
!
END FUNCTION abl_alloc
!!======================================================================
END MODULE abl