rename Stimulus
-> RegionGated
This commit is contained in:
parent
eb406ea46f
commit
60e44d6d4d
|
@ -11,7 +11,7 @@ use coremem::{mat, Driver};
|
|||
use coremem::geom::{Coord as _, Cube, Index};
|
||||
use coremem::units::Seconds;
|
||||
use coremem::sim::spirv::{self, SpirvSim};
|
||||
use coremem::stim::{Stimulus, TimeVarying as _, UniformStimulus};
|
||||
use coremem::stim::{RegionGated, TimeVarying as _, UniformStimulus};
|
||||
use coremem::cross::vec::Vec3;
|
||||
|
||||
type Mat = mat::FullyGenericMaterial<f32>;
|
||||
|
@ -46,7 +46,7 @@ fn main() {
|
|||
Index::new(201, height*3/4, 1).to_meters(feature_size),
|
||||
);
|
||||
// emit a constant E/H delta over this region for 100 femtoseconds
|
||||
let stim = Stimulus::new(
|
||||
let stim = RegionGated::new(
|
||||
center_region,
|
||||
UniformStimulus::new(
|
||||
Vec3::new(2e19, 0.0, 0.0), // E field (per second)
|
||||
|
|
|
@ -224,23 +224,23 @@ impl AbstractStimulus for RngStimulus {
|
|||
|
||||
/// Apply a time-varying stimulus uniformly across some region
|
||||
#[derive(Clone)]
|
||||
pub struct Stimulus<R, T> {
|
||||
pub struct RegionGated<R, S> {
|
||||
region: R,
|
||||
stim: T,
|
||||
stim: S,
|
||||
}
|
||||
|
||||
impl<R, T> Stimulus<R, T> {
|
||||
pub fn new(region: R, stim: T) -> Self {
|
||||
impl<R, S> RegionGated<R, S> {
|
||||
pub fn new(region: R, stim: S) -> Self {
|
||||
Self {
|
||||
region, stim
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<R: Region + Sync, T: TimeVarying3 + Sync> AbstractStimulus for Stimulus<R, T> {
|
||||
impl<R: Region + Sync, S: AbstractStimulus + Sync> AbstractStimulus for RegionGated<R, S> {
|
||||
fn at(&self, t_sec: f32, pos: Meters) -> Fields {
|
||||
if self.region.contains(pos) {
|
||||
self.stim.at(t_sec)
|
||||
self.stim.at(t_sec, pos)
|
||||
} else {
|
||||
Fields::default()
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user