69 real(dp),
intent(in) :: depth
72 if (depth <=
dzero)
then
74 elseif (depth <= this%radius)
then
75 area_wet = this%radius * this%radius * &
76 acos((this%radius - depth) / this%radius) - &
77 (this%radius - depth) * &
78 sqrt(this%radius * this%radius - (this%radius - depth)**
dtwo)
79 elseif (depth <=
dtwo * this%radius)
then
80 area_wet = this%radius * this%radius * &
81 (
dpi - acos((depth - this%radius) / this%radius)) - &
82 (this%radius - depth) * &
83 sqrt(this%radius * this%radius - (this%radius - depth)**
dtwo)
101 real(dp),
intent(in) :: depth
104 if (depth <= dzero)
then
106 elseif (depth <= this%radius)
then
109 elseif (depth <=
dtwo * this%radius)
then
129 character(len=LINELENGTH) :: errmsg
130 character(len=*),
intent(inout) :: line
132 integer(I4B) :: lloc, istart, istop, ival
137 call urword(line, lloc, istart, istop, 2, ival, rval, 0, 0)
141 call urword(line, lloc, istart, istop, 1, ival, rval, 0, 0)
142 select case (line(istart:istop))
144 call urword(line, lloc, istart, istop, 1, ival, rval, 0, 0)
145 this%name = line(istart:istop)
147 call urword(line, lloc, istart, istop, 3, ival, rval, 0, 0)
150 write (errmsg,
'(a,a)') &
151 'Unknown circular geometry attribute: ', line(istart:istop)
165 integer(I4B),
intent(in) :: iout
167 character(len=*),
parameter :: fmtnm =
"(4x,a,a)"
168 character(len=*),
parameter :: fmttd =
"(4x,a,1(1PG15.6))"
171 call this%BaseGeometryType%print_attributes(iout)
174 write (iout, fmttd)
'RADIUS = ', this%radius
175 write (iout, fmttd)
'SATURATED AREA = ', this%area_sat()
176 write (iout, fmttd)
'SATURATED WETTED PERIMETER = ', this%perimeter_sat()
real(dp) function area_sat(this)
Return area as if geometry is fully saturated.
real(dp) function perimeter_wet(this, depth)
Return wetted perimeter.
subroutine print_attributes(this, iout)
Print the attributes for this object.
subroutine set_attribute(this, line)
Set a parameter for this circular object.
real(dp) function area_wet(this, depth)
Return wetted area.
real(dp) function perimeter_sat(this)
Return perimeter as if geometry is fully saturated.
This module contains simulation constants.
integer(i4b), parameter linelength
maximum length of a standard line
real(dp), parameter dpi
real constant
real(dp), parameter dzero
real constant zero
real(dp), parameter dtwo
real constant 2
This module defines variable data types.
This module contains simulation methods.
subroutine, public store_error(msg, terminate)
Store an error message.
integer(i4b) function, public count_errors()
Return number of errors.