PortHamiltonianBenchmarkSystems.jl
A collection of port-Hamiltonian benchmark systems
Install / Use
/learn @Algopaul/PortHamiltonianBenchmarkSystems.jlREADME
PortHamiltonianBenchmarkSystems.jl
PortHamiltonianBenchmarkSystems is a collection of port-Hamiltonian systems, that can be used as benchmarks for simulation, control, and model-order reduction algorithms. We feature constructors for a wide range of linear, nonlinear, ODE, and DAE systems, as well as several default parameter sets for each. Detailed descriptions and derivations of the featured systems can be found in the documentation.
If you want to take advantage of this benchmark collection programming languages other than julia, you can:
- Generate any desired system in Julia and save the matrices in a format of your choosing (see JuliaIO),
- Generate MAT-files for any default parameter set, using our Command-Line Interface.
Installation and Usage
Install with the Julia package manager Pkg:
pkg> add PortHamiltonianBenchmarkSystems # Press ']' to enter the Pkg REPL mode.
or in the Julia REPL:
julia> using Pkg; Pkg.add("PortHamiltonianBenchmarkSystems")
To generate one of the systems, e.g. a mass-spring-damper chain with the parameters from Gugercin2012, type:
using PortHamiltonianBenchmarkSystems
config = SingleMSDConfig("Gugercin")
J, R, Q, B = construct_system(config)
Naturally, we may also specify the parameters ourselves:
config = SingleMSDConfig(n_cells = 10, io_dim = 2, c = 1.0, m = 4.0, k = 5.0)
If you need the system matrices in standard port-Hamiltonian form, type:
system = PHSystem(config)
(; E, J, R, Q, G, P, S, N) = system
Docstrings for the types and methods shown above can be accessed in the Julia REPL by typing ? and then name of the type or method.
How to Contribute
This benchmark collection is driven by the active support of the port-Hamiltonian community. If your research has lead to port-Hamiltonian models that may be relevant for this collection, we would be happy to include them. If you wish to contribute to the project directly, please consult our Contribution page, fork our Git repository and issue a pull request. Alternatively, feel free to contact us via e-mail to discuss our potential collaboration. We are happy to receive reference implementations in other languages and reimplement them in Julia for this package.
Related Skills
node-connect
352.9kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
111.5kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
352.9kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
352.9kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
