Analysis code for Fitting-free diagnosis of conduction-model breakdown in laser powder bed fusion. A moving-source conduction model is evaluated with the absorptivity fixed from independent data, then inverted against each measured depth to locate where surface conduction stops accounting for the pool. No finite-element or CFD solver is used.
pip install numpy scipy pandas scikit-learn
The benchmark data are public but are not redistributed here. Download them and place the files
in data/ under the names below.
File in data/ |
Source | DOI |
|---|---|---|
in718_amb2022_03.csv |
NIST AM-Bench AMB2022-03 — IN718 single-track depth, width, in-situ laser coupling | 10.18434/mds2-2716 |
in625_ammt_14cases.csv |
NIST — IN625 single-track cross-sections | 10.18434/mds2-2923, 10.18434/mds2-3830 |
ss316l_bare_210.csv |
Hofmann et al., Mater. Des. — 316L bare-plate single tracks | 10.1016/j.matdes.2026.115459 |
ti64_absorptivity.json |
NIST A-AMB2022-01 — Ti-6Al-4V time-resolved absorptance | 10.18434/mds2-2525 |
Required columns:
in718_amb2022_03.csv—case, P_W, v_mmps, D4sigma_um, depth_mean_um, depth_sd_um, width_mean_um, width_sd_um, aspect_d_halfw, coupling_ss, coupling_ss_sdin625_ammt_14cases.csv—case, P_W, v_mm_s, spot_D4sigma_um, d_meas_um, w_meas_umss316l_bare_210.csv—idx, P, v, d_laser_mm, t_powder, d_meas, w_meas, aspect(bare-plate subset,t_powder == 0)ti64_absorptivity.json—{"SPOT": {"P", "eta_cond", "eta_key", "sd_cond", "sd_key"}, "SCAN": {"P", "v", "eta_ss", "sd_ss"}}, time-window means of the instantaneous absorptance
Absorptivity inputs for IN625 and 316L come from the closed-form relation of Ye et al. (Adv. Eng. Mater. 2019), with the flat-surface values 0.27 and 0.34 from their Table 1. Temperature-dependent IN718 properties are from Denlinger et al. (2016), Table 2. Both are tabulated in the module.
python amb_diagnosis.py
Writes results/ — per-condition predictions and inversions, the paper's tables, and
summary.json. Roughly 20 minutes single-core; the 210-condition inversion and the anisotropy
sweep dominate.
amb_diagnosis.py is a single module.
depth_um,halfwidth_um— Eagar–Tsai moving Gaussian surface source. The liquidus isotherm is located by root-finding rather than on a grid, so the boundary carries no discretization error.chiscales the through-thickness diffusivity and is the anisotropic-transport surrogate.invert_A— absorptivity required to reproduce a measured depth. Returns a value at or below unity (conduction sufficient), above unity (non-physical), ornan(no solution on the search interval).closed_form_A,beta_king— absorptivity input and normalized enthalpy.table3,table4,delta_beta,multivariable,ml_benchmark— the paper's tables.anisotropy_sweep,beam_sensitivity,property_sensitivity,grid_convergence,monotonicity,keq_distribution— the robustness analyses.
The random forest and the neural network vary at the one-percentage-point level with the
random seed, so multivariable and ml_benchmark average over seeds and return
[mean, standard deviation]. Everything else is deterministic.