43 lines
1.1 KiB
Rust
43 lines
1.1 KiB
Rust
//! Magnetic core memory simulator.
|
|
//! Built using a Finite-Difference Time-Domain electromagnetics simulator.
|
|
//! The exhaustive guide for implementing a FDTD simulator by John B. Schneider [1] gives some
|
|
//! overview of the theory.
|
|
//!
|
|
//! [1] https://www.eecs.wsu.edu/~schneidj/ufdtd/ufdtd.pdf
|
|
|
|
use log::info;
|
|
|
|
pub mod driver;
|
|
pub mod geom;
|
|
pub mod meas;
|
|
pub mod render;
|
|
pub mod sim;
|
|
pub mod stim;
|
|
|
|
pub use driver::*;
|
|
pub use sim::*;
|
|
pub use coremem_cross as cross;
|
|
pub use coremem_cross::real;
|
|
pub use coremem_cross::mat;
|
|
|
|
// Some things to keep in mind:
|
|
// B = mu_r*H + M
|
|
// For a vacuum, B = H
|
|
|
|
/// optional: calling this enables preferred logging defaults
|
|
pub fn init_logging() {
|
|
let conf = env_logger::Env::new().default_filter_or("INFO,wgpu_core=WARN");
|
|
env_logger::Builder::from_env(conf).init();
|
|
info!("logging initialized");
|
|
}
|
|
|
|
/// optional: calling this tunes the library to provide better instrumentation for debugging
|
|
/// (at an extreme cost to perf)
|
|
pub fn init_debug() {
|
|
rayon::ThreadPoolBuilder::new()
|
|
.num_threads(1)
|
|
.build_global()
|
|
.unwrap();
|
|
info!("running with debug rayon");
|
|
}
|