Skip to content
dfieser edited this page Aug 21, 2026 · 1 revision

FAQ

Setup

Do I need any MATLAB toolboxes? No. The solvers use only base MATLAB (ode15s, standard array operations).

MATLAB says a function like getCfgField or a solver name is undefined. Add the solver folder to the path from the repository root: addpath(genpath('src')). The example scripts do this automatically.

Does the toolbox work on Linux and macOS? Yes. All paths are repository-relative, so nothing is Windows-specific.

Running simulations

How do I set the number of pulses? Pulse count is simDuration * f_rep. For N pulses, set cfg.simDuration = N / cfg.f_rep. The scanning solver instead derives its pulse count from scanLength * f_rep / v_scan.

How do I run headless (no figure windows)? Set cfg.makePlots = false. Add cfg.saveFigures = true if you still want figure files written to the output folder.

Which solver should I start with? Surface_Point_Solver for accumulation trends and sweeps (fastest), Depth_Profile_Solver when depth resolution or the temperature inversion matters, Radial_Profile_Solver for melt-radius and footprint questions, Scanning_Beam_Solver for moving-beam processes. See Solver Reference.

A run is too slow. What should I relax? For the depth solvers, reduce simDuration (fewer pulses), Nz, or Ndiff. For the radial solver, use radialSolveMode = 'scale' and a moderate Nr. For the scanning solver, shorten scanLength, lower f_rep, or raise v_scan; its pulse count is scanLength * f_rep / v_scan, and the baseline example already runs 36,000 pulses.

Physics and interpretation

Why do the electron and lattice temperatures converge after a few picoseconds? Electron-phonon coupling drives the two baths to a common temperature with a time constant on the order of Ce/G, a few hundred femtoseconds for tungsten at room temperature. After equilibration, ordinary heat conduction takes over, which is exactly where the solver switches to its diffusion stage.

Why does the 0D solver not show the temperature inversion? The inversion (lattice hotter than electrons at the surface) is created by electron heat transport into the bulk, which needs spatial resolution. Use Depth_Profile_Solver or Single_Pulse_Visualizer; see Model Background.

The predicted temperature exceeds the melting point. Is that meaningful? Take it as "this parameter set melts the surface," not as an accurate melt simulation. The model has no latent heat or melt-pool physics. The radial solver's early-stop options (earlyStopMeltRadius_um) exist for exactly this use.

How do I model a metal that has no preset? Set material = 'custom' and supply the manual property fields (gamma_manual, Cl_manual, G_manual, and the conductivity and absorption fields of the solver family you use). See the preset table in Model Background for the shape of the data you need.

What absorbance should I use? absorbance is the fraction of incident fluence absorbed by the surface. The default 0.55 fits tungsten near 1030 nm at normal incidence. It depends on wavelength, angle, temperature, and surface condition, so treat it as an input you own.

Outputs

Where do results go? Under outputs/ at the repository root, one subfolder per run, overridable with cfg.outputDir. Generated results stay out of version control. See Results and Outputs.

How do I reproduce the figures in the README? Run docs/assets/generate_gallery.m from the repository root. It reruns the baseline solver cases (caching them under outputs/) and regenerates every gallery image, in light and dark variants.

How do I verify my clone works? Run scripts/Verify_Public_Repo_Smoke.m. It runs small cases through all supported solver surfaces and asserts the shared result contract.

Contributing and citing

I found a bug or want to add something. See CONTRIBUTING.md in the repository for scope guidance. Small, focused changes that preserve solver behavior and portability are the easiest to review.

How do I cite this? See Citing: cite the journal article, and the Zenodo software DOI when you need to pin the exact code version.

Clone this wiki locally