use nalgebra::Vector3;
use crate::crate_utils::define_source;
define_source! {
TetrahedronMagnet
field_fn: tetrahedron_B
args: {
polarization: Vector3<T> = Vector3::z(),
vertices: @val [Vector3<T>; 4] = [Vector3::zeros(), Vector3::x(), Vector3::y(), Vector3::z()],
}
arg_display: "pol={}, vertices={}";
arg_fmt: [format_vector3, format_vertices_4]
docs: {
new: {
}
}
}
#[cfg(all(test, feature = "std"))]
crate::testing_util::generate_tests! {
TetrahedronMagnet
filename: tetrahedron
params: {
polarization: vector![1.0, 2.0, 3.0],
vertices: [
vector![-0.1, -0.1, -0.1],
vector![0.1, -0.1, -0.1],
vector![0.0, 0.1, -0.1],
vector![0.0, 0.0, 0.1]
]
}
rtols: {
static: 2e-9,
static_small: 2e-9,
translate: 2e-9,
rotate: 2e-9,
}
p95_rtols: {
static: 2e-9,
static_small: 2e-9,
translate: 2e-9,
rotate: 2e-9,
}
f32_rtols: {
static: 5e-2,
static_small: 2e-1,
translate: 5e-2,
rotate: 5e-2,
}
f32_p95_rtols: {
static: 1e-3,
static_small: 1e-3,
translate: 1e-3,
rotate: 1e-3,
}
}