184 class(GwfPrtExchangeType) :: this
186 class(BaseModelType),
pointer :: mb => null()
187 type(GwfModelType),
pointer :: gwfmodel => null()
188 type(PrtModelType),
pointer :: prtmodel => null()
190 character(len=*),
parameter :: fmtdiserr = &
191 "('GWF and PRT Models do not have the same discretization for exchange&
193 & GWF Model has ', i0, ' user nodes and ', i0, ' reduced nodes.&
194 & PRT Model has ', i0, ' user nodes and ', i0, ' reduced nodes.&
195 & Ensure discretization packages, including IDOMAIN, are identical.')"
196 character(len=*),
parameter :: fmtidomerr = &
197 "('GWF and PRT Models do not have the same discretization for exchange&
199 & GWF Model and PRT Model have different IDOMAIN arrays.&
200 & Ensure discretization packages, including IDOMAIN, are identical.')"
203 mb => getbasemodelfromlist(basemodellist, this%m1id)
205 type is (gwfmodeltype)
210 mb => getbasemodelfromlist(basemodellist, this%m2id)
212 type is (prtmodeltype)
217 if (prtmodel%dis%nodes /= gwfmodel%dis%nodes .or. &
218 prtmodel%dis%nodesuser /= gwfmodel%dis%nodesuser)
then
219 write (errmsg, fmtdiserr) trim(this%name), &
220 gwfmodel%dis%nodesuser, &
221 gwfmodel%dis%nodes, &
222 prtmodel%dis%nodesuser, &
224 call store_error(errmsg, terminate=.true.)
228 select type (gwfdis => gwfmodel%dis)
230 select type (prtdis => prtmodel%dis)
232 if (.not. all(gwfdis%idomain == prtdis%idomain))
then
233 write (errmsg, fmtidomerr) trim(this%name)
234 call store_error(errmsg, terminate=.true.)
238 select type (prtdis => prtmodel%dis)
240 if (.not. all(gwfdis%idomain == prtdis%idomain))
then
241 write (errmsg, fmtidomerr) trim(this%name)
242 call store_error(errmsg, terminate=.true.)
246 select type (prtdis => prtmodel%dis)
248 if (.not. all(gwfdis%idomain == prtdis%idomain))
then
249 write (errmsg, fmtidomerr) trim(this%name)
250 call store_error(errmsg, terminate=.true.)
256 prtmodel%fmi%gwfhead => gwfmodel%x
258 'GWFHEAD', prtmodel%fmi%memoryPath, &
259 'X', gwfmodel%memoryPath)
260 prtmodel%fmi%gwfsat => gwfmodel%npf%sat
262 'GWFSAT', prtmodel%fmi%memoryPath, &
263 'SAT', gwfmodel%npf%memoryPath)
264 prtmodel%fmi%gwfspdis => gwfmodel%npf%spdis
266 'GWFSPDIS', prtmodel%fmi%memoryPath, &
267 'SPDIS', gwfmodel%npf%memoryPath)
271 if (prtmodel%inmst > 0)
then
272 if (gwfmodel%insto > 0)
then
273 prtmodel%fmi%gwfstrgss => gwfmodel%sto%strgss
274 prtmodel%fmi%igwfstrgss = 1
275 if (gwfmodel%sto%iusesy == 1)
then
276 prtmodel%fmi%gwfstrgsy => gwfmodel%sto%strgsy
277 prtmodel%fmi%igwfstrgsy = 1
283 call this%gwfbnd2prtfmi()
286 if (gwfmodel%inmvr /= 0) &
287 prtmodel%fmi%mvrbudobj => gwfmodel%mvr%budobj
Structured grid discretization.
Unstructured grid discretization.
Vertex grid discretization.