683 class(PrtPrpType),
intent(inout) :: this
684 character(len=*),
intent(inout) :: option
685 logical(LGP),
intent(inout) :: found
687 character(len=MAXCHARLEN) :: fname
688 character(len=MAXCHARLEN) :: keyword
690 character(len=*),
parameter :: fmttrkbin = &
691 "(4x, 'PARTICLE TRACKS WILL BE SAVED TO BINARY FILE: ', a, /4x, &
692 &'OPENED ON UNIT: ', I0)"
693 character(len=*),
parameter :: fmttrkcsv = &
694 "(4x, 'PARTICLE TRACKS WILL BE SAVED TO CSV FILE: ', a, /4x, &
695 &'OPENED ON UNIT: ', I0)"
699 this%stoptime = this%parser%GetDouble()
701 case (
'STOPTRAVELTIME')
702 this%stoptraveltime = this%parser%GetDouble()
704 case (
'STOP_AT_WEAK_SINK')
705 this%istopweaksink = 1
708 this%istopzone = this%parser%GetInteger()
713 case (
'DRY_TRACKING_METHOD')
714 call this%parser%GetStringCaps(keyword)
715 select case (keyword)
723 write (errmsg,
'(a, a)') &
724 'Unknown dry tracking method: ', trim(keyword)
725 call store_error(errmsg)
726 write (errmsg,
'(a, a)') &
727 'DRY must be "DROP", "STOP" or "STAY"'
728 call store_error(errmsg)
729 call this%parser%StoreErrorUnit()
733 call this%parser%GetStringCaps(keyword)
734 if (keyword ==
'FILEOUT')
then
736 call this%parser%GetString(fname)
739 call openfile(this%itrkout, this%iout, fname,
'DATA(BINARY)', &
742 write (this%iout, fmttrkbin) trim(adjustl(fname)), this%itrkout
745 fname = trim(fname)//
'.hdr'
746 call openfile(this%itrkhdr, this%iout, fname,
'CSV', &
747 filstat_opt=
'REPLACE', mode_opt=mnormal)
750 call store_error(
'OPTIONAL TRACK KEYWORD MUST BE '// &
751 'FOLLOWED BY FILEOUT')
755 call this%parser%GetStringCaps(keyword)
756 if (keyword ==
'FILEOUT')
then
758 call this%parser%GetString(fname)
761 call openfile(this%itrkcsv, this%iout, fname,
'CSV', &
762 filstat_opt=
'REPLACE')
763 write (this%iout, fmttrkcsv) trim(adjustl(fname)), this%itrkcsv
766 call store_error(
'OPTIONAL TRACKCSV KEYWORD MUST BE &
767 &FOLLOWED BY FILEOUT')
773 case (
'EXTEND_TRACKING')
776 case (
'EXIT_SOLVE_TOLERANCE')
777 this%extol = this%parser%GetDouble()
778 if (this%extol <=
dzero) &
779 call store_error(
'EXIT_SOLVE_TOLERANCE MUST BE POSITIVE')
781 case (
'RELEASE_TIME_TOLERANCE')
782 this%rttol = this%parser%GetDouble()
783 if (this%rttol <=
dzero) &
784 call store_error(
'RELEASE_TIME_TOLERANCE MUST BE POSITIVE')
786 case (
'RELEASE_TIME_FREQUENCY')
787 this%rtfreq = this%parser%GetDouble()
788 if (this%rtfreq <=
dzero) &
789 call store_error(
'RELEASE_TIME_FREQUENCY MUST BE POSITIVE')
791 case (
'DEV_FORCETERNARY')
792 call this%parser%DevOpt()
794 write (this%iout,
'(4x,a)') &
795 'TRACKING WILL BE DONE USING THE TERNARY METHOD REGARDLESS OF CELL TYPE'
797 case (
'DEV_EXIT_SOLVE_METHOD')
798 call this%parser%DevOpt()
799 this%iexmeth = this%parser%GetInteger()
800 if (.not. (this%iexmeth /= 1 .or. this%iexmeth /= 2)) &
801 call store_error(
'DEV_EXIT_SOLVE_METHOD MUST BE &
802 &1 (BRENT) OR 2 (CHANDRUPATLA)')
809 if (.not. found)
then
810 errmsg =
"UNKNOWN PRP OPTION '"//trim(keyword)//
"'."
811 call store_error(errmsg)
812 call this%parser%StoreErrorUnit()
817 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