159 real,
intent(inout),
dimension(:,:) :: h_shelf, area_shelf_h, hmask
161 type(param_file_type),
intent(in) :: pf
163 character(len=40) :: mdl =
"initialize_ice_shelf_thickness_channel" 164 real :: max_draft, min_draft, flat_shelf_width, c1, slope_pos
165 real :: edge_pos, shelf_slope_scale, rho_ocean
166 integer :: i, j, jsc, jec, jsd, jed, jedg, nyh, isc, iec, isd, ied
169 jsc = g%jsc ; jec = g%jec ; isc = g%isc ; iec = g%iec
170 jsd = g%jsd ; jed = g%jed ; isd = g%isd ; ied = g%ied
171 nyh = g%domain%njhalo ; jedg = g%domain%njglobal+nyh
174 call mom_mesg(mdl//
": setting thickness")
176 call get_param(pf, mdl,
"SHELF_MAX_DRAFT", max_draft, &
177 units=
"m", default=1.0)
178 call get_param(pf, mdl,
"SHELF_MIN_DRAFT", min_draft, &
179 units=
"m", default=1.0)
180 call get_param(pf, mdl,
"FLAT_SHELF_WIDTH", flat_shelf_width, &
181 units=
"axis_units", default=0.0)
182 call get_param(pf, mdl,
"SHELF_SLOPE_SCALE", shelf_slope_scale, &
183 units=
"axis_units", default=0.0)
184 call get_param(pf, mdl,
"SHELF_EDGE_POS_0", edge_pos, &
185 units=
"axis_units", default=0.0)
187 slope_pos = edge_pos - flat_shelf_width
188 c1 = 0.0 ;
if (shelf_slope_scale > 0.0) c1 = 1.0 / shelf_slope_scale
192 if (((j+j_off) <= jedg) .AND. ((j+j_off) >= nyh+1))
then 196 if ((j.ge.jsc) .and. (j.le.jec))
then 198 if (g%geoLonCu(i-1,j) >= edge_pos)
then 201 area_shelf_h(i,j) = 0.0
205 if (g%geoLonCu(i,j) > edge_pos)
then 206 area_shelf_h(i,j) = g%areaT(i,j) * (edge_pos - g%geoLonCu(i-1,j)) / &
207 (g%geoLonCu(i,j) - g%geoLonCu(i-1,j))
210 area_shelf_h(i,j) = g%areaT(i,j)
214 if (g%geoLonT(i,j) > slope_pos)
then 215 h_shelf(i,j) = min_draft
221 h_shelf(i,j) = (min_draft + &
222 (max_draft - min_draft) * &
223 min(1.0, (c1*(slope_pos - g%geoLonT(i,j)))**2) )
229 if ((i+g%idg_offset) .eq. g%domain%nihalo+1)
then Ocean grid type. See mom_grid for details.