bef423ce38
Rename Point -> Vec2 to distinguish it clearly from any 3d object
2020-09-26 13:25:49 -07:00
fccdbc802b
Move Point from geom.rs -> vec.rs in preparation for renaming it to Vec2
2020-09-26 13:22:37 -07:00
caa276295d
Move vec3.rs -> vec.rs in preparation for adding a 2d vec
2020-09-26 13:19:25 -07:00
8d074d390d
Simulation is full-3d
2020-09-26 11:03:56 -07:00
fa0e30a2a6
Make Coord
3d
2020-09-25 21:04:16 -07:00
9f105e5558
Re-enable previously-broken measurements
2020-09-25 20:32:22 -07:00
2627852a39
Eradicate SimSnapshot
...
We do everything it achieved via the GenericSim trait, now.
2020-09-25 20:18:43 -07:00
cae84222c0
Rendering now mostly uses the GenericSim
2020-09-25 20:15:39 -07:00
a931252e9c
Convert render system to sample the simulation at a fixed resolution; no more decimation
2020-09-25 19:40:49 -07:00
341acf367d
Explain how the cell is generalized to 3d
2020-09-25 19:29:10 -07:00
3d9a78efab
Change from Array2 to Array3 with depth = 1
2020-09-22 12:03:59 -07:00
6d77c85179
Abstract coordinates behind a Coord
type
...
This will allow adding another dimension to the coordinate, more easily.
2020-09-22 11:23:58 -07:00
b96f9c5dcc
step_e now makes the boundary condition explicit as well
...
This paves the way for implementing a single 2d plane within a 3d
simulation.
Unfortunately it increases the reflections, however this could be made
to accept explicit BoundaryCondition parameters to explicitly nullify
reflections instead.
2020-09-22 10:13:45 -07:00
2549ac9940
step_h uses optional left/down nodes.
...
This will be handy for implementing 3d, because the world with depth=1
(i.e. no neighboring xy planes) will behave the same as a 2d simulation.
2020-09-22 08:56:41 -07:00
f21c43d655
Misc measurement improvements
2020-09-20 21:56:30 -07:00
253ffe585f
Fix current measurement
2020-09-20 11:53:05 -07:00
d713c79bbd
Improve the UPML parameters by properly summing the axis conductivities in the corners
2020-09-19 20:10:10 -07:00
f6e4ed8cb9
Add a UPML boundary condition (needs improving in the corners, though)
2020-09-19 20:02:11 -07:00
ae93101676
Allow conductivity to be specified as a vector
...
This is necessary to implement UPML boundary conditions
2020-09-19 19:33:11 -07:00
a7899d9be1
Add a toroid example where the B field is actually directed circularly inside the toroid
...
This is a more accurate simulation of a core memory.
Presently, trying to characterize the device: understand how the drive
current, and sizing, affects switching time.
2020-09-18 22:23:37 -07:00
1d303df409
Fix rendering to render (Bx,By,Ez). Also fix an infinite loop due to rounding errors in MHCurve
2020-09-18 22:22:54 -07:00
8a70276c78
Make measurements also be 3d
2020-09-18 17:11:05 -07:00
7029c8bcfa
SimState *should* be capable of simulating either ex/ey/bz or bx/by/ez type planes
...
Have not actually tested it with a bx/by/ez plane yet.
2020-09-17 23:02:28 -07:00
a1f5b96ae1
Model the H/B field in 3d, mostly
2020-09-17 22:53:12 -07:00
54b23a0494
step_h is 2.5d; need to update material trait
2020-09-17 21:09:37 -07:00
144c7a85d4
CellState now holds the full e
field as a 3-vector (was a 2-vector)
2020-09-17 20:58:25 -07:00
d65dab763f
Rewrite the step_e
function to handle up to 3 dimensions
...
I'll be expanding the simulation to remain as 2d, but allow
configuration of either (Ex, Ey, Hz) (as today) or (Hx, Hy, Ez).
2020-09-17 20:48:05 -07:00
c0174b6483
Rename flt::Priv/Pub to Real and Flt
...
It's a little more readable
2020-09-13 22:45:02 -07:00
3e12f5384d
Update benchmarks after switch from f64 -> f32 as default
2020-09-13 22:38:42 -07:00
f50dbf7d4e
Make the float depth compile-time configurable
2020-09-13 22:38:00 -07:00
d4334565a7
Add an example where the ferromagnet is a ring around the conductor
2020-09-13 18:33:31 -07:00
75008a6bd5
Consolidate duplicate 3r1 material definitions into mat::db
module
2020-09-13 18:32:43 -07:00
0581820388
Update benchmarks
2020-09-13 18:25:28 -07:00
6664fea7c2
Use unchecked floats for release builds
2020-09-13 18:22:58 -07:00
53da11c874
Assorted minor aesthetic touchups
2020-09-13 17:19:44 -07:00
003dde12a0
Record perf as it changes
2020-09-13 17:08:52 -07:00
cb9f413710
Add energy measurement
2020-09-13 17:08:33 -07:00
3f7ab1a39a
Simplify the SimState decimation logic.
2020-09-13 16:29:18 -07:00
b4b0fde8af
Use ndarray's parallelism features
...
It's easier to read, and it also gets 10-30% perf improvement for
Driver::step
2020-09-12 20:37:31 -07:00
f4cdd1240d
Switch to Criterion for benchmarking
2020-09-12 19:47:38 -07:00
896ac4e655
Add a benchmark for Driver::step
2020-09-12 11:17:57 -07:00
0fc973b409
Toy around with some other setups.
...
It's weird (maybe), that the behavior of the ferromagnet is to _prevent_ H
from getting very large
2020-09-09 22:41:41 -07:00
4d8ef1c9f3
Add a measurement for magnetization
2020-09-07 21:58:07 -07:00
995b5b7c54
Render current as a vector field
...
hmm...
2020-09-07 21:34:33 -07:00
0c6a01c671
Make vector field rendering logic generic
2020-09-07 21:14:26 -07:00
0b9861d619
Cleanup RenderSteps
2020-09-07 21:07:26 -07:00
d611e822dd
Add a 'Measurement' concept, e.g. to display current at a point.
2020-09-07 20:14:41 -07:00
fbca8622df
Remove usize casts
2020-09-07 17:54:50 -07:00
5d61765a84
Move the Driver away from the builder pattern and use mutators instead
2020-09-07 17:46:42 -07:00
14fa68bfb2
Snapshot and decimate before rendering; add an explicit boundary layer
2020-09-07 17:42:05 -07:00