Functions for MAESPA batch runs

Description

Functions for running MAESTRA/MAESPA with parameters read from a .csv file. To make multiple runs, create a comma-separated file (.csv) with each row corresponding to a set of parameter values to be used in a simulation. Each column is for a different parameter, with its first entry being the name of the parameter (see Details below). Also needed is a text file with definitions, i.e. how parameter names in the .csv file correspond to parameter names in one of the MAESTRA input files, which file it is, and in which namelist to look (see Details). See Examples below for useage, and how to deal with the results from a batch run. Note that the batch utilities use the executable 'maespa.exe' (runmaespa), or 'maestra.exe' (runmaestra) by default, but you can use others. See Examples on how to set this.

Users will typically run maesparunall, which runs every row in the comma-separated file denoted by runfile. Every column in this runfile is named, with the name corresponding not directly to a parameter or namelist in one of the fortran input files, but rather to an entry in the definition file. This file (argument deffile) needs to be in the current workspace. It is a space (or tab)-separated file, with four columns: 'parname', 'fileparname', 'filename' and 'namelist'. An example of this file is provided with this package. Entries of each do not need to be quoted. The namelist entry can be left blank, but it is recommended to provide the namelist where the parameter occurs, for reliability.

The default executable is maespa.exe when running runmaespa, but others can of course be used. The function runmaestra is exactly the same as runmaespa, except that the default is to use the executable 'maestra.exe'. To set the default for the rest of the session, see the last Example below.

Note that these functions should be general, in that they can be used for any Fortran compiled program (.exe) that reads parameters from namelists.

By default, Maes(tra/pa) reads and saves the 'hrflux.dat' and 'dayflux.dat' files, and the 'watbal.dat' if it exists (i.e., if Maespa was used for the simulation). The 'extrafiles' argument specified additional output files to read and store.

Usage

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
maesparunall(whichrows = NA, runfile = NA, whichcols = NA,
  quiet = FALSE, extrafiles = "", ...)

maestrarunall(executable = "maestra.exe", ...)

runmaespa(whichrow = 1, whichcols = NA, runfile = file.choose(),
  runit = TRUE, executable = "maespa.exe",
  deffile = "maeswrapdefinitions.txt", spinup = FALSE, ...)

runmaestra(executable = "maestra.exe", ...)

Arguments

whichrows

Which rows of the runfile to run in the simulations?

runfile

Name of the runfile, needs to be a .csv file, quoted. If left alone, a menu pops up.

whichcols

Which columns in the runfile contain parameters to be changed in the simulations?

quiet

If TRUE, no progress is written to the console.

extrafiles

Additional files to read and store (See Details).

...

Further parameters passed to runmaespa or readPAR

executable

Name of the executable.

whichrow

For one run, which row to run?

runit

If FALSE, writes the input files but does not run the model.

deffile

Text file with definitions of parameter names in the input files, their locations in files and namelists. See Details.

spinup

For Maespa only : if TRUE, the model is run once, and all final values of soil water content and soil temperature are used to initialize the next run, which is the run that is reported.

Value

For runmaespa, nothing is returned. Assuming you used runit=TRUE, the model is run and output files are written to disk. The function maesparunall returns a list with two components: daily and hourly. These components are itself lists with each element a dataframe with the daily or hourly results from the model output. These dataframes are read from the files dayflux.dat and hrflux.dat.

Author(s)

Remko Duursma

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
## Not run: 

#-1. Run the second row of some csv file, using only entries in
# columns 2, 3 and 4. Note that all column names in the .csv
# file must be documented in the definition file, and that the
# definition file must be in the current working directory!
runmaespa(2, runfile="runfiletest.csv", runit=FALSE, whichcols=2:4)

#-2. Run all rows and all parameters from a comma-separated file.
runresults <- maesparunall(runfile="runfiletest.csv")

#-3. Look at first run:
summary(runresults$daily[[1]])

#-4. Summarize across runs with statements like these.
# Sum net photosynthesis across runs:
sapply(runresults$daily, function(dfr)sum(dfr$netPs))

#-5. Or write all results to disk:
filenames <- paste("MaespaDailyresults",1:length(runresults$daily),".txt",sep="")
for(f in 1:length(filenames)){
    write.table(runresults$daily[[f]],filenames[f],sep=" ",row.names=FALSE)
}

#-6. Use different executable:
runmaespa(executable="othermaestra.exe")

#-7. Or set this other executable as the default for the rest of the session,
# so that you only need to set it once (until you restart R anyway).
formals(runmaespa)$executable <- "othermaestra.exe"

#-8. Specify additional output files to read and save:
myrun <- maestrarunall(runfile="myrunfile.csv", extrafiles=c("layflx.dat","resp.dat"))
# These two files are then available in the 'myrun' list by names 'layflx' and 'resp'.


## End(Not run)