29 integer(i4B),
pointer :: iadvscheme => null()
30 integer(i4B),
pointer :: ixt3d => null()
31 real(dp),
pointer :: ieqnsclfac => null()
37 real(dp),
dimension(:),
pointer,
contiguous :: porosity => null()
58 character(len=*),
intent(in) :: name
59 integer(I4B),
intent(in) :: iout
62 class(*),
pointer :: modelPtr
63 integer(I4B),
target :: inobs
64 integer(I4B) :: adv_unit, cnd_unit
67 call this%allocate_scalars(name)
75 this%ieqnsclfac =
done
78 this%gridConnection => gridconn
79 modelptr => gridconn%model
85 if (this%owner%inadv > 0)
then
86 this%inadv = huge(1_i4b)
87 adv_unit = huge(1_i4b)
89 if (this%owner%incnd > 0)
then
90 this%incnd = huge(1_i4b)
91 cnd_unit = huge(1_i4b)
95 call disu_cr(this%dis, this%name,
'', -1, this%iout)
96 call fmi_cr(this%fmi, this%name, 0, this%iout, this%ieqnsclfac, &
98 call adv_cr(this%adv, this%name, adv_unit, this%iout, this%fmi, &
100 call cnd_cr(this%cnd, this%name,
'', -cnd_unit, this%iout, this%fmi, &
101 this%ieqnsclfac, this%gwecommon)
113 character(len=*),
intent(in) :: modelname
115 call this%GweModelType%allocate_scalars(modelname)
117 call mem_allocate(this%iAdvScheme,
'ADVSCHEME', this%memoryPath)
119 call mem_allocate(this%ieqnsclfac,
'IEQNSCLFAC', this%memoryPath)
131 call mem_allocate(this%fmi%gwfflowja, this%nja,
'GWFFLOWJA', &
133 call mem_allocate(this%fmi%gwfhead, this%neq,
'GWFHEAD', &
135 call mem_allocate(this%fmi%gwfsat, this%neq,
'GWFSAT', &
137 call mem_allocate(this%fmi%gwfspdis, 3, this%neq,
'GWFSPDIS', &
150 class(*),
pointer :: disPtr
155 adv_options%iAdvScheme = this%iAdvScheme
156 cnd_options%ixt3d = this%ixt3d
160 call this%gridConnection%getDiscretization(
castasdisutype(disptr))
161 call this%fmi%fmi_df(this%dis, 0)
163 if (this%inadv > 0)
then
164 call this%adv%adv_df(adv_options)
167 if (this%incnd > 0)
then
168 this%cnd%idisp = this%owner%cnd%idisp
169 call this%cnd%cnd_df(this%dis, cnd_options)
171 if (this%cnd%idisp > 0)
then
173 trim(this%cnd%memoryPath))
175 trim(this%cnd%memoryPath))
177 trim(this%cnd%memoryPath))
179 trim(this%cnd%memoryPath))
181 trim(this%cnd%memoryPath))
183 trim(this%cnd%memoryPath))
185 trim(this%cnd%memoryPath))
193 this%neq = this%dis%nodes
194 this%nja = this%dis%nja
195 this%ia => this%dis%con%ia
196 this%ja => this%dis%con%ja
199 call this%gwecommon%gweshared_dat_df(this%neq)
202 call this%allocate_arrays()
215 call this%fmi%fmi_ar(this%ibound)
216 if (this%inadv > 0)
then
217 call this%adv%adv_ar(this%dis, this%ibound)
219 if (this%incnd > 0)
then
220 call this%cnd%cnd_ar(this%ibound, this%est%porosity)
240 call this%dis%dis_da()
241 call this%fmi%fmi_da()
242 call this%adv%adv_da()
243 call this%cnd%cnd_da()
245 deallocate (this%dis)
246 deallocate (this%fmi)
247 deallocate (this%adv)
248 deallocate (this%cnd)
250 if (
associated(this%est))
then
252 deallocate (this%est)
268 call this%NumericalModelType%model_da()
This module contains simulation constants.
real(dp), parameter done
real constant 1
subroutine, public disu_cr(dis, name_model, input_mempath, inunit, iout)
Create a new unstructured discretization object.
class(disutype) function, pointer, public castasdisutype(dis)
Cast base to DISU.
Refactoring issues towards parallel:
subroutine, public cnd_cr(cndobj, name_model, input_mempath, inunit, iout, fmi, eqnsclfac, gwecommon)
Create a new CND object.
– @ brief Energy Storage and Transfer (EST) Module
subroutine, public est_cr(estobj, name_model, inunit, iout, fmi, eqnsclfac, gwecommon)
@ brief Create a new EST package object
subroutine gweifmod_df(this)
Define the GWE interface model.
subroutine gweifmod_ar(this)
Override allocate and read the GWE interface model and its packages so that we can create stuff from ...
subroutine allocate_fmi(this)
Allocate a Flow Model Interface (FMI) object for the interface model.
subroutine gweifmod_cr(this, name, iout, gridConn)
Create the interface model, analogously to what.
subroutine gweifmod_da(this)
Clean up resources.
subroutine allocate_scalars(this, modelname)
Allocate scalars associated with the interface model object.
class(gwemodeltype) function, pointer, public castasgwemodel(model)
Cast to GweModelType.
This module defines variable data types.
character(len=lenmempath) function create_mem_path(component, subcomponent, context)
returns the path to the memory object
subroutine, public adv_cr(advobj, name_model, inunit, iout, fmi, eqnsclfac)
@ brief Create a new ADV object
subroutine, public fmi_cr(fmiobj, name_model, inunit, iout, eqnsclfac, depvartype)
Create a new FMI object.
subroutine, public tsp_obs_cr(obs, inobs)
Create a new TspObsType object.
This class is used to construct the connections object for the interface model's spatial discretizati...
data structure (and helpers) for passing cnd option data
The GWE Interface Model is a utility to calculate the solution's exchange coefficients from the inter...