From b19cd08038e467ff3728f2936b9f7dcde92cb02c Mon Sep 17 00:00:00 2001 From: Steve Regan Date: Fri, 6 Sep 2024 09:44:52 -0600 Subject: [PATCH] no_snow_flag changed to snow_flag updates from Parker, including fix in climate_hru.f90 changed print of stress periods from I4 to I5 --- GSFLOW/src/gsflow/gsflow_modflow.f | 4 +- GSFLOW/src/gsflow/gsflow_module.f90 | 6 +- GSFLOW/src/gsflow/gsflow_prms.f90 | 30 ++-- GSFLOW/src/modflow/gwf2bas7_NWT.f | 26 ++-- GSFLOW/src/modflow/gwf2uzf1_NWT.f | 2 +- GSFLOW/src/prms/basin.f90 | 15 ++ GSFLOW/src/prms/c_read_parameter_file.f90 | 2 +- GSFLOW/src/prms/climate_hru.f90 | 4 +- GSFLOW/src/prms/climateflow.f90 | 6 +- GSFLOW/src/prms/dynamic_param_read.f90 | 6 +- GSFLOW/src/prms/intcp.f90 | 6 +- GSFLOW/src/prms/nsegment_summary.f90 | 2 +- GSFLOW/src/prms/potet_pan.f90 | 10 +- GSFLOW/src/prms/precip_map.f90 | 4 +- GSFLOW/src/prms/routing.f90 | 3 - GSFLOW/src/prms/sm_read_control_file.f90 | 11 +- GSFLOW/src/prms/sm_read_parameter_file.f90 | 173 ++++++++++----------- GSFLOW/src/prms/temp_map.f90 | 4 +- 18 files changed, 162 insertions(+), 152 deletions(-) diff --git a/GSFLOW/src/gsflow/gsflow_modflow.f b/GSFLOW/src/gsflow/gsflow_modflow.f index a18493eef..06c112e30 100644 --- a/GSFLOW/src/gsflow/gsflow_modflow.f +++ b/GSFLOW/src/gsflow/gsflow_modflow.f @@ -442,7 +442,7 @@ SUBROUTINE MFNWT_RUN(AFR, Diversions, Idivert, EXCHANGE, USE PRMS_CONSTANTS, ONLY: DEBUG_less, MODFLOW, ACTIVE, OFF, & ERROR_time, ERROR_modflow, MODSIM_GSFLOW, GSFLOW, CANOPY, & MODSIM_MODFLOW - USE PRMS_MODULE, ONLY: Kper_mfo, Kkiter, Timestep, no_snow_flag, + USE PRMS_MODULE, ONLY: Kper_mfo, Kkiter, Timestep, snow_flag, & Init_vars_from_file, Mxsziter, Glacier_flag, AG_flag, & PRMS_land_iteration_flag, activeHRU_inactiveCELL_flag, & Model, GSFLOW_flag, Print_debug, Soilzone_module @@ -666,7 +666,7 @@ SUBROUTINE MFNWT_RUN(AFR, Diversions, Idivert, EXCHANGE, 2 Model==MODSIM_GSFLOW) ) THEN IF ( PRMS_land_iteration_flag==CANOPY ) THEN retval = intcp() - IF ( no_snow_flag==OFF ) THEN + IF ( snow_flag==ACTIVE ) THEN retval = snowcomp() IF ( Glacier_flag==ACTIVE ) THEN retval = glacr() diff --git a/GSFLOW/src/gsflow/gsflow_module.f90 b/GSFLOW/src/gsflow/gsflow_module.f90 index 700342b29..5d1d83852 100644 --- a/GSFLOW/src/gsflow/gsflow_module.f90 +++ b/GSFLOW/src/gsflow/gsflow_module.f90 @@ -13,12 +13,12 @@ MODULE PRMS_MODULE character(len=*), parameter :: PRMS_VERSION = 'Version 6.0.0 09/01/2024' character(len=*), parameter :: githash = 'Github Commit Hash b7b217f master branch' character(len=*), parameter :: Version_read_control_file = '2024-08-01' - character(len=*), parameter :: Version_read_parameter_file = '2024-06-21' + character(len=*), parameter :: Version_read_parameter_file = '2024-08-27' character(len=*), parameter :: Version_read_data_file = '2023-06-02' CHARACTER(LEN=8), SAVE :: Process ! Dimensions INTEGER, SAVE :: Nratetbl, Nwateruse, Nexternal, Nconsumed, Npoigages, Ncascade, Ncascdgw, Ncbh - INTEGER, SAVE :: Nhru, Nssr, Ngw, Nsub, Nhrucell, Nlake, Ngwcell, Nlake_hrus + INTEGER, SAVE :: Nhru, Nssr, Ngw, Nsub, Nhrucell, Nlake, Ngwcell, Nlake_hrus, Nmonths INTEGER, SAVE :: Ntemp, Nrain, Nsol, Nsegment, Ndepl, Nobs, Nevap, Ndeplval, Nmap2hru, Nmap, Nsnow INTEGER, SAVE :: NLAKES_MF, Nreach ! Global @@ -69,7 +69,7 @@ MODULE PRMS_MODULE INTEGER, SAVE :: irrigation_apply_flag, Dyn_ag_frac_flag, Dyn_ag_soil_flag, activeHRU_inactiveCELL_flag INTEGER, SAVE :: Dprst_add_water_use, Dprst_transfer_water_use INTEGER, SAVE :: Snarea_curve_flag, Soilzone_aet_flag, snow_cloudcover_flag - INTEGER, SAVE :: seg2hru_flag, no_snow_flag, forcing_check_flag + INTEGER, SAVE :: seg2hru_flag, snow_flag, forcing_check_flag CHARACTER(LEN=MAXFILE_LENGTH), SAVE :: Model_output_file, Var_init_file, Var_save_file CHARACTER(LEN=MAXFILE_LENGTH), SAVE :: Gsflow_output_file, selectDatesFileName, Data_file, Stat_var_file CHARACTER(LEN=MAXFILE_LENGTH), SAVE :: Csv_output_file, Model_control_file, Param_file diff --git a/GSFLOW/src/gsflow/gsflow_prms.f90 b/GSFLOW/src/gsflow/gsflow_prms.f90 index 8dccec9f1..6774e0dae 100644 --- a/GSFLOW/src/gsflow/gsflow_prms.f90 +++ b/GSFLOW/src/gsflow/gsflow_prms.f90 @@ -453,7 +453,7 @@ SUBROUTINE gsflow_prms(Process_mode, AFR, MS_GSF_converge, Nsegshold, Nlakeshold IF ( (PRMS_land_iteration_flag < 2 .AND. PRMS_flag==ACTIVE) .OR. Process_flag/=RUN ) THEN ierr = intcp() - IF ( no_snow_flag==OFF ) THEN + IF ( snow_flag==ACTIVE ) THEN ierr = snowcomp() IF ( Glacier_flag==ACTIVE ) ierr = glacr() @@ -680,7 +680,6 @@ SUBROUTINE setdims(AFR, Diversions, Idivert, EXCHANGE, DELTAVOL, LAKEVOL, Nsegsh IF ( Model_mode(:5)=='PRMS5' .OR. Model_mode(:5)=='prms5' ) PRMS4_flag = OFF IF ( Model_mode(:5)=='PRMS6' .OR. Model_mode(:5)=='prms6' ) THEN PRMS4_flag = OFF - Model = PRMS6 PRMS6_flag = ACTIVE ENDIF PRMS_only = ACTIVE @@ -1055,7 +1054,7 @@ SUBROUTINE setdims(AFR, Diversions, Idivert, EXCHANGE, DELTAVOL, LAKEVOL, Nsegsh IF ( decldim('nmap', 0, MAXDIM, 'Number of mapped values')/=0 ) CALL read_error(7, 'nmap') ! 0 = no glacier simulation; 1 = glacr_melt (Ashley) simulation; 2 = Anderson method IF ( control_integer(Glacier_flag, 'glacier_flag')/=0 ) Glacier_flag = OFF - IF ( control_integer(no_snow_flag, 'no_snow_flag')/=0 ) no_snow_flag = OFF + IF ( control_integer(snow_flag, 'snow_flag')/=0 ) snow_flag = ACTIVE IF ( control_integer(Frozen_flag, 'frozen_flag')/=0 ) Frozen_flag = OFF IF ( control_integer(Dyn_imperv_flag, 'dyn_imperv_flag')/=0 ) Dyn_imperv_flag = OFF IF ( control_integer(Dyn_intcp_flag, 'dyn_intcp_flag')/=0 ) Dyn_intcp_flag = OFF @@ -1120,9 +1119,9 @@ SUBROUTINE setdims(AFR, Diversions, Idivert, EXCHANGE, DELTAVOL, LAKEVOL, Nsegsh ! cascade ! if cascade_flag = 2 (CASCADE_HRU_SEGMENT), use hru_segment parameter for cascades, ncascade=ncascdgw=nhru (typical polygon HRUs) - IF ( control_integer(Cascade_flag, 'cascade_flag')/=0 ) Cascade_flag = ACTIVE + IF ( control_integer(Cascade_flag, 'cascade_flag')/=0 ) Cascade_flag = CASCADE_NORMAL ! if cascadegw_flag = 2 (CASCADEGW_SAME), use same cascades as HRUs - IF ( control_integer(Cascadegw_flag, 'cascadegw_flag')/=0 ) Cascadegw_flag = OFF + IF ( control_integer(Cascadegw_flag, 'cascadegw_flag')/=0 ) Cascadegw_flag = CASCADE_NORMAL ! spatial units IF ( decldim('ngw', 1, MAXDIM, 'Number of GWRs')/=0 ) CALL read_error(7, 'ngw') @@ -1158,6 +1157,7 @@ SUBROUTINE setdims(AFR, Diversions, Idivert, EXCHANGE, DELTAVOL, LAKEVOL, Nsegsh IF ( declfix('ndays', MAX_DAYS_PER_YEAR, MAX_DAYS_PER_YEAR, 'Maximum number of days in a year ')/=0 ) & & CALL read_error(7, 'ndays') IF ( declfix('nmonths', 12, 12, 'Number of months in a year')/=0 ) CALL read_error(7, 'nmonths') + Nmonths = 12 IF ( declfix('one', 1, 1, 'Number of values for scaler array')/=0 ) CALL read_error(7, 'one') IF ( Inputerror_flag==1 ) THEN @@ -1591,7 +1591,7 @@ SUBROUTINE gsflow_prms_restart(In_out) INTRINSIC :: TRIM ! Local Variables INTEGER :: nhru_test, dprst_test, nsegment_test, temp_test, et_test, ierr, time_step - INTEGER :: cascade_test, cascdgw_test, nhrucell_test, nlake_test, transp_test, start_time(6), end_time(6) + INTEGER :: nhrucell_test, nlake_test, transp_test, start_time(6), end_time(6) CHARACTER(LEN=MAXCONTROL_LENGTH) :: model_test CHARACTER(LEN=11) :: module_name !*********************************************************************** @@ -1599,12 +1599,12 @@ SUBROUTINE gsflow_prms_restart(In_out) IF ( text_restart_flag==OFF ) THEN WRITE ( Restart_outunit ) MODNAME WRITE ( Restart_outunit ) Timestep, Nhru, Dprst_flag, Nsegment, Temp_flag, Et_flag, & - & Cascade_flag, Cascadegw_flag, Nhrucell, Nlake, Transp_flag, Model_mode + & Nhrucell, Nlake, Transp_flag, Model_mode WRITE ( Restart_outunit ) Starttime, Endtime ELSE WRITE ( Restart_outunit, * ) MODNAME WRITE ( Restart_outunit, * ) Timestep, Nhru, Dprst_flag, Nsegment, Temp_flag, Et_flag, & - Cascade_flag, Cascadegw_flag, Nhrucell, Nlake, Transp_flag, Model_mode + Nhrucell, Nlake, Transp_flag, Model_mode WRITE ( Restart_outunit, * ) Starttime, Endtime ENDIF ELSE @@ -1613,13 +1613,13 @@ SUBROUTINE gsflow_prms_restart(In_out) READ ( Restart_inunit ) module_name CALL check_restart(MODNAME, module_name) READ ( Restart_inunit ) time_step, nhru_test, dprst_test, nsegment_test, temp_test, et_test, & - & cascade_test, cascdgw_test, nhrucell_test, nlake_test, transp_test, model_test + & nhrucell_test, nlake_test, transp_test, model_test READ ( Restart_inunit ) start_time, end_time ELSE READ ( Restart_inunit, * ) module_name CALL check_restart(MODNAME, module_name) READ ( Restart_inunit, * ) time_step, nhru_test, dprst_test, nsegment_test, temp_test, et_test, & - cascade_test, cascdgw_test, nhrucell_test, nlake_test, transp_test, model_test + nhrucell_test, nlake_test, transp_test, model_test READ ( Restart_inunit, * ) start_time, end_time ENDIF IF ( Print_debug>DEBUG_minimum ) PRINT 4, EQULS, 'Simulation time period of Restart File:', & @@ -1639,16 +1639,6 @@ SUBROUTINE gsflow_prms_restart(In_out) PRINT *, ' Current model has dprst_flag=', Dprst_flag, ' they must be equal' ierr = 1 ENDIF - IF ( Cascade_flag/=cascade_test ) THEN - PRINT *, 'ERROR, Initial Conditions File saved for model with cascade_flag=', cascade_test - PRINT *, ' Current model has cascade_flag=', Cascade_flag, ' they must be equal' - ierr = 1 - ENDIF - IF ( Cascadegw_flag/=cascdgw_test ) THEN - PRINT *, 'ERROR, Initial Conditions File saved for model with cascadegw_flag=', cascdgw_test - PRINT *, ' Current model has cascadegw_flag=', Cascadegw_flag, ' they must be equal' - ierr = 1 - ENDIF CALL check_restart_dimen('nsegment', nsegment_test, Nsegment, ierr) ! Temp_flag (1=temp_1sta; 2=temp_laps; 3=temp_dist2; 5=ide_dist; 6=xyz_dist; 7=climate_hru; 8=temp_sta IF ( Temp_flag/=temp_test ) THEN diff --git a/GSFLOW/src/modflow/gwf2bas7_NWT.f b/GSFLOW/src/modflow/gwf2bas7_NWT.f index b6b064333..ebcb69482 100644 --- a/GSFLOW/src/modflow/gwf2bas7_NWT.f +++ b/GSFLOW/src/modflow/gwf2bas7_NWT.f @@ -367,7 +367,7 @@ SUBROUTINE GWF2BAS7ST(KPER,IGRID) C C1------WRITE STRESS PERIOD INFORMATION WRITE (IOUT,1) KPER,PERLEN(KPER),NSTP(KPER),TSMULT(KPER) - 1 FORMAT('1',/28X,'STRESS PERIOD NO. ',I4,', LENGTH =',G15.7,/ + 1 FORMAT('1',/28X,'STRESS PERIOD NO. ',I5,', LENGTH =',G15.7,/ 1 28X,47('-'),// 2 30X,'NUMBER OF TIME STEPS =',I6,// 3 31X,'MULTIPLIER FOR DELT =',F10.3) @@ -579,7 +579,7 @@ SUBROUTINE GWF2BAS7OT(KSTP,KPER,ICNVG,ISA,IGRID,BUDPERC) IF(ISA.EQ.0) THEN WRITE(IOUT,9) KSTP,KPER 9 FORMAT(1X,/9X,'NO FLOW EQUATION TO SOLVE IN TIME STEP',I5, - 1 ' OF STRESS PERIOD',I3,/1X,'ALL HEADS ARE 0.0') + 1 ' OF STRESS PERIOD',I5,/1X,'ALL HEADS ARE 0.0') IPFLG=1 END IF C @@ -588,7 +588,7 @@ SUBROUTINE GWF2BAS7OT(KSTP,KPER,ICNVG,ISA,IGRID,BUDPERC) WRITE(IOUT,17) KSTP,KPER 17 FORMAT(1X,/9X, 1 '****FAILED TO MEET SOLVER CONVERGENCE CRITERIA IN TIME STEP', - 2 I5,' OF STRESS PERIOD ',I4,'****') + 2 I5,' OF STRESS PERIOD ',I5,'****') IPFLG=1 END IF C @@ -683,7 +683,7 @@ SUBROUTINE SGWF2BAS7ARDIS(IUDIS,IOUT) WRITE(IOUT,15) NLAY,NROW,NCOL 15 FORMAT(1X,I4,' LAYERS',I10,' ROWS',I10,' COLUMNS') WRITE(IOUT,20) NPER - 20 FORMAT(1X,I4,' STRESS PERIOD(S) IN SIMULATION') + 20 FORMAT(1X,I5,' STRESS PERIOD(S) IN SIMULATION') C C5------SELECT AND PRINT A MESSAGE SHOWING TIME UNIT. IF(ITMUNI.LT.0 .OR. ITMUNI.GT.5) ITMUNI=0 @@ -915,7 +915,7 @@ SUBROUTINE SGWF2BAS7D(KSTP,KPER,IPFLG,ISA) IF(IOFLG(K,4).EQ.0) GO TO 79 IF(IFIRST.EQ.1) WRITE(IOUT,74) IDDNUN,KSTP,KPER 74 FORMAT(1X,/1X,'DRAWDOWN WILL BE SAVED ON UNIT ',I4, - 1 ' AT END OF TIME STEP',I5,', STRESS PERIOD ',I4) + 1 ' AT END OF TIME STEP',I5,', STRESS PERIOD ',I5) IFIRST=0 IF(CDDNFM.EQ.' ') THEN CALL ULASAV(BUFF(:,:,K),TEXT,KSTP,KPER,PERTIM,TOTIM,NCOL, @@ -1010,7 +1010,7 @@ SUBROUTINE SGWF2BAS7H(KSTP,KPER,IPFLG,ISA) IF(IOFLG(K,3).EQ.0) GO TO 79 IF(IFIRST.EQ.1) WRITE(IOUT,74) IHEDUN,KSTP,KPER 74 FORMAT(1X,/1X,'HEAD WILL BE SAVED ON UNIT ',I4, - 1 ' AT END OF TIME STEP',I5,', STRESS PERIOD ',I4) + 1 ' AT END OF TIME STEP',I5,', STRESS PERIOD ',I5) IFIRST=0 IF(CHEDFM.EQ.' ') THEN CALL ULASAV(BUFF(:,:,K),TEXT,KSTP,KPER,PERTIM,TOTIM,NCOL, @@ -1061,7 +1061,7 @@ SUBROUTINE SGWF2BAS7IB(KSTP,KPER) IF(IOFLG(K,5).EQ.0) GO TO 79 IF(IFIRST.EQ.1) WRITE(IOUT,74) IBOUUN,KSTP,KPER 74 FORMAT(1X,/1X,'IBOUND WILL BE SAVED ON UNIT ',I4, - 1 ' AT END OF TIME STEP',I5,', STRESS PERIOD ',I4) + 1 ' AT END OF TIME STEP',I5,', STRESS PERIOD ',I5) IFIRST=0 CALL ULASV3(IBOUND(:,:,K),TEXT,KSTP,KPER,PERTIM,TOTIM,NCOL, 1 NROW,KK,IBOUUN,CBOUFM,LBBOSV) @@ -1367,7 +1367,7 @@ SUBROUTINE SGWF2BAS7T(KSTP,KPER,DELT,PERTIM,TOTIM,ITMUNI,IOUT) C ------------------------------------------------------------------ WRITE(IOUT,199) KSTP,KPER 199 FORMAT(1X,///9X,'TIME SUMMARY AT END OF TIME STEP',I5, - 1 ' IN STRESS PERIOD ',I4) + 1 ' IN STRESS PERIOD ',I5) C C1------USE TIME UNIT INDICATOR TO GET FACTOR TO CONVERT TO SECONDS. ZERO=0. @@ -1572,7 +1572,7 @@ SUBROUTINE SGWF2BAS7V(MSUM,VBNM,VBVL,KSTP,KPER,IOUT,BUDPERC) C ---FORMATS C 260 FORMAT('1',/2X,'VOLUMETRIC BUDGET FOR ENTIRE MODEL AT END OF' - 1,' TIME STEP',I5,', STRESS PERIOD',I4/2X,78('-')) + 1,' TIME STEP',I5,', STRESS PERIOD',I5/2X,78('-')) 265 FORMAT(1X,/5X,'CUMULATIVE VOLUMES',6X,'L**3',7X 1,'RATES FOR THIS TIME STEP',6X,'L**3/T'/5X,18('-'),17X,24('-') 2//11X,'IN:',38X,'IN:'/11X,'---',38X,'---') @@ -1605,8 +1605,8 @@ SUBROUTINE SGWF2BAS7N(KPER,KSTP,INOC,IOUT,NLAY) 5 FORMAT(1X,/1X,'OUTPUT CONTROL WAS SPECIFIED FOR A NONEXISTENT', 1 ' TIME STEP',/ 2 1X,'OR OUTPUT CONTROL DATA ARE NOT ENTERED IN ASCENDING ORDER', - 3 /1X,'OUTPUT CONTROL STRESS PERIOD ',I4,' TIME STEP',I5,/ - 4 1X,'MODEL STRESS PERIOD ',I4,' TIME STEP',I5,/ + 3 /1X,'OUTPUT CONTROL STRESS PERIOD ',I5,' TIME STEP',I5,/ + 4 1X,'MODEL STRESS PERIOD ',I5,' TIME STEP',I5,/ 5 1X,'APPLYING THE SPECIFIED OUTPUT CONTROL TO THE CURRENT TIME', 6 ' STEP') IPEROC=KPER @@ -1627,7 +1627,7 @@ SUBROUTINE SGWF2BAS7N(KPER,KSTP,INOC,IOUT,NLAY) C3------AND RETURN. IF(IPEROC.NE.KPER .OR. ITSOC.NE.KSTP) THEN WRITE(IOUT,11) KPER,KSTP -11 FORMAT(1X,/1X,'NO OUTPUT CONTROL FOR STRESS PERIOD ',I4, +11 FORMAT(1X,/1X,'NO OUTPUT CONTROL FOR STRESS PERIOD ',I5, 1 ' TIME STEP',I5) RETURN END IF @@ -1635,7 +1635,7 @@ SUBROUTINE SGWF2BAS7N(KPER,KSTP,INOC,IOUT,NLAY) C4------OUTPUT CONTROL TIME STEP MATCHES SIMULATION TIME STEP. IDDREF=IDDREFNEW WRITE(IOUT,12) IPEROC,ITSOC -12 FORMAT(1X,/1X,'OUTPUT CONTROL FOR STRESS PERIOD ',I4, +12 FORMAT(1X,/1X,'OUTPUT CONTROL FOR STRESS PERIOD ',I5, 1 ' TIME STEP',I5) IF(IDDREFNEW.NE.0) WRITE(IOUT,52) 52 FORMAT(1X,'Drawdown Reference will be reset at the', diff --git a/GSFLOW/src/modflow/gwf2uzf1_NWT.f b/GSFLOW/src/modflow/gwf2uzf1_NWT.f index 3a8bccf8e..fb0891eb9 100644 --- a/GSFLOW/src/modflow/gwf2uzf1_NWT.f +++ b/GSFLOW/src/modflow/gwf2uzf1_NWT.f @@ -4256,7 +4256,7 @@ SUBROUTINE GWF2UZF1BD(Kkstp, Kkper, Iunitlak, Iunitsfr, Igrid) IF ( IBUDFL.GT.0 ) WRITE (IOUT, 9015) C67-----FORMATS. 9002 FORMAT (1X//,'UNSATURATED ZONE PACKAGE VOLUMETRIC BUDGET FOR ', - + ' TIME STEP', I6, ' STRESS PERIOD ', I4, /2X, 78('-')//) !gsf + + ' TIME STEP', I6, ' STRESS PERIOD ', I5, /2X, 78('-')//) !gsf 9003 FORMAT (1X, /5X, 'CUMULATIVE VOLUMES', 6X, 'L**3', 7X, + 'RATES FOR THIS TIME STEP', 6X, 'L**3/T'/5X, 18('-'), 17X, + 24('-')//11X, 'IN:', 38X, 'IN:'/11X, '---', 38X, '---') diff --git a/GSFLOW/src/prms/basin.f90 b/GSFLOW/src/prms/basin.f90 index 29c5c6643..9dc9e8a2c 100644 --- a/GSFLOW/src/prms/basin.f90 +++ b/GSFLOW/src/prms/basin.f90 @@ -16,6 +16,8 @@ MODULE PRMS_BASIN INTEGER, SAVE, ALLOCATABLE :: Gwr_type(:), Hru_route_order(:), Gwr_route_order(:) INTEGER, SAVE :: Weir_gate_flag, Puls_lin_flag DOUBLE PRECISION, SAVE, ALLOCATABLE :: Hru_area_dble(:), Lake_area(:) +!! LOGICAL, ALLOCATABLE, SAVE :: active_mask(:) +!! INTEGER, ALLOCATABLE, SAVE :: active_mask_hru(:) ! Declared Variables REAL, SAVE, ALLOCATABLE :: Hru_frac_perv(:), Ag_area(:) REAL, SAVE, ALLOCATABLE :: Hru_frac_imperv(:), Hru_frac_dprst(:) @@ -599,6 +601,19 @@ INTEGER FUNCTION basinit() Active_hrus = j Active_area = Land_area + Water_area +!! ! Create mask of only active HRUs +!! allocate( active_mask(nhru) +!! active_mask = .false. +!! where (hru_type /= INACTIVE) active_mask = .true. +!! active_mask_hru(Active_hrus) ) +!! j = 0 +!! do i = 1, Nhru +!! if ( active_mask(i) ) then +!! j = j + 1 +!! active_mask_hru(j) = i +!! endif +!! enddo + Active_gwrs = Active_hrus IF ( gwflow_flag==ACTIVE .OR. activeHRU_inactiveCELL_flag == ACTIVE ) THEN Gwr_type = Hru_type diff --git a/GSFLOW/src/prms/c_read_parameter_file.f90 b/GSFLOW/src/prms/c_read_parameter_file.f90 index b99216f9a..69eecd10e 100644 --- a/GSFLOW/src/prms/c_read_parameter_file.f90 +++ b/GSFLOW/src/prms/c_read_parameter_file.f90 @@ -20,7 +20,7 @@ module PRMS_READ_PARAM_FILE integer, pointer :: values_int_1d(:) integer, pointer :: values_int_2d(:, :) real :: maximum, minimum, default_real - character(LEN=16), pointer :: values_char_1d(:) + character(LEN=16), pointer :: values_char_1d(:), values_char_0d end type PRMS_parameter type(PRMS_parameter), save, allocatable :: Parameter_data(:) diff --git a/GSFLOW/src/prms/climate_hru.f90 b/GSFLOW/src/prms/climate_hru.f90 index 3fa2b98e9..1315c670c 100644 --- a/GSFLOW/src/prms/climate_hru.f90 +++ b/GSFLOW/src/prms/climate_hru.f90 @@ -164,7 +164,7 @@ INTEGER FUNCTION climate_hru() IF ( istop==0 ) THEN IF ( cbh_active_flag==ACTIVE ) THEN Swrad = -999.0 - DO i = i, Ncbh + DO i = 1, Ncbh Swrad(cbh_hru_id(i)) = values(i) ENDDO ENDIF @@ -190,7 +190,7 @@ INTEGER FUNCTION climate_hru() IF ( istop==0 ) THEN IF ( cbh_active_flag==ACTIVE ) THEN Transp_on = -999 - DO i = i, Ncbh + DO i = 1, Ncbh Transp_on(cbh_hru_id(i)) = ivalues(i) ENDDO ENDIF diff --git a/GSFLOW/src/prms/climateflow.f90 b/GSFLOW/src/prms/climateflow.f90 index 7fef5c0d4..f2cc524b2 100644 --- a/GSFLOW/src/prms/climateflow.f90 +++ b/GSFLOW/src/prms/climateflow.f90 @@ -165,7 +165,7 @@ INTEGER FUNCTION climateflow_decl() & Strmflow_module, Temp_module, Stream_order_flag, PRMS6_flag, & & Precip_module, Solrad_module, Transp_module, Et_module, PRMS4_flag, & & Soilzone_module, Srunoff_module, Call_cascade, Et_flag, Dprst_flag, Solrad_flag, Humidity_cbh_flag, & - & AG_flag, PRMS_land_iteration_flag, GSFLOW_flag, no_snow_flag, gwflow_flag, Nhrucell + & AG_flag, PRMS_land_iteration_flag, GSFLOW_flag, snow_flag, gwflow_flag, Nhrucell use PRMS_MMFAPI, only: declvar_int, declvar_dble, declvar_real use PRMS_READ_PARAM_FILE, only: declparam USE PRMS_CLIMATEVARS @@ -648,7 +648,7 @@ INTEGER FUNCTION climateflow_decl() ALLOCATE ( Snowmelt(Nhru) ) ALLOCATE ( Pptmix_nopack(Nhru) ) ALLOCATE ( It0_pkwater_equiv(Nhru) ) - IF ( no_snow_flag==OFF ) THEN + IF ( snow_flag==ACTIVE ) THEN CALL declvar_dble('snowcomp', 'basin_pweqv', 'one', 1, & & 'Basin area-weighted average snowpack water equivalent (not including glacier)', & & 'inches', Basin_pweqv) @@ -1097,7 +1097,7 @@ INTEGER FUNCTION climateflow_init() IF ( getparam_real(Temp_module, 'tmax_adj', Nhru*MONTHS_PER_YEAR, Tmax_aspect_adjust)/=0 ) & CALL read_error(2, 'tmax_adj') ENDIF - ENDIF + ENDIF IF ( getparam_int(Temp_module, 'temp_units', 1, Temp_units)/=0 ) CALL read_error(2, 'temp_units') diff --git a/GSFLOW/src/prms/dynamic_param_read.f90 b/GSFLOW/src/prms/dynamic_param_read.f90 index 079b852ec..732a09a86 100644 --- a/GSFLOW/src/prms/dynamic_param_read.f90 +++ b/GSFLOW/src/prms/dynamic_param_read.f90 @@ -35,7 +35,7 @@ MODULE PRMS_DYNAMIC_PARAM_READ REAL, SAVE, ALLOCATABLE :: Temp(:), Potet_coef(:, :) ! Control Parameters CHARACTER(LEN=MAXFILE_LENGTH) :: wrain_intcp_dynamic, srain_intcp_dynamic, snow_intcp_dynamic, covtype_dynamic - CHARACTER(LEN=MAXFILE_LENGTH) :: potetcoef_dynamic, transpbeg_dynamic, transpend_dynamic + CHARACTER(LEN=MAXFILE_LENGTH) :: potet_coef_dynamic, transpbeg_dynamic, transpend_dynamic CHARACTER(LEN=MAXFILE_LENGTH) :: radtrncf_dynamic, dynamic_param_log_file CHARACTER(LEN=MAXFILE_LENGTH) :: fallfrost_dynamic, springfrost_dynamic, transp_on_dynamic, snareathresh_dynamic CHARACTER(LEN=MAXFILE_LENGTH) :: covden_sum_dynamic, covden_win_dynamic, sro2dprst_perv_dyn, sro2dprst_imperv_dyn @@ -165,8 +165,8 @@ INTEGER FUNCTION dynparaminit() IF ( Dyn_potet_flag>OFF ) THEN ALLOCATE ( Potet_coef(Nhru,MONTHS_PER_YEAR) ) - IF ( control_string(potetcoef_dynamic, 'potetcoef_dynamic')/=0 ) CALL read_error(5, 'potetcoef_dynamic') - CALL find_header_end(Potetcoef_unit, potetcoef_dynamic, ierr) + IF ( control_string(potet_coef_dynamic, 'potet_coef_dynamic')/=0 ) CALL read_error(5, 'potet_coef_dynamic') + CALL find_header_end(Potetcoef_unit, potet_coef_dynamic, ierr) IF ( ierr==0 ) THEN CALL find_current_file_time(Potetcoef_unit, year, month, day, Potetcoef_next_yr, Potetcoef_next_mo, Potetcoef_next_day) ELSE diff --git a/GSFLOW/src/prms/intcp.f90 b/GSFLOW/src/prms/intcp.f90 index eebaa657b..562b9f488 100644 --- a/GSFLOW/src/prms/intcp.f90 +++ b/GSFLOW/src/prms/intcp.f90 @@ -498,8 +498,10 @@ INTEGER FUNCTION intrun() evsn = Potet_sublim(i)*Potet(i) IF ( Use_pandata==ACTIVE ) THEN - evrn = Pan_evap(Hru_pansta(i)) - IF ( evrn<0.0 ) evrn = 0.0 + IF ( Hru_pansta(i)>0 ) THEN + evrn = Pan_evap(Hru_pansta(i)) + IF ( evrn<0.0 ) evrn = 0.0 + ENDIF ENDIF !******Compute snow interception loss diff --git a/GSFLOW/src/prms/nsegment_summary.f90 b/GSFLOW/src/prms/nsegment_summary.f90 index 0e36c144b..dafacd125 100644 --- a/GSFLOW/src/prms/nsegment_summary.f90 +++ b/GSFLOW/src/prms/nsegment_summary.f90 @@ -99,7 +99,7 @@ SUBROUTINE nsegment_summarydecl() IF ( NsegmentOutON_OFF==2 ) THEN ALLOCATE ( Nhm_seg(Nsegment) ) IF ( declparam(MODNAME, 'nhm_seg', 'nsegment', 'integer', & - & '0', '0', '9999999', & + & '1', '1', '9999999', & & 'National Hydrologic Model segment ID', 'National Hydrologic Model segment ID', & & 'none')/=0 ) CALL read_error(1, 'nhm_seg') ENDIF diff --git a/GSFLOW/src/prms/potet_pan.f90 b/GSFLOW/src/prms/potet_pan.f90 index ecab04752..32e4a00bd 100644 --- a/GSFLOW/src/prms/potet_pan.f90 +++ b/GSFLOW/src/prms/potet_pan.f90 @@ -13,7 +13,7 @@ MODULE PRMS_POTET_PAN END MODULE PRMS_POTET_PAN INTEGER FUNCTION potet_pan() - USE PRMS_CONSTANTS, ONLY: RUN, DECL, INIT, CLEAN, ACTIVE, OFF, DEBUG_less, ERROR_dim, READ_INIT, SAVE_INIT + USE PRMS_CONSTANTS, ONLY: RUN, DECL, INIT, CLEAN, ACTIVE, OFF, DEBUG_less, ERROR_dim, READ_INIT, SAVE_INIT, ERROR_param USE PRMS_MODULE, ONLY: Process_flag, Nevap, Print_debug, Save_vars_to_file, Init_vars_from_file, Nowmonth USE PRMS_POTET_PAN USE PRMS_BASIN, ONLY: Basin_area_inv, Active_hrus, Hru_area, Hru_route_order @@ -65,6 +65,14 @@ INTEGER FUNCTION potet_pan() Last_pan_evap = 0.0 ENDIF + DO j = 1, Active_hrus + i = Hru_route_order(j) + IF ( Hru_pansta(i)==0 .OR. Hru_pansta(i)>Nevap ) THEN + CALL error_stop('all hru_pansta values must be > 0 and <= nevap', ERROR_param) + EXIT + ENDIF + ENDDO + ELSEIF ( Process_flag==CLEAN ) THEN IF ( Save_vars_to_file==ACTIVE ) CALL potet_pan_restart(SAVE_INIT) diff --git a/GSFLOW/src/prms/precip_map.f90 b/GSFLOW/src/prms/precip_map.f90 index 1857e3239..a7e05bd76 100644 --- a/GSFLOW/src/prms/precip_map.f90 +++ b/GSFLOW/src/prms/precip_map.f90 @@ -1,6 +1,6 @@ !*********************************************************************** -! Maximum, minimum, average temperatures, and precipitation are distributed to each HRU -! using temperature and/or precipitation data input as a time series of gridded +! Precipitation are distributed to each HRU +! using precipitation data input as a time series of gridded ! or other spatial units using an area-weighted method and correction factors to ! account for differences in altitude, spatial variation, topography, and ! measurement gage efficiency diff --git a/GSFLOW/src/prms/routing.f90 b/GSFLOW/src/prms/routing.f90 index 952bcad8b..4a165d812 100644 --- a/GSFLOW/src/prms/routing.f90 +++ b/GSFLOW/src/prms/routing.f90 @@ -173,9 +173,6 @@ INTEGER FUNCTION routingdecl() & ' 9=sink; 10=inbound from Great Lakes; 11=outbound to Great Lakes)', & & 'none')/=0 ) CALL read_error(1, 'segment_type') - ! user updated values if different than tosegment_orig - ! -5 = outbound from NHM; -6 = inbound from region; -7 = outbound from region; - ! -8 = drains to ocean; -11 = drains to Great Lake ALLOCATE ( Tosegment(Nsegment) ) IF ( declparam(MODNAME, 'tosegment', 'nsegment', 'integer', & & '0', '0', '9999999', & diff --git a/GSFLOW/src/prms/sm_read_control_file.f90 b/GSFLOW/src/prms/sm_read_control_file.f90 index fa37a226e..8fdde8879 100644 --- a/GSFLOW/src/prms/sm_read_control_file.f90 +++ b/GSFLOW/src/prms/sm_read_control_file.f90 @@ -92,7 +92,7 @@ module subroutine setup_cont() Cbh_check_flag, Windspeed_day, Humidity_day, & AET_cbh_file, PET_cbh_file, irrigated_area_cbh_file, cbh_active_flag use PRMS_DYNAMIC_PARAM_READ, only: wrain_intcp_dynamic, srain_intcp_dynamic, snow_intcp_dynamic, covtype_dynamic, & - potetcoef_dynamic, transpbeg_dynamic, transpend_dynamic, dynamic_param_log_file, & + potet_coef_dynamic, transpbeg_dynamic, transpend_dynamic, dynamic_param_log_file, & radtrncf_dynamic, fallfrost_dynamic, springfrost_dynamic, transp_on_dynamic, & covden_sum_dynamic, covden_win_dynamic, sro2dprst_perv_dyn, sro2dprst_imperv_dyn, & snareathresh_dynamic @@ -410,8 +410,9 @@ module subroutine setup_cont() Control_parameter_data(i) % name = 'glacier_flag' Glacier_flag = OFF i = i + 1 - Control_parameter_data(i) % name = 'no_snow_flag' - no_snow_flag = OFF + Control_parameter_data(i) % name = 'snow_flag' + snow_flag = ACTIVE + Control_parameter_data(i) % values_int(1) = snow_flag ! i = i + 1 ! Control_parameter_data(i) % name = 'ag_gravity_flag' ! Ag_gravity_flag = OFF @@ -864,8 +865,8 @@ module subroutine setup_cont() Control_parameter_data(i) % data_type = CHAR_TYPE i = i + 1 Control_parameter_data(i) % name = 'potetcoef_dynamic' - Potetcoef_dynamic = 'dyn_potet_coef.param' - Control_parameter_data(i) % values_character(1) = Potetcoef_dynamic + Potet_coef_dynamic = 'dyn_potet_coef.param' + Control_parameter_data(i) % values_character(1) = Potet_coef_dynamic Control_parameter_data(i) % data_type = CHAR_TYPE i = i + 1 Control_parameter_data(i) % name = 'transpbeg_dynamic' diff --git a/GSFLOW/src/prms/sm_read_parameter_file.f90 b/GSFLOW/src/prms/sm_read_parameter_file.f90 index 9b33803cf..c53ea0b49 100644 --- a/GSFLOW/src/prms/sm_read_parameter_file.f90 +++ b/GSFLOW/src/prms/sm_read_parameter_file.f90 @@ -435,15 +435,15 @@ integer module function declparam(Modname, Paramname, Dimenname, Datatype, & read (defvalue, *) ctemp Parameter_data(Num_parameters)%def_char = ctemp if (Parameter_data(Num_parameters)%num_dimens == 1) then - !if (Parameter_data(Num_parameters)%scalar_flag == 1) then - ! allocate (Parameter_data(Num_parameters)%values_char_0d) - ! Parameter_data(Num_parameters)%values_char_0d = ctemp - !else + if (Parameter_data(Num_parameters)%scalar_flag == 1) then + allocate (Parameter_data(Num_parameters)%values_char_0d) + Parameter_data(Num_parameters)%values_char_0d = ctemp + else allocate (Parameter_data(Num_parameters)%values_char_1d(numvalues)) do i = 1, numvalues Parameter_data(Num_parameters)%values_char_1d(i) = ctemp end do - !end if + end if !else ! allocate (Parameter_data(Num_parameters)%values_char_2d(Parameter_data(Num_parameters)%num_dim1, nvals2)) ! do i = 1, Parameter_data(Num_parameters)%num_dim1 @@ -1056,7 +1056,7 @@ end function getparam_string !*********************************************************************** module subroutine setparam(Paramname, Numvalues, Data_type, Num_dims, Dim_string, Values, Ivalues, Cvalues) use PRMS_CONSTANTS, ONLY: ERROR_param - use PRMS_MODULE, only: Nhru, Ndepl + use PRMS_MODULE, only: Ndepl, Nhru, Nsub, Nmonths implicit none ! Arguments integer, intent(IN) :: Numvalues, Data_type, Num_dims, Ivalues(:) @@ -1066,8 +1066,8 @@ module subroutine setparam(Paramname, Numvalues, Data_type, Num_dims, Dim_string ! Functions intrinsic :: TRIM, INDEX ! Local Variables - integer :: found, i, ii, j, jj, k, ierr, iflg, comma, nvals - character(LEN=16) :: dimen1 + integer :: found, i, ii, j, jj, k, ierr + integer :: nmonths_flag, nsub_flag, nhru_flag !*********************************************************************** ierr = 0 found = 0 @@ -1079,7 +1079,16 @@ module subroutine setparam(Paramname, Numvalues, Data_type, Num_dims, Dim_string print *, 'ERROR, Parameter: ', Paramname, ' data type does not match declared data type' end if - if (Parameter_data(i)%numvals == Numvalues) then + nmonths_flag = 0 + nsub_flag = 0 + nhru_flag = 0 + if (Num_dims == 1) then + if (trim(Dim_string(1)) == 'nmonths') nmonths_flag = 1 + if (trim(Dim_string(1)) == 'nsub') nsub_flag = 1 + if (trim(Dim_string(1)) == 'nhru') nhru_flag = 1 + endif + + if (Parameter_data(found)%numvals == Numvalues) then if (Data_type == 2) then if (Parameter_data(found)%scalar_flag == 1) then Parameter_data(found)%values_real_0d = Values(1) @@ -1094,9 +1103,10 @@ module subroutine setparam(Paramname, Numvalues, Data_type, Num_dims, Dim_string enddo ! Parameter_data(found)%values_real_2d = reshape(Values, (/11, Ndepl/)) else - do j = 1, Numvalues - Parameter_data(found)%values_real_1d(j) = Values(j) - end do + !do j = 1, Numvalues + ! Parameter_data(found)%values_real_1d(j) = Values(j) + !end do + Parameter_data(found)%values_real_1d = Values end if else ! 2d k = 0 @@ -1125,90 +1135,78 @@ module subroutine setparam(Paramname, Numvalues, Data_type, Num_dims, Dim_string end if else ! Data_type == 4 if (Parameter_data(found)%scalar_flag == 1) then -! Parameter_data(found)%values_char_0d = Cvalues(1) + Parameter_data(found)%values_char_0d = Cvalues(1) elseif (Parameter_data(found)%num_dimens == 1) then do j = 1, Numvalues Parameter_data(found)%values_char_1d(j) = Cvalues(j) end do -! else ! 2d -! k = 0 -! do jj = 1, Parameter_data(found)%num_dim2 -! do j = 1, Parameter_data(found)%num_dim1 -! k = k + 1 -! Parameter_data(found)%values_char_2d(j, jj) = Cvalues(k) -! end do -! end do + else ! 2d + PRINT *, 'ERROR, character parameters cannot be two dimensional' + ierr = 1 + !k = 0 + !do jj = 1, Parameter_data(found)%num_dim2 + ! do j = 1, Parameter_data(found)%num_dim1 + ! k = k + 1 + ! Parameter_data(found)%values_char_2d(j, jj) = Cvalues(k) + ! end do + !end do end if end if else ! check for flexible dimension if (Numvalues == 1) then ! set all values to single value if (Data_type == 2) then if (Parameter_data(found)%num_dimens == 1) then - do j = 1, Parameter_data(found)%num_dim1 - Parameter_data(found)%values_real_1d(j) = Values(1) - end do + !do j = 1, Parameter_data(found)%num_dim1 + ! Parameter_data(found)%values_real_1d(j) = Values(1) + !end do + Parameter_data(found)%values_real_1d = Values(1) else ! 2d - do j = 1, Parameter_data(found)%num_dim2 - do jj = 1, Parameter_data(found)%num_dim1 - Parameter_data(found)%values_real_2d(jj, j) = Values(1) - end do - end do + !do j = 1, Parameter_data(found)%num_dim2 + ! do jj = 1, Parameter_data(found)%num_dim1 + ! Parameter_data(found)%values_real_2d(jj, j) = Values(1) + ! end do + !end do + Parameter_data(found)%values_real_2d = Values(1) end if - else ! data_type 1 + elseif (Data_type == 1) then ! data_type 1 if (Parameter_data(found)%num_dimens == 1) then - do j = 1, Parameter_data(found)%num_dim1 - Parameter_data(found)%values_int_1d(j) = Ivalues(1) - end do + !do j = 1, Parameter_data(found)%num_dim1 + ! Parameter_data(found)%values_int_1d(j) = Ivalues(1) + !end do + Parameter_data(found)%values_int_1d = Ivalues(1) else ! 2d - do j = 1, Parameter_data(found)%num_dim1 - do jj = 1, Parameter_data(found)%num_dim2 - Parameter_data(found)%values_int_2d(j, jj) = Ivalues(1) - end do - end do - end if - end if - else - nvals = Parameter_data(found)%numvals / 12 - if (nvals * 12 /= Parameter_data(found)%numvals) then - iflg = 0 - if (Num_dims == 1 .and. trim(Dim_string(1)) == 'nmonths') iflg = 1 - if (Num_dims == 2) then - if (trim(Dim_string(2)) == 'nmonths') iflg = 1 + !do j = 1, Parameter_data(found)%num_dim1 + ! do jj = 1, Parameter_data(found)%num_dim2 + ! Parameter_data(found)%values_int_2d(j, jj) = Ivalues(1) + ! end do + !end do + Parameter_data(found)%values_int_2d = Ivalues(1) end if - if (iflg == 1) then - print *, 'ERROR, parameter not evenly divisible by 12' - print *, ' number of parameter values expected:', Parameter_data(i)%numvals - print *, ' number of parameter values specified:', Numvalues - ERROR stop ERROR_param + elseif (Data_type == 4) then ! data_type 4 + if (Parameter_data(found)%num_dimens == 1) then + !do j = 1, Parameter_data(found)%num_dim1 + ! Parameter_data(found)%values_char_1d(j) = Cvalues(1) + !end do + Parameter_data(found)%values_char_1d = Cvalues(1) + !else ! no 2d character parameters + ! Parameter_data(found)%values_char_2d = Cvalues(1) end if end if - comma = index(Parameter_data(found)%dimen_names, ',') - if (comma == 0) then - dimen1 = trim(Parameter_data(found)%dimen_names) - else - dimen1 = Parameter_data(found)%dimen_names(:(comma - 1)) - end if - - ! DANGER, messy IF's - iflg = 0 - if (Numvalues == 12 .and. Nhru /= 12 .and. Num_dims == 1 .and. trim(Dim_string(1)) == 'nmonths') iflg = 2 ! set monthly - if (Numvalues == Nhru .and. Num_dims == 1 .and. trim(Dim_string(1)) /= 'nmonths') iflg = 3 ! set nhru, nmonths - - k = 0 - if (iflg == 3) then ! 12 sets of nhru values - do j = 1, 12 - do ii = 1, nvals + else ! WARNING: not checking for character parameters or double + ! first dimension is nhru, nssr, or ngw, passing a different dimension + if (nmonths_flag == 1) then + do j = 1, Nmonths + do ii = 1, Parameter_data(found)%num_dim1 if (Data_type == 2) then - Parameter_data(found)%values_real_2d(ii, j) = Values(ii) + Parameter_data(found)%values_real_2d(ii, j) = Values(j) else - Parameter_data(found)%values_int_2d(ii, j) = Ivalues(ii) + Parameter_data(found)%values_int_2d(ii, j) = Ivalues(j) end if end do end do - elseif (iflg == 2) then ! dim sets of 12 - do j = 1, 12 - do ii = 1, nvals - k = k + 1 + else if (nsub_flag == 1) then + do j = 1, Nsub + do ii = 1, Parameter_data(found)%num_dim1 if (Data_type == 2) then Parameter_data(found)%values_real_2d(ii, j) = Values(j) else @@ -1216,25 +1214,24 @@ module subroutine setparam(Paramname, Numvalues, Data_type, Num_dims, Dim_string end if end do end do + else if (nhru_flag == 1) then + do j = 1, Nhru + do ii = 1, Parameter_data(found)%num_dim2 + if (Data_type == 2) then + Parameter_data(found)%values_real_2d(j, ii) = Values(j) + else + Parameter_data(found)%values_int_2d(j, ii) = Ivalues(j) + end if + end do + end do else -! print *, '??? not sure this can happen' -! DO ii = 1, nvals -! DO j = 1, 12 -! k = k + 1 -! IF ( Data_type==2 ) THEN -! Parameter_data(found)%values_real_1d(k) = Values(ii) -! ELSE -! Parameter_data(found)%values_int_1d(k) = Ivalues(ii) -! ENDIF -! ENDDO -! ENDDO - !!!!!! add parameter expansion !!!!!!!!!! for nsub - ierr = 1 print *, 'ERROR, Parameter: ', Paramname, ' number of values in getparam does not match declared number of values' + print *, ' number of parameter values expected:', Parameter_data(found)%numvals + print *, ' number of parameter values specified:', Numvalues + ierr = 1 end if end if end if - exit end if end do diff --git a/GSFLOW/src/prms/temp_map.f90 b/GSFLOW/src/prms/temp_map.f90 index a3995aea4..3564a9588 100644 --- a/GSFLOW/src/prms/temp_map.f90 +++ b/GSFLOW/src/prms/temp_map.f90 @@ -1,6 +1,6 @@ !*********************************************************************** -! Maximum, minimum, average temperatures, and precipitation are distributed to each HRU -! using temperature and/or precipitation data input as a time series of gridded +! Maximum, minimum, and average temperatures are distributed to each HRU +! using temperature data input as a time series of gridded ! or other spatial units using an area-weighted method and correction factors to ! account for differences in altitude, spatial variation, topography, and ! measurement gage efficiency