Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
O
ocean-mixing
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
inmcm-mirror
ocean-mixing
Commits
16c558b3
Commit
16c558b3
authored
7 months ago
by
Evgeny Mortikov
Browse files
Options
Downloads
Patches
Plain Diff
turbulence common module update
parent
6663a5b1
No related branches found
No related tags found
No related merge requests found
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
CMakeLists.txt
+1
-1
1 addition, 1 deletion
CMakeLists.txt
obl_k_epsilon.f90
+6
-4
6 additions, 4 deletions
obl_k_epsilon.f90
obl_pph.f90
+6
-4
6 additions, 4 deletions
obl_pph.f90
obl_pph_dyn.f90
+6
-4
6 additions, 4 deletions
obl_pph_dyn.f90
obl_turb_common.f90
+81
-96
81 additions, 96 deletions
obl_turb_common.f90
with
100 additions
and
109 deletions
CMakeLists.txt
+
1
−
1
View file @
16c558b3
...
...
@@ -42,7 +42,7 @@ set(SOURCES
obl_state_eq.f90
obl_init.f90
obl_bc.f90
obl_turb_c
losure
.f90
obl_turb_c
ommon
.f90
obl_diag.f90
obl_k_epsilon.f90
obl_pph.f90
...
...
This diff is collapsed.
Click to expand it.
obl_k_epsilon.f90
+
6
−
4
View file @
16c558b3
...
...
@@ -5,7 +5,7 @@ module obl_k_epsilon
use
obl_math
use
obl_grid
use
obl_bc
use
obl_turb_c
losure
use
obl_turb_c
ommon
! directives list
implicit
none
...
...
@@ -22,6 +22,8 @@ module obl_k_epsilon
real
::
C3_eps
=
-0.40
!< eps-eq.: buoyancy constant (-0.4 stable stratification or 1.14 unstable stratification)
real
::
Sch_TKE
=
1.0
!< Schmidt number for TKE
real
::
Sch_eps
=
1.11
!< Scmidt number for eps
real
::
c_S2_min
=
1e-5
!< min shear frequency, [(1/s)**2]
end
type
contains
...
...
@@ -39,9 +41,9 @@ module obl_k_epsilon
call
get_N2
(
N2
,
Rho
,
bc
%
Rho_dyn0
,
bc
%
Rho_dynH
,
&
param
%
kappa
,
param
%
PrT0
,
grid
)
call
get_S2
(
S2
,
U
,
V
,
&
bc
%
u_momentum_fluxH
,
bc
%
v_momentum_fluxH
,
bc
%
u_momentum_flux0
,
bc
%
u_momentum_flux0
,
grid
)
call
get_Ri_gradient
(
Ri_grad
,
N2
,
S2
,
grid
)
call
get_S2
(
S2
,
U
,
V
,
bc
%
U_dyn0
,
bc
%
U_dynH
,
&
param
%
kappa
,
grid
)
call
get_Ri_gradient
(
Ri_grad
,
N2
,
S2
,
param
%
c_S2_min
,
grid
)
end
subroutine
! --------------------------------------------------------------------------------
...
...
This diff is collapsed.
Click to expand it.
obl_pph.f90
+
6
−
4
View file @
16c558b3
...
...
@@ -4,7 +4,7 @@ module obl_pph
! modules used
use
obl_grid
use
obl_bc
use
obl_turb_c
losure
use
obl_turb_c
ommon
! directives list
implicit
none
...
...
@@ -29,6 +29,8 @@ module obl_pph
real
::
kappa
=
0.4
!< von Karman constant, [n/d]
real
::
PrT0
=
1.0
!< neutral Prandtl number, [n/d]
real
::
c_S2_min
=
1e-5
!< min shear frequency, [(1/s)**2]
end
type
contains
...
...
@@ -48,9 +50,9 @@ module obl_pph
call
get_N2
(
N2
,
Rho
,
bc
%
rho_dyn0
,
bc
%
rho_dynH
,
&
param
%
kappa
,
param
%
PrT0
,
grid
)
call
get_S2
(
S2
,
U
,
V
,
&
bc
%
u_momentum_fluxH
,
bc
%
v_momentum_fluxH
,
bc
%
u_momentum_flux0
,
bc
%
u_momentum_flux0
,
grid
)
call
get_Ri_gradient
(
Ri_grad
,
N2
,
S2
,
grid
)
call
get_S2
(
S2
,
U
,
V
,
bc
%
U_dyn0
,
bc
%
U_dynH
,
&
param
%
kappa
,
grid
)
call
get_Ri_gradient
(
Ri_grad
,
N2
,
S2
,
param
%
c_S2_min
,
grid
)
end
subroutine
! --------------------------------------------------------------------------------
...
...
This diff is collapsed.
Click to expand it.
obl_pph_dyn.f90
+
6
−
4
View file @
16c558b3
...
...
@@ -5,7 +5,7 @@ module obl_pph_dyn
use
obl_grid
use
obl_bc
use
obl_diag
use
obl_turb_c
losure
use
obl_turb_c
ommon
! directives list
implicit
none
...
...
@@ -19,6 +19,8 @@ module obl_pph_dyn
real
::
kappa
=
0.4
!< von Karman constant
real
::
PrT0
=
1.0
!< turbulent Prandtl number, *: probably redundant
real
::
c_S2_min
=
1e-5
!< min shear frequency, [(1/s)**2]
end
type
contains
...
...
@@ -36,9 +38,9 @@ module obl_pph_dyn
call
get_N2
(
N2
,
Rho
,
bc
%
Rho_dyn0
,
bc
%
Rho_dynH
,
&
param
%
kappa
,
param
%
PrT0
,
grid
)
call
get_S2
(
S2
,
U
,
V
,
&
bc
%
u_momentum_fluxH
,
bc
%
v_momentum_fluxH
,
bc
%
u_momentum_flux0
,
bc
%
u_momentum_flux0
,
grid
)
call
get_Ri_gradient
(
Ri_grad
,
N2
,
S2
,
grid
)
call
get_S2
(
S2
,
U
,
V
,
bc
%
U_dyn0
,
bc
%
U_dynH
,
&
param
%
kappa
,
grid
)
call
get_Ri_gradient
(
Ri_grad
,
N2
,
S2
,
param
%
c_S2_min
,
grid
)
end
subroutine
! --------------------------------------------------------------------------------
...
...
This diff is collapsed.
Click to expand it.
obl_turb_c
losure
.f90
→
obl_turb_c
ommon
.f90
+
81
−
96
View file @
16c558b3
module
obl_turb_c
losure
!< @brief c
alculate
turbulen
t parameter
s
module
obl_turb_c
ommon
!< @brief c
ommon
turbulen
ce model subroutine
s
! --------------------------------------------------------------------------------
! modules used
! --------------------------------------------------------------------------------
use
obl_grid
use
obl_math
use
obl_common_phys
use
obl_state_eq
! directives list
implicit
none
...
...
@@ -15,19 +12,13 @@ module obl_turb_closure
! public interface
! --------------------------------------------------------------------------------
public
::
get_N2_vec
,
get_S2_vec
,
get_Ri_gradient_vec
public
::
get_N2
,
get_S2
,
get_Ri_gradient
public
::
get_N2_vec
,
get_S2_vec
,
get_Ri_gradient_vec
public
::
get_TKE_production
,
get_TKE_buoyancy
public
::
get_TKE_production_vec
,
get_TKE_buoyancy_vec
! --------------------------------------------------------------------------------
real
,
parameter
::
Ri_grad_min
=
0.0000001
!< Richardson gradient number mainimum value
real
,
parameter
::
Ri_grad_max
=
10
!< Richardson gradient number maximum value
real
,
parameter
::
c_S2_min
=
1e-5
!1e-5
real
,
parameter
::
kappa_ri
=
0.4
!? где задавать каппу?
real
,
parameter
::
PrT_ri
=
0.8
!? прандль будет здесь публичный!!!
contains
...
...
@@ -35,10 +26,13 @@ module obl_turb_closure
subroutine
get_N2
(
N2
,
Rho
,
rho_dyn0
,
rho_dynH
,
kappa
,
PrT0
,
grid
)
!< @brief calculate square of buoyancy frequency
! ----------------------------------------------------------------------------
use
obl_state_eq
use
obl_common_phys
type
(
gridDataType
),
intent
(
in
)
::
grid
real
,
intent
(
out
)
::
N2
(
grid
%
cz
)
!< square of buoyancy frequency, [s**(-2)]
real
,
intent
(
in
)
::
Rho
(
grid
%
cz
)
!< density, [kg/m**3]
real
,
dimension
(
grid
%
cz
),
intent
(
out
)
::
N2
!< square of buoyancy frequency, [s**(-2)]
real
,
dimension
(
grid
%
cz
),
intent
(
in
)
::
Rho
!< density, [kg/m**3]
real
,
intent
(
in
)
::
rho_dyn0
,
rho_dynH
!< density dynamic scales, [kg/m**3]
real
,
intent
(
in
)
::
kappa
!< von Karman constant, [n/d]
...
...
@@ -63,6 +57,9 @@ module obl_turb_closure
subroutine
get_N2_vec
(
N2
,
Rho
,
rho_dyn0
,
rho_dynH
,
kappa
,
PrT0
,
dz
,
cz
)
!< @brief calculate square of buoyancy frequency
! ----------------------------------------------------------------------------
use
obl_state_eq
use
obl_common_phys
integer
,
intent
(
in
)
::
cz
!< number of z-steps
real
,
dimension
(
cz
),
intent
(
out
)
::
N2
!< square of buoyancy frequency, [s**(-2)]
...
...
@@ -73,7 +70,7 @@ module obl_turb_closure
real
,
intent
(
in
)
::
kappa
!< von Karman constant, [n/d]
real
,
intent
(
in
)
::
PrT0
!< neutral turbulent Prandtl number, [n/d]
real
::
dzph
(
cz
)
,
dzmh
(
cz
)
!< half-sums of grid steps, [m]
real
,
dimension
(
cz
)
::
dzph
,
dzmh
!< half-sums of grid steps, [m]
integer
::
k
! ----------------------------------------------------------------------------
...
...
@@ -97,107 +94,95 @@ module obl_turb_closure
end
subroutine
! ----------------------------------------------------------------------------
subroutine
get_S2
(
S2
,
U
,
V
,
flux_u_surf
,
flux_u_bot
,
flux_v_surf
,
flux_v_bot
,
grid
)
subroutine
get_S2
(
S2
,
U
,
V
,
U_dyn0
,
U_dynH
,
kappa
,
grid
)
!< @brief calculate square of shear frequency
! ----------------------------------------------------------------------------
type
(
gridDataType
),
intent
(
in
)
::
grid
real
,
intent
(
out
)
::
S2
(
grid
%
cz
)
!< square of shear frequency, [s**(-2)]
real
,
intent
(
in
)
::
U
(
grid
%
cz
),
V
(
grid
%
cz
)
!< currents, [m/s]
real
::
dU_tmp
(
grid
%
cz
),
dV_tmp
(
grid
%
cz
)
!< temporary for currents
real
,
intent
(
in
)
::
flux_u_surf
,
flux_u_bot
!< [(m/s)**2]
real
,
intent
(
in
)
::
flux_v_surf
,
flux_v_bot
!< [(m/s)**2]
real
,
dimension
(
grid
%
cz
),
intent
(
out
)
::
S2
!< square of shear frequency, [s**(-2)]
real
,
dimension
(
grid
%
cz
),
intent
(
in
)
::
U
,
V
!< currents velocity, [m/s]
real
::
dz_plus
(
grid
%
cz
),
dz_minus
(
grid
%
cz
)
!< half-sums for depth-step dz
integer
::
k
!< counter
! ----------------------------------------------------------------------------
real
,
intent
(
in
)
::
U_dyn0
,
U_dynH
!< dynamic velocity, [m/s]
real
,
intent
(
in
)
::
kappa
!< von Karman constant, [n/d]
do
k
=
1
,
grid
%
cz
-
1
dz_plus
(
k
)
=
(
grid
%
dz
(
k
)
+
grid
%
dz
(
k
+1
))/
2.
end
do
do
k
=
2
,
grid
%
cz
dz_minus
(
k
)
=
(
grid
%
dz
(
k
)
+
grid
%
dz
(
k
-1
))/
2.
end
do
real
::
Ugrad
,
Vgrad
integer
::
k
! ----------------------------------------------------------------------------
do
k
=
2
,
grid
%
cz
-
1
dU_tmp
(
k
)
=
0.5
*
((
U
(
k
+1
)
-
U
(
k
))
/
(
dz_plus
(
k
))
+
(
U
(
k
)
-
U
(
k
-1
))
/
dz_minus
(
k
))
dV_tmp
(
k
)
=
0.5
*
((
V
(
k
+1
)
-
V
(
k
))
/
(
dz_plus
(
k
))
+
(
V
(
k
)
-
V
(
k
-1
))/
dz_minus
(
k
))
S2
(
k
)
=
dU_tmp
(
k
)
**
2
+
dV_tmp
(
k
)
**
2
Ugrad
=
0.5
*
((
U
(
k
+1
)
-
U
(
k
))
/
(
grid
%
dzph
(
k
))
+
(
U
(
k
)
-
U
(
k
-1
))
/
grid
%
dzmh
(
k
))
Vgrad
=
0.5
*
((
V
(
k
+1
)
-
V
(
k
))
/
(
grid
%
dzph
(
k
))
+
(
V
(
k
)
-
V
(
k
-1
))
/
grid
%
dzmh
(
k
))
S2
(
k
)
=
Ugrad
**
2
+
Vgrad
**
2
end
do
dU_tmp
(
1
)
=
sqrt
(
flux_u_bot
)
/
(
kappa_ri
*
grid
%
dz
(
1
)/
2.0
)
dV_tmp
(
1
)
=
sqrt
(
flux_v_bot
)
/
(
kappa_ri
*
grid
%
dz
(
1
)/
2.0
)
S2
(
1
)
=
dU_tmp
(
1
)
**
2.0
+
dV_tmp
(
1
)
**
2.0
dU_tmp
(
grid
%
cz
)
=
sqrt
(
flux_v_surf
)
/
(
kappa_ri
*
grid
%
dz
(
grid
%
cz
)/
2.0
)
dV_tmp
(
grid
%
cz
)
=
sqrt
(
flux_v_surf
)
/
(
kappa_ri
*
grid
%
dz
(
grid
%
cz
)/
2.0
)
S2
(
grid
%
cz
)
=
dU_tmp
(
grid
%
cz
)
**
2.0
+
dV_tmp
(
grid
%
cz
)
**
2.0
!< bottom layer
S2
(
1
)
=
(
U_dyn0
/
(
kappa
*
grid
%
dz
(
1
)/
2.0
))
**
2
!< surface layer
S2
(
grid
%
cz
)
=
(
U_dynH
/
(
kappa
*
grid
%
dz
(
grid
%
cz
)/
2.0
))
**
2
call
limit_min_array
(
S2
,
c_S2_min
,
grid
%
cz
)
end
subroutine
! ----------------------------------------------------------------------------
subroutine
get_S2_vec
(
S2
,
U
,
V
,
flux_u_surf
,
flux_u_bot
,
flux_v_surf
,
flux_v_bot
,
dz
,
n
z
)
subroutine
get_S2_vec
(
S2
,
U
,
V
,
U_dyn0
,
U_dynH
,
kappa
,
dz
,
c
z
)
!< @brief calculate square of shear frequency
! ----------------------------------------------------------------------------
real
,
intent
(
out
)
::
S2
(
nz
)
!< square of shear frequency, [s**(-2)]
real
,
intent
(
in
)
::
U
(
nz
),
V
(
nz
)
!< currents, [m/s]
real
::
dU_tmp
(
nz
),
dV_tmp
(
nz
)
!< temporary for currents
integer
,
intent
(
in
)
::
nz
!< number of z-steps
real
,
intent
(
in
)
::
dz
(
nz
)
!< depth(z) step [m]
real
,
intent
(
in
)
::
flux_u_surf
,
flux_u_bot
!< [(m/s)**2]
real
,
intent
(
in
)
::
flux_v_surf
,
flux_v_bot
!< [(m/s)**2]
real
::
dz_plus
(
nz
),
dz_minus
(
nz
)
!< half-sums for depth-step dz
integer
::
k
!< counter
integer
,
intent
(
in
)
::
cz
!< number of z-steps
real
,
dimension
(
cz
),
intent
(
out
)
::
S2
!< square of shear frequency, [s**(-2)]
real
,
dimension
(
cz
),
intent
(
in
)
::
U
,
V
!< currents velocity, [m/s]
real
,
dimension
(
cz
),
intent
(
in
)
::
dz
!< grid steps [m]
real
,
intent
(
in
)
::
U_dyn0
,
U_dynH
!< dynamic velocity, [m/s]
real
,
intent
(
in
)
::
kappa
!< von Karman constant, [n/d]
real
,
dimension
(
cz
)
::
dzph
,
dzmh
!< half-sums of grid steps, [m]
real
::
Ugrad
,
Vgrad
integer
::
k
! ----------------------------------------------------------------------------
do
k
=
1
,
nz
-
1
dz
_plus
(
k
)
=
(
dz
(
k
)
+
dz
(
k
+1
))
/
2.
do
k
=
1
,
cz
-
1
dz
ph
(
k
)
=
(
dz
(
k
)
+
dz
(
k
+1
))
/
2.
0
end
do
do
k
=
2
,
nz
dz_minus
(
k
)
=
(
dz
(
k
)
+
dz
(
k
-1
))/
2.
do
k
=
2
,
cz
dzmh
(
k
)
=
(
dz
(
k
)
+
dz
(
k
-1
))
/
2.0
end
do
do
k
=
2
,
nz
-
1
dU_tmp
(
k
)
=
0.5
*
((
U
(
k
+1
)
-
U
(
k
))
/
(
dz
_plus
(
k
))
+
(
U
(
k
)
-
U
(
k
-1
))
/
dz
_minus
(
k
))
dV_tmp
(
k
)
=
0.5
*
((
V
(
k
+1
)
-
V
(
k
))
/
(
dz
_plus
(
k
))
+
(
V
(
k
)
-
V
(
k
-1
))/
dz
_minus
(
k
))
S2
(
k
)
=
dU_tmp
(
k
)
**
2
+
dV_tmp
(
k
)
**
2
do
k
=
2
,
cz
-
1
Ugrad
=
0.5
*
((
U
(
k
+1
)
-
U
(
k
))
/
(
dz
ph
(
k
))
+
(
U
(
k
)
-
U
(
k
-1
))
/
dz
mh
(
k
))
Vgrad
=
0.5
*
((
V
(
k
+1
)
-
V
(
k
))
/
(
dz
ph
(
k
))
+
(
V
(
k
)
-
V
(
k
-1
))
/
dz
mh
(
k
))
S2
(
k
)
=
Ugrad
**
2
+
Vgrad
**
2
end
do
dU_tmp
(
1
)
=
sqrt
(
flux_u_bot
)
/
(
kappa_ri
*
dz
(
1
)/
2.0
)
dV_tmp
(
1
)
=
sqrt
(
flux_v_bot
)
/
(
kappa_ri
*
dz
(
1
)/
2.0
)
S2
(
1
)
=
dU_tmp
(
1
)
**
2.0
+
dV_tmp
(
1
)
**
2.0
dU_tmp
(
nz
)
=
sqrt
(
flux_v_surf
)
/
(
kappa_ri
*
dz
(
nz
)/
2.0
)
dV_tmp
(
nz
)
=
sqrt
(
flux_v_surf
)
/
(
kappa_ri
*
dz
(
nz
)/
2.0
)
S2
(
nz
)
=
dU_tmp
(
nz
)
**
2.0
+
dV_tmp
(
nz
)
**
2.0
call
limit_min_array
(
S2
,
c_S2_min
,
nz
)
!< bottom layer
S2
(
1
)
=
(
U_dyn0
/
(
kappa
*
dz
(
1
)/
2.0
))
**
2
!< surface layer
S2
(
cz
)
=
(
U_dynH
/
(
kappa
*
dz
(
cz
)/
2.0
))
**
2
end
subroutine
! ----------------------------------------------------------------------------
subroutine
get_Ri_gradient
(
Ri_grad
,
N2
,
S2
,
grid
)
subroutine
get_Ri_gradient
(
Ri_grad
,
N2
,
S2
,
c_S2_min
,
grid
)
!< @brief calculate Richardson gradient number
! ----------------------------------------------------------------------------
type
(
gridDataType
),
intent
(
in
)
::
grid
real
,
intent
(
out
)
::
Ri_grad
(
grid
%
cz
)
!< Richardson gradient number
real
,
intent
(
in
)
::
N2
(
grid
%
cz
),
S2
(
grid
%
cz
)
!< square of buoyancy and shear frequency, [s**(-2)]
real
,
dimension
(
grid
%
cz
),
intent
(
out
)
::
Ri_grad
!< Richardson gradient number
real
,
dimension
(
grid
%
cz
),
intent
(
in
)
::
N2
,
S2
!< square of buoyancy and shear frequency, [s**(-2)]
real
,
intent
(
in
)
::
c_S2_min
!< min S2 value
! ----------------------------------------------------------------------------
call
get_Ri_gradient_vec
(
Ri_grad
,
N2
,
S2
,
grid
%
cz
)
call
get_Ri_gradient_vec
(
Ri_grad
,
N2
,
S2
,
c_S2_min
,
grid
%
cz
)
end
subroutine
! ----------------------------------------------------------------------------
subroutine
get_Ri_gradient_vec
(
Ri_grad
,
N2
,
S2
,
cz
)
subroutine
get_Ri_gradient_vec
(
Ri_grad
,
N2
,
S2
,
c_S2_min
,
cz
)
!< @brief calculate Richardson gradient number
! ----------------------------------------------------------------------------
integer
,
intent
(
in
)
::
cz
!< number of z-steps
real
,
intent
(
out
)
::
Ri_grad
(
cz
)
!< Richardson gradient number
real
,
intent
(
in
)
::
N2
(
cz
),
S2
(
cz
)
!< square of buoyancy and shear frequency, [s**(-2)]
real
,
dimension
(
cz
),
intent
(
out
)
::
Ri_grad
!< Richardson gradient number
real
,
dimension
(
cz
),
intent
(
in
)
::
N2
,
S2
!< square of buoyancy and shear frequency, [s**(-2)]
real
,
intent
(
in
)
::
c_S2_min
!< min S2 value
integer
::
k
! ----------------------------------------------------------------------------
...
...
@@ -217,9 +202,9 @@ module obl_turb_closure
! ----------------------------------------------------------------------------
type
(
gridDataType
),
intent
(
in
)
::
grid
real
,
intent
(
in
)
::
S2
(
grid
%
cz
)
!< shear frequency ^ 2, [s^-2]
real
,
intent
(
in
)
::
Km
(
grid
%
cz
)
!< eddy viscosity for momentum, [m**2 / s]
real
,
intent
(
out
)
::
P_TKE
(
grid
%
cz
)
!< shear production of TKE, [m**2 / s**3]
real
,
dimension
(
grid
%
cz
),
intent
(
in
)
::
S2
!< shear frequency ^ 2, [s^-2]
real
,
dimension
(
grid
%
cz
),
intent
(
in
)
::
Km
!< eddy viscosity for momentum, [m**2 / s]
real
,
dimension
(
grid
%
cz
),
intent
(
out
)
::
P_TKE
!< shear production of TKE, [m**2 / s**3]
! ----------------------------------------------------------------------------
call
get_TKE_production_vec
(
P_TKE
,
Km
,
S2
,
grid
%
cz
)
...
...
@@ -230,9 +215,9 @@ module obl_turb_closure
!< @brief calculation of TKE production by shear
! ----------------------------------------------------------------------------
integer
,
intent
(
in
)
::
cz
!< number of z-steps
real
,
intent
(
in
)
::
S2
(
cz
)
!< shear frequency ^ 2, [s^-2]
real
,
intent
(
in
)
::
Km
(
cz
)
!< eddy viscosity for momentum, [m**2 / s]
real
,
intent
(
out
)
::
P_TKE
(
cz
)
!< shear production of TKE, [m**2 / s**3]
real
,
dimension
(
cz
),
intent
(
in
)
::
S2
!< shear frequency ^ 2, [s^-2]
real
,
dimension
(
cz
),
intent
(
in
)
::
Km
!< eddy viscosity for momentum, [m**2 / s]
real
,
dimension
(
cz
),
intent
(
out
)
::
P_TKE
!< shear production of TKE, [m**2 / s**3]
integer
::
k
! ----------------------------------------------------------------------------
...
...
@@ -248,9 +233,9 @@ module obl_turb_closure
! ----------------------------------------------------------------------------
type
(
gridDataType
),
intent
(
in
)
::
grid
real
,
intent
(
in
)
::
N2
(
grid
%
cz
)
!< buoyancy frequency ^ 2, [s^-2]
real
,
intent
(
in
)
::
Kh
(
grid
%
cz
)
!< eddy duffusivity for tracers, [m**2 / s]
real
,
intent
(
out
)
::
B_TKE
(
grid
%
cz
)
!< buoyancy production of TKE, [m**2 / s**3]
real
,
dimension
(
grid
%
cz
),
intent
(
in
)
::
N2
!< buoyancy frequency ^ 2, [s^-2]
real
,
dimension
(
grid
%
cz
),
intent
(
in
)
::
Kh
!< eddy duffusivity for tracers, [m**2 / s]
real
,
dimension
(
grid
%
cz
),
intent
(
out
)
::
B_TKE
!< buoyancy production of TKE, [m**2 / s**3]
! ----------------------------------------------------------------------------
call
get_TKE_buoyancy_vec
(
B_TKE
,
Kh
,
N2
,
grid
%
cz
)
...
...
@@ -261,9 +246,9 @@ module obl_turb_closure
!< @brief calculation of TKE buoyancy production
! ----------------------------------------------------------------------------
integer
,
intent
(
in
)
::
cz
!< number of z-steps
real
,
intent
(
in
)
::
N2
(
cz
)
!< buoyancy frequency ^ 2, [s^-2]
real
,
intent
(
in
)
::
Kh
(
cz
)
!< eddy duffusivity for tracers, [m**2 / s]
real
,
intent
(
out
)
::
B_TKE
(
cz
)
!< buoyancy production of TKE, [m**2 / s**3]
real
,
dimension
(
cz
),
intent
(
in
)
::
N2
!< buoyancy frequency ^ 2, [s^-2]
real
,
dimension
(
cz
),
intent
(
in
)
::
Kh
!< eddy duffusivity for tracers, [m**2 / s]
real
,
dimension
(
cz
),
intent
(
out
)
::
B_TKE
!< buoyancy production of TKE, [m**2 / s**3]
integer
::
k
! ----------------------------------------------------------------------------
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment