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)
102 call tsp_obs_cr(this%obs, inobs, this%depvartype)
110 character(len=*),
intent(in) :: modelname
112 call this%GweModelType%allocate_scalars(modelname)
114 call mem_allocate(this%iAdvScheme,
'ADVSCHEME', this%memoryPath)
116 call mem_allocate(this%ieqnsclfac,
'IEQNSCLFAC', this%memoryPath)
125 call mem_allocate(this%fmi%gwfflowja, this%nja,
'GWFFLOWJA', &
127 call mem_allocate(this%fmi%gwfhead, this%neq,
'GWFHEAD', &
129 call mem_allocate(this%fmi%gwfsat, this%neq,
'GWFSAT', &
131 call mem_allocate(this%fmi%gwfspdis, 3, this%neq,
'GWFSPDIS', &
141 class(*),
pointer :: disPtr
146 adv_options%iAdvScheme = this%iAdvScheme
147 cnd_options%ixt3d = this%ixt3d
151 call this%gridConnection%getDiscretization(
castasdisutype(disptr))
152 call this%fmi%fmi_df(this%dis, 0)
154 if (this%inadv > 0)
then
155 call this%adv%adv_df(adv_options)
158 if (this%incnd > 0)
then
159 this%cnd%idisp = this%owner%cnd%idisp
160 call this%cnd%cnd_df(this%dis, cnd_options)
162 if (this%cnd%idisp > 0)
then
164 trim(this%cnd%memoryPath))
166 trim(this%cnd%memoryPath))
168 trim(this%cnd%memoryPath))
170 trim(this%cnd%memoryPath))
172 trim(this%cnd%memoryPath))
174 trim(this%cnd%memoryPath))
176 trim(this%cnd%memoryPath))
184 this%neq = this%dis%nodes
185 this%nja = this%dis%nja
186 this%ia => this%dis%con%ia
187 this%ja => this%dis%con%ja
190 call this%allocate_arrays()
200 call this%fmi%fmi_ar(this%ibound)
201 if (this%inadv > 0)
then
202 call this%adv%adv_ar(this%dis, this%ibound)
204 if (this%incnd > 0)
then
205 call this%cnd%cnd_ar(this%ibound, this%est%porosity)
222 call this%dis%dis_da()
223 call this%fmi%fmi_da()
224 call this%adv%adv_da()
225 call this%cnd%cnd_da()
227 deallocate (this%dis)
228 deallocate (this%fmi)
229 deallocate (this%adv)
230 deallocate (this%cnd)
232 if (
associated(this%est))
then
234 deallocate (this%est)
250 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, dvt)
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...