701 class(PrtPrpType),
intent(inout) :: this
702 character(len=*),
intent(inout) :: option
703 logical(LGP),
intent(inout) :: found
705 character(len=MAXCHARLEN) :: fname
706 character(len=MAXCHARLEN) :: keyword
708 character(len=*),
parameter :: fmttrkbin = &
709 "(4x, 'PARTICLE TRACKS WILL BE SAVED TO BINARY FILE: ', a, /4x, &
710 &'OPENED ON UNIT: ', I0)"
711 character(len=*),
parameter :: fmttrkcsv = &
712 "(4x, 'PARTICLE TRACKS WILL BE SAVED TO CSV FILE: ', a, /4x, &
713 &'OPENED ON UNIT: ', I0)"
717 this%stoptime = this%parser%GetDouble()
719 case (
'STOPTRAVELTIME')
720 this%stoptraveltime = this%parser%GetDouble()
722 case (
'STOP_AT_WEAK_SINK')
723 this%istopweaksink = 1
726 this%istopzone = this%parser%GetInteger()
731 case (
'DRY_TRACKING_METHOD')
732 call this%parser%GetStringCaps(keyword)
733 select case (keyword)
741 write (errmsg,
'(a, a)') &
742 'Unknown dry tracking method: ', trim(keyword)
743 call store_error(errmsg)
744 write (errmsg,
'(a, a)') &
745 'DRY must be "DROP", "STOP" or "STAY"'
746 call store_error(errmsg)
747 call this%parser%StoreErrorUnit()
751 call this%parser%GetStringCaps(keyword)
752 if (keyword ==
'FILEOUT')
then
754 call this%parser%GetString(fname)
757 call openfile(this%itrkout, this%iout, fname,
'DATA(BINARY)', &
760 write (this%iout, fmttrkbin) trim(adjustl(fname)), this%itrkout
763 fname = trim(fname)//
'.hdr'
764 call openfile(this%itrkhdr, this%iout, fname,
'CSV', &
765 filstat_opt=
'REPLACE', mode_opt=mnormal)
768 call store_error(
'OPTIONAL TRACK KEYWORD MUST BE '// &
769 'FOLLOWED BY FILEOUT')
773 call this%parser%GetStringCaps(keyword)
774 if (keyword ==
'FILEOUT')
then
776 call this%parser%GetString(fname)
779 call openfile(this%itrkcsv, this%iout, fname,
'CSV', &
780 filstat_opt=
'REPLACE')
781 write (this%iout, fmttrkcsv) trim(adjustl(fname)), this%itrkcsv
784 call store_error(
'OPTIONAL TRACKCSV KEYWORD MUST BE &
785 &FOLLOWED BY FILEOUT')
791 case (
'EXTEND_TRACKING')
794 case (
'EXIT_SOLVE_TOLERANCE')
795 this%extol = this%parser%GetDouble()
796 if (this%extol <=
dzero) &
797 call store_error(
'EXIT_SOLVE_TOLERANCE MUST BE POSITIVE')
799 case (
'RELEASE_TIME_TOLERANCE')
800 this%rttol = this%parser%GetDouble()
801 if (this%rttol <=
dzero) &
802 call store_error(
'RELEASE_TIME_TOLERANCE MUST BE POSITIVE')
804 case (
'RELEASE_TIME_FREQUENCY')
805 this%rtfreq = this%parser%GetDouble()
806 if (this%rtfreq <=
dzero) &
807 call store_error(
'RELEASE_TIME_FREQUENCY MUST BE POSITIVE')
809 case (
'DEV_FORCETERNARY')
810 call this%parser%DevOpt()
812 write (this%iout,
'(4x,a)') &
813 'TRACKING WILL BE DONE USING THE TERNARY METHOD REGARDLESS OF CELL TYPE'
815 case (
'DEV_EXIT_SOLVE_METHOD')
816 call this%parser%DevOpt()
817 this%iexmeth = this%parser%GetInteger()
818 if (.not. (this%iexmeth /= 1 .or. this%iexmeth /= 2)) &
819 call store_error(
'DEV_EXIT_SOLVE_METHOD MUST BE &
820 &1 (BRENT) OR 2 (CHANDRUPATLA)')
827 if (.not. found)
then
828 errmsg =
"UNKNOWN PRP OPTION '"//trim(keyword)//
"'."
829 call store_error(errmsg)
830 call this%parser%StoreErrorUnit()
835 this%schedule => create_release_schedule(tol=this%rttol)
This module contains simulation constants.
real(dp), parameter dzero
real constant zero
integer(i4b), parameter maxcharlen
maximum length of char string
character(len= *), parameter, public trackdtypes
character(len= *), parameter, public trackheader