Releases: ArroyaveLab/eagar-tsai
Release list
v0.5.0
eagar-tsai v0.5.0 Release Notes
Overview
This release moves matplotlib and pyvista out of the default install and into an optional plot extra. It also adds progress bars to the three batch entry points, along with contributing guidelines and a code of conduct.
Breaking Changes
matplotlibandpyvistaare no longer installed with the package. They have moved to a newplotextra:uv add "eagar-tsai[plot]"orpip install "eagar-tsai[plot]".plot.pyis now imported lazily through a module-level__getattr__, soimport eagar_tsaino longer loads the plotting stack, whileplot_temperature_field,plot_temperature_field_3d, andplot_printability_mapstay importable from the top-level namespace and still appear indir(eagar_tsai). Because the import is deferred, a missing extra raisesImportErrorat the point a plotting function is called rather than at import time; the same applies to the.plot()and.plot_3d()methods onMeltPoolResult,TemperatureField, andTemperatureVolume. The error message names the extra to install. Existing environments that rely on plotting need to reinstall with it.
New Features
compute_melt_pool(),compute_printability_map(), andcompute_temperature_volumes()each gain ashow_progresskeyword argument, defaultTrue, which displays atqdmbar over chunks, grid points, and rows respectively. Both the serial and parallel paths report progress. Set it toFalsefor quiet output in scripts and batch jobs.tqdmis a new runtime dependency.
Other Changes
CONTRIBUTING.mddocuments the development setup, tooling, and pull request workflow.CODE_OF_CONDUCT.mdadopts the Contributor Covenant.pytest-covwas removed from the dev dependencies.- Documentation was updated to cover the
plotextra and mark the sections that require it, to enable the mkdocs content tabs link plugin so tab selections stay in sync across a page, and to state Python 3.12+ as the requirement, matching the versions that are built and tested. The release date inCITATION.cffwas updated.
What's Changed
- Make
matplotlib/pyvistaoptional by @dogusariturk in #91 - Add tqdm progress bars to long-running tasks by @dogusariturk in #92
- Add contributing guidelines in 931b747
- Add a Code of Conduct file in 081a2d9
- Update docs to require Python 3.12+ in fafa894
- Remove
pytest-covfrom dev dependencies in 7f8639d - Update release date in CITATION.cff in bb8f18c
- Bump scipy from 1.18.0 to 1.18.1 by @dependabot[bot] in #90
- Bump ruff from 0.16.2 to 0.16.5 by @dependabot[bot] in #89
- Bump ty from 0.0.70 to 0.0.76 by @dependabot[bot] in #88
- Bump prek from 0.4.13 to 0.5.0 by @dependabot[bot] in #86
- Bump astral-sh/setup-uv from 9.0.0 to 10.0.1 by @dependabot[bot] in #87
- Bump https://github.com/astral-sh/ruff-pre-commit from v0.16.1 to 0.16.5 by @dependabot[bot] in #85
- Bump https://github.com/astral-sh/uv-pre-commit from 0.12.1 to 0.12.7 by @dependabot[bot] in #84
Full Changelog: v0.4.2...v0.5.0
v0.4.2
eagar-tsai v0.4.2 Release Notes
Overview
This release is a maintenance update. It also switches CI/dev tooling to Python 3.12 and prek, adds a Ruff lint rule, and removes a now-unneeded type-ignore comment.
What's Changed
- Ignore Ruff PLR0917 lint rule in b2b562e
- Remove unnecessary type ignore comment in plot.py in 615ce15
- Update to Python 3.12 and switch to prek in 0a3e9d5
- Bump ruff from 0.15.20 to 0.16.1 by @dependabot[bot] in #73
- Bump ty from 0.0.56 to 0.0.65 by @dependabot[bot] in #78
- Bump matplotlib from 3.11.0 to 3.11.1 by @dependabot[bot] in #80
- Bump pandas from 3.0.3 to 3.0.5 by @dependabot[bot] in #75
- Bump pre-commit from 4.6.0 to 4.6.1 by @dependabot[bot] in #79
- Bump https://github.com/astral-sh/uv-pre-commit from 0.11.26 to 0.16.1 by @dependabot[bot] in #70 and #71
- Bump pypa/cibuildwheel from 4.1.0 to 4.2.0 by @dependabot[bot] in #69
- Bump actions/setup-python from 6.3.0 to 7.0.0 by @dependabot[bot] in #72
- Bump astral-sh/setup-uv from 8.2.0 to 9.0.0 by @dependabot[bot] in #74
- Bump j178/prek-action from 2.0.5 to 3.0.0 by @dependabot[bot] in #76
- Bump actions/checkout from 7.0.0 to 7.0.1 by @dependabot[bot] in #77
Full Changelog: v0.4.1...v0.4.2
v0.4.1
eagar-tsai v0.4.1 Release Notes
Overview
This release is a maintenance update.
What's Changed
- Bump ruff from 0.15.15 to 0.15.20 by @dependabot[bot] in #56 and #65
- Bump ty from 0.0.44 to 0.0.56 by @dependabot[bot] in #58 and #68
- Bump matplotlib from 3.10.9 to 3.11.0 by @dependabot[bot] in #66
- Bump pytest from 9.0.3 to 9.1.1 by @dependabot[bot] in #67
- Bump astral-sh/setup-uv from 8.1.0 to 8.2.0 by @dependabot[bot] in #54
- Bump pypa/cibuildwheel from 3.4.1 to 4.1.0 by @dependabot[bot] in #55 and #60
- Bump j178/prek-action from 2.0.4 to 2.0.5 by @dependabot[bot] in #59
- Bump actions/checkout from 6.0.3 to 7.0.0 by @dependabot[bot] in #61
- Bump actions/setup-python from 6.2.0 to 6.3.0 by @dependabot[bot] in #63
- Bump https://github.com/astral-sh/ruff-pre-commit from v0.15.15 to 0.15.20 by @dependabot[bot] in #57 and #64
- Bump https://github.com/astral-sh/uv-pre-commit from 0.11.19 to 0.11.26 by @dependabot[bot] in #62
Full Changelog: v0.4.0...v0.4.1
v0.4.0
eagar-tsai v0.4.0 Release Notes
Overview
This release adds full 3-D temperature volume computation and visualization. Where previous releases limited field output to two cross-sectional planes (xy and xz), v0.4.0 evaluates the complete volumetric temperature distribution and exposes it through a new data type, two new API functions, and an interactive PyVista renderer.
New Features
TemperatureVolumeis a new dataclass that holds the computed 3-D temperature array of shape (nx, ny, nz) alongside metre-scale coordinate arrays, the liquidus temperature, and theMeltPoolResultfrom the auto-sizing step. The y-axis covers the half-domain by symmetry; bothexport_vtiandplot_3daccept a mirror_y flag to reconstruct the full symmetric melt pool before rendering or export. Micrometre coordinate properties (x_range_um, y_range_um, z_range_um) mirror the convention established byTemperatureField.compute_temperature_volume()computes the full 3-D temperature volume for a single set of beam and material parameters. It first runs the standardcompute_single_point()call (withfull_field=False) to auto-size the domain, then evaluates the integrand at every (x, y, z) grid point on the converged domain. Computation is parallelised over contiguous x-index slices viaProcessPoolExecutor; theworkersandchunk_sizearguments control the degree of parallelism and the per-task granularity.compute_temperature_volumes()is a DataFrame-level entry point that appliescompute_temperature_volume()to every row, dispatching rows in parallel whenworkers > 1. Each row's internal computation runs serially within its assigned worker to avoid nested process pools. Failed rows returnNonerather than raising, keeping the output list index-aligned with the input DataFrame.TemperatureVolume.export_vti()writes the volume to a VTK ImageData (.vti) file readable by ParaView and other VTK-based tools. Whenmirror_y=Truethe half-domain is reflected before export to produce the full melt pool geometry.TemperatureVolume.plot_3d()and the publicplot_temperature_field_3d()render the volume using PyVista. By default the liquidus isotherm is overlaid as a contour surface. Settingreturn_plotter=Truereturns the live pyvistaPlotterfor interactive inspection; the default path renders off-screen and returns a matplotlibFigurefor embedding in notebooks or saving to disk. PyVista is declared as an optional dependency and is not required for the rest of the package.- Documentation was extended with a dedicated 3-D volume section covering the full usage workflow, a methodology note on the x-slice parallelism strategy, and a C extension performance benchmark figure.
Full Changelog: v0.3.1...v0.4.0
v0.3.1
eagar-tsai v0.3.1 Release Notes
Overview
This release is a maintenance update.
What's Changed
- Bump ruff from 0.15.13 to 0.15.15 by @dependabot[bot] in #43 and #49
- Bump ty from 0.0.37 to 0.0.42 by @dependabot[bot] in #44 and #48
- Bump https://github.com/astral-sh/uv-pre-commit from 0.11.15 to 0.11.19 by @dependabot[bot] in #45 and #50
- Bump https://github.com/astral-sh/ruff-pre-commit from v0.15.13 to 0.15.15 by @dependabot[bot] in #46 and #51
- Bump actions/checkout from 6.0.2 to 6.0.3 by @dependabot[bot] in #47
Full Changelog: v0.3.0...v0.3.1
v0.3.0
eagar-tsai v0.3.0 Release Notes
Overview
This release introduces printability map support: a full pipeline for sweeping laser power and scan speed, classifying each operating point into a defect regime, and rendering the result as a publication-ready figure.
New Features
PrintabilityParametersis a new frozen dataclass that groups the fixed process inputs for a map sweep (beam diameter, absorptivity, layer thickness, and hatch spacing) separately from the power and velocity axes that vary across the grid.compute_printability_map()accepts aPrintabilityParametersinstance and aMaterialPropertiesinstance, sweeps laser power and scan velocity over a configurable grid, runs the Eagar–Tsai model at each grid point, and classifies each result into one of four defect regimes:defect_free,keyhole,lack_of_fusion, orballing. The returned DataFrame includes melt pool dimensions at every grid point alongside the defect label and the raw criterion values. Parallel execution viaworkers=-1is supported.plot_printability_map()renders the resulting DataFrame as a scatter-plot printability map, coloring each operating point by its defect classification and optionally overlaying scatter marker at every computed grid point.compute_single_point()gains afull_fieldkeyword argument. When set toFalse, the function skips computing the full T_xy and T_xz temperature planes and returns only the melt pool extents and peak temperature.compute_printability_map()uses this path internally, substantially reducing memory and compute time for large grid sweeps.- Documentation was reorganized into dedicated Installation and Usage pages, enriched with worked printability map examples, and updated to render equations via MathJax.
Full Changelog: v0.2.2...v0.3.0
v0.2.2
eagar-tsai v0.2.2 Release Notes
Overview
This release is a maintenance update.
What's Changed
- Bump j178/prek-action from 2.0.3 to 2.0.4 by @dependabot[bot] in #35
- Bump ty from 0.0.35 to 0.0.37 by @dependabot[bot] in #36
- Bump numpy from 2.4.4 to 2.4.6 by @dependabot[bot] in #37
- Bump ruff from 0.15.12 to 0.15.13 by @dependabot[bot] in #38
Full Changelog: v.0.2.1...v0.2.2
v0.2.1
eagar-tsai v0.2.1 Release Notes
Overview
This release is a maintenance and correctness update. The ambient temperature constant is corrected from 300 K to 298 K, a plot axis label bug is fixed, and citation metadata is added to make the package formally citable. The documentation also receives several improvements, including LaTeX-rendered equations with MathJax support on the methodology page and an updated Temperature Field Visualization guide.
Highlights
- Ambient temperature correction:
_T0_Kin_types.pyis updated from 300 K to 298 K (standard room temperature). All downstream computations that rely on the ambient reference temperature, including the temperature rise formula and domain sizing heuristics, are affected by this change. Documentation and docstrings are updated accordingly. - Plot axis label fix: A bug in
plot.pywhere the x- and y-axis labels were incorrectly assigned is resolved. Both the surface (T_xy) and depth (T_xz) panels now display the correct spatial axis labels. - Citation support: A
CITATION.cfffile is added to the repository root, a BibTeX entry is included in the README, and a DOI badge is displayed in both the README and the documentation site, making the package formally citable in academic work. - Documentation improvements: The methodology page now renders mathematical expressions using LaTeX notation with MathJax, replacing plain-text approximations. The Temperature Field Visualization guide and the README are also updated to reflect the current API and output.
- Dependency updates: Routine bumps to
uv-pre-commit(0.11.7 to 0.11.14),ruff-pre-commit(0.15.11 to 0.15.12),ty(0.0.32 to 0.0.35),matplotlib(3.10.8 to 3.10.9),pandas(3.0.2 to 3.0.3), andj178/prek-action(2.0.2 to 2.0.3).
Full Changelog: v0.2.0...v0.2.1
v0.2.0
eagar-tsai v0.2.0 Release Notes
Overview
This release extends the library with temperature field access and visualization. compute_single_point() now returns the full 2-D temperature arrays computed during integration alongside the melt pool dimensions, and a new matplotlib-based plotting interface renders those fields as publication-ready figures.
Highlights
TemperatureFielddataclass: A new class that bundles the x-y surface plane (T_xy) and x-z depth cross-section (T_xz) temperature arrays with their coordinate grids in both metres and micrometres. It is populated automatically bycompute_single_point()and exposed in the top-level namespace. Its.plot()method offers a convenient one-liner for inline visualization.plot_temperature_field()function: A standalone function ineagar_tsai.plotthat renders a two-panel figure showing the surface temperature distribution and the depth cross-section, with the liquidus isotherm overlaid as a contour and optional width/depth annotations derived from the melt pool result.- matplotlib runtime dependency: Added as a required dependency so that visualization works out of the box without a separate install step.
- Expanded public API:
TemperatureFieldandplot_temperature_fieldare now exported from the top-leveleagar_tsainamespace alongside the existingcompute_melt_pool,compute_single_point, and dataclass types. - Documentation and branding: README updated with a project logo, license badge, and new worked examples covering
compute_single_pointandTemperatureFieldvisualization.
Full Changelog: v0.1.0...v0.2.0
v0.1.0
eagar-tsai v0.1.0 Release Notes
Overview
eagar-tsai v0.1.0 is the first public release of a Python library implementing the Eagar–Tsai moving heat source model to estimate melt pool dimensions (length, width, depth) for a scanning laser over a semi-infinite solid. Temperature fields are computed via a 1-D integral; melt pool geometry is extracted from the liquidus isotherm.
Highlights
- Focus: fast, reproducible melt pool dimension estimation from first-principles thermal modelling.
- Performance: compiled C extension wrapped as a
SciPyLowLevelCallablefor zero-overhead integrand evaluation; pure-Python fallback when a C compiler is unavailable. - Batch API:
compute_melt_pool(df)processes apandasDataFrame with built-in multiprocessing, optional per-chunk CSV output, and automatic domain expansion. - Platforms: Python 3.11+, Linux / macOS (x86_64, arm64) / Windows, with pre-built wheels for CPython 3.11–3.13.
Full Changelog: https://github.com/ArroyaveLab/eagar-tsai/commits/v0.1.0