Multi-Layer Powder-Bed Fusion
The multiLayerPBF case simulates repeated IN625 powder deposition and scanning. It uses the Kelly aspect-ratio-dependent absorption model and a modifiedSuperGaussian source with a liquidus reference depth.
Physical setup
- IN625 properties from
$ADDITIVEFOAM_ETC/materials/IN625.cfg. - Two 40 µm powder layers, each represented by four mesh cells through its thickness.
- Rotated raster scan paths generated by
createScanPath. - A Kelly absorption model and
modifiedSuperGaussianheat source with source-leveldepthReference isotherm. - Optional solidification-data, melt-pool-dimension, and ExaCA Function Objects.
- Eight MPI ranks for each layer simulation.
Run
Run from a copied case:
cp -r "$ADDITIVEFOAM_TUTORIALS/multiLayerPBF" "$FOAM_RUN/multiLayerPBF"
cd "$FOAM_RUN/multiLayerPBF"
./Allrun
Important inputs
| File | Purpose |
|---|---|
constant/createScanPathDict |
Raster geometry, rotation, scan speed, power, and timing |
constant/heatSourceDict |
Kelly absorption and isotherm-referenced source configuration |
constant/transportProperties |
Includes the IN625 material properties |
system/extrudeMeshDict |
Layer extrusion configuration |
system/mapFieldsDict |
Maps the previous layer solution onto the extended mesh |
system/setFieldsDict |
Initializes the deposited powder region |
system/controlDict |
Run controls and optional output Function Objects |
ExaCA/input.json |
Layerwise ExaCA microstructure-simulation input |
system/decomposeParDict |
Eight-rank domain decomposition |
Workflow
Allrun performs:
blockMesh
createScanPath
runLayers -nLayers 2 -nCellsPerLayer 4 -layerThickness 40e-6
reconstructLayers
reconstructExaCAData
reconstructSolidificationData
Heat-source model
The source uses geometry cone, eta0 0.28, etaMin 0.35, radius (40 40) µm, depth 20 µm, m 2.72, k 7.95, tolerance 1e-3, and nPoints (10 10 10). depthReference isotherm selects the liquidus reference depth. See Heat Source Models for the source and Kelly formulations.
The formulation follows Coleman et al., “A dynamic volumetric heat source model for laser additive manufacturing”.
Layer sequence
createScanPath writes rotated raster paths. runLayers cycles through those paths, creates layer0, layer1, and later directories, extrudes the mesh, maps the previous result, marks the new powder region, shifts the scan start time, decomposes, and runs each layer.
runLayers deletes and recreates existing layerN directories. Preserve results before rerunning.
Outputs
Open the reconstructed layer directories in ParaView to visualize the temperature, solid fraction, powder fraction, and heat-source fields across the deposited layers.
Plot solidification data
Set enabled true for solidificationData in system/controlDict before running the case. Each layer then writes its solidification events, and reconstructSolidificationData combines the processor files within the corresponding layer directory. From the base case, plot both layers on one CET diagram:
plotCET layer0 layer1
plotCET creates CET_curve.png in the base case directory. Each point gives the thermal-gradient magnitude and isotherm velocity for a recorded solidification event.
Run an ExaCA microstructure simulation
Set enabled true for the ExaCA Function Object in system/controlDict before running the case. Each layer then writes temperature events, and reconstructExaCAData creates these files:
layer0/ExaCA/time-temperature.csv
layer1/ExaCA/time-temperature.csv
ExaCA/input.json lists both files in TemperatureData.TemperatureFiles with paths relative to the base case. Launch ExaCA from that directory so the layer paths and output path resolve correctly:
mpirun -np <nProcs> /path/to/ExaCA ExaCA/input.json
ExaCA reads the layerwise temperature histories and writes the explicit microstructure result under ExaCA/. Runtime mesh redistribution must remain disabled while the ExaCA Function Object is active.
To write melt-pool dimensions for this case, enable meltPoolDimensions before running the layers and then use plotDimensions layer0 layer1. See Write and plot melt-pool dimensions for the Function Object configuration and plotting commands.