pub mod element;
pub mod node;
use std::{collections::HashMap, str::FromStr, usize};
use serde::de::{Deserialize, IntoDeserializer, value};
pub use element::GenericElement;
pub use node::GenericNode;
#[derive(Clone, Debug, serde::Deserialize, PartialEq, serde::Serialize)]
pub struct NodalAnalysisElement
{
pub (in crate) element_type: String,
pub (in crate) input: usize,
pub (in crate) output: usize,
pub (in crate) gain: Vec<f64>,
}
#[derive(Clone, Debug, serde::Deserialize, PartialEq, serde::Serialize)]
pub struct NodalMetadata
{
pub (in crate) potential: Vec<f64>,
pub (in crate) is_locked: bool,
pub (in crate) metadata: Option<HashMap<String, f64>>,
}
#[derive(Clone, Debug, serde::Deserialize, PartialEq, serde::Serialize)]
pub struct NodalAnalysisModel
{
pub (in crate) model_type: String,
pub (in crate) nodes: usize,
pub (in crate) configuration: HashMap<usize, NodalMetadata>,
pub (in crate) elements: Vec<NodalAnalysisElement>,
}
impl NodalAnalysisModel {}
impl FromStr for NodalAnalysisModel
{
type Err = value::Error;
fn from_str(s: &str) -> Result<Self, Self::Err>
{
Self::deserialize(s.into_deserializer())
}
}