JSON file¶
Overview¶
The simulation of powder bed/substrate fusion is a typical simulation setup, and such simulation preset is available.
All parameters of the simulation can be specified by the user in the input JSON file.
If a parameter is not listed in the JSON file, default values from the default.json
are used.
JSON data is written as a comma-separated list of key/value pairs.
The list is enclosed in curly brackets.
The key and value are separated by a colon(:) in the middle with the key on the left and the value on the right.
The key is a string surrounded by double quotation marks.
The value can be (1) a number, (2) a string, (3) or JSON data object.
With the third option, the JSON data is nested.
The nested field can be referred in the description with dot syntax, i.e. in {A: {B:c}}
, A.B``=``c
.
Here are zero level data description. The values of ‘JSON’ data files are detailed in the further sections.
Key |
Value type |
Default value |
---|---|---|
|
string |
./output/ |
The directory will be created in the current folder. The output data will appear in it during the simulation |
||
|
string |
end-2022-12-31.lic |
Provided with the software |
||
|
JSON data |
|
Computation parameters |
||
|
JSON data |
|
Substrate Size |
||
|
JSON data |
|
Numerical parameters |
||
|
JSON data |
|
Gravity and evaporation model |
||
|
JSON data |
|
Powder settings |
||
|
JSON data |
|
Substrate settings |
||
|
JSON data |
|
Gas environment of the melting process |
||
|
string |
CoCr |
Material of the substrate and powder. Chosen from the Materials Library |
||
|
JSON data |
|
Energy source (Laser beam / electron beam) configuration |
||
|
JSON data |
|
Sensors setting file |
||
|
string |
|
Temperature probes file |
||
|
JSON data |
|
Visualization parameters |
||
|
JSON data |
|
Settings of the internal powder bed generator |
||
|
JSON data |
|
Converter settings for scanning path setting |
||
|
JSON data |
|
Materials library |
||
For convenience, the provided JSON file is annotated.
Some fields are added as comments for the user and are not used in the code.
For example, the fields units
and comment
that can be found in different sections of the default JSON file are only reference.
Configuration¶
Here the simulation configuration can be controlled with the parameters in the config
section.
Set the maximal number of steps MaxTimesteps
or turn on AutoTermination
to set upper limit on the simulation time.
If the simulation takes too much disc space, you can increase DumpDataRate
, IterationSubstepsRate
, turn off DumpVTK
, DumpVDB
, DumpARR
.
If more frames per second are required in the rendered images animation, decrease IterationSubstepsRate
.
Other options are for advanced use of the software.
Key |
Value type |
Default value |
---|---|---|
|
value |
16 |
Number of time steps between grid resize events |
||
|
value |
8 |
The ratio of Tractile Mesh cells coalescing Rate to the cells splitting Rate |
||
|
true/false |
false |
Set to false to continue simulation even when the Meltpool Grid is outside the simulation region |
||
|
true/false |
false |
The meltpool window is around the beam incidence spot when the beam is turned on. This options allows to link the meltpool Grid with beam center even if the beam power is 0 |
||
|
string |
device |
Where to allocate data. Possible types: device, host, managed |
||
|
value |
1 |
Internal use only. Doesn’t make sense in the release |
||
|
value |
1000 |
Number of time steps after which program statistics and diagnostics functions are called |
||
|
true/false |
true |
Flag to include curvature and wetting simulation |
||
|
true/false |
true |
Flag to include evaporation process |
||
|
true/false |
true |
Flag to include convection process |
||
|
true/false |
true |
Flag to include ray tracing process |
||
|
true/false |
true |
Flag to include thermal process |
||
|
true/false |
false |
Flag to setup isothermal Boundary Conditions at x an y boundaries (\(T=\) preheating) |
||
|
NA |
|
Flag to include gas physics (this solver is supplied separately) |
||
|
value |
10 |
|
value |
1000 |
In the simulation, the high-resolution Meltpool grid follows the melted liquid. Sometimes, small droplets are ejected from the meltpool and fly across the domain; sometimes, some liquid droplet takes too long to cool down and solidify. In these cases, the meltpool grid becomes larger, and time cost for an iteration becomes too large. Check the |
||
|
true/false |
false |
Flag to enable bubble simulation: correct pressure for the gas trapped by liquid and pore formation |
||
|
value |
1000000 |
Maximal number of time steps. The required number of steps can be estimated as, i.e. |
||
|
true/false |
false |
Turn on for automatic termination of simulation when scanning is finished and all liquid cells are solidified |
||
|
value |
100000 |
3D data dump rate (time steps). 3D data files take disc space and writing to disc takes time, so it should not be frequent |
||
|
value |
1000 |
Frequency of all other outputs: images, probes, etc. |
||
|
true/false |
true |
Set false if you do not need to save VTK files with tractile mesh temperature and velocities of meltpool. This can save disk space. |
||
|
true/false |
true |
Set false if you do not need to save OpenVDB file geometry.vdb |
||
|
true/false |
true |
Set false if you do not need to save ARR files |
||
Simulation domain and Substrate Sizes¶
The sizes
section defines full simulation domain size.
The fluid dynamics simulation takes place only around the meltpool area.
The meltpool area is allowed to move inside the bounds that are specified here.
Key |
Value type |
Default value |
---|---|---|
|
value |
0.005 |
|
value |
0.005 |
|
value |
0.004 |
An upper estimate of the simulation domain size (m). This is the sizes recorded in the geometry grid, the size of the volume in the |
||
|
value |
0.0035 |
Substrate thickness (m). The simulation domain from \(z=0\) to \(z=\) |
||
|
value |
0.0 |
z-coordinate of the lower boundary of the substrate |
||
Numerical Parameters¶
The NumericalParams
section defines the mesh cell size and units for nondimensionalization of time, mass and temperature.
Key |
Value type |
Default value |
---|---|---|
|
value |
3e-06 |
Mesh cell size (m). Should be much less than the smallest particle in the powder, meltpool depth and height. |
||
|
value |
3e-08 |
Time step size (s) |
||
|
value |
1e-14 |
Mass unit (kg). In the numerical model, if \(m=1\) in the dimensionless units, the physical mass is \(m=\) |
||
|
value |
1000.0 |
Temperature unit (K). In the numerical model, if \(T=1\) in the dimensionless units, the physical temperature is \(T=\) |
||
Powder¶
In the KiSSAM simulation, the geometry of the powder particles is input through a VDB file.
If the powder is defined with sphere coordinates and radii, it should be rasterized with the provided script.
In the Powder
section of the JSON file, the input VDB file is specified, and the wetting angle of powder particles, which is, in general, different from the wetting angle of the substrate.
Key |
Value type |
Default value |
---|---|---|
|
string |
|
The name of the VDB file with input solid geometry. |
||
|
value |
120 |
Wetting angle of melt contacting with powder particles (degrees). |
||
|
NA |
|
Powder components weight composition with names, eg {“name1”: 0.3, “name2”: “balanced”}, If null than the values from MaterialLibrary will be used |
||
Substrate¶
The substrate settings are in the Substrate
section.
All other properties of the substrate material are defined through the Material setting.
Key |
Value type |
Default value |
---|---|---|
|
value |
300.0 |
Preheating temperature of the substrate (K) |
||
|
value |
0 |
Wetting angle of the melt contacting with substrate (degrees) |
||
|
NA |
|
dictionary — Substrate components weight composition with names, eg {“name1”: 0.3, “name2”: “balanced”}. If null than the values from MaterialLibrary will be used |
||
|
string |
|
Path to the file with the initial geometry. Leave empty for flat geometry. |
||
Camera¶
The surrounding gas parameters in the chamber are defined in the Camera
section.
Key |
Value type |
Default value |
---|---|---|
|
string |
Ar |
The gas material is specified as one of the keywords for the materials in the Materials section. |
||
|
value |
100000.0 |
|
value |
300.0 |
|
value |
1.0 |
Gas fluid parameters: pressure (P), temperature (K) and flow speed (m/s). Flow velocity is used in the Whitaker convection model. |
||
|
value |
0.0 |
|
value |
0.0 |
|
value |
0.0 |
Initial gas velocity (m/s) is used in the RKDG gas solver if |
||
Scanning Strategy¶
The scanning strategy is defined in the
ScanStrategy
.
section of the JSON file.
There are three presets: single track and square layer, and a manual input for the scan path.
Key |
Value type |
Default value |
---|---|---|
|
string |
SingleTrack |
Scanning strategy preset. Can be |
||
|
JSON data |
|
Description of the Single Track scanning strategy. |
||
|
JSON data |
|
Description of the Square Layer scanning strategy. |
||
|
JSON data |
|
Manual setting of an arbitrary scanning strategy |
||
|
JSON data |
|
Description of the energy source: power, shape, type. |
||
Single Track¶
In this preset, laser beam turns on in the startPosX
, startPosY
position, travels parallel to the \(x\)-axis with the speed defined in the Beam
section, and turns off when the travel distance is over the defined length
.

Fig. 5 Single Track Scan Path¶
Key |
Value type |
Default value |
---|---|---|
|
value |
0.005 |
Track length (m) |
||
|
value |
0.0005 |
|
value |
0.00116 |
Starting position (m) of the laser in the simulation domain. It should be inside the domain defined with sizes.FullXapprox, sizes.FullYapprox. If the powder is inside the domain, the starting position of the laser should be in the domain covered by the powder. |
||
Square Layer¶
The settings of a square layer simulation.
In this preset, laser beam turns on in the startPosX
, startPosY
position.
If hatchX
(hatchY
) is zero, the beam
travels parallel to the \(x\)-axis (\(y\)-axis) until the travel distance is over dimX
(dimY
),
then waits for delayBetweenTracks
seconds,
then it shifts by hatch distance and travels for the same distance in the opposite direction.
The scanning speed is defined in the Beam
section.

Key |
Value type |
Default value |
---|---|---|
|
value |
0.0005 |
|
value |
0.00116 |
Starting position (m) of the laser in the simulation domain. It should be inside the domain defined with sizes.FullXapprox, sizes.FullYapprox. If the powder is inside the domain, the starting position of the laser should be in the domain covered by the powder. |
||
|
value |
0.003 |
|
value |
0.003 |
Square layer dimensions (m). Can be negative. If the laser position is \(x>\) |
||
|
value |
0 |
|
value |
0.00015 |
Hatch distance. To set the scanning speed vector parallel to the \(x\)-axis, set |
||
|
value |
0 |
Delay time between tracks (seconds) |
||
Manual Scan Path¶
If XYpositions
is set as scanning strategy, a set of points is read either from a source file, or from a set of points.
Here is an example of an input file.
The first column is time (s), the second and third columns are \(x\) and \(y\) positions of the laser at that time.
The fourth and fifth columns are optional. They contail laser power (W) and laser spot width (m) at that point correspondingly.
0.00 1e-3 1e-3 300 100e-6
2.e-3 3e-3 1e-3 300 200e-6
3.e-3 3e-3 2e-3 300 200e-6
4.e-3 2e-3 2e-3 300 100e-6
5.e-3 2e-3 1e-3 300 100e-6
6.e-3 1e-3 1e-3 300 100e-6
If the strategy is set with a pointsArray
instead of the input file, the array contains the rows of this file.
Key |
Value type |
Default value |
---|---|---|
|
NA |
|
Filename of the input data. Set Null to use |
||
|
list of values |
[[0, 0.001, 0.001, 300, 90], [0.001, 0.002, 0.001, 500, 90]] |
Defines scanning strategy if |
||
Beam Setting¶
The energy source parameters are set in the ScanStrategy.Beam
section.
Key |
Value type |
Default value |
---|---|---|
|
string |
Laser |
Source type: |
||
|
string |
Gauss |
Beam shape: |
||
|
value |
300.0 |
Laser or Ebeam Power (W) |
||
|
value |
0.0001 |
The Gaussian pulse D4s parameter (m) |
||
|
value |
1.0 |
Scanning Speed (m/s) |
||
|
string |
beamshape.dat |
string — Filename with text lines X-coordinate,Y-coordinate,Power representing the beam shape profile used for “Manual” beam Shape |
||
|
value |
120000.0 |
For electron beam, electrons energy (eV) |
||
|
value |
0 |
For electron beam, set to 0 if electrons are not tracked in the backwards direction |
||
The shape file format is as follows:
#Xcoordinate,m Ycoordinate,m Power
-0.0002 -0.0002 0
-0.0002 -0.000199 0
-0.0002 -0.000198 0
-0.0002 -0.000197 0
-0.0002 -0.000196 0
-0.0002 -0.000195 0
-0.0002 -0.000194 0
-0.0002 -0.000193 0
-0.0002 -0.000192 0
...
Visualization¶
The image output parameters are set in the Visual
section.
Key |
Value type |
Default value |
---|---|---|
|
value |
0.0005 |
Distance between \(x=const\) cross-sections (m). |
||
|
list of values |
[0.002, 0.0015, 0.0005] |
Box size (m) for 3D renders output. Set larger than the meltpool grid to see the whole meltpool grid. Set smaller for faster rendering. |
||
|
value |
0.0003 |
|
value |
0.0003 |
Minimum distance from the beam to the visualization box boundary (m) along X- and Y-axes. If this distance becomes smaller than specified parameter, then the vizualization box will be shifted along X-(Y-)axis. |
||
|
list of values |
[0, 1] |
array of 2 numbers — Minimum and maximum limit of wt.part for component1 at cross-section images |
||