Skip to contents

Check for common formulation problems in a stock-and-flow model.

Usage

debugger(sfm, quietly = FALSE)

Arguments

sfm

Stock-and-flow model, object of class sdbuildR_xmile.

quietly

If TRUE, don't print problems. Defaults to FALSE.

Value

Logical value indicating whether any problems were detected.

Details

The following problems are detected:

  • An absence of stocks

  • Flows without a source (from) or target (to)

  • Flows connected to a stock that does not exist

  • Connected stocks and flows without both having units or no units

  • Undefined variable references in equations

  • Circularities in equations

  • Missing unit definitions

The following potential problems are detected:

  • Absence of flows

  • Stocks without inflows or outflows

  • Equations with a value of 0

  • Static variables depending on dynamic variables

Examples

# No issues
sfm = xmile("SIR")
debugger(sfm)
#> No problems detected!
#> Potentially problematic:
#> * These variables have an equation of 0:
#> - Recovered

# Detect absence of stocks or flows
sfm = xmile()
debugger(sfm)
#> Problems:
#> * Your model has no stocks.
#> 
#> Potentially problematic:
#> * Your model has no flows.

# Detect stocks without inflows or outflows
sfm = xmile() %>% build("Prey", "stock")
debugger(sfm)
#> No problems detected!
#> Potentially problematic:
#> * Your model has no flows.
#> 
#> * These variables have an equation of 0:
#> - Prey

# Detect circularities in equation definitions
sfm = xmile() %>% build("Prey", "stock", eqn = "Predator") %>%
 build("Predator", "stock", eqn = "Prey")
debugger(sfm)
#> Problems:
#> * Ordering static equations failed. Circular dependencies detected involving variables: Predator, Prey
#> - Predator depends on Prey
#> - Prey depends on Predator
#> 
#> Potentially problematic:
#> * Your model has no flows.