19 real(dp),
dimension(:),
pointer,
contiguous,
private :: x => null()
20 real(dp),
dimension(:),
pointer,
contiguous,
private :: flowja => null()
43 integer(I4B),
pointer,
intent(in) :: inobs
46 call obs%allocate_scalars()
48 obs%inputFilename =
''
49 obs%inUnitObs => inobs
57 type(
gwfictype),
pointer,
intent(in) :: ic
58 real(DP),
dimension(:),
pointer,
contiguous,
intent(in) :: x
59 real(DP),
dimension(:),
pointer,
contiguous,
intent(in) :: flowja
65 call this%set_pointers(ic, x, flowja)
73 integer(I4B),
intent(in) :: iout
74 character(len=*),
intent(in) :: pkgname
75 character(len=*),
intent(in) :: filtyp
81 call this%ObsType%obs_df(iout, pkgname, filtyp, dis)
87 call this%StoreObsType(
'head', .false., indx)
91 call this%StoreObsType(
'drawdown', .false., indx)
95 call this%StoreObsType(
'flow-ja-face', .true., indx)
105 integer(I4B) :: i, jaindex, nodenumber
107 character(len=100) :: msg
110 call this%obs_bd_clear()
113 if (this%npakobs > 0)
then
114 do i = 1, this%npakobs
115 obsrv => this%pakobs(i)%obsrv
116 nodenumber = obsrv%NodeNumber
117 jaindex = obsrv%JaIndex
118 select case (obsrv%ObsTypeId)
120 call this%SaveOneSimval(obsrv, this%x(nodenumber))
122 v = this%ic%strt(nodenumber) - this%x(nodenumber)
123 call this%SaveOneSimval(obsrv, v)
124 case (
'FLOW-JA-FACE')
125 call this%SaveOneSimval(obsrv, this%flowja(jaindex))
127 msg =
'Error: Unrecognized observation type: '//trim(obsrv%ObsTypeId)
156 nullify (this%flowja)
157 call this%ObsType%obs_da()
165 type(
gwfictype),
pointer,
intent(in) :: ic
166 real(DP),
dimension(:),
pointer,
contiguous,
intent(in) :: x
167 real(DP),
dimension(:),
pointer,
contiguous,
intent(in) :: flowja
171 this%flowja => flowja
182 integer(I4B),
intent(in) :: inunitobs
183 integer(I4B),
intent(in) :: iout
186 integer(I4B) :: icol, istart, istop
187 character(len=LINELENGTH) :: ermsg, string
190 string = obsrv%IDstring
195 nn1 = dis%noder_from_string(icol, istart, istop, inunitobs, &
196 iout, string, .false.)
199 obsrv%NodeNumber = nn1
201 ermsg =
'Error reading data from ID string'
213 integer(I4B),
intent(in) :: inunitobs
214 integer(I4B),
intent(in) :: iout
216 integer(I4B) :: nn1, nn2
217 integer(I4B) :: icol, istart, istop, jaidx
218 character(len=LINELENGTH) :: ermsg, string
220 70
format(
'Error: No connection exists between cells identified in text: ', a)
223 string = obsrv%IDstring
228 nn1 = dis%noder_from_string(icol, istart, istop, inunitobs, &
229 iout, string, .false.)
232 obsrv%NodeNumber = nn1
234 ermsg =
'Error reading data from ID string: '//string(istart:istop)
240 nn2 = dis%noder_from_string(icol, istart, istop, inunitobs, &
241 iout, string, .false.)
243 obsrv%NodeNumber2 = nn2
245 ermsg =
'Error reading data from ID string: '//string(istart:istop)
250 jaidx = dis%con%getjaindex(nn1, nn2)
252 write (ermsg, 70) trim(string)
255 obsrv%JaIndex = jaidx
This module contains simulation constants.
integer(i4b), parameter linelength
maximum length of a standard line
integer(i4b), parameter maxobstypes
maximum number of observation types
subroutine gwf_process_head_drawdown_obs_id(obsrv, dis, inunitobs, iout)
Calculate drawdown observation when requested.
subroutine gwf_obs_da(this)
Deallocate memory.
subroutine gwf_obs_rp(this)
Do GWF observations need any checking? If so, add checks here.
subroutine gwf_obs_bd(this)
Save obs.
subroutine gwf_obs_df(this, iout, pkgname, filtyp, dis)
Define.
subroutine, public gwf_obs_cr(obs, inobs)
Create a new GwfObsType object.
subroutine set_pointers(this, ic, x, flowja)
Set pointers.
subroutine gwf_process_intercell_obs_id(obsrv, dis, inunitobs, iout)
Process flow between two cells when requested.
subroutine gwf_obs_ar(this, ic, x, flowja)
Allocate and read.
This module defines variable data types.
This module contains the derived types ObserveType and ObsDataType.
This module contains the derived type ObsType.
This module contains simulation methods.
subroutine, public store_error(msg, terminate)
Store an error message.
integer(i4b) function, public count_errors()
Return number of errors.
subroutine, public store_error_unit(iunit, terminate)
Store the file unit number.