MODFLOW 6  version 6.5.0.dev2
MODFLOW 6 Code Documentation
gwf-oc.f90
Go to the documentation of this file.
1 module gwfocmodule
2 
3  use basedismodule, only: disbasetype
4  use kindmodule, only: dp, i4b
8 
9  implicit none
10  private
11  public gwfoctype, oc_cr
12 
13  !> @ brief Output control for GWF
14  !!
15  !! Concrete implementation of OutputControlType for the
16  !! GWF Model
17  !<
18  type, extends(outputcontroltype) :: gwfoctype
19  contains
20  procedure :: oc_ar
21  end type gwfoctype
22 
23 contains
24 
25  !> @ brief Create GwfOcType
26  !!
27  !! Create by allocating a new GwfOcType object and initializing
28  !! member variables.
29  !!
30  !<
31  subroutine oc_cr(ocobj, name_model, inunit, iout)
32  ! -- dummy
33  type(gwfoctype), pointer :: ocobj !< GwfOcType object
34  character(len=*), intent(in) :: name_model !< name of the model
35  integer(I4B), intent(in) :: inunit !< unit number for input
36  integer(I4B), intent(in) :: iout !< unit number for output
37  !
38  ! -- Create the object
39  allocate (ocobj)
40  !
41  ! -- Allocate scalars
42  call ocobj%allocate_scalars(name_model)
43  !
44  ! -- Save unit numbers
45  ocobj%inunit = inunit
46  ocobj%iout = iout
47  !
48  ! -- Initialize block parser
49  call ocobj%parser%Initialize(inunit, iout)
50  !
51  ! -- Return
52  return
53  end subroutine oc_cr
54 
55  !> @ brief Allocate and read GwfOcType
56  !!
57  !! Setup head and budget as output control variables.
58  !!
59  !<
60  subroutine oc_ar(this, head, dis, dnodata)
61  ! -- dummy
62  class(gwfoctype) :: this !< GwfOcType object
63  real(DP), dimension(:), pointer, contiguous, intent(in) :: head !< model head
64  class(disbasetype), pointer, intent(in) :: dis !< model discretization package
65  real(DP), intent(in) :: dnodata !< no data value
66  ! -- local
67  integer(I4B) :: i, nocdobj, inodata
68  type(outputcontroldatatype), pointer :: ocdobjptr
69  real(DP), dimension(:), pointer, contiguous :: nullvec => null()
70  !
71  ! -- Initialize variables
72  inodata = 0
73  nocdobj = 2
74  allocate (this%ocdobj(nocdobj))
75  do i = 1, nocdobj
76  call ocd_cr(ocdobjptr)
77  select case (i)
78  case (1)
79  call ocdobjptr%init_dbl('BUDGET', nullvec, dis, 'PRINT LAST ', &
80  'COLUMNS 10 WIDTH 11 DIGITS 4 GENERAL ', &
81  this%iout, dnodata)
82  case (2)
83  call ocdobjptr%init_dbl('HEAD', head, dis, 'PRINT LAST ', &
84  'COLUMNS 10 WIDTH 11 DIGITS 4 GENERAL ', &
85  this%iout, dnodata)
86  end select
87  this%ocdobj(i) = ocdobjptr
88  deallocate (ocdobjptr)
89  end do
90  !
91  ! -- Read options or set defaults if this package not on
92  if (this%inunit > 0) then
93  call this%read_options()
94  end if
95  !
96  ! -- Return
97  return
98  end subroutine oc_ar
99 
100 end module gwfocmodule
This module contains simulation constants.
Definition: Constants.f90:9
integer(i4b), parameter lenmodelname
maximum length of the model name
Definition: Constants.f90:21
subroutine, public oc_cr(ocobj, name_model, inunit, iout)
@ brief Create GwfOcType
Definition: gwf-oc.f90:32
subroutine oc_ar(this, head, dis, dnodata)
@ brief Allocate and read GwfOcType
Definition: gwf-oc.f90:61
This module defines variable data types.
Definition: kind.f90:8
This module contains the OutputControlDataModule.
subroutine, public ocd_cr(ocdobj)
@ brief Create OutputControlDataType
This module contains the OutputControlModule.
@ brief Output control for GWF
Definition: gwf-oc.f90:18