19 integer(I4B),
pointer :: maxmvt => null()
20 real(dp),
dimension(:),
pointer,
contiguous :: quantity_m1 => null()
21 real(dp),
dimension(:),
pointer,
contiguous :: quantity_m2 => null()
31 subroutine xmvt_cr(mvt, name_exg, tsp_model1, tsp_model2, &
32 gwfmodelname1, gwfmodelname2, inunit, iout)
34 character(len=*),
intent(in) :: name_exg
37 character(len=*),
intent(in) :: gwfmodelname1
38 character(len=*),
intent(in) :: gwfmodelname2
39 integer(I4B),
intent(in) :: inunit
40 integer(I4B),
intent(in) :: iout
43 real(dp),
pointer :: eqnsclfac
44 character(len=LENVARNAME) :: depvartype
49 if (
associated(tsp_model1))
then
50 fmi1 => tsp_model1%fmi
51 eqnsclfac => tsp_model1%eqnsclfac
52 depvartype = tsp_model1%depvartype
55 if (
associated(tsp_model2))
then
56 fmi2 => tsp_model2%fmi
57 eqnsclfac => tsp_model2%eqnsclfac
58 depvartype = tsp_model2%depvartype
64 call mvt%mvt_init(name_exg, inunit, iout, fmi1, &
65 eqnsclfac, depvartype, gwfmodelname1, &
68 call mem_allocate(mvt%quantity_m1, 0,
"QUANTITY_M1", mvt%memoryPath)
69 call mem_allocate(mvt%quantity_m2, 0,
"QUANTITY_M2", mvt%memoryPath)
81 integer(I4B) :: i, max_array_size
83 call this%TspMvtType%mvt_rp()
88 do i = 1, this%mvrbudobj%nbudterm
89 max_array_size = max_array_size + this%mvrbudobj%budterm(i)%maxlist
92 if (max_array_size > 0)
then
94 "QUANTITY_M1", this%memoryPath)
96 "QUANTITY_M2", this%memoryPath)
97 this%maxmvt = max_array_size
108 real(DP),
intent(in),
dimension(:),
contiguous,
target :: cnew1
109 real(DP),
intent(in),
dimension(:),
contiguous,
target :: cnew2
111 integer(I4B) :: i, n, idx
112 real(DP),
dimension(:),
pointer,
contiguous :: prov_array
113 logical(LGP) :: prov_is_local
115 call this%mvt_fill_mvrterm(cnew1, cnew2)
119 do i = 1,
size(this%mvrterm)
122 prov_is_local = .false.
123 if (this%mvrterm(i)%prov_is_m1)
then
124 prov_is_local = this%model1%is_local
125 prov_array => this%quantity_m1
127 prov_is_local = this%model2%is_local
128 prov_array => this%quantity_m2
131 if (prov_is_local)
then
132 do n = 1,
size(this%mvrterm(i)%qty)
133 prov_array(idx) = this%mvrterm(i)%qty(n)
143 real(DP),
intent(in),
dimension(:),
contiguous,
target :: cnew1
144 real(DP),
intent(in),
dimension(:),
contiguous,
target :: cnew2
146 integer(I4B) :: i, n, idx
147 real(DP),
dimension(:),
pointer,
contiguous :: prov_array
148 logical(LGP) :: prov_is_remote
152 do i = 1,
size(this%mvrterm)
155 if (this%mvrterm(i)%prov_is_m1)
then
156 prov_is_remote = .not. this%model1%is_local
157 prov_array => this%quantity_m1
159 prov_is_remote = .not. this%model2%is_local
160 prov_array => this%quantity_m2
163 if (prov_is_remote)
then
165 do n = 1,
size(this%mvrterm(i)%qty)
166 this%mvrterm(i)%qty(n) = prov_array(idx)
172 call this%mvt_update_qmfrommvr()
179 call this%TspMvtType%mvt_da()
This module contains simulation constants.
real(dp), parameter dnodata
real no data constant
integer(i4b), parameter lenvarname
maximum length of a variable name
This module defines variable data types.
This module contains simulation variables.
integer(i4b), pointer, public kstp
current time step number
integer(i4b), pointer, public kper
current stress period number
This module contains the base transport model type.
subroutine xmvt_fc(this, cnew1, cnew2)
subroutine xmvt_rp(this)
Read and prepare mover transport object.
subroutine xmvt_cf(this, cnew1, cnew2)
subroutine, public xmvt_cr(mvt, name_exg, tsp_model1, tsp_model2, gwfmodelname1, gwfmodelname2, inunit, iout)
subroutine mvt_rp(this)
Read and prepare mover transport object.
subroutine mvt_fc(this, cnew1, cnew2)
Calculate coefficients and fill amat and rhs.
subroutine mvt_da(this)
@ brief Deallocate memory