687 class(PrtPrpType),
intent(inout) :: this
688 character(len=*),
intent(inout) :: option
689 logical(LGP),
intent(inout) :: found
691 character(len=MAXCHARLEN) :: fname
692 character(len=MAXCHARLEN) :: keyword
694 character(len=*),
parameter :: fmttrkbin = &
695 "(4x, 'PARTICLE TRACKS WILL BE SAVED TO BINARY FILE: ', a, /4x, &
696 &'OPENED ON UNIT: ', I0)"
697 character(len=*),
parameter :: fmttrkcsv = &
698 "(4x, 'PARTICLE TRACKS WILL BE SAVED TO CSV FILE: ', a, /4x, &
699 &'OPENED ON UNIT: ', I0)"
703 this%stoptime = this%parser%GetDouble()
705 case (
'STOPTRAVELTIME')
706 this%stoptraveltime = this%parser%GetDouble()
708 case (
'STOP_AT_WEAK_SINK')
709 this%istopweaksink = 1
712 this%istopzone = this%parser%GetInteger()
717 case (
'DRY_TRACKING_METHOD')
718 call this%parser%GetStringCaps(keyword)
719 select case (keyword)
727 write (errmsg,
'(a, a)') &
728 'Unknown dry tracking method: ', trim(keyword)
729 call store_error(errmsg)
730 write (errmsg,
'(a, a)') &
731 'DRY must be "DROP", "STOP" or "STAY"'
732 call store_error(errmsg)
733 call this%parser%StoreErrorUnit()
737 call this%parser%GetStringCaps(keyword)
738 if (keyword ==
'FILEOUT')
then
740 call this%parser%GetString(fname)
743 call openfile(this%itrkout, this%iout, fname,
'DATA(BINARY)', &
746 write (this%iout, fmttrkbin) trim(adjustl(fname)), this%itrkout
749 fname = trim(fname)//
'.hdr'
750 call openfile(this%itrkhdr, this%iout, fname,
'CSV', &
751 filstat_opt=
'REPLACE', mode_opt=mnormal)
754 call store_error(
'OPTIONAL TRACK KEYWORD MUST BE '// &
755 'FOLLOWED BY FILEOUT')
759 call this%parser%GetStringCaps(keyword)
760 if (keyword ==
'FILEOUT')
then
762 call this%parser%GetString(fname)
765 call openfile(this%itrkcsv, this%iout, fname,
'CSV', &
766 filstat_opt=
'REPLACE')
767 write (this%iout, fmttrkcsv) trim(adjustl(fname)), this%itrkcsv
770 call store_error(
'OPTIONAL TRACKCSV KEYWORD MUST BE &
771 &FOLLOWED BY FILEOUT')
777 case (
'EXTEND_TRACKING')
780 case (
'EXIT_SOLVE_TOLERANCE')
781 this%extol = this%parser%GetDouble()
782 if (this%extol <=
dzero) &
783 call store_error(
'EXIT_SOLVE_TOLERANCE MUST BE POSITIVE')
785 this%foundtol = .true.
786 case (
'RELEASE_TIME_TOLERANCE')
787 this%rttol = this%parser%GetDouble()
788 if (this%rttol <=
dzero) &
789 call store_error(
'RELEASE_TIME_TOLERANCE MUST BE POSITIVE')
791 case (
'RELEASE_TIME_FREQUENCY')
792 this%rtfreq = this%parser%GetDouble()
793 if (this%rtfreq <=
dzero) &
794 call store_error(
'RELEASE_TIME_FREQUENCY MUST BE POSITIVE')
796 case (
'DEV_FORCETERNARY')
797 call this%parser%DevOpt()
799 write (this%iout,
'(4x,a)') &
800 'TRACKING WILL BE DONE USING THE TERNARY METHOD REGARDLESS OF CELL TYPE'
802 case (
'DEV_EXIT_SOLVE_METHOD')
803 call this%parser%DevOpt()
804 this%iexmeth = this%parser%GetInteger()
805 if (.not. (this%iexmeth /= 1 .or. this%iexmeth /= 2)) &
806 call store_error(
'DEV_EXIT_SOLVE_METHOD MUST BE &
807 &1 (BRENT) OR 2 (CHANDRUPATLA)')
814 if (.not. found)
then
815 errmsg =
"UNKNOWN PRP OPTION '"//trim(keyword)//
"'."
816 call store_error(errmsg)
817 call this%parser%StoreErrorUnit()
822 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