699 class(PrtPrpType),
intent(inout) :: this
700 character(len=*),
intent(inout) :: option
701 logical(LGP),
intent(inout) :: found
703 character(len=MAXCHARLEN) :: fname
704 character(len=MAXCHARLEN) :: keyword
706 character(len=*),
parameter :: fmttrkbin = &
707 "(4x, 'PARTICLE TRACKS WILL BE SAVED TO BINARY FILE: ', a, /4x, &
708 &'OPENED ON UNIT: ', I0)"
709 character(len=*),
parameter :: fmttrkcsv = &
710 "(4x, 'PARTICLE TRACKS WILL BE SAVED TO CSV FILE: ', a, /4x, &
711 &'OPENED ON UNIT: ', I0)"
715 this%stoptime = this%parser%GetDouble()
717 case (
'STOPTRAVELTIME')
718 this%stoptraveltime = this%parser%GetDouble()
720 case (
'STOP_AT_WEAK_SINK')
721 this%istopweaksink = 1
724 this%istopzone = this%parser%GetInteger()
729 case (
'DRY_TRACKING_METHOD')
730 call this%parser%GetStringCaps(keyword)
731 select case (keyword)
739 write (errmsg,
'(a, a)') &
740 'Unknown dry tracking method: ', trim(keyword)
741 call store_error(errmsg)
742 write (errmsg,
'(a, a)') &
743 'DRY must be "DROP", "STOP" or "STAY"'
744 call store_error(errmsg)
745 call this%parser%StoreErrorUnit()
749 call this%parser%GetStringCaps(keyword)
750 if (keyword ==
'FILEOUT')
then
752 call this%parser%GetString(fname)
755 call openfile(this%itrkout, this%iout, fname,
'DATA(BINARY)', &
758 write (this%iout, fmttrkbin) trim(adjustl(fname)), this%itrkout
761 fname = trim(fname)//
'.hdr'
762 call openfile(this%itrkhdr, this%iout, fname,
'CSV', &
763 filstat_opt=
'REPLACE', mode_opt=mnormal)
766 call store_error(
'OPTIONAL TRACK KEYWORD MUST BE '// &
767 'FOLLOWED BY FILEOUT')
771 call this%parser%GetStringCaps(keyword)
772 if (keyword ==
'FILEOUT')
then
774 call this%parser%GetString(fname)
777 call openfile(this%itrkcsv, this%iout, fname,
'CSV', &
778 filstat_opt=
'REPLACE')
779 write (this%iout, fmttrkcsv) trim(adjustl(fname)), this%itrkcsv
782 call store_error(
'OPTIONAL TRACKCSV KEYWORD MUST BE &
783 &FOLLOWED BY FILEOUT')
789 case (
'EXTEND_TRACKING')
792 case (
'EXIT_SOLVE_TOLERANCE')
793 this%extol = this%parser%GetDouble()
794 if (this%extol <=
dzero) &
795 call store_error(
'EXIT_SOLVE_TOLERANCE MUST BE POSITIVE')
797 case (
'RELEASE_TIME_TOLERANCE')
798 this%rttol = this%parser%GetDouble()
799 if (this%rttol <=
dzero) &
800 call store_error(
'RELEASE_TIME_TOLERANCE MUST BE POSITIVE')
802 case (
'RELEASE_TIME_FREQUENCY')
803 this%rtfreq = this%parser%GetDouble()
804 if (this%rtfreq <=
dzero) &
805 call store_error(
'RELEASE_TIME_FREQUENCY MUST BE POSITIVE')
807 case (
'DEV_FORCETERNARY')
808 call this%parser%DevOpt()
810 write (this%iout,
'(4x,a)') &
811 'TRACKING WILL BE DONE USING THE TERNARY METHOD REGARDLESS OF CELL TYPE'
813 case (
'DEV_EXIT_SOLVE_METHOD')
814 call this%parser%DevOpt()
815 this%iexmeth = this%parser%GetInteger()
816 if (.not. (this%iexmeth /= 1 .or. this%iexmeth /= 2)) &
817 call store_error(
'DEV_EXIT_SOLVE_METHOD MUST BE &
818 &1 (BRENT) OR 2 (CHANDRUPATLA)')
825 if (.not. found)
then
826 errmsg =
"UNKNOWN PRP OPTION '"//trim(keyword)//
"'."
827 call store_error(errmsg)
828 call this%parser%StoreErrorUnit()
833 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