10 implicit none ;
private 12 #include <MOM_memory.h> 13 #include "version_variable.h" 16 character(len=40) ::
mdl =
"baroclinic_zone_initialization" 23 subroutine bcz_params(G, param_file, S_ref, dSdz, delta_S, dSdx, T_ref, dTdz, &
24 delta_T, dTdx, L_zone, just_read_params)
27 real,
intent(out) :: S_ref
28 real,
intent(out) :: dSdz
29 real,
intent(out) :: delta_S
30 real,
intent(out) :: dSdx
31 real,
intent(out) :: T_ref
32 real,
intent(out) :: dTdz
33 real,
intent(out) :: delta_T
34 real,
intent(out) :: dTdx
35 real,
intent(out) :: L_zone
36 logical,
optional,
intent(in) :: just_read_params
40 just_read = .false. ;
if (
present(just_read_params)) just_read = just_read_params
43 call log_version(param_file,
mdl, version,
'Initialization of an analytic baroclinic zone')
45 call get_param(param_file,
mdl,
"S_REF", s_ref,
'Reference salinity', units=
'ppt', &
46 default=35., do_not_log=just_read)
47 call get_param(param_file,
mdl,
"DSDZ",dsdz,
'Salinity stratification',units=
'ppt/m', &
48 default=0.0, do_not_log=just_read)
49 call get_param(param_file,
mdl,
"DELTA_S",delta_s,
'Salinity difference across baroclinic zone', &
50 units=
'ppt', default=0.0, do_not_log=just_read)
51 call get_param(param_file,
mdl,
"DSDX",dsdx,
'Meridional salinity difference', &
52 units=
'ppt/'//trim(g%x_axis_units), default=0.0, do_not_log=just_read)
53 call get_param(param_file,
mdl,
"T_REF",t_ref,
'Reference temperature',units=
'C', &
54 default=10., do_not_log=just_read)
55 call get_param(param_file,
mdl,
"DTDZ",dtdz,
'Temperature stratification',units=
'C/m', &
56 default=0.0, do_not_log=just_read)
57 call get_param(param_file,
mdl,
"DELTA_T",delta_t,
'Temperature difference across baroclinic zone', &
58 units=
'C', default=0.0, do_not_log=just_read)
59 call get_param(param_file,
mdl,
"DTDX",dtdx,
'Meridional temperature difference', &
60 units=
'C/'//trim(g%x_axis_units), default=0.0, do_not_log=just_read)
61 call get_param(param_file,
mdl,
"L_ZONE",l_zone,
'Width of baroclinic zone', &
62 units=g%x_axis_units, default=0.5*g%len_lat, do_not_log=just_read)
71 real,
dimension(SZI_(G),SZJ_(G), SZK_(G)),
intent(out) :: T
72 real,
dimension(SZI_(G),SZJ_(G), SZK_(G)),
intent(out) :: S
73 real,
dimension(SZI_(G),SZJ_(G), SZK_(G)),
intent(in) :: h
75 logical,
optional,
intent(in) :: just_read_params
78 integer :: i, j, k, is, ie, js, je, nz
79 real :: T_ref, dTdz, dTdx, delta_T
80 real :: S_ref, dSdz, dSdx, delta_S
82 real :: zc, zi, x, xd, xs, y, yd, fn
86 is = g%isc ; ie = g%iec ; js = g%jsc ; je = g%jec ; nz = g%ke
87 just_read = .false. ;
if (
present(just_read_params)) just_read = just_read_params
89 call bcz_params(g, param_file, s_ref, dsdz, delta_s, dsdx, t_ref, dtdz, delta_t, dtdx, l_zone, just_read_params)
97 do j = g%jsc,g%jec ;
do i = g%isc,g%iec
99 x = g%geoLonT(i,j) - (g%west_lon + 0.5*g%len_lon)
101 y = g%geoLatT(i,j) - (g%south_lat + 0.5*g%len_lat)
104 xs = min(1., max(-1., x/l_zone))
105 fn = sin((0.5*pi)*xs)
111 zc = zi + 0.5*h(i,j,k)
113 t(i,j,k) = t_ref + dtdz * zc &
116 s(i,j,k) = s_ref + dsdz * zc &
Ocean grid type. See mom_grid for details.
Provides the ocean grid type.
subroutine bcz_params(G, param_file, S_ref, dSdz, delta_S, dSdx, T_ref, dTdz, delta_T, dTdx, L_zone, just_read_params)
Reads the parameters unique to this module.
Initial conditions for an idealized baroclinic zone.
subroutine, public closeparameterblock(CS)
subroutine, public openparameterblock(CS, blockName, desc)
subroutine, public baroclinic_zone_init_temperature_salinity(T, S, h, G, param_file, just_read_params)
Initialization of temperature and salinity with the baroclinic zone initial conditions.
character(len=40) mdl
This module's name.