PRMS Inputs

Video Transcript
Download Video
Right-click and save to download

Detailed Description

Presents overview of input data necessary to run the USGS Precipitation Runoff Modeling System (PRMS) software.


Date Taken:

Length: 00:14:35

Location Taken: Lakewood, CO, US


Lauren Hay: Hello, today I’m going to talk
about PRMS inputs.

Specifically, I’m going to talk about the
climate inputs, the streamflow inputs, and

the parameter inputs.

And this is all with respect to the National
Hydrologic Model.

I suggest that if you don’t know what the
National Hydrologic Model is, you listen to

the National Hydrologic Model video that has
also been recorded.

As far as climate goes in the National Hydrologic
Model, we are using the climate_hru module

in PRMS.

So that means that in the PRMS control file,
the temp_module and the precip_module both

need to be set to climate_hru.

And if you want to know more about what the
climate_hru module is, you can actually listen

to the Climate Distribution presentation as

To get the climate for the climate_hru model,
we use the Geodata Portal.

And the reason why we use the Geodata Portal
is that it has data sets that are national

in extent, it’s all free, and it’s essentially
model ready to go into PRMS.

The Geodata Portal is managed by CIDA, the
Center for Integrated Data Analytics.

They’ve got many, many, many gridded climate
data sets that cover the United States and

even larger areas than that.

If you go to the Geodata Portal, this is the
home page that you get when you go there.

Here’s the site right here.

Essentially what you do is you submit a shapefile
with your hydrologic response units.

So in this case, I have submitted a shapefile
with the hydrologic response units for NHD

plus region 11.

I’ve chosen to get the data for PRISM for
every response unit there, so the PRISM data

set and here’s the data set URL right here.

I’ve selected precipitation, maximum and
minimum temperature.

So I will get back precipitation, maximum
and minimum temperature for every HRU in this

data set that I’ve submitted.

Here’s the date range and it’ll tell you
what the date range for the data set is that

you’ve chosen and you can actually sub-set
that to whatever you want.

So what is that doing then?

In the Geodata Portal, what’s happening
is you’re submitting your hydrologic response

units to the Geodata Portal and then the Geodata
Portal is accessing the gridded climate data

and then it’s taking the gridded output
and it’s laying your hydrologic response

units over it and it’s basically just summarizing
that data to your hydrologic response units.

It’s a pretty simple procedure, but it’s
nice because you don’t need to have a GIS

to get the data for your model.

If you go to the home site here, what you
need to do is choose the data set you want,

so you click on the data sets, they have many,
many, many data sets available now.

There’s always new ones appearing.

There’s actually a lot of data sets that
are accessible through the Geodata Portal

that aren’t listed here as well.

We use the DAYMET data set right now as the
gridded climate input for the National Hydrologic

Model, but there are other data sets as well
that you can use.

After you have submitted the job, what you
get back is a CSV file comma separated variable

file from the Geodata Portal and you need
to convert that to PRMS input format.

We call these climate_hru input files.

Each one of these files has to be designated
in the PRMS control file.

So, your precip file, I have here, this is
your control file, this is your precip file


I just called it precip.cbh.

Here’s your maximum temperature file, tmax.cbh.

And your minimum temperature file, tmin.cbh.

Your CSV file from the GDP looks like this.

It comes back and it has some kind of descriptor
up here that tells you where the data came


Then basically it has the number of HRUs across
on the next line from one to however many

HRUs were in the shapefile you submitted.

Then it has the time stamp and it’s followed
by the data for that day by HRU.

You’ve got to take this CSV file and you
need to convert into this prcp.cbh file that

PRMS is going to read.

Then you’re going to have a descriptor.

Say that it’s created by whoever creates
it and since this is the prcp.cbh file, you

need to have “precip” and then the number
of HRUs has to be here.

And then you have to have this number-number-number
line that sort of separates out the descriptors

from the data.

Basically, you go, this is 1980, January,
first, and then it says the time stamp, hours,

minutes and seconds.

Which are zero, zero, zero and then DAT1 through
DAT3 for the number of HRUs.

So it’s relatively simple to actually go
from CSV to the CBH format here.

So now streamflow, the National Hydrologic
Model needs, every model that you pull from

the National Hydrologic Model has to have
a data file.

Because our climate data are in the CBH files,
the data file only needs to contain the streamflow


So generally, what I like to do is, I like
to, if I’m pulling a model that just has

a gage, one gage in it, I just set up my file
by pulling the information from NWIS.

In the PRMS control file, this is the data
file and I’m going to call that file “Streamflow.file”


To make this Streamflow.file we have some
nice R packages now that will retrieve the

streamflow data from NWIS for you directly.

It’s very, very easy to use.

So you need to download the data retrieval
package from the R project and R is free,

you can get it set up on your computer, and
then you can set this up very easily to pull

the gage that you want.

Basically, here’s some very simple code
that you can use to pull a gage.

You have to load the library “dataRetrieval”,
you give it a start date and end date and

you give it the “pCode”, this is the parameter
code which is 00060.

And that actually pulls the daily values from
NWIS for you.

So then the program you’re going to use
is the “readNWIS daily value” program.

Then you essentially just set it up the way
I have it shown here and I’m going to write

it to this file called “dv_” and this
is the gage ID right here.

So right now, we’ve just picked the data,
we’re just pulling the data for this gage

ID right here.

So now it comes back like this, and so this
is kind of a messy format, I think.

But, this is how it comes from the R retrieval

You’ve got to take this data and now you’ve
got to convert this into a PRMS input file.

Then what you do is you set it up with the
PRMS input files with a comment line on top,

and then these are all comments with these

Really what’s important is that you pulled
one gage.

So runoff is set to 1.

And that basically is n-observed in your parameter

I know that’s confusing, but runoff, however
many gages you pulled here, whatever this

is set to, that’s what n-observed has to
be in your parameter file.

Then what you do is you convert the daily
values file to the values down here.

So it’s year, month, day, zero, zero, zero.

So hour, minute, seconds.

And then basically the data here is the data

So you’re pretty much stripping out a lot
of the other codes that they are giving you

here and a lot of the stuff here and then
just converting it into here.

It’s really a pretty easy conversion to
go from the R retrieval to the PRMS input


So now parameters.

Roland’s presentation on the GIS parameters,
I suggest you listen to that one and then

after you’ve listened to that one, you can
think about what you want to do with the parameters

that are defined by the GIS and the ones that
aren’t defined by the GIS.

Now if you use a parameter file that you’ve
pulled from the National Model, it’ll have

values for all of the parameters already.

They’ll be at different levels of calibration
depending on which version of the model you


It’s really important to understand which
parameters to play with and which ones to

leave alone.

The parameter file, in PRMS, in the control
file, under “param_file”, you need to

give the name of your parameter file right

I’ve called it “PRMS.params”.

When you get that parameter file, and you
can get that pulled from the National Model,

you probably should then think about which
parameters you need to worry about in your


And we have run a sensitivity test for the
entire country on every hydrologic response

unit that will actually give you an indication
as to which parameters are sensitive in your

area and which ones aren’t.

There is a journal paper with Steve Markstrom
as the lead author and I suggest that you

send correspondence to Steve if you’d like
to get a copy of that journal paper, “Towards

simplification of hydrologic modeling: identification
of dominant processes”.

I’ll just kind of go over sort of how you
can use this.

Let’s take as an example, the Upper Colorado
River Basin.

We can pull that model out of the National
Model, and if we do, then that model has 2000

stream segments, it has about 4000 hydrologic
response units and it’s a little bit less

than 300,000 square kilometers.

So what you can do now with the sensitivity
analysis is you can now look at how sensitive

the parameters are in that area.

So if we look at this table, you can get a
table print out that basically tells you the

PRMS output variable across the top and the
parameter is the y-axis here.

What’s really cool about this is you can
say, OK, what are the most important parameters

that I have to worry about in my region, for
each process.

What I’ve done here is I’ve highlighted
the three most sensitive parameters for every

process in region 14, the Colorado River Basin.

Then it can show you over here which parameter
you think you really need to worry about here.

So those are parameters that you should probably
look at and make sure they make sense to you.

For snowmelt, what do I have to worry about
in region 14?

Just look at snowmelt.

Then you can see that those are these three
parameters over here and those are the three

parameters that are really controlling snowmelt
in your area.

This actually does change depending on where
you are.

The other thing you can do with this is you
can actually sum the sensitivity by PRMS output

variable, so that you know which process is
most important in your area.

Or you can actually decide which parameters
are more important.

You can say, OK, this final column over here
is telling you the percent of total sensitivity.

So these three ones in green are the most
important parameters overall, overall processes,

and you better make sure that those are set
to realistic values and pay most attention

to those parameters.

And the same thing.

These parameters really don’t contribute
anything, so don’t worry about what they

are set to.

Probably the default values that you have
gotten from the model pull from the National

Model are probably fine and don’t spend
a lot of time worrying about what these values


So the other thing you can do with the work
that Markstrom’s done is that you can actually

look at dominate process and least dominate

This kind of shows you the most dominate process
and the least dominate process.

That doesn’t mean that another process isn’t
important but this is the most dominate process.

It’s kind of cool because you can see that
this is snowmelt up here is most dominate

and down here, you can see that snowmelt,
down in the south, is least dominate.

So actually that one is always a nice one
to point out because it makes sense.

But whatever model you pull, and in this case
we’re going to pull the ACF, you can see

that you blow this up and look at a very small
area and really understand which processes

are important in your area and which processes
probably aren’t as important, so that you

really spend time trying to set your model
up and understand the correct things in your


And again, here is the paper and talk to Markstrom
if you want more information on that.

If you really want to use this and you really
want more information or you want a model,

I suggest that you click on the Help on our
website and fill out this form and send it

off and we’ll get back to you.