From 60f1a4b0a73c4125788f03b9f92dc1ce538626c1 Mon Sep 17 00:00:00 2001 From: Daria Gladskikh <daria.gladskikh@gmail.com> Date: Fri, 20 Dec 2024 01:16:06 +0300 Subject: [PATCH] unstable in p-ph dyn --- obl_pph.f90 | 2 +- obl_pph_dyn.f90 | 31 +++++++++++++++++++++++++++++-- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/obl_pph.f90 b/obl_pph.f90 index ceebd3d..3c27ca8 100644 --- a/obl_pph.f90 +++ b/obl_pph.f90 @@ -42,7 +42,7 @@ module obl_pph real :: Kh_b = 0.00001 !< background eddy diffusivity, [m**2 / s] real :: Km_unstable = 100.0 !< unstable eddy viscosity, [m**2 / s] *: - real :: Kh_unstable = 100.0 !< unstable eddy diffusivity, [m**2 / s], *: INMCM: 5.0 * 0.01 + real :: Kh_unstable = 100.0 !< unstable eddy diffusivity, [m**2 / s], *: real :: kappa = 0.4 !< von Karman constant, [n/d] real :: PrT0 = 1.0 !< neutral Prandtl number, [n/d] diff --git a/obl_pph_dyn.f90 b/obl_pph_dyn.f90 index 2c141a4..f97670f 100644 --- a/obl_pph_dyn.f90 +++ b/obl_pph_dyn.f90 @@ -39,6 +39,9 @@ module obl_pph_dyn real :: Km_b = 0.0001 !< background eddy viscosity, [m**2 / s], *: INMCM: 5 * 10**(-6) real :: Kh_b = 0.00001 !< background eddy diffusivity, [m**2 / s] + real :: Km_unstable = 100.0 !< unstable eddy viscosity, [m**2 / s] *: + real :: Kh_unstable = 100.0 !< unstable eddy diffusivity, [m**2 / s], *: + real :: C_l = 4.0 / 9.0 !< length scale tuning constant, [n/d], *: = (4.0 / pi^2) in Obukhov length scale real :: kappa = 0.4 !< von Karman constant @@ -150,7 +153,11 @@ module obl_pph_dyn Km_0 = param%C_l * U_dynH * param%kappa * mld / 2.0 do k = 1, cz - Km(k) = Km_0 / (1.0 + param%alpha * Ri_grad(k))**(param%n) + param%Km_b + if (Ri_grad(k) >= 0.0) then + Km(k) = Km_0 / (1.0 + param%alpha * Ri_grad(k))**(param%n) + param%Km_b + else + Km(k) = param%Km_unstable + endif end do end subroutine @@ -190,7 +197,11 @@ module obl_pph_dyn Kh_0 = param%C_l * U_dynH * param%kappa * mld / 2.0 do k = 1, cz - Kh(k) = Kh_0 / (1.0 + param%alpha * Ri_grad(k))**(param%n + 1.0) + param%Kh_b + if (Ri_grad(k) >= 0.0) then + Kh(k) = Kh_0 / (1.0 + param%alpha * Ri_grad(k))**(param%n + 1.0) + param%Kh_b + else + Kh(k) = param%Kh_unstable + endif end do end subroutine @@ -241,6 +252,22 @@ call c_config_is_varname(trim(tag)//".alpha"//C_NULL_CHAR, status) return end if endif + call c_config_is_varname(trim(tag)//".Km_unstable"//C_NULL_CHAR, status) + if (status /= 0) then + call c_config_get_float(trim(tag)//".Km_unstable"//C_NULL_CHAR, param%Km_unstable, status) + if (status == 0) then + ierr = 1 ! signal ERROR + return + end if + endif + call c_config_is_varname(trim(tag)//".Kh_unstable"//C_NULL_CHAR, status) + if (status /= 0) then + call c_config_get_float(trim(tag)//".Kh_unstable"//C_NULL_CHAR, param%Kh_unstable, status) + if (status == 0) then + ierr = 1 ! signal ERROR + return + end if + endif call c_config_is_varname(trim(tag)//".C_l"//C_NULL_CHAR, status) if (status /= 0) then call c_config_get_float(trim(tag)//".C_l"//C_NULL_CHAR, param%C_l, status) -- GitLab