MODFLOW 6 version 6.9.0.dev0
USGS Modular Hydrologic Model
Loading...
Searching...
No Matches
swf-oc.f90
Go to the documentation of this file.
2
4 use kindmodule, only: dp, i4b
7
8 implicit none
9 private
10 public swfoctype, oc_cr
11
12 !> @ brief Output control
13 !!
14 !! Concrete implementation of OutputControlType
15 !<
16 type, extends(outputcontroltype) :: swfoctype
17 contains
18 procedure :: oc_ar
19 end type swfoctype
20
21contains
22
23 !> @ brief Create SwfOcType
24 !!
25 !! Create by allocating a new SwfOcType object and initializing
26 !! member variables.
27 !!
28 !<
29 subroutine oc_cr(ocobj, name_model, input_mempath, inunit, iout)
30 ! -- dummy
31 type(swfoctype), pointer :: ocobj !< SwfOcType object
32 character(len=*), intent(in) :: name_model !< name of the model
33 character(len=*), intent(in) :: input_mempath !< input mempath of the package
34 integer(I4B), intent(in) :: inunit !< unit number for input
35 integer(I4B), intent(in) :: iout !< unit number for output
36 !
37 ! -- Create the object
38 allocate (ocobj)
39 !
40 ! -- Allocate scalars
41 call ocobj%allocate_scalars(name_model, input_mempath)
42 !
43 ! -- Save unit numbers
44 ocobj%inunit = inunit
45 ocobj%iout = iout
46 end subroutine oc_cr
47
48 !> @ brief Allocate and read SwfOcType
49 !!
50 !! Setup head and budget as output control variables.
51 !!
52 !<
53 subroutine oc_ar(this, datavec, dis, dnodata)
55 use kindmodule, only: lgp
57 ! -- dummy
58 class(swfoctype) :: this !< SwfOcType object
59 real(DP), dimension(:), pointer, contiguous, intent(in) :: datavec !< data vector
60 class(disbasetype), pointer, intent(in) :: dis !< model discretization package
61 real(DP), intent(in) :: dnodata !< no data value
62 ! -- local
63 integer(I4B) :: i, nocdobj, inodata
64 type(outputcontroldatatype), pointer :: ocdobjptr
65 real(DP), dimension(:), pointer, contiguous :: nullvec => null()
66 character(len=LINELENGTH) :: stagefile, qoutflowfile
67 logical(LGP) :: found_qoutflowfile
68 logical(LGP) :: found_stagefile
69 !
70 ! -- Initialize variables
71 inodata = 0
72 nocdobj = 3
73 allocate (this%ocds(nocdobj))
74 do i = 1, nocdobj
75 call ocd_cr(ocdobjptr)
76 select case (i)
77 case (1)
78 call ocdobjptr%init_dbl('BUDGET', nullvec, dis, 'PRINT LAST ', &
79 'COLUMNS 10 WIDTH 11 DIGITS 4 GENERAL ', &
80 this%iout, dnodata)
81 case (2)
82 call ocdobjptr%init_dbl('STAGE', datavec, dis, 'PRINT LAST ', &
83 'COLUMNS 10 WIDTH 11 DIGITS 4 GENERAL ', &
84 this%iout, dnodata)
85 case (3)
86 call ocdobjptr%init_dbl('QOUTFLOW', datavec, dis, 'PRINT LAST ', &
87 'COLUMNS 10 WIDTH 11 DIGITS 4 GENERAL ', &
88 this%iout, dnodata)
89 end select
90 this%ocds(i) = ocdobjptr
91 deallocate (ocdobjptr)
92 end do
93 !
94 ! -- Read options or set defaults if this package not on
95 if (this%input_mempath /= '') then
96 write (this%iout, '(/,1x,a,/)') 'PROCESSING OC OPTIONS'
97 call this%source_options()
98 call mem_set_value(qoutflowfile, 'QOUTFLOWFILE', this%input_mempath, &
99 found_qoutflowfile)
100 call mem_set_value(stagefile, 'STAGEFILE', this%input_mempath, &
101 found_stagefile)
102 if (found_qoutflowfile) then
103 call this%set_ocfile('QOUTFLOW', qoutflowfile, this%iout)
104 end if
105 if (found_stagefile) then
106 call this%set_ocfile('STAGE', stagefile, this%iout)
107 end if
108 write (this%iout, '(1x,a)') 'END OF OC OPTIONS'
109 end if
110 end subroutine oc_ar
111
112end module swfocmodule
This module contains simulation constants.
Definition Constants.f90:9
integer(i4b), parameter linelength
maximum length of a standard line
Definition Constants.f90:45
This module defines variable data types.
Definition kind.f90:8
Output control data module.
subroutine, public ocd_cr(ocdobj)
@ brief Create a new output control data type.
Model output control.
subroutine, public oc_cr(ocobj, name_model, input_mempath, inunit, iout)
@ brief Create SwfOcType
Definition swf-oc.f90:30
subroutine oc_ar(this, datavec, dis, dnodata)
@ brief Allocate and read SwfOcType
Definition swf-oc.f90:54
@ brief Controls model output. Overridden for each model type.
@ brief Output control
Definition swf-oc.f90:16