191 class(GwfGwtExchangeType) :: this
193 class(BaseModelType),
pointer :: mb => null()
194 type(GwfModelType),
pointer :: gwfmodel => null()
195 type(GwtModelType),
pointer :: gwtmodel => null()
197 character(len=*),
parameter :: fmtdiserr = &
198 "('GWF and GWT Models do not have the same discretization for exchange&
200 & GWF Model has ', i0, ' user nodes and ', i0, ' reduced nodes.&
201 & GWT Model has ', i0, ' user nodes and ', i0, ' reduced nodes.&
202 & Ensure discretization packages, including IDOMAIN, are identical.')"
203 character(len=*),
parameter :: fmtidomerr = &
204 "('GWF and GWT Models do not have the same discretization for exchange&
206 & GWF Model and GWT Model have different IDOMAIN arrays.&
207 & Ensure discretization packages, including IDOMAIN, are identical.')"
210 mb => getbasemodelfromlist(basemodellist, this%m1_idx)
212 type is (gwfmodeltype)
217 mb => getbasemodelfromlist(basemodellist, this%m2_idx)
219 type is (gwtmodeltype)
224 if (gwtmodel%dis%nodes /= gwfmodel%dis%nodes .or. &
225 gwtmodel%dis%nodesuser /= gwfmodel%dis%nodesuser)
then
226 write (errmsg, fmtdiserr) trim(this%name), &
227 gwfmodel%dis%nodesuser, &
228 gwfmodel%dis%nodes, &
229 gwtmodel%dis%nodesuser, &
231 call store_error(errmsg, terminate=.true.)
235 select type (gwfdis => gwfmodel%dis)
237 select type (gwtdis => gwtmodel%dis)
239 if (.not. all(gwfdis%idomain == gwtdis%idomain))
then
240 write (errmsg, fmtidomerr) trim(this%name)
241 call store_error(errmsg, terminate=.true.)
245 select type (gwtdis => gwtmodel%dis)
247 if (.not. all(gwfdis%idomain == gwtdis%idomain))
then
248 write (errmsg, fmtidomerr) trim(this%name)
249 call store_error(errmsg, terminate=.true.)
253 select type (gwtdis => gwtmodel%dis)
255 if (.not. all(gwfdis%idomain == gwtdis%idomain))
then
256 write (errmsg, fmtidomerr) trim(this%name)
257 call store_error(errmsg, terminate=.true.)
263 gwtmodel%fmi%gwfhead => gwfmodel%x
265 'GWFHEAD', gwtmodel%fmi%memoryPath, &
266 'X', gwfmodel%memoryPath)
267 gwtmodel%fmi%gwfsat => gwfmodel%npf%sat
269 'GWFSAT', gwtmodel%fmi%memoryPath, &
270 'SAT', gwfmodel%npf%memoryPath)
271 gwtmodel%fmi%gwfspdis => gwfmodel%npf%spdis
273 'GWFSPDIS', gwtmodel%fmi%memoryPath, &
274 'SPDIS', gwfmodel%npf%memoryPath)
278 if (gwtmodel%inmst > 0)
then
279 if (gwfmodel%insto > 0)
then
280 gwtmodel%fmi%gwfstrgss => gwfmodel%sto%strgss
281 gwtmodel%fmi%igwfstrgss = 1
282 if (gwfmodel%sto%iusesy == 1)
then
283 gwtmodel%fmi%gwfstrgsy => gwfmodel%sto%strgsy
284 gwtmodel%fmi%igwfstrgsy = 1
290 if (gwfmodel%inbuy > 0)
then
291 call gwfmodel%buy%set_concentration_pointer(gwtmodel%name, gwtmodel%x, &
296 if (gwfmodel%invsc > 0)
then
297 call gwfmodel%vsc%set_concentration_pointer(gwtmodel%name, gwtmodel%x, &
302 call this%gwfbnd2gwtfmi()
305 if (gwfmodel%inmvr /= 0)
then
306 gwtmodel%fmi%mvrbudobj => gwfmodel%mvr%budobj
310 call this%gwfconn2gwtconn(gwfmodel, gwtmodel)
Structured grid discretization.
Unstructured grid discretization.
Vertex grid discretization.