Initialize ice shelf thickness for a channel configuration.
147 type(ocean_grid_type),
intent(in) :: G
148 real,
dimension(SZDI_(G),SZDJ_(G)), &
149 intent(inout) :: h_shelf
150 real,
dimension(SZDI_(G),SZDJ_(G)), &
151 intent(inout) :: area_shelf_h
152 real,
dimension(SZDI_(G),SZDJ_(G)), &
153 intent(inout) :: hmask
155 type(unit_scale_type),
intent(in) :: US
156 type(param_file_type),
intent(in) :: PF
158 character(len=40) :: mdl =
"initialize_ice_shelf_thickness_channel" 159 real :: max_draft, min_draft, flat_shelf_width, c1, slope_pos
160 real :: edge_pos, shelf_slope_scale, Rho_ocean
161 integer :: i, j, jsc, jec, jsd, jed, jedg, nyh, isc, iec, isd, ied
164 jsc = g%jsc ; jec = g%jec ; isc = g%isc ; iec = g%iec
165 jsd = g%jsd ; jed = g%jed ; isd = g%isd ; ied = g%ied
166 nyh = g%domain%njhalo ; jedg = g%domain%njglobal+nyh
169 call mom_mesg(mdl//
": setting thickness")
171 call get_param(pf, mdl,
"SHELF_MAX_DRAFT", max_draft, &
172 units=
"m", default=1.0, scale=us%m_to_Z)
173 call get_param(pf, mdl,
"SHELF_MIN_DRAFT", min_draft, &
174 units=
"m", default=1.0, scale=us%m_to_Z)
175 call get_param(pf, mdl,
"FLAT_SHELF_WIDTH", flat_shelf_width, &
176 units=
"axis_units", default=0.0)
177 call get_param(pf, mdl,
"SHELF_SLOPE_SCALE", shelf_slope_scale, &
178 units=
"axis_units", default=0.0)
179 call get_param(pf, mdl,
"SHELF_EDGE_POS_0", edge_pos, &
180 units=
"axis_units", default=0.0)
188 slope_pos = edge_pos - flat_shelf_width
189 c1 = 0.0 ;
if (shelf_slope_scale > 0.0) c1 = 1.0 / shelf_slope_scale
194 if (((j+j_off) <= jedg) .AND. ((j+j_off) >= nyh+1))
then 198 if ((j >= jsc) .and. (j <= jec))
then 200 if (g%geoLonCu(i-1,j) >= edge_pos)
then 203 area_shelf_h(i,j) = 0.0
207 if (g%geoLonCu(i,j) > edge_pos)
then 208 area_shelf_h(i,j) = g%areaT(i,j) * (edge_pos - g%geoLonCu(i-1,j)) / &
209 (g%geoLonCu(i,j) - g%geoLonCu(i-1,j))
212 area_shelf_h(i,j) = g%areaT(i,j)
216 if (g%geoLonT(i,j) > slope_pos)
then 217 h_shelf(i,j) = min_draft
223 h_shelf(i,j) = (min_draft + &
224 (max_draft - min_draft) * &
225 min(1.0, (c1*(slope_pos - g%geoLonT(i,j)))**2) )
231 if ((i+g%idg_offset) == g%domain%nihalo+1)
then