63 real(dp),
intent(in) :: depth
66 if (depth <=
dzero)
then
68 elseif (depth <= this%radius)
then
69 area_wet = this%radius * this%radius * &
70 acos((this%radius - depth) / this%radius) - &
71 (this%radius - depth) * &
72 sqrt(this%radius * this%radius - (this%radius - depth)**
dtwo)
73 elseif (depth <=
dtwo * this%radius)
then
74 area_wet = this%radius * this%radius * &
75 (
dpi - acos((depth - this%radius) / this%radius)) - &
76 (this%radius - depth) * &
77 sqrt(this%radius * this%radius - (this%radius - depth)**
dtwo)
92 real(dp),
intent(in) :: depth
95 if (depth <= dzero)
then
97 elseif (depth <= this%radius)
then
100 elseif (depth <=
dtwo * this%radius)
then
117 character(len=LINELENGTH) :: errmsg
118 character(len=*),
intent(inout) :: line
120 integer(I4B) :: lloc, istart, istop, ival
125 call urword(line, lloc, istart, istop, 2, ival, rval, 0, 0)
129 call urword(line, lloc, istart, istop, 1, ival, rval, 0, 0)
130 select case (line(istart:istop))
132 call urword(line, lloc, istart, istop, 1, ival, rval, 0, 0)
133 this%name = line(istart:istop)
135 call urword(line, lloc, istart, istop, 3, ival, rval, 0, 0)
138 write (errmsg,
'(a,a)') &
139 'Unknown circular geometry attribute: ', line(istart:istop)
150 integer(I4B),
intent(in) :: iout
152 character(len=*),
parameter :: fmtnm =
"(4x,a,a)"
153 character(len=*),
parameter :: fmttd =
"(4x,a,1(1PG15.6))"
156 call this%BaseGeometryType%print_attributes(iout)
159 write (iout, fmttd)
'RADIUS = ', this%radius
160 write (iout, fmttd)
'SATURATED AREA = ', this%area_sat()
161 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.