gohbv

package module
v0.0.0-...-d62a0d3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 1, 2023 License: MIT Imports: 10 Imported by: 0

README

gohbv

Go implementation of the HBV hydrological model

Documentation

Overview

gohbv is an implementation of the HBV hydrological model, written in Go.

The model can be called directly with Go (see examples/gohbv-example) or combiled and called using the cli.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func LindstromMeasure

func LindstromMeasure(sim []float64, obs []float64, w float64) float64

Penalize the NSE measure with remaining weighted volume error

func NashSutcliffeEfficiency

func NashSutcliffeEfficiency(sim []float64, obs []float64) float64

Calculate Nash-Sutcliffe efficiency 1 - ( sum((obs-sim)**2) / sum((obs-mean_obs)**2) )

func PowArray

func PowArray(arr []float64, y float64) []float64

Element wise power of items in array arr**y

func Q_obs_to_array

func Q_obs_to_array(inData []InputData) []float64

func Q_sim_to_array

func Q_sim_to_array(mState []ModelState) []float64

func RSquared

func RSquared(sim []float64, obs []float64) float64

func ResponseRoutine

func ResponseRoutine(mState []ModelState, mPars Parameters, i int)

func RoutingMaxbasWeights

func RoutingMaxbasWeights(mPars Parameters) []float64

Calculate MAXBAS triangular weights using trapezoidal integration

func RoutingRoutine

func RoutingRoutine(mState []ModelState, mPars Parameters, inData []InputData, i int, maxbas []float64)

The RoutingRoutine applies maxbas weights to the groundwater response to calculate the simulated runoff

func SnowRoutine

func SnowRoutine(mState []ModelState, mPars Parameters, inData []InputData, i int)

Snow routine (also called precipitation routine) for calculating snow- or rainfall accumulation, melt and refreezing of snow storage.

func SoilRoutine

func SoilRoutine(mState []ModelState, mPars Parameters, inData []InputData, i int)

func VolumeError

func VolumeError(sim []float64, obs []float64) float64

Calculate the relative volume error (i.e. bias) This evalulates systematic volume errors over longer periods See Lindström, G. (1997). A Simple Automatic Calibration Routine for the HBV Model. Nordic Hydrology, 28(3), 153–168. https://doi.org/10.2166/nh.1997.009 Note: returns single float64, alternativelty return array of dv ?

func WriteCSVResults

func WriteCSVResults(mState []ModelState, outputFile string)

Write model result (array of ModelState structs) to outputFile

Types

type InputData

type InputData struct {
	Date          string
	Precipitation float64
	Temperature   float64
	Discharge     float64
	PotentialET   float64
}

Input forcing and observations

func ParseInputData

func ParseInputData(r [][]string) ([]InputData, error)

Parse input data csv rows to InputData struct

func ReadInputData

func ReadInputData(inputDataFile string) []InputData

Read csv input forcing data to InputData struct CSV data must be in order Date, Precipitation, Temperature, Discharge, Potential ET

type ModelState

type ModelState struct {
	AET           float64 // Actual evapotranspiration [mm]
	Q_gw          float64 // Groundwater discharge [mm]
	Q_sim         float64 // Simulated runoff [mm]
	Snowfall      float64 // Snowfall [mm]
	Rainfall      float64 // Rainfall [mm]
	S_snow        float64 // Storage snow, Snow_solid + Snow_liquid [mm]
	Snow_solid    float64 // Solid water content in snowpack [mm]
	Snow_liquid   float64 // Liquid water content in snowpack [mm]
	Snow_cover    int     // Snow cover [0/1]
	Snow_melt     float64 // Snow melt [mm]
	Liquid_in     float64 // Snow melt + liquid precipitation [mm]
	S_soil        float64 // Soil water storage [mm]
	S_gw_suz      float64 // Groundwater storage upper zone [mm]
	S_gw_slz      float64 // Groundwater storage lower zone [mm]
	Recharge_sm   float64 // Recharge/infiltration to soil moisture storage [mm]
	Recharge_gwuz float64 // Recharge to upper groundwater storage [mm]
}

Model state and fluxes - available across module

func RunModel

func RunModel(mPars Parameters, inData []InputData) ([]ModelState, error)

GoHBV function is used to run the HBV model based on an InputData and Parameters structs. The function call returns an array of ModelState structs

type Parameters

type Parameters struct {
	TT     float64
	CFMAX  float64
	SFCF   float64
	CFR    float64
	CWH    float64
	FC     float64
	LP     float64
	BETA   float64
	PERC   float64
	UZL    float64
	K0     float64
	K1     float64
	K2     float64
	MAXBAS float64
	PCALT  float64
	TCALT  float64
}

Parameters struct

func ParseParameters

func ParseParameters(jsonData []byte) (Parameters, error)

Parse parameter .json file Unmarshal to Parameters struct

func ReadParameters

func ReadParameters(parameterFile string) Parameters

Read parameter json file and parse it to Parameters struct

Directories

Path Synopsis
examples
gohbv-example
Example running gohbv from Go
Example running gohbv from Go

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL