23 integer(I4B) :: nval = 0
24 integer(I4B),
allocatable,
dimension(:) :: iunit
25 integer(I4B),
allocatable,
dimension(:) :: ipos
29 integer(I4B) :: niunit = 0
30 character(len=LENFTYPE),
allocatable,
dimension(:) :: cunit
43 subroutine init(this, niunit, cunit)
46 integer(I4B),
intent(in) :: niunit
47 character(len=*),
dimension(niunit),
intent(in) :: cunit
51 allocate (this%cunit(niunit))
52 allocate (this%iunit(niunit))
55 this%cunit(i) = cunit(i)
66 subroutine addfile(this, ftyp, iunit, ipos, namefilename)
69 character(len=*),
intent(in) :: ftyp
70 integer(I4B),
intent(in) :: iunit
71 integer(I4B),
intent(in) :: ipos
72 character(len=*),
intent(in) :: namefilename
74 character(len=LINELENGTH) :: errmsg
75 integer(I4B),
allocatable,
dimension(:) :: itemp
76 integer(I4B) :: i, irow
81 if (this%cunit(i) == ftyp)
then
87 write (errmsg,
'(a,a)')
'Package type not supported: ', ftyp
93 if (this%iunit(irow)%nval == 0)
then
94 allocate (this%iunit(irow)%iunit(1))
95 allocate (this%iunit(irow)%ipos(1))
96 this%iunit(irow)%nval = 1
100 allocate (itemp(this%iunit(irow)%nval))
101 itemp(:) = this%iunit(irow)%iunit(:)
102 deallocate (this%iunit(irow)%iunit)
103 this%iunit(irow)%nval = this%iunit(irow)%nval + 1
104 allocate (this%iunit(irow)%iunit(this%iunit(irow)%nval))
105 this%iunit(irow)%iunit(1:this%iunit(irow)%nval - 1) = itemp(:)
108 itemp(:) = this%iunit(irow)%ipos(:)
109 deallocate (this%iunit(irow)%ipos)
110 allocate (this%iunit(irow)%ipos(this%iunit(irow)%nval))
111 this%iunit(irow)%ipos(1:this%iunit(irow)%nval - 1) = itemp(:)
116 this%iunit(irow)%iunit(this%iunit(irow)%nval) = iunit
117 this%iunit(irow)%ipos(this%iunit(irow)%nval) = ipos
130 character(len=*),
intent(in) :: ftyp
131 integer(I4B),
intent(inout) :: iunit
132 integer(I4B),
intent(in) :: iremove
134 integer(I4B) :: i, irow, nval
138 do i = 1, this%niunit
139 if (this%cunit(i) == ftyp)
then
148 nval = this%iunit(irow)%nval
150 iunit = this%iunit(irow)%iunit(nval)
151 if (iremove > 0)
then
152 this%iunit(irow)%iunit(nval) = 0
153 this%iunit(irow)%nval = nval - 1
This module contains simulation constants.
integer(i4b), parameter linelength
maximum length of a standard line
integer(i4b), parameter lenftype
maximum length of a package type (DIS, WEL, OC, etc.)
– Module to manage unit numbers. Allows for multiple unit numbers – assigned to a single package type...
subroutine getunitnumber(this, ftyp, iunit, iremove)
Get the last unit number for type ftyp or return 0 for iunit.
subroutine addfile(this, ftyp, iunit, ipos, namefilename)
Add an ftyp and unit number.
This module defines variable data types.
This module contains simulation methods.
subroutine, public store_error(msg, terminate)
Store an error message.
subroutine, public store_error_filename(filename, terminate)
Store the erroring file name.