R6 Class for Dynamic TOPMODEL

R6 Class for Dynamic TOPMODEL

Methods


Method new()

Creates a dynatop class object from the a list based model description as generated by dynatopGIS.

Usage

dynatop$new(model, map = NULL, use_states = FALSE, delta = 1e-13)

Arguments

model

a dynamic TOPMODEL list object

map

file name of the map layers for the model

use_states

logical if states should be imported

delta

error term in checking redistribution sums

drop_map

logical if the map should be dropped

Details

This function makes some basic consistency checks on a list representing a dynamic TOPMODEL model. The checks performed and basic 'sanity' checks. They do not check for the logic of the parameter values nor the consistency of states and parameters. Sums of the redistribution matrices are checked to be in the range 1 +/- delta.

Returns

invisible(self) suitable for chaining


Method add_data()

Adds observed data to a dynatop object

Usage

dynatop$add_data(obs_data)

Arguments

obs_data

an xts object of observed data

Details

This function makes some basic consistency checks on the observations to ensure they have uniform timestep and all required series are present.

Returns

invisible(self) suitable for chaining


Method clear_data()

Clears all forcing and simulation data except current states

Usage

dynatop$clear_data()

Returns

invisible(self) suitable for chaining


Method initialise()

Initialises a dynatop object in the simplest way possible.

Usage

dynatop$initialise(
  vtol = sqrt(.Machine$double.eps),
  ftol = sqrt(.Machine$double.eps),
  max_it = 1000
)

Arguments

vtol

tolerance for the solution for the saturated zone storage (as volume)

ftol

tolerance for the solution of the saturated zone storage (as difference of function from 0)

max_it

maximum number of iterations to use in the solution of the saturated zone

Returns

invisible(self) suitable for chaining


Method sim()

Simulate the hillslope and channel components of a dynatop object

Usage

dynatop$sim(
  output_defn,
  keep_states = NULL,
  sub_step = NULL,
  vtol = 0.001,
  ftol = sqrt(.Machine$double.eps),
  max_it = 1000
)

Arguments

output_defn

a description of the output series

keep_states

a vector of POSIXct objects (e.g. from xts) giving the time stamp at which the states should be kept

sub_step

simulation timestep in seconds, default value of NULL results in data time step

vtol

tolerance on width of bounds in the numeric search for surface and saturated zone solutions (as volume)

ftol

- not currently used

max_it

maximum number of iterations to use in the solution of the saturated zone

Details

Saving the states at every timestep and keeping the mass balance can generate very large data sets!!

Returns

invisible(self) for chaining


Method get_output()

Return channel inflow as an xts series or list of xts series

Usage

dynatop$get_output(name = colnames(private$time_series$output))

Arguments

name

one or more output series to return


Method plot_output()

Plot the channel inflow

Usage

dynatop$plot_output(name = colnames(private$time_series$output))

Arguments

name

of series to plot


Method get_obs_data()

Get the observed data

Usage

dynatop$get_obs_data()


Method get_model()

Return the model

Usage

dynatop$get_model()


Method get_mass_errors()

Return the model

Usage

dynatop$get_mass_errors()


Method get_states()

Return states

Usage

dynatop$get_states(record = FALSE)

Arguments

record

logical TRUE if the record should be returned. Otherwise the current states returned


Method plot_state()

Plot a current state of the system

Usage

dynatop$plot_state(state = c("s_sf", "s_rz", "s_uz", "s_sz"))

Arguments

state

the name of the state to be plotted


Method clone()

The objects of this class are cloneable with this method.

Usage

dynatop$clone(deep = FALSE)

Arguments

deep

Whether to make a deep clone.

Examples

## the vignettes contains further details of the method calls.

data("Swindale") ## example data
mdl <- Swindale$model
mdl$map <- system.file("extdata","Swindale.tif",package="dynatop",mustWork=TRUE)
ctch_mdl <- dynatop$new(mdl$hru,map=mdl$map) ## create with model
ctch_mdl$add_data(Swindale$obs) ## add observations
ctch_mdl$initialise() ## initialise model
ctch_mdl$sim(Swindale$model$output_flux) ## simulate model
#> Warning: Output definition does not have scale - adding a vector of 1's