Skip to content

This is an ODE solver that implements the quantized state system methods: An approach that builds the solution by updating the system variables independently.

License

Notifications You must be signed in to change notification settings

mongibellili/QuantizedSystemSolver.jl

Repository files navigation

QuantizedSystemSolver

Documentation Build Status Code coverage Archive Paper
Dev CI Coverage DOI DOI

Contemporary engineering systems, such as electrical circuits, mechanical systems with shocks, and chemical reactions with rapid kinetics, are often characterized by dynamics that can be modeled using stiff differential equations with events. Recently, quantization-based techniques have emerged as an effective alternative for handling such complex models. Methods like the Quantized State System (QSS) and the Linearly Implicit Quantized State System (LIQSS) offer promising results, particularly for large sparse stiff models. Unlike classic numerical integration methods, which update all system variables at each time step, the quantized approach updates individual system variables independently. Moreover, these methods are advantageous when dealing with discontinuous events, where traditional integrators may struggle with accuracy.
The QuantizedSystemSolver aims to solve a set of Ordinary differential equations with a set of events. It implements the quantized state system methods.

Installation

QuantizedSystemSolver.jl is a registered package, and is simply installed by the foloowing:

Run julia in the terminal, then enter ] to bring up Julia's package manager, and add the QuantizedSystemSolver.jl package:

julia

julia> ]
 
(@v1.x) pkg> add QuantizedSystemSolver

The general form of a problem composed of a set of ODEs and a set of events that QSS is able to solve is described in the following:

System of $n$ ODEs:

$$\begin{align*} & \dot X = f(X,P,t) , \end{align*}$$

System of $v$ events:

$$\begin{align*} & if \; zc(X,P,t) \\\ & \qquad x_i = H(X,P,t) \\\ & \qquad \qquad...\\\ & \qquad p_j = L(X,P,t) \\\ & \qquad \qquad...\\\ \end{align*}$$

where $X = [x_1,x_2...,x_n]^T$ is the state vector, $f:\mathbb{R}^n \times \mathbb{R}^m \times \mathbb{R}^+ \rightarrow \mathbb{R}^n$ is the derivative function, and $t$ is the independent variable. $P = [d_1,d_2...,d_m]^T$ is the vector of the system discrete variables. $n$ and $m$ are the number of state variables and discrete variables of the system respectively. $zc$ is an event condition, $H$ and $L$ are functions used in the effects of the event $zc$.

For new users, take a look at the Tutorial section. If you see something wrong, please open an issue

For developpers, take a look at the Developer Guide section. Then, if you have an idea, do a pull request!

About

This is an ODE solver that implements the quantized state system methods: An approach that builds the solution by updating the system variables independently.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •