2.0.0b10
catchment modelling framework
Loading...
Searching...
No Matches
cmf::math Namespace Reference

Contains classes for numerical solving of ODE's. More...

Detailed Description

Contains classes for numerical solving of ODE's.

Classes

class  BDF2
 An order 2 BDF-Method with fixed-point iteration and variable step size. More...
 
class  cubicspline
 Interpolates points with a cubic spline interpolation. More...
 
class  CVodeAdams
 Explizit multistep solver using CVode. More...
 
class  CVodeBanded
 implicit BDF CVode solver with a banded Jacobian approximation More...
 
class  CVodeBase
 Abstract base class for different modes of the CVode solver. More...
 
class  CVodeDense
 implicit BDF CVode solver with full Jacobian approximation More...
 
class  CVodeDiag
 implicit BDF CVode solver with a one line diagonal Jacobian approximation More...
 
struct  CVodeInfo
 Reports the current state of a CVode solver. More...
 
class  CVodeKrylov
 implicit BDF CVode solver with a Krylov preconditioner More...
 
struct  CVodeOptions
 A set of options for all CVode3 solver. More...
 
struct  Date
 An absolute time, not for calculation. Date and Time are interchangable. More...
 
class  ExplicitEuler_fixed
 An explicit Euler integrator, with a fixed time step. More...
 
class  HeunIntegrator
 A simple predictor - corrector solver. More...
 
class  ImplicitEuler
 An implicit (backward) Euler integrator using fixpoint iteration. More...
 
class  Integrator
 Base class for any kind of integrator. More...
 
class  MultiIntegrator
 The MultiIntegrator is a wrapper for a bunch integrators. The states of the integrators should not have direct connections over integrator boundaries. More...
 
class  num_array
 A valarray kind of vector implementation with OpenMP capabilities. More...
 
class  RKFIntegrator
 Integrates a vector of cmf::math::StateVariable with the Runge-Kutta-Fehlberg (RKF54) method. More...
 
class  SoluteWaterIntegrator
 A SoluteWaterIntegrator implements the cmf::math::Integrator interface, but consists of two independent ODE-solvers. More...
 
class  StateVariable
 Abstract class state variable. More...
 
class  Time
 A time class, used to pass around current modelling times. More...
 
class  timeseries
 A timeseries is a list of values, equally distributed over time. More...
 

Functions

int get_parallel_threads ()
 Returns the max number of threads used by OpenMP in parallel sections of the code.
 
double nash_sutcliffe (const cmf::math::timeseries &model, const cmf::math::timeseries &observation)
 Calculates the Nash-Sutcliffe efficiency of a modeled timeseries in comparison with an observed timeseries.
 
int set_parallel_threads (int numthreads)
 Set the number of threads used by OpenMP in parallel sections of the code.
 

Variables

const Time day = 24 * h
 1 day
 
const Time h = 60 * min
 1 hour
 
const Time min = 60 * sec
 1 minute
 
const Time month = year/12
 1 month = 30*day+10*h
 
const Time ms = timespan(1)
 1 milli second
 
const Time never =Time(0,0,-9999)
 A date long before our time to indicate 'never'.
 
const Time sec = 1000 * ms
 1 second
 
const Time week = 7 * day
 1 week
 
const Time year = 365 * day
 1 year = 365*day
 

Function Documentation

◆ nash_sutcliffe()

double nash_sutcliffe ( const cmf::math::timeseries & model,
const cmf::math::timeseries & observation )

Calculates the Nash-Sutcliffe efficiency of a modeled timeseries in comparison with an observed timeseries.

The Nash-Sutcliffe efficiancy is defined as:

\[ E = 1 - \frac{\sum_{t=1}^{T}(M_t - O_t)^2}{\sum_{t=1}^{T}(O_t - \overline{O})^2}\]

where

  • \(T\) is the number of observation time steps
  • \(M\) is the timeseries of model results matchinig O
  • \(O\) is the timeseries containing observations
  • \(\overline{O}\) is the arithmetic mean of observations