188 class(GwfGweExchangeType) :: this
190 class(BaseModelType),
pointer :: mb => null()
191 type(GwfModelType),
pointer :: gwfmodel => null()
192 type(GweModelType),
pointer :: gwemodel => null()
194 character(len=*),
parameter :: fmtdiserr = &
195 "('GWF and GWE Models do not have the same discretization for exchange&
197 & GWF Model has ', i0, ' user nodes and ', i0, ' reduced nodes.&
198 & GWE Model has ', i0, ' user nodes and ', i0, ' reduced nodes.&
199 & Ensure discretization packages, including IDOMAIN, are identical.')"
200 character(len=*),
parameter :: fmtidomerr = &
201 "('GWF and GWE Models do not have the same discretization for exchange&
203 & GWF Model and GWE Model have different IDOMAIN arrays.&
204 & Ensure discretization packages, including IDOMAIN, are identical.')"
207 mb => getbasemodelfromlist(basemodellist, this%m1_idx)
209 type is (gwfmodeltype)
214 mb => getbasemodelfromlist(basemodellist, this%m2_idx)
216 type is (gwemodeltype)
221 if (gwemodel%dis%nodes /= gwfmodel%dis%nodes .or. &
222 gwemodel%dis%nodesuser /= gwfmodel%dis%nodesuser)
then
223 write (errmsg, fmtdiserr) trim(this%name), &
224 gwfmodel%dis%nodesuser, &
225 gwfmodel%dis%nodes, &
226 gwemodel%dis%nodesuser, &
228 call store_error(errmsg, terminate=.true.)
232 select type (gwfdis => gwfmodel%dis)
234 select type (gwedis => gwemodel%dis)
236 if (.not. all(gwfdis%idomain == gwedis%idomain))
then
237 write (errmsg, fmtidomerr) trim(this%name)
238 call store_error(errmsg, terminate=.true.)
242 select type (gwedis => gwemodel%dis)
244 if (.not. all(gwfdis%idomain == gwedis%idomain))
then
245 write (errmsg, fmtidomerr) trim(this%name)
246 call store_error(errmsg, terminate=.true.)
250 select type (gwedis => gwemodel%dis)
252 if (.not. all(gwfdis%idomain == gwedis%idomain))
then
253 write (errmsg, fmtidomerr) trim(this%name)
254 call store_error(errmsg, terminate=.true.)
260 gwemodel%fmi%gwfhead => gwfmodel%x
262 'GWFHEAD', gwemodel%fmi%memoryPath, &
263 'X', gwfmodel%memoryPath)
264 gwemodel%fmi%gwfsat => gwfmodel%npf%sat
266 'GWFSAT', gwemodel%fmi%memoryPath, &
267 'SAT', gwfmodel%npf%memoryPath)
268 gwemodel%fmi%gwfspdis => gwfmodel%npf%spdis
270 'GWFSPDIS', gwemodel%fmi%memoryPath, &
271 'SPDIS', gwfmodel%npf%memoryPath)
275 if (gwemodel%inest > 0)
then
276 if (gwfmodel%insto > 0)
then
277 gwemodel%fmi%gwfstrgss => gwfmodel%sto%strgss
278 gwemodel%fmi%igwfstrgss = 1
279 if (gwfmodel%sto%iusesy == 1)
then
280 gwemodel%fmi%gwfstrgsy => gwfmodel%sto%strgsy
281 gwemodel%fmi%igwfstrgsy = 1
287 if (gwfmodel%inbuy > 0)
then
288 call gwfmodel%buy%set_concentration_pointer(gwemodel%name, gwemodel%x, &
293 if (gwfmodel%invsc > 0)
then
294 call gwfmodel%vsc%set_concentration_pointer(gwemodel%name, gwemodel%x, &
299 call this%gwfbnd2gwefmi()
302 if (gwfmodel%inmvr /= 0)
then
303 gwemodel%fmi%mvrbudobj => gwfmodel%mvr%budobj
307 call this%gwfconn2gweconn(gwfmodel, gwemodel)
Structured grid discretization.
Unstructured grid discretization.
Vertex grid discretization.