Releases: emsig/emg3d
JOSS article
- Version of the JOSS article, https://doi.org/10.21105/joss.01463 .
- New function
utils.grid2grid
to move from one grid to another. Both functions (utils.get_receiver
andutils.grid2grid
) can be used for fields and model parameters (with or without extrapolation). They are very similar, the former taking coordinates (x, y, z) as new points, the latter one another TensorMesh instance. - New jitted function
njitted.volume_average
for interpolation using the volume-average technique. - New parameter
conjugate
insolver.solver
to permit both Fourier transform conventions. - Added
exit_status
andexit_message
toinfo_dict
. - Add section
Related ecosystem
to documentation.
H-field
-
New routines:
utils.get_h_field
: Small routine to calculate the magnetic field from the electric field using Faraday's law.utils.get_receiver
: Small wrapper to interpolate a field at receiver positions. Added 3D spline interpolation; is the new default.
-
Re-implemented the possibility to define isotropic magnetic permeabilities in
utils.Model
. Magnetic permeability is not tri-axially included in the solver currently; however, it would not be too difficult to include if there is a need. -
CPU-graph added on top of RAM-graph.
-
Expand
utils.Field
to work with pickle/shelve. -
Jit
np.linalg.norm
(njitted.l2norm
). -
Use
scooby
(soft dependency) for versioning, renameVersion
toReport
(backwards incompatible). -
Bug fixes:
- Small bugfix introduced in ebd2c9d:
sc_cycle
andlr_cycle
was not updated any longer at the end of a cycle (only affectedsslsolver=True
. - Small bugfix in
utils.get_hx
.
- Small bugfix introduced in ebd2c9d:
CPU & RAM
Further speed and memory improvements:
-
Add CPU & RAM-page to documentation.
-
Change loop-order from x-z-y to z-x-y in Gauss-Seidel smoothing with line relaxation in y-direction. Hence reversed lexicographical order. This results in a significant speed-up, as x is the fastest changing axis.
-
Move total residual calculation from
solver.residual
intonjitted.amat_x
. -
Simplifications in
utils
:- Simplify
utils.get_source_field
. - Simplify
utils.Model
. - Removed unused timing-stuff from early development.
- Simplify
Memory
RegularGridInterpolator
- Replace
scipy.interpolate.RegularGridInterpolator
with a custom tailored version of it (solver.RegularGridProlongator
); results in twice as fast prolongation. - Simplify the fine-grid calculation in
prolongation
without usinggridE*
; memory friendlier. - Submission to JOSS.
- Add Multi-what?-page to documentation.
- Some major refactoring, particularly in
solver
. - Removed
discretize
as hard dependency. - Rename
rdir
andldir
(and relatedp*dir
;*cycle
) to the more descriptivesc_dir
andlr_dir
.
Accepts any grid size
- First open-source version.
- Include RTD, Travis, Coveralls, Codacy, and Zenodo. No benchmarks yet.
- Accepts now any grid size (warns if a bad grid size for MG is provided).
- Coarsens now to the lowest level of each dimension, not only to the coarsest level of the smallest dimension.
- Combined
restrict_rx
,restrict_ry
, andrestrict_rz
torestrict
. - Improve speed by passing pre-allocated arrays to jitted functions.
- Store
res_y
,res_z
and correspondingeta_y
,eta_z
only ifres_y
,res_z
were provided in initial call toutils.model
. - Change
zeta
tov_mu_r
. - Include rudimentary
TensorMesh
-class inutils
; removes hard dependency ondiscretize
. - Bugfix: Take a provided
efield
into account; don't return if provided.