use std::fmt;
#[derive(Copy, Clone, PartialEq, Debug, Deserialize)]
#[serde(default = "SimulationConfig::default")]
pub struct SimulationConfig {
pub frequency_threshold: f32,
pub fdfd_convergence: f32,
pub cosine_cutoff: f32,
pub frequency_range: [f32; 2],
}
impl Default for SimulationConfig {
fn default() -> SimulationConfig {
SimulationConfig {
frequency_threshold: 0.005,
fdfd_convergence: 0.00001,
cosine_cutoff: 0.005,
frequency_range: [0.0001, 1.0],
}
}
}
impl fmt::Display for SimulationConfig {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
writeln!(f, "Simulation configuration:")?;
writeln!(f, "\tFrequency threshold: {}", self.frequency_threshold)?;
writeln!(
f,
"\tFrequency range: {} .. {}",
self.frequency_range[0], self.frequency_range[1]
)?;
writeln!(f, "\tFDFD convergence: {}", self.fdfd_convergence)?;
write!(f, "\tCosine cutoff: {}", self.cosine_cutoff)
}
}