move Ferroxcube3R1MH from spirv_bindings to coremem_types::mat

This commit is contained in:
2022-07-18 15:33:47 -07:00
parent d005256459
commit 716e0e12b4
4 changed files with 23 additions and 22 deletions

View File

@@ -10,8 +10,8 @@ mod ffi {
pub use spirv_backend::entry_points;
pub use spirv_backend::sim::SerializedSimMeta;
pub use spirv_backend::support::Optional;
pub use spirv_backend::mat::{Ferroxcube3R1MH, FullyGenericMaterial, IsoConductorOr};
pub use coremem_types::mat::{MBPgram, MHPgram};
pub use spirv_backend::mat::{FullyGenericMaterial, IsoConductorOr};
pub use coremem_types::mat::{Ferroxcube3R1MH, MBPgram, MHPgram};
}
// conversion traits for types defined cross-lib

View File

@@ -19,9 +19,9 @@ pub mod support;
pub use sim::{SerializedSimMeta, SerializedStepE, SerializedStepH};
pub use support::{Optional, UnsizedArray};
use mat::{IsoConductorOr, Ferroxcube3R1MH, FullyGenericMaterial};
use mat::{IsoConductorOr, FullyGenericMaterial};
use coremem_types::mat::Material;
use coremem_types::mat::{Ferroxcube3R1MH, Material};
use coremem_types::vec::{Vec3, Vec3u};
type Iso3R1 = IsoConductorOr<Ferroxcube3R1MH>;

View File

@@ -25,24 +25,6 @@ impl Material<f32> for FullyGenericMaterial {
}
}
/// MHPgram that's vaguely similar to Ferroxcube's 3R1 material
#[derive(Copy, Clone, Default, PartialEq)]
pub struct Ferroxcube3R1MH;
impl Into<MHPgram<f32>> for Ferroxcube3R1MH {
fn into(self) -> MHPgram<f32> {
// TODO: how much (if any) penalty do we pay for this not being `const`?
MHPgram::new(25.0, 881.33, 44000.0)
}
}
impl Material<f32> for Ferroxcube3R1MH {
fn move_b_vec(&self, m: Vec3<f32>, target_b: Vec3<f32>) -> Vec3<f32> {
let curve: MHPgram<f32> = (*self).into();
curve.move_b_vec(m, target_b)
}
}
/// Optimized material aimed at saving space for the common case of a simulation that contains
/// isomorphic conductors plus one exception material.
#[derive(Copy, Clone, Default, PartialEq)]

View File

@@ -176,6 +176,25 @@ impl<R: Real> Material<R> for MHPgram<R> {
}
}
/// MHPgram that's vaguely similar to Ferroxcube's 3R1 material
#[derive(Copy, Clone, Default, PartialEq)]
pub struct Ferroxcube3R1MH;
impl<R: Real> Into<MHPgram<R>> for Ferroxcube3R1MH {
fn into(self) -> MHPgram<R> {
// TODO: how much (if any) penalty do we pay for this not being `const`?
MHPgram::new(25.0f32.cast(), 881.33f32.cast(), 44000.0f32.cast())
}
}
impl<R: Real> Material<R> for Ferroxcube3R1MH {
fn move_b_vec(&self, m: Vec3<R>, target_b: Vec3<R>) -> Vec3<R> {
let curve: MHPgram<R> = (*self).into();
curve.move_b_vec(m, target_b)
}
}
#[cfg(test)]
mod test {
use super::*;