17 character(len=LENMEMPATH) :: memorypath
18 character(len=LENMODELNAME),
pointer :: name => null()
19 character(len=LINELENGTH),
pointer :: filename => null()
20 character(len=3),
pointer :: macronym => null()
21 integer(I4B),
pointer :: idsoln => null()
22 integer(I4B),
pointer :: id => null()
23 integer(I4B),
pointer :: iout => null()
24 integer(I4B),
pointer :: inewton => null()
25 integer(I4B),
pointer :: iprpak => null()
26 integer(I4B),
pointer :: iprflow => null()
27 integer(I4B),
pointer :: ipakcb => null()
28 integer(I4B),
pointer :: nja => null()
29 integer(I4B),
dimension(:),
pointer,
contiguous :: ibound => null()
30 real(dp),
dimension(:),
pointer,
contiguous :: flowja => null()
77 character(len=*),
intent(in) :: line
78 character(len=*),
intent(in),
optional :: fmt
80 character(len=LINELENGTH) :: cfmt
82 if (
present(fmt))
then
88 write (this%iout, trim(cfmt)) trim(line)
102 character(len=*),
intent(in) :: modelname
105 call mem_allocate(this%macronym, 3,
'MACRONYM', this%memoryPath)
108 call mem_allocate(this%inewton,
'INEWTON', this%memoryPath)
109 call mem_allocate(this%iprpak,
'IPRPAK', this%memoryPath)
110 call mem_allocate(this%iprflow,
'IPRFLOW', this%memoryPath)
111 call mem_allocate(this%ipakcb,
'IPAKCB', this%memoryPath)
112 call mem_allocate(this%idsoln,
'IDSOLN', this%memoryPath)
114 this%name = modelname
147 class(*),
pointer,
intent(inout) :: obj
151 if (.not.
associated(obj))
return
161 type(
listtype),
intent(inout) :: list
164 class(*),
pointer :: obj
172 type(
listtype),
intent(inout) :: list
173 integer(I4B),
intent(in) :: idx
176 class(*),
pointer :: obj
178 obj => list%GetItem(idx)
185 character(len=*),
intent(inout) :: lst_fname
186 character(len=*),
intent(in) :: model_fname
187 logical(LGP),
intent(in) :: defined
188 character(len=*),
intent(in) :: headertxt
190 integer(I4B) :: i, istart, istop
193 if (.not. defined)
then
198 istop = len_trim(model_fname)
202 if (model_fname(i:i) ==
'.')
then
209 if (istart == 0) istart = istop + 1
212 lst_fname = model_fname(1:istart)
214 lst_fname(istart:istop) =
'.lst'
219 call openfile(this%iout, 0, lst_fname,
'LIST', filstat_opt=
'REPLACE')
subroutine, public addbasemodeltolist(list, model)
subroutine model_ar(this)
Allocate and read.
subroutine model_ot(this)
Output results.
subroutine model_message(this, line, fmt)
Write line to model iout.
class(basemodeltype) function, pointer, public castasbasemodelclass(obj)
class(basemodeltype) function, pointer, public getbasemodelfromlist(list, idx)
subroutine model_dt(this)
Calculate time step length.
subroutine allocate_scalars(this, modelname)
Allocate scalar variables.
subroutine model_rp(this)
Read and prepare.
subroutine model_df(this)
Define the model.
subroutine model_fp(this)
Final processing.
subroutine create_lstfile(this, lst_fname, model_fname, defined, headertxt)
subroutine model_da(this)
Deallocate.
This module contains simulation constants.
integer(i4b), parameter linelength
maximum length of a standard line
integer(i4b), parameter lenmodelname
maximum length of the model name
integer(i4b), parameter lenmempath
maximum length of the memory path
This module defines variable data types.
This module contains version information.
subroutine write_listfile_header(iout, cmodel_type, write_sys_command, write_kind_info)
@ brief Write program header
Highest level model type. All models extend this parent type.
A generic heterogeneous doubly-linked list.