PortHamiltonianSystems

Port-Hamiltonian systems in Julia

https://github.com/jonas-nicodemus/porthamiltoniansystems.jl

Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (9.8%) to scientific vocabulary

Keywords

control-systems control-theory dynamical-systems port-hamiltonian-systems
Last synced: 6 months ago · JSON representation ·

Repository

Port-Hamiltonian systems in Julia

Basic Info
Statistics
  • Stars: 1
  • Watchers: 0
  • Forks: 0
  • Open Issues: 0
  • Releases: 1
Topics
control-systems control-theory dynamical-systems port-hamiltonian-systems
Created 7 months ago · Last pushed 6 months ago
Metadata Files
Readme License Citation

README.md

PortHamiltonianSystems.jl

Stable Dev Build Status codecov Code Style: Blue Aqua QA

A package for port-Hamiltonian systems in Julia.

The considered systems are of the form

math \Sigma\quad\left\{\quad\begin{aligned} \dot{x}(t) &= (J - R)Qx(t) + (G - P)u(t), \\ y(t) &= (G + P)^\top Qx(t) + (S - N)u(t) \end{aligned}\right., where $J=-J^\top\in \mathbb{R}^{n\times n}$ is skew-symmetric, $R\in \mathbb{R}^{n\times n}$ is positive semi-definite, $Q\in \mathbb{R}^{n\times n}$ is positive definite, $G\in \mathbb{R}^{n\times m}$, $P\in \mathbb{R}^{n\times m}$, $S\in \mathbb{R}^{m\times m}$ and $N\in \mathbb{R}^{m\times m}$.

Installation

Install with the Julia package manager Pkg: julia pkg> add PortHamiltonianSystems # Press ']' to enter the Pkg REPL mode. or julia julia> using Pkg; Pkg.add("PortHamiltonianSystems")

Documentation

Some available commands are:

Constructing systems

phss

Analysis

norm, ispassive, sampopov

Gramians

grampd, gram, prgrampd, prgram

Minimal realization

phminreal

Frequency response

popov

Example

```julia using LinearAlgebra, ControlSystemsBase using PortHamiltonianSystems

J = [0 -1; 1 0] R = [1 -1; -1 2] Q = I(2) G = [1; 0;;]

Σph = phss(J, R, Q, G)

This generates the system:

PortHamiltonianStateSpace{Float64}

J =

0.0 -1.0

1.0 0.0

R =

1.0 -1.0

-1.0 2.0

Q =

1.0 0.0

0.0 1.0

G =

1.0

0.0

P =

0.0

0.0

S =

0.0

N =

0.0

Compute the observability Gramian

gram(Σph, :o)

2×2 Matrix{Float64}:

0.5 0.0

0.0 0.0

Compute a numerically minimal realization

Σphr = phminreal(Σph)

Compute H2 and Hinf errors

norm(Σph - Σphr) # 9.56908750203461e-17 norm(Σph - Σphr, Inf) # 1.8182097724708874e-16

Computes unstructured state-space realization

Σ = ss(Σph)

Checking passivity

ispassive(Σ) # true

Computes pH realization for a given posdef X satisfying the KYP inequality

X = kyp(Σ) Σph2 = phss(Σ, X)

norm(Σph - Σph2) # 1.3470909371896273e-16 ```

Owner

  • Name: Jonas Nicodemus
  • Login: Jonas-Nicodemus
  • Kind: user
  • Location: Germany, Stuttgart
  • Company: University of Stuttgart, SC SimTech

Citation (CITATION.bib)

@article{BMS22,
  title = {Error Bounds for Port-{{Hamiltonian}} Model and Controller Reduction Based on System Balancing},
  author = {Breiten, Tobias and Morandin, Riccardo and Schulze, Philipp},
  year = {2022},
  journal = {Computers \& Mathematics with Applications},
  series = {New Trends in {{Computational Methods}} for {{PDEs}}},
  volume = {116},
  pages = {100--115},
  doi = {10.1016/j.camwa.2021.07.022}
}

GitHub Events

Total
  • Create event: 6
  • Commit comment event: 4
  • Release event: 1
  • Issues event: 2
  • Watch event: 1
  • Issue comment event: 1
  • Push event: 13
  • Pull request event: 1
Last Year
  • Create event: 6
  • Commit comment event: 4
  • Release event: 1
  • Issues event: 2
  • Watch event: 1
  • Issue comment event: 1
  • Push event: 13
  • Pull request event: 1

Packages

  • Total packages: 1
  • Total downloads:
    • julia 1 total
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 1
juliahub.com: PortHamiltonianSystems

Port-Hamiltonian systems in Julia

  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 1 Total
Rankings
Dependent repos count: 8.2%
Average: 21.8%
Dependent packages count: 35.4%
Last synced: 6 months ago

Dependencies

.github/workflows/CI.yml actions
  • actions/checkout v4 composite
  • codecov/codecov-action v5 composite
  • julia-actions/cache v2 composite
  • julia-actions/julia-buildpkg v1 composite
  • julia-actions/julia-docdeploy v1 composite
  • julia-actions/julia-processcoverage v1 composite
  • julia-actions/julia-runtest v1 composite
  • julia-actions/setup-julia v2 composite
.github/workflows/CompatHelper.yml actions
.github/workflows/TagBot.yml actions
  • JuliaRegistries/TagBot v1 composite