Skip to content
Snippets Groups Projects
Commit e1c710d6 authored by Виктория Суязова's avatar Виктория Суязова Committed by Anna Shestakova
Browse files

fix maxiners

parent 3b922508
No related branches found
No related tags found
No related merge requests found
...@@ -230,6 +230,7 @@ contains ...@@ -230,6 +230,7 @@ contains
real sigma_w, sigma_r real sigma_w, sigma_r
real S_mean, S_salt real S_mean, S_salt
real z0_m1 real z0_m1
integer i
#ifdef SFX_CHECK_NAN #ifdef SFX_CHECK_NAN
real NaN real NaN
#endif #endif
...@@ -288,31 +289,28 @@ contains ...@@ -288,31 +289,28 @@ contains
h0_m, h0_t, B) h0_m, h0_t, B)
! --- define snow consentration ! --- define snow consentration
call get_sigma(sigma_r, sigma_w, rho_air, rho_s) !call get_sigma(sigma_r, sigma_w, rho_air, rho_s)
call get_w_snow(w_snow, sigma_w, g, d_s, nu_air) !call get_w_snow(w_snow, sigma_w, g, d_s, nu_air)
call get_h_salt(h_salt, u_dyn0) !call get_h_salt(h_salt, u_dyn0)
call get_S_salt(S_salt, u_dyn0, u_thsnow, g, h_salt) !call get_S_salt(S_salt, u_dyn0, u_thsnow, g, h_salt)
call get_S_mean(S_mean, S_salt, h_salt, h, w_snow, u_dyn0) !call get_S_mean(S_mean, S_salt, h_salt, h, w_snow, u_dyn0)
deltaS=S_salt-S_mean
Ri_sn = (g * sigma_r * deltaS * h) / U**2
!deltaS=S_salt-S_mean
!Ri_sn = (g * sigma_r * deltaS * h) / U**2
Ri_sn=0.0
! --- get the fluxes ! --- get the fluxes
! ---------------------------------------------------------------------------- ! ----------------------------------------------------------------------------
!write(*,*) 'surface_type', surface_type
if (Rib > 0.0) then if (Rib > 0.0) then
! --- stable stratification block ! --- stable stratification block
! --- restrict bulk Ri value ! --- restrict bulk Ri value
! *: note that this value is written to output ! *: note that this value is written to output
! Rib = min(Rib, Rib_max) ! Rib = min(Rib, Rib_max)
do i = 1, maxiters do i = 1, numerics%maxiters_convection
if (surface_type == surface_snow) then if (surface_type == surface_snow) then
write(*,*) 'sfx_snow1', Ri_sn, Rib, U, deltaS, i !write(*,*) 'RIsnow', Rib, Ri_sn
!write(*,*) 'sfx_snow2', deltaS, u_dyn0, S_mean
Rib=Rib+Ri_sn Rib=Rib+Ri_sn
endif endif
...@@ -327,6 +325,9 @@ contains ...@@ -327,6 +325,9 @@ contains
Udyn = kappa * U / (log(h / z0_m) - (psi_m - psi0_m)) Udyn = kappa * U / (log(h / z0_m) - (psi_m - psi0_m))
Tdyn = kappa * dT * Pr_t_0_inv / (log(h / z0_t) - (psi_h - psi0_h)) Tdyn = kappa * dT * Pr_t_0_inv / (log(h / z0_t) - (psi_h - psi0_h))
call get_sigma(sigma_r, sigma_w, rho_air, rho_s)
call get_w_snow(w_snow, sigma_w, g, d_s, nu_air)
call get_h_salt(h_salt, Udyn) call get_h_salt(h_salt, Udyn)
call get_S_salt(S_salt, Udyn, u_thsnow, g, h_salt) call get_S_salt(S_salt, Udyn, u_thsnow, g, h_salt)
call get_S_mean(S_mean, S_salt, h_salt, h, w_snow, Udyn) call get_S_mean(S_mean, S_salt, h_salt, h, w_snow, Udyn)
...@@ -336,6 +337,7 @@ contains ...@@ -336,6 +337,7 @@ contains
Ri_sn = (g * sigma_r * deltaS * h) / U**2 Ri_sn = (g * sigma_r * deltaS * h) / U**2
end do end do
!write(*,*) 'sfx_snow1', Ri_sn, Rib, Udyn, S_salt, S_mean
else if (Rib < Rib_conv_lim) then else if (Rib < Rib_conv_lim) then
! --- strong instability block ! --- strong instability block
...@@ -384,10 +386,15 @@ contains ...@@ -384,10 +386,15 @@ contains
Pr_t_inv = phi_m / phi_h Pr_t_inv = phi_m / phi_h
! --- setting output ! --- setting output
!sfx = sfxDataType(zeta = zeta, Rib = Rib, &
! Re = Re, B = B, z0_m = z0_m, z0_t = z0_t, &
! Rib_conv_lim = Rib_conv_lim, &
! Cm = Cm, Ct = Ct, Km = Km, Pr_t_inv = Pr_t_inv)
sfx = sfxDataType(zeta = zeta, Rib = Rib, & sfx = sfxDataType(zeta = zeta, Rib = Rib, &
Re = Re, B = B, z0_m = z0_m, z0_t = z0_t, & Re = Ri_sn, B = B, z0_m = z0_m, z0_t = z0_t, &
Rib_conv_lim = Rib_conv_lim, & Rib_conv_lim = S_mean, &
Cm = Cm, Ct = Ct, Km = Km, Pr_t_inv = Pr_t_inv) Cm = Cm, Ct = Ct, Km = S_salt, Pr_t_inv = Udyn)
end subroutine get_surface_fluxes end subroutine get_surface_fluxes
! -------------------------------------------------------------------------------- ! --------------------------------------------------------------------------------
...@@ -418,6 +425,7 @@ contains ...@@ -418,6 +425,7 @@ contains
real, intent(in) :: S_salt, h_salt, z, w_snow, u_dyn0 real, intent(in) :: S_salt, h_salt, z, w_snow, u_dyn0
! ---------------------------------------------------------------------------- ! ----------------------------------------------------------------------------
S_mean = S_salt * (z/h_salt)**(-w_snow/(kappa*u_dyn0)) S_mean = S_salt * (z/h_salt)**(-w_snow/(kappa*u_dyn0))
!write(*,*) 'Smean_Udyn', S_mean, u_dyn0
end subroutine end subroutine
subroutine get_S_salt(S_salt, u_dyn0, u_thsnow, g, h_salt) subroutine get_S_salt(S_salt, u_dyn0, u_thsnow, g, h_salt)
...@@ -430,6 +438,7 @@ contains ...@@ -430,6 +438,7 @@ contains
if (u_dyn0>u_thsnow) then if (u_dyn0>u_thsnow) then
qs = (u_dyn0*u_dyn0-u_thsnow*u_thsnow)/(Csn*u_dyn0*g*h_salt) qs = (u_dyn0*u_dyn0-u_thsnow*u_thsnow)/(Csn*u_dyn0*g*h_salt)
S_salt=qs/(qs+rho_s/rho_air) S_salt=qs/(qs+rho_s/rho_air)
!write(*,*) 'S_salt', S_salt
else else
S_salt=0.0 S_salt=0.0
endif endif
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment