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.

IN625 top-surface temperature throughout the two-layer powder-bed-fusion simulation. The black and white contours denote the 1410 K solidus and 1620 K liquidus, respectively.

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 modifiedSuperGaussian heat source with source-level depthReference 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.

Stacked top views of the second powder-bed-fusion layer: temperature above and powder fraction below, with the scan direction aligned horizontally.
Top-surface temperature and powder fraction during the second layer at 22.5 ms. Powder fraction varies from black at 0 to light gray at 1; the black track identifies material consolidated by the moving heat source.

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.