spirv: cpu: inline most of this step logic
This commit is contained in:
@@ -23,60 +23,19 @@ impl<R: Real, M: Material<R>> SimBackend<R, M> for CpuBackend {
|
|||||||
m: &mut [Vec3<R>],
|
m: &mut [Vec3<R>],
|
||||||
) {
|
) {
|
||||||
for _ in 0..num_steps {
|
for _ in 0..num_steps {
|
||||||
step_e(meta, stim_e, mat, e, h, m);
|
// step E field
|
||||||
step_h(meta, stim_h, mat, e, h, m);
|
apply_all_cells(meta.dim, |idx| {
|
||||||
|
StepEContext::step_flat_view(meta, mat, stim_e, e, h, idx);
|
||||||
|
});
|
||||||
|
|
||||||
|
// step H field
|
||||||
|
apply_all_cells(meta.dim, |idx| {
|
||||||
|
StepHContext::step_flat_view(meta, mat, stim_h, e, h, m, idx);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn step_e<R: Real, M: Material<R>>(
|
|
||||||
meta: SimMeta<R>,
|
|
||||||
stim_e: &[Vec3<R>],
|
|
||||||
mat: &[M],
|
|
||||||
e: &mut [Vec3<R>],
|
|
||||||
h: &[Vec3<R>],
|
|
||||||
m: &[Vec3<R>],
|
|
||||||
) {
|
|
||||||
apply_all_cells(meta.dim, |idx| {
|
|
||||||
step_e_cell(idx, meta, stim_e, mat, e, h, m);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
fn step_h<R: Real, M: Material<R>>(
|
|
||||||
meta: SimMeta<R>,
|
|
||||||
stim_h: &[Vec3<R>],
|
|
||||||
mat: &[M],
|
|
||||||
e: &[Vec3<R>],
|
|
||||||
h: &mut [Vec3<R>],
|
|
||||||
m: &mut [Vec3<R>],
|
|
||||||
) {
|
|
||||||
apply_all_cells(meta.dim, |idx| {
|
|
||||||
step_h_cell(idx, meta, stim_h, mat, e, h, m);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
fn step_e_cell<R: Real, M: Material<R>>(
|
|
||||||
idx: Vec3u,
|
|
||||||
meta: SimMeta<R>,
|
|
||||||
stim_e: &[Vec3<R>],
|
|
||||||
mat: &[M],
|
|
||||||
e: &mut [Vec3<R>],
|
|
||||||
h: &[Vec3<R>],
|
|
||||||
m: &[Vec3<R>],
|
|
||||||
) {
|
|
||||||
StepEContext::step_flat_view(meta, mat, stim_e, e, h, idx);
|
|
||||||
}
|
|
||||||
fn step_h_cell<R: Real, M: Material<R>>(
|
|
||||||
idx: Vec3u,
|
|
||||||
meta: SimMeta<R>,
|
|
||||||
stim_h: &[Vec3<R>],
|
|
||||||
mat: &[M],
|
|
||||||
e: &[Vec3<R>],
|
|
||||||
h: &mut [Vec3<R>],
|
|
||||||
m: &mut [Vec3<R>],
|
|
||||||
) {
|
|
||||||
StepHContext::step_flat_view(meta, mat, stim_h, e, h, m, idx);
|
|
||||||
}
|
|
||||||
|
|
||||||
fn apply_all_cells<F: FnMut(Vec3u)>(dim: Vec3u, mut f: F) {
|
fn apply_all_cells<F: FnMut(Vec3u)>(dim: Vec3u, mut f: F) {
|
||||||
for z in 0..dim.z() {
|
for z in 0..dim.z() {
|
||||||
for y in 0..dim.y() {
|
for y in 0..dim.y() {
|
||||||
|
Reference in New Issue
Block a user