56 lines
1.8 KiB
Rust
56 lines
1.8 KiB
Rust
//! Entropyk Python bindings.
|
|
//!
|
|
//! This crate provides Python wrappers for the Entropyk thermodynamic
|
|
//! simulation library via PyO3 + Maturin.
|
|
|
|
use pyo3::prelude::*;
|
|
|
|
pub(crate) mod components;
|
|
pub(crate) mod errors;
|
|
pub(crate) mod solver;
|
|
pub(crate) mod types;
|
|
|
|
/// Python module: ``import entropyk``
|
|
#[pymodule]
|
|
fn entropyk(m: &Bound<'_, PyModule>) -> PyResult<()> {
|
|
// Register exceptions first
|
|
errors::register_exceptions(m)?;
|
|
|
|
// Core types
|
|
m.add_class::<types::PyPressure>()?;
|
|
m.add_class::<types::PyTemperature>()?;
|
|
m.add_class::<types::PyEnthalpy>()?;
|
|
m.add_class::<types::PyMassFlow>()?;
|
|
|
|
// Components
|
|
m.add_class::<components::PyCompressor>()?;
|
|
m.add_class::<components::PyCondenser>()?;
|
|
m.add_class::<components::PyEvaporator>()?;
|
|
m.add_class::<components::PyEconomizer>()?;
|
|
m.add_class::<components::PyExpansionValve>()?;
|
|
m.add_class::<components::PyPipe>()?;
|
|
m.add_class::<components::PyPump>()?;
|
|
m.add_class::<components::PyFan>()?;
|
|
m.add_class::<components::PyFlowSplitter>()?;
|
|
m.add_class::<components::PyFlowMerger>()?;
|
|
m.add_class::<components::PyFlowSource>()?;
|
|
m.add_class::<components::PyFlowSink>()?;
|
|
m.add_class::<components::PyOperationalState>()?;
|
|
|
|
// Solver
|
|
m.add_class::<solver::PySystem>()?;
|
|
m.add_class::<solver::PyNewtonConfig>()?;
|
|
m.add_class::<solver::PyPicardConfig>()?;
|
|
m.add_class::<solver::PyFallbackConfig>()?;
|
|
m.add_class::<solver::PyConvergedState>()?;
|
|
m.add_class::<solver::PyConvergenceStatus>()?;
|
|
m.add_class::<solver::PyConstraint>()?;
|
|
m.add_class::<solver::PyBoundedVariable>()?;
|
|
m.add_class::<solver::PyConvergenceCriteria>()?;
|
|
m.add_class::<solver::PyJacobianFreezingConfig>()?;
|
|
m.add_class::<solver::PyTimeoutConfig>()?;
|
|
m.add_class::<solver::PySolverStrategy>()?;
|
|
|
|
Ok(())
|
|
}
|