Skip to content

Releases: ArroyaveLab/eagar-tsai

v0.5.0

Choose a tag to compare

@dogusariturk dogusariturk released this 22 Sep 21:57

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

  • matplotlib and pyvista are no longer installed with the package. They have moved to a new plot extra: uv add "eagar-tsai[plot]" or pip install "eagar-tsai[plot]". plot.py is now imported lazily through a module-level __getattr__, so import eagar_tsai no longer loads the plotting stack, while plot_temperature_field, plot_temperature_field_3d, and plot_printability_map stay importable from the top-level namespace and still appear in dir(eagar_tsai). Because the import is deferred, a missing extra raises ImportError at the point a plotting function is called rather than at import time; the same applies to the .plot() and .plot_3d() methods on MeltPoolResult, TemperatureField, and TemperatureVolume. 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(), and compute_temperature_volumes() each gain a show_progress keyword argument, default True, which displays a tqdm bar over chunks, grid points, and rows respectively. Both the serial and parallel paths report progress. Set it to False for quiet output in scripts and batch jobs. tqdm is a new runtime dependency.

Other Changes

  • CONTRIBUTING.md documents the development setup, tooling, and pull request workflow. CODE_OF_CONDUCT.md adopts the Contributor Covenant.
  • pytest-cov was removed from the dev dependencies.
  • Documentation was updated to cover the plot extra 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 in CITATION.cff was updated.

What's Changed

Full Changelog: v0.4.2...v0.5.0

v0.4.2

Choose a tag to compare

@dogusariturk dogusariturk released this 27 Aug 17:40

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

Full Changelog: v0.4.1...v0.4.2

v0.4.1

Choose a tag to compare

@dogusariturk dogusariturk released this 05 Jul 17:35

eagar-tsai v0.4.1 Release Notes

Overview

This release is a maintenance update.

What's Changed

Full Changelog: v0.4.0...v0.4.1

v0.4.0

Choose a tag to compare

@dogusariturk dogusariturk released this 07 Jun 09:53

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

  • TemperatureVolume is 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 the MeltPoolResult from the auto-sizing step. The y-axis covers the half-domain by symmetry; both export_vti and plot_3d accept 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 by TemperatureField.
  • compute_temperature_volume() computes the full 3-D temperature volume for a single set of beam and material parameters. It first runs the standard compute_single_point() call (with full_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 via ProcessPoolExecutor; the workers and chunk_size arguments control the degree of parallelism and the per-task granularity.
  • compute_temperature_volumes() is a DataFrame-level entry point that applies compute_temperature_volume() to every row, dispatching rows in parallel when workers > 1. Each row's internal computation runs serially within its assigned worker to avoid nested process pools. Failed rows return None rather 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. When mirror_y=True the half-domain is reflected before export to produce the full melt pool geometry.
  • TemperatureVolume.plot_3d() and the public plot_temperature_field_3d() render the volume using PyVista. By default the liquidus isotherm is overlaid as a contour surface. Setting return_plotter=True returns the live pyvista Plotter for interactive inspection; the default path renders off-screen and returns a matplotlib Figure for 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

Choose a tag to compare

@dogusariturk dogusariturk released this 04 Jun 15:05

eagar-tsai v0.3.1 Release Notes

Overview

This release is a maintenance update.

What's Changed

Full Changelog: v0.3.0...v0.3.1

v0.3.0

Choose a tag to compare

@dogusariturk dogusariturk released this 24 May 08:51

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

  • PrintabilityParameters is 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 a PrintabilityParameters instance and a MaterialProperties instance, 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, or balling. The returned DataFrame includes melt pool dimensions at every grid point alongside the defect label and the raw criterion values. Parallel execution via workers=-1 is 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 a full_field keyword argument. When set to False, 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

Choose a tag to compare

@dogusariturk dogusariturk released this 20 May 07:07

eagar-tsai v0.2.2 Release Notes

Overview

This release is a maintenance update.

What's Changed

Full Changelog: v.0.2.1...v0.2.2

v0.2.1

Choose a tag to compare

@dogusariturk dogusariturk released this 15 May 04:08

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_K in _types.py is 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.py where 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.cff file 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), and j178/prek-action (2.0.2 to 2.0.3).

Full Changelog: v0.2.0...v0.2.1

v0.2.0

Choose a tag to compare

@dogusariturk dogusariturk released this 28 Apr 01:26

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

  • TemperatureField dataclass: 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 by compute_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 in eagar_tsai.plot that 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: TemperatureField and plot_temperature_field are now exported from the top-level eagar_tsai namespace alongside the existing compute_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_point and TemperatureField visualization.

Full Changelog: v0.1.0...v0.2.0

v0.1.0

Choose a tag to compare

@dogusariturk dogusariturk released this 04 Mar 21:29

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 SciPy LowLevelCallable for zero-overhead integrand evaluation; pure-Python fallback when a C compiler is unavailable.
  • Batch API: compute_melt_pool(df) processes a pandas DataFrame 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