2024-10-25
The mrec
keyword in empymod.bipole
can now be set to j
, in which case the electric current density (A/m2) is returned.
2024-10-16
Small maintenance release:
- Update credits to reflect current situation.
- Changed from
setup.py
topyproject.toml
. - Some maintenance in tests and docs.
- Small modifications to the kernel.
2024-10-09
The code is now compatible with NumPy v2.
- Gallery Update Part I:
- Update for Jupyterlab (ipympl/widget)
- Replaced implicit by explicit pyplots
- Use by default a positiv z-upwards coordinate system
- Part I: frequency domain; reproducing; published
- Bumped the minimum requirements to:
- Python 3.10
- SciPy 1.10
- Numba, libdlf, scooby (without minimum version)
- Maintenance:
- Testing: dropped Python 3.9 (Python 3.13 not added yet).
- Update for NumPy v2: mainly
np.infty -> np.inf
,np.float_ -> np.float64
. - Some fixes to address warnings regarding the deprecated conversion of an array with ndim > 0 to a scalar.
2024-06-25
- @ruboerner created a Julia wrapper for empymod! Added a note in this regard to the README and the installation instructions.
- Small maintenance things and doc improvements.
2024-03-01
The digital linear filters are outsourced to libdlf, reducing the lines of code
of empymod by over 50%. In addition to the new requirement libdlf, scooby is
added as a requirement. Most user questions can be adressed much better if they
provide the output of empymod.Report()
- however, most users do not have
scooby installed. Having it as a requirement will make support smoother. Both
new requirements are very lightweight modules, having at most numpy as a
dependency.
- Filters:
- The digital linear filters are outsourced to libdlf. Note: How to access filters changed! The old way still works, with a deprecation note stating how to change your code. The old way will be removed in v3.0.
- Examples:
- @efinden expanded the "Cole-Cole IP" example.
- Maintenance:
- Bumped the minimum requirements to:
- Python 3.9
- SciPy 1.9
- Numba 0.53
- libdlf (NEW requirement)
- scooby (NEW requirement)
- Testing: added Python 3.12, dropped Python 3.8.
- Fix remaining outdated
python setup.py
commands. - Many small things to keep the package updated.
- Bumped the minimum requirements to:
2023-05-31
- Modelling routines: The definition of the coordinates for
dipole
,dipole_k
, andanalytical
is now more flexible (x
andy
coordinate can now have different dimension, as long as one is a scalar). - Bumped the minimum requirements to:
- Python 3.8
- NumPy 1.19
- SciPy 1.5
- Numba 0.50
- Bug fixes, small improvements and maintenance:
- Cleaned-up the namespace by setting
dir()
explicitly. - Testing: added Python 3.11, dropped Python 3.7.
- Adjust copyright notice to only include original year, so it has not to be adjusted each year.
- Cleaned-up the namespace by setting
2022-10-15
Minimum offset:
Change regarding the enforced minimum horizontal offset, which can be set through
empymod.set_minimum(min_off=1e-3)
, where 1e-3, hence 1 mm, is the default. Until now, responses for smaller offsets were set to NaN. New, they return the response for the minimum offset. The raised warning stays the same.Maintenance
- Exclude
scipy!=v1.9.0
from MacOS/Windows test. - Replace
pytest-flake8
by plainflake8
. - Change the way
spacing
andshift
are calculated infdesign.print_result
to avoid numerical precision issues. - Replace deprecated
sphinx-panels
withsphinx-design
.
- Exclude
2022-08-02
- I/O & CLI:
- New Command-Line Interface (CLI) for the top-level modelling functions
bipole
,dipole
,loop
, andanalytical
. Consult the manual for its description, or type in your terminalempymod --help
. Note that the CLI is a simple wrapper and currently lacks proper logging. - New module
io
to save and load inputs and data.
- New Command-Line Interface (CLI) for the top-level modelling functions
- Maintenance:
- Improved load time by lazy-loading matplotlib and some scipy submodules.
- Removed the file
runtests.sh
; usesmake
instead.
2022-07-20
- The main modelling routines
bipole
,dipole
,loop
, andanalytical
take a new keyword argumentsqueeze
, which is set toTrue
by default. If true, the output is squeezed (status quo); if false, the output is always a three-dimensional array(nfreqtime, nrec, nsrc)
. - One can define new
+np.infty
as interface. Only use-case is to enforce a coordinate system in a two-layer case with an interface atz
(see example coordinate system in the educational section of the gallery). - Documentation:
- Expanded note on FFTLog.
- Expanded note on coordinate system.
- Changed the description from
optional
todefault: xyz
in the main modelling routines.
- Maintenance:
- Use scipy through conda in CI.
- Fix
do_3d_projection
formatplotlib>3.5.0
.
2021-11-20
- New example: Random noise for f-domain CSEM data.
- Maintenance:
- Change in the njit-settings of
kernel.wavenumber
to work withnumba>=0.54
. - Cannot use
matplotlib==3.5.0
to build the gallery (matplotlib#21688). - Move up the minimum matplotlib in the tests.
- Added a Cron-job to run the tests monthly; every 20th at 14:14.
- Change in the njit-settings of
2021-07-04
- Bumped the minimum requirements to:
- Python 3.7
- NumPy 1.17
- SciPy 1.4
- Numba 0.47
- Legacy clean-up: The kernel of empymod used to switch off all NumPy errors
via
np.seterr(all='ignore')
. That means that any script or library that used empymod switched off all warnings from NumPy, which is not good. Since empymod v2 this does make even less sense, as the entire kernel is jitted with numba. This setting is therefore removed.
2021-06-23
- Bugfix in
empymod.bipole
andempymod.loop
when using various azimuths and dips (some cases used to cause a shape-mismatch error).
2021-05-30
- Streamline some things with emsig and emg3d:
- Change theme from rtd to pydata.
- New primary links https://emsig.xyz and https://empymod.emsig.xyz.
- Move copyright from «The empymod Developers» to «The emsig community».
- Slight rework of some parts of the docs.
2021-03-26
- Bugfix Windows int32/64.
- New example "Magnetotelluric".
2021-03-01
Maintenance and small bug fix:
- Time-domain modelling failed when using DLF for the Fourier transform with
pts_per_dec=0
andsignal={-1;1}
(broadcasting error). - RTD fixes & changes and GitHub Action fixes; update year.
2020-12-09
Small maintenance release:
- Update github.com/empymod to github.com/emsig.
- Moved from Travis CI to GitHub Actions.
2020-09-22
- Documentation:
- New section under Tips and tricks regarding Zero horizontal offset.
- Example gallery:
- Re-organization of the section Reproducing: split CSEM into the two examples, rename all.
- New example Hunziker et al., 2015, in the section Reproducing.
- Update and maintain all of them.
- Maintenance:
- Take care of deprecation warnings:
- Correct docs re
htarg
forht='quad'
(a
/b
vslmin
/lmax
). - Sphinx: Ensure
_html_repr_
is captured by RTD and other small improvements. - Chain errors.
- Improve NumPy types.
2020-07-02
- Fix example
tem_walktem
, related to changes inscipy.quadrature
: Replace not-existing private namescipy.integrate.quadrature._cached_roots_legendre
with the public namescipy.special.roots_legendre
. - As a consequence of the above, changed in
empymod
the used, old namescipy.special.p_roots
by new, more descriptive namescipy.special.roots_legendre
. - Improve publications-section in the example gallery.
- Change error reporting to native (instead of
print(bla)
andraise Error
doraise Error(bla)
); improve corresponding error testing by checking the error message too.
2020-06-19
- Bugfix that using
ftarg
returned fromutils.check_time
as input for the sameutils.check_time
does not throw a warning in the case offftlog
andqwe
. - Various micro-improvements and simplifications with regards to the documentation, testing, and requirement specifications.
2020-04-29
This version is backwards incompatible and requires Python 3.6+.
- Numba:
- Using
numexpr
is no longer a possibility. Instead,numba
is a new dependency. All four kernel routines (wavenumber
,greenfct
,reflections
, andfields
) are now numba-jitted functions.
- Using
- Removed:
- Removed all deprecated functions.
- Dropped support for Python 3.5; moved to f-strings.
- Dropped testing for channel conda-forge. The problems encountered at the early development cycle of empymod with conda-forge do not exist any longer.
- New defaults:
EMArray
:.amp
and.pha
are now methods, not properties. Phase takes three optional boolean parametersdeg=False
,unwrap=True
, andlag=True
, to get radians or degrees; unwrapped or not; and lag or lead defined phases.- The parameters
epermV
andmpermV
are set to the values ofepermH
andmpermH
, respectively, if not provided (hence assuming isotropic behaviour). Before they were set to ones if not provided.
- Renaming:
transform.fht
->transform.hankel_dlf
transform.hqwe
->transform.hankel_qwe
transform.hquad
->transform.hankel_quad
transform.ffht
->transform.fourier_dlf
transform.fqwe
->transform.fourier_qwe
transform.fftlog
->transform.fourier_fftlog
transform.fft
->transform.fourier_fft
transform.fhti
->transform.get_fftlog_input
transform.get_spline_values
->transform.get_dlf_points
.factAng
->ang_fact
- In
htarg
-dict:fftfilt
->dlf
(filter name for Hankel-DLF) - In
ftarg
-dict:fhtfilt
->dlf
(filter name for Fourier-DLF) - In
ftarg
-dict:ft
->kind
(method in Fourier-DLF [sine/cosine]) - Only dictionaries allowed for
htarg
andftarg
; strings, lists, or tuples are not allowed any longer. They are also dictionaries internally now. ht
: There is only one unique name for each method: 'dlf', 'qwe', 'quad'.ft
: There is only one unique name for each method: 'dlf', 'qwe', 'fftlog', 'fft'.- Within
transform
, changefhtarg
,qweargs
, andquadargs
tohtarg
;qweargs
toftarg
.
- Other changes:
- All settings (
xdirect
,ht
,htarg
,ft
,ftarg
,loop
,verb
) are now extracted fromkwargs
. This makes it possible that allmodel
-functions take the same keyword-arguments; warnings are raised if a particular parameter is not used in this function, but it doesn't fail (it fails, however, for unknown parameters). Pure positional calls including those parameters will therefore not work any longer. - Undo a change introduced in v1.8.0:
get_dlf_points
is calculated directly withintransform.fht
[empymod#26]. - Ensured that source and receiver inputs are not altered.
- Significantly reduced top namespace; only functions from
model
are loaded into the top namespace now.
- All settings (
2020-03-04
empymod.bipole
- In the source and receiver format
[x, y, z, azimuth, dip]
, azimuth and dip can now be either single values, or the same number as the other coordinates. - Bugfix (in
utils.get_abs
): When different orientations were used exactly along the principal axes, at the same depth, only the first source was calculated [empymod#74].
- In the source and receiver format
2020-02-21
This is a small appendix to v1.10.4: Depths can now be defined in increasing or decreasing order, as long as they are consistent. Model parameters have to be defined in the same order. Hence all these are possible:
[-100, 0, 1000, 1050]
-> left-handed system, low-to-high[100, 0, -1000, -1050]
-> right-handed system, high-to-low[1050, 1000, 0, -100]
-> left-handed system, high-to-low[-1050, -1000, 0, 100]
-> right-handed system, low-to-high
2020-02-16
- New examples:
empymod
can handle positive z down- or upwards (left-handed or right-handed coordinate systems; it was always possible, but not known nor documented). Adjusted documentation, docstrings, and added an example.- Example how to calculate the responses for the WalkTEM system.
- Minor things and bug fixes:
- Change from relative to absolute imports.
- Simplified releasing (no badges).
- Python 3.8 is tested.
- Fix: numpy now throws an error if the third argument of
logspace
is not anint
, some casting was therefore necessary within the code.
2019-11-11
- Move examples to an integrated Sphinx-Gallery, generated each time.
- Move from conda-channel
prisae
toconda-forge
. - Automatic deploy for PyPi and conda-forge.
2019-11-06
- Simplified and improved
empymod.utils.EMArray
. Now every returned array from the main modelling routinesbipole
,dipole
,loop
, andanalytical
is an EMArray with.amp
- and.pha
-attributes. - Theme and documentation reworked, to be more streamlined with
emg3d
(for easier long-term maintenance). - Travis now checks all the url's in the documentation, so there should be no broken links down the road. (Check is allowed to fail, it is visual QC.)
- Fixes to the
setuptools_scm
-implementation (MANIFEST.in
). ROADMAP.rst
moved to GitHub-Projects;MAINTENANCE.rst
included in manual.
2019-10-22
- Typos from v1.10.0; update example in
model.loop
. - Implement
setuptools_scm
for versioning (adds git hashes for dev-versions).
2019-10-15
- New modelling routine
model.loop
to model the electromagnetic frequency- or time-domain field due to an arbitrary rotated, magnetic source consisting of an electric loop, measured by arbitrary rotated, finite electric or magnetic bipole receivers or arbitrary rotated magnetic receivers consisting of electric loops. - Move copyright from «Dieter Werthmüller» to «The empymod Developers», to be more inclusive and open the project for new contributors.
2019-10-04
- Laplace-domain calculation: By providing a negative
freq
-value, the calculation is carried out in the real Laplace domains = freq
instead of the complex frequency domains = 2i*pi*freq
. - Improvements to filter design and handling:
DigitalFilter
now takes an argument (list of strings) for additional coefficients to the defaultj0
,j1
,sin
, andcos
.fdesign
can now be used with any name as attribute you want to describe the transform pair (until now it had to be eitherj0
,j1
,j2
,sin
, orcos
).- The provided sine and cosine transform pairs in
fdesign
can now be asked to return the inverse pair (time to frequency).
- Other tiny improvements and bug fixes.
2019-07-05
- Use
scooby
forVersions
(printinfo), change name toReport
. - DOC: Correct return statement if
mrec=True
. - Typos and correct links for new asv/bench.
- Bump requirement to SciPy>=1.0.0, remove warning regarding memory leak in SciPy 0.19.0.
2019-04-26
pts_per_dec
are now floats, not integers, which gives more flexibility.- Bugfix:
pts_per_dec
for DLF was actually points pere
, not per decade, as the natural logarithm was used. - New
Versions
-class; improvement over theversions
-function, as it automatically detects if it can print html or not. - Maintenance: Update
np.load
in tests withallow_pickle=True
for changes in numpy v1.16.3. - Lots of changes to accommodate
emg3d
within theempymod
-org:- Adjust website, move stuff from website into README.md.
- /empymod/example-notebooks -> /empymod/empymod-examples.
- /empymod/asv -> /empymod/empymod-asv (and therefore now available at empymod.github.io/empymod-asv).
- /empymod/bench -> /empymod/empymod-bench.
- Move manual from
empymod/__init__.py
to thedocs/manual.rst
, and the references to its own file. Change reference style. - Move credits for initial funding from the license-section of the manual to CREDITS.rst, where it belongs.
2018-11-20
- Many little improvements in the documentation.
- Some code improvements through the use of codacy.
- Remove testing of Python 3.4; officially supported are now Python 3.5-3.7.
- Version of the filter article (DLF) in geophysics and of the CSEM book.
2018-10-26
model.bipole
,model.dipole
, andmodel.analytical
have now a hook which users can exploit to insert their own calculation ofetaH
,etaV
,zetaH
, andzetaV
. This can be used, for instance, to model a Cole-Cole IP survey. See the manual or the example-notebooks for more information.model.wavenumber
renamed tomodel.dipole_k
to avoid name clash withkernel.wavenumber
. For nowmodel.wavenumber
continues to exist, but raises a deprecation warning.xdirect
default value changed fromTrue
toFalse
.- Possibility to provide interpolated points (
int_pts
) totransform.dlf
.
The following changes are backwards incompatible if you directly used
transform.fht
, transform.hqwe
, or transform.hquad
. Nothing changes
for the user-facing routines in model
:
empymod.fem
now passesfactAng
toempymod.transform
, notangle
; this saves some time if looped over offsets or frequencies, as it is not repeatedly calculated withinempymod.transform
.- Use
get_spline_values
inempymod.fem
for Hankel DLF, instead of inempymod.fht
. Gives a speed-up if looped over offsets or frequencies. Should be inutils
, but that would be heavily backwards incompatible. Move there in version 2.0.
2018-07-16
- Small improvements related to speed as a result of the benchmarks introduced
in v1.7.2:
- Kernels which do not exist for a given
ab
are now returned asNone
fromkernel.wavenumber
instead of arrays of zeroes. This permits for some time saving in the transforms. This change is backwards incompatible if you directly usedkernel.wavenumber
. Nothing changes for the user-facing routines inmodel
. - Adjustments in
transform
with regard to theNone
returned bykernel.wavenumber
. The kernels are not checked anymore if they are all zeroes (which can be slow for big arrays). If they are not None, they will be processed. - Various small improvements for speed to
transform.dlf
(i.e.factAng
;log10
/log
; re-arranging).
- Kernels which do not exist for a given
2018-07-07
- Benchmarks:
empymod
has now a benchmark suite, see emsig/empymod-asv. - Fixed a bug in
bipole
for time-domain responses with several receivers or sources with different depths. (Simply failed, as wrong dimension was provided totem
). - Small improvements:
- Various simplifications or cleaning of the code base.
- Small change (for speed) in check if kernels are empty in
transform.dlf
andtransform.qwe
.
2018-06-19
- New routines in
empymod.filters.DigitalFilter
: Filters can now be saved to or loaded from pure ascii-files. - Filters and inversion result from
empymod.scripts.fdesign
are now by default saved in plain text. The filters with their internal routine, the inversion result withnp.savetxt
. Compressed saving can be achieved by giving a name with a '.gz'-ending. - Change in
empymod.utils
:- Renamed
_min_param
to_min_res
. - Anisotropy
aniso
is no longer directly checked for its minimum value. Instead, res*aniso**2, hence vertical resistivity, is checked with_min_res
, and anisotropy is subsequently re-calculated from it. - The parameters
epermH
,epermV
,mpermH
, andmpermV
can now be set to 0 (or any positive value) and do not depend on_min_param
.
- Renamed
printinfo
: Generally improved; prints now MKL-info (if available) independently ofnumexpr
.- Simplification of
kernel.reflections
through re-arranging. - Bug fixes
- Version of re-submission of the DLF article to geophysics.
2018-05-23
Merge empyscripts
into empymod
under empymod.scripts
.
- Clear separation between mandatory and optional imports:
- Mandatory:
numpy
scipy
- Optional:
numexpr
(forempymod.kernel
)matplotlib
(forempymod.scripts.fdesign
)IPython
(forempymod.scripts.printinfo
)
- Mandatory:
- Broaden namespace of
empymod
. All public functions from the various modules and the modules fromempymod.scripts
are now available underempymod
directly.
2018-05-21
These changes should make calculations using QWE
and QUAD
for the
Hankel transform for cases which do not require all kernels faster; sometimes
as much as twice as fast. However, it might make calculations which do require
all kernels a tad slower, as more checks had to be included. (Related to
[empymod#11]; basically
including for QWE
and QUAD
what was included for DLF
in version
1.6.0.)
transform
:dlf
:- Improved by avoiding unnecessary multiplications/summations for empty kernels and applying the angle factor only if it is not 1.
- Empty/unused kernels can now be input as
None
, e.g.signal=(PJ0, None, None)
. factAng
is new optional for the Hankel transform, as isab
.
hqwe
: Avoids unnecessary calculations for zero kernels, improving speed for these cases.hquad
,quad
: Avoids unnecessary calculations for zero kernels, improving speed for these cases.
kernel
:- Simplify
wavenumber
- Simplify
angle_factor
- Simplify
2018-05-05
Secondary field calculation.
- Add the possibility to calculate secondary fields only (excluding the direct
field) by passing the argument
xdirect=None
. The completexdirect
-signature is now (only affects calculation if src and rec are in the same layer):- If True, direct field is calculated analytically in the frequency domain.
- If False, direct field is calculated in the wavenumber domain.
- If None, direct field is excluded from the calculation, and only reflected fields are returned (secondary field).
- Bugfix in
model.analytical
forab=[36, 63]
(zeroes) [empymod#16].
2018-05-01
This release is not completely backwards compatible for the main modelling
routines in empymod.model
, but almost. Read below to see which functions
are affected.
Improved Hankel DLF [empymod#11].
empymod.kernel.wavenumber
always returns three kernels,PJ0
,PJ1
, andPJ0b
. The first one is angle-independent, the latter two depend on the angle. Now, depending of what source-receiver configuration is chosen, some of these might be zero. If-statements were now included to avoid the calculation of the DLF, interpolation, and reshaping for 0-kernels, which improves speed for these cases.Unified DLF arguments [empymod#10].
These changes are backwards compatible for all main modelling routines in
empymod.model
. However, they are not backwards compatible for the following routines:empymod.model.fem
(removeduse_spline
),empymod.transform.fht
(removeduse_spline
),empymod.transform.hqwe
(removeduse_spline
),empymod.transform.quad
(removeduse_spline
),empymod.transform.dlf
(lagged
,splined
=>pts_per_dec
),empymod.utils.check_opt
(no longer returnsuse_spline
),empymod.utils.check_hankel
(changes inpts_per_dec
), andempymod.utils.check_time
(changes inpts_per_dec
).
The function
empymod.utils.spline_backwards_hankel
can be used for backwards compatibility.Now the Hankel and Fourier DLF have the same behaviour for
pts_per_dec
:pts_per_dec = 0
: Standard DLF,pts_per_dec < 0
: Lagged Convolution DLF, andpts_per_dec > 0
: Splined DLF.
There is one exception which is not backwards compatible: Before, if
opt=None
andhtarg={pts_per_dec: != 0}
, thepts_per_dec
was not used for the FHT and the QWE. New, this will be used according to the above definitions.Bugfix in
model.wavenumber
forab=[36, 63]
(zeroes).
2018-04-25
- DLF improvements:
- Digital linear filter (DLF) method for the Fourier transform can now be
carried out without spline, providing 0 for
pts_per_dec
(or any integer smaller than 1). - Combine kernel from
fht
andffht
intodlf
, hence separate DLF from other calculations, as is done with QWE (qwe
forhqwe
andfqwe
). - Bug fix regarding
transform.get_spline_values
; a DLF withpts_per_dec
can now be shorter then the corresponding filter.
- Digital linear filter (DLF) method for the Fourier transform can now be
carried out without spline, providing 0 for
2018-02-24
- Documentation:
- Simplifications: avoid duplication as much as possible between the website
(empymod.github.io), the manual
(empymod.readthedocs.io), and the
README
(github.com/empymod/empymod).- Website has now only Features and Installation in full, all other information comes in the form of links.
README
has only information in the form of links.- Manual contains the
README
, and is basically the main document for all information.
- Improvements: Change some remaining
md
-syntax torst
-syntax. - FHT -> DLF: replace FHT as much as possible, without breaking backwards compatibility.
- Simplifications: avoid duplication as much as possible between the website
(empymod.github.io), the manual
(empymod.readthedocs.io), and the
2018-01-02
- Minimum parameter values can now be set and verified with
utils.set_minimum
andutils.get_minimum
. - New Hankel filter
wer_201_2018
. opt=parallel
has no effect ifnumexpr
is not built against Intel's VML. (Useimport numexpr; numexpr.use_vml
to see if yournumexpr
uses VML.)- Bug fixes
- Version of manuscript submission to geophysics for the DLF article.
2017-09-18
[This was meant to be 1.4.3, but due to a setup/pypi/anaconda-issue I had to push it to 1.4.4; so there isn't really a version 1.4.3.]
- Add TE/TM split to diffusive ee-halfspace solution.
- Improve
kernel.wavenumber
for fullspaces. - Extended
fQWE
andfftlog
to be able to use the cosine-transform. Now the cosine-transform with the real-part frequency response is used internally if a switch-off response (signal=-1
) is required, rather than calculating the switch-on response (with sine-transform and imaginary-part frequency response) and subtracting it from the DC value. - Bug fixes
2017-06-04
- Bugfix: Fixed squeeze in
model.analytical
withsolution='dsplit'
. - Version of final submission of manuscript to Geophysics.
2017-05-30
[This was meant to be 1.4.0, but due to a setup/pypi/anaconda-issue I had to push it to 1.4.1; so there isn't really a version 1.4.0.]
- New home: empymod.github.io as entry point, and the project page on
github.com/empymod. All empymod-repos moved to the new home.
- /prisae/empymod -> /empymod/empymod
- /prisae/empymod-notebooks -> /empymod/example-notebooks
- /prisae/empymod-geo2017 -> /empymod/article-geo2017
- /prisae/empymod-tle2017 -> /empymod/article-tle2017
- Modelling routines:
- New modelling routine
model.analytical
, which serves as a front-end tokernel.fullspace
orkernel.halfspace
. - Remove legacy routines
model.time
andmodel.frequency
. They are covered perfectly bymodel.dipole
. - Improved switch-off response (calculate and subtract from DC).
xdirect
adjustments:isfullspace
now respectsxdirect
.- Removed
xdirect
frommodel.wavenumber
(set toFalse
).
- New modelling routine
- Kernel:
- Modify
kernel.halfspace
to use same input as other kernel functions. - Include time-domain ee halfspace solution into
kernel.halfspace
; possible to obtain direct, reflected, and airwave separately, as well as only fullspace solution (all for the diffusive approximation).
- Modify
2017-03-30
- Add additional transforms and improve QWE:
- Conventional adaptive quadrature (QUADPACK) for the Hankel transform;
- Conventional FFT for the Fourier transform.
- Add
diff_quad
tohtarg
/ftarg
of QWE, a switch parameter for QWE/QUAD. - Change QWE/QUAD switch from comparing first interval to comparing all intervals.
- Add parameters for QUAD (a, b, limit) into
htarg
/ftarg
for QWE.
- Allow
htarg
/ftarg
as dict additionally to list/tuple. - Improve
model.gpr
. - Internal changes:
- Rename internally the sine/cosine filter from
fft
toffht
, because of the addition of the Fast Fourier Transformfft
.
- Rename internally the sine/cosine filter from
- Clean-up repository
- Move
notebooks
to /prisae/empymod-notebooks - Move
publications/Geophysics2017
to /prisae/empymod-geo2017 - Move
publications/TheLeadingEdge2017
to /prisae/empymod-tle2017
- Move
- Bug fixes and documentation improvements
2017-03-11
- Change default filter from
key_401_2009
tokey_201_2009
(because of warning regarding 401 pt filter in source code ofDIPOLE1D
.) - Since 06/02/2017 installable via pip/conda.
- Bug fixes
2017-02-02
- New routine:
- General modelling routine
bipole
(replacessrcbipole
): Model the EM field for arbitrarily oriented, finite length bipole sources and receivers.
- General modelling routine
- Added a test suite:
- Unit-tests of small functions.
- Framework-tests of the bigger functions:
- Comparing to status quo (regression tests),
- Comparing to known analytical solutions,
- Comparing different options to each other,
- Comparing to other 1D modellers (EMmod, DIPOLE1D, GREEN3D).
- Incorporated with Travis CI and Coveralls.
- Internal changes:
- Add kernel count (printed if verb > 1).
numexpr
is now only required ifopt=='parallel'
. Ifnumexpr
is not found,opt
is reset toNone
and a warning is printed.- Cleaned-up wavenumber-domain routine.
- theta/phi -> azimuth/dip; easier to understand.
- Refined verbosity levels.
- Lots of changes in
utils
, with regards to the new routinebipole
and with regards to verbosity. Moved all warnings out fromtransform
andmodel
intoutils
.
- Bug fixes
2016-12-22
- New routines:
- New
srcbipole
modelling routine: Model an arbitrarily oriented, finite length bipole source. - Merge
frequency
andtime
intodipole
. (frequency
andtime
are still available.) dipole
now supports multiple sources.
- New
- Internal changes:
- Replace
get_Gauss_Weights
withscipy.special.p_roots
jv(0,x)
,jv(1,x)
->j0(x)
,j1(x)
- Replace
param_shape
inutils
with_check_var
and_check_shape
. - Replace
xco
andyco
byangle
inkernel.fullspace
- Replace
fftlog
with python version. - Additional sine-/cosine-filters:
key_81_CosSin_2009
,key_241_CosSin_2009
, andkey_601_CosSin_2009
.
- Replace
- Bug fixes
2016-11-29
- Initial release; state of manuscript submission to geophysics.