MODFLOW 6  version 6.6.0.dev0
USGS Modular Hydrologic Model
swf-oc.f90
Go to the documentation of this file.
1 module swfocmodule
2 
3  use basedismodule, only: disbasetype
4  use kindmodule, only: dp, i4b
8 
9  implicit none
10  private
11  public swfoctype, oc_cr
12 
13  !> @ brief Output control
14  !!
15  !! Concrete implementation of OutputControlType
16  !<
17  type, extends(outputcontroltype) :: swfoctype
18  contains
19  procedure :: oc_ar
20  end type swfoctype
21 
22 contains
23 
24  !> @ brief Create SwfOcType
25  !!
26  !! Create by allocating a new SwfOcType object and initializing
27  !! member variables.
28  !!
29  !<
30  subroutine oc_cr(ocobj, name_model, inunit, iout)
31  ! -- dummy
32  type(swfoctype), pointer :: ocobj !< SwfOcType object
33  character(len=*), intent(in) :: name_model !< name of the model
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)
42  !
43  ! -- Save unit numbers
44  ocobj%inunit = inunit
45  ocobj%iout = iout
46  !
47  ! -- Initialize block parser
48  call ocobj%parser%Initialize(inunit, iout)
49  end subroutine oc_cr
50 
51  !> @ brief Allocate and read SwfOcType
52  !!
53  !! Setup head and budget as output control variables.
54  !!
55  !<
56  subroutine oc_ar(this, name, datavec, dis, dnodata)
57  ! -- dummy
58  class(swfoctype) :: this !< SwfOcType object
59  character(len=*), intent(in) :: name
60  real(DP), dimension(:), pointer, contiguous, intent(in) :: datavec !< data vector
61  class(disbasetype), pointer, intent(in) :: dis !< model discretization package
62  real(DP), intent(in) :: dnodata !< no data value
63  ! -- local
64  integer(I4B) :: i, nocdobj, inodata
65  type(outputcontroldatatype), pointer :: ocdobjptr
66  real(DP), dimension(:), pointer, contiguous :: nullvec => null()
67  !
68  ! -- Initialize variables
69  inodata = 0
70  nocdobj = 2
71  allocate (this%ocds(nocdobj))
72  do i = 1, nocdobj
73  call ocd_cr(ocdobjptr)
74  select case (i)
75  case (1)
76  call ocdobjptr%init_dbl('BUDGET', nullvec, dis, 'PRINT LAST ', &
77  'COLUMNS 10 WIDTH 11 DIGITS 4 GENERAL ', &
78  this%iout, dnodata)
79  case (2)
80  call ocdobjptr%init_dbl(name, datavec, dis, 'PRINT LAST ', &
81  'COLUMNS 10 WIDTH 11 DIGITS 4 GENERAL ', &
82  this%iout, dnodata)
83  end select
84  this%ocds(i) = ocdobjptr
85  deallocate (ocdobjptr)
86  end do
87  !
88  ! -- Read options or set defaults if this package not on
89  if (this%inunit > 0) then
90  call this%read_options()
91  end if
92  end subroutine oc_ar
93 
94 end module swfocmodule
This module contains simulation constants.
Definition: Constants.f90:9
integer(i4b), parameter lenmodelname
maximum length of the model name
Definition: Constants.f90:22
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 oc_ar(this, name, datavec, dis, dnodata)
@ brief Allocate and read SwfOcType
Definition: swf-oc.f90:57
subroutine, public oc_cr(ocobj, name_model, inunit, iout)
@ brief Create SwfOcType
Definition: swf-oc.f90:31
@ brief Controls model output. Overridden for each model type.
@ brief Output control
Definition: swf-oc.f90:17