Parametric study#

This example shows how to use PyAdditive to perform a parametric study. You perform a parametric study if you want to optimize additive machine parameters to achieve a specific result. Here, the ParametricStudy class is used to conduct a parametric study. While not essential, the ParametricStudy class provides data management features that make the work easier. Also, the ansys.additive.widgets package can be used to create interactive visualizations for of parametric study results. An example is available at Parametric Study Example.

Units are SI (m, kg, s, K) unless otherwise noted.

Perform required imports and create a study#

Perform the required import and create a ParametricStudy instance.

import numpy as np
import pandas as pd

from ansys.additive.core import Additive, SimulationStatus, SimulationType
from ansys.additive.core.parametric_study import ColumnNames, ParametricStudy

study = ParametricStudy("demo-study")
Saving parametric study to /home/runner/work/pyadditive/pyadditive/examples/demo-study.ps

Get the study file name#

The current state of the parametric study is saved to a file upon each update. You can retrieve the name of the file as shown below. This file uses a binary format and is not human readable.

print(study.file_name)
/home/runner/work/pyadditive/pyadditive/examples/demo-study.ps

Select a material for the study#

Select a material to use in the study. The material name must be known by the Additive service. You can connect to the Additive service and print a list of available materials prior to selecting one.

additive = Additive()
print("Available material names: {}".format(additive.materials_list()))
material = "IN718"
Available material names: ['316L', 'AlSi10Mg', 'IN625', '17-4PH', 'Al357', 'Ti64', 'CoCr', 'IN718']

Create a single bead evaluation#

Parametric studies often start with single bead simulations in order to determine melt pool statistics. Here, the generate_single_bead_permutations() method is used to generate single bead simulation permutations. The parameters for the generate_single_bead_permutations() method allow you to specify a range of machine parameters and filter them by energy density. Not all the parameters shown are required. Optional parameters that are not specified use default values defined in the MachineConstants class.

# Specify a range of laser powers. Valid values are 50 to 700 W.
initial_powers = np.linspace(50, 700, 7)
# Specify a range of laser scan speeds. Valid values are 0.35 to 2.5 m/s.
initial_scan_speeds = np.linspace(0.35, 2.5, 5)
# Specify powder layer thicknesses. Valid values are 10e-6 to 100e-6 m.
initial_layer_thicknesses = [40e-6, 50e-6]
# Specify laser beam diameters. Valid values are 20e-6 to 140e-6 m.
initial_beam_diameters = [80e-6]
# Specify heater temperatures. Valid values are 20 - 500 C.
initial_heater_temps = [80]
# Restrict the permutations within a range of energy densities
# For single bead, the energy density is laser power / (laser scan speed * layer thickness).
min_energy_density = 2e6
max_energy_density = 8e6
# Specify a bead length in meters.
bead_length = 0.001

study.generate_single_bead_permutations(
    material_name=material,
    bead_length=bead_length,
    laser_powers=initial_powers,
    scan_speeds=initial_scan_speeds,
    layer_thicknesses=initial_layer_thicknesses,
    beam_diameters=initial_beam_diameters,
    heater_temperatures=initial_heater_temps,
    min_area_energy_density=min_energy_density,
    max_area_energy_density=max_energy_density,
)
33

Show the simulations as a table#

The data_frame() method returns a DataFrame object that can be used to display the simulations as a table. Here, the head() method is used to display all the rows of the table.

df = study.data_frame()
pd.set_option("display.max_columns", None)  # show all columns
df.head(len(df))
Iteration Priority Type ID Status Material Heater Temp (C) Layer Thickness (m) Beam Diameter (m) Laser Power (W) Scan Speed (m/s) Start Angle (degrees) Rotation Angle (degrees) Hatch Spacing (m) Stripe Width (m) Energy Density (J/m^3) Single Bead Length (m) Build Rate (m^3/s) Melt Pool Width (m) Melt Pool Depth (m) Melt Pool Length (m) Melt Pool Length/Width Melt Pool Ref Width (m) Melt Pool Ref Depth (m) Melt Pool Ref Depth/Width Porosity Size X (m) Porosity Size Y (m) Porosity Size Z (m) Relative Density Micro Min X (m) Micro Min Y (m) Micro Min Z (m) Micro Size X (m) Micro Size Y (m) Micro Size Z (m) Micro Sensor Dim (m) Cooling Rate (K/s) Thermal Gradient (K/m) Micro Melt Pool Width (m) Micro Melt Pool Depth (m) Random Seed XY Average Grain Size (microns) XZ Average Grain Size (microns) YZ Average Grain Size (microns) Error Message
0 0 1 SingleBead sb_0_mjcmeka5 Pending IN718 80 0.00004 0.00008 50.0 0.35 NaN NaN NaN NaN 3571428.571429 0.001 0.000014 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
1 0 1 SingleBead sb_0_x7uy4rtk Pending IN718 80 0.00005 0.00008 50.0 0.35 NaN NaN NaN NaN 2857142.857143 0.001 0.000017 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2 0 1 SingleBead sb_0_eg4ddi1b Pending IN718 80 0.00004 0.00008 158.333333 0.8875 NaN NaN NaN NaN 4460093.896714 0.001 0.000036 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
3 0 1 SingleBead sb_0_pm0586vy Pending IN718 80 0.00005 0.00008 158.333333 0.8875 NaN NaN NaN NaN 3568075.117371 0.001 0.000044 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
4 0 1 SingleBead sb_0_hmjbf79v Pending IN718 80 0.00004 0.00008 158.333333 1.425 NaN NaN NaN NaN 2777777.777778 0.001 0.000057 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
5 0 1 SingleBead sb_0_3738zmn3 Pending IN718 80 0.00005 0.00008 158.333333 1.425 NaN NaN NaN NaN 2222222.222222 0.001 0.000071 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
6 0 1 SingleBead sb_0_cw9yho5u Pending IN718 80 0.00004 0.00008 158.333333 1.9625 NaN NaN NaN NaN 2016985.138004 0.001 0.000078 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
7 0 1 SingleBead sb_0_pgf64udy Pending IN718 80 0.00004 0.00008 266.666667 0.8875 NaN NaN NaN NaN 7511737.089202 0.001 0.000036 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
8 0 1 SingleBead sb_0_wihbcb7g Pending IN718 80 0.00005 0.00008 266.666667 0.8875 NaN NaN NaN NaN 6009389.671362 0.001 0.000044 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
9 0 1 SingleBead sb_0_1cyea5s0 Pending IN718 80 0.00004 0.00008 266.666667 1.425 NaN NaN NaN NaN 4678362.573099 0.001 0.000057 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
10 0 1 SingleBead sb_0_rr7fw7d3 Pending IN718 80 0.00005 0.00008 266.666667 1.425 NaN NaN NaN NaN 3742690.05848 0.001 0.000071 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
11 0 1 SingleBead sb_0_8v7zd4fa Pending IN718 80 0.00004 0.00008 266.666667 1.9625 NaN NaN NaN NaN 3397027.600849 0.001 0.000078 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
12 0 1 SingleBead sb_0_qcfmzcj6 Pending IN718 80 0.00005 0.00008 266.666667 1.9625 NaN NaN NaN NaN 2717622.080679 0.001 0.000098 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
13 0 1 SingleBead sb_0_1fy9rg9v Pending IN718 80 0.00004 0.00008 266.666667 2.5 NaN NaN NaN NaN 2666666.666667 0.001 0.0001 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
14 0 1 SingleBead sb_0_dezm2wou Pending IN718 80 0.00005 0.00008 266.666667 2.5 NaN NaN NaN NaN 2133333.333333 0.001 0.000125 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
15 0 1 SingleBead sb_0_drsrbklv Pending IN718 80 0.00004 0.00008 375.0 1.425 NaN NaN NaN NaN 6578947.368421 0.001 0.000057 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
16 0 1 SingleBead sb_0_c5yh1lpy Pending IN718 80 0.00005 0.00008 375.0 1.425 NaN NaN NaN NaN 5263157.894737 0.001 0.000071 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
17 0 1 SingleBead sb_0_62wtclv9 Pending IN718 80 0.00004 0.00008 375.0 1.9625 NaN NaN NaN NaN 4777070.063694 0.001 0.000078 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
18 0 1 SingleBead sb_0_o1i38emz Pending IN718 80 0.00005 0.00008 375.0 1.9625 NaN NaN NaN NaN 3821656.050955 0.001 0.000098 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
19 0 1 SingleBead sb_0_uhxzrulm Pending IN718 80 0.00004 0.00008 375.0 2.5 NaN NaN NaN NaN 3750000.0 0.001 0.0001 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
20 0 1 SingleBead sb_0_42khmr4e Pending IN718 80 0.00005 0.00008 375.0 2.5 NaN NaN NaN NaN 3000000.0 0.001 0.000125 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
21 0 1 SingleBead sb_0_llb46md4 Pending IN718 80 0.00005 0.00008 483.333333 1.425 NaN NaN NaN NaN 6783625.730994 0.001 0.000071 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
22 0 1 SingleBead sb_0_jc33vw4j Pending IN718 80 0.00004 0.00008 483.333333 1.9625 NaN NaN NaN NaN 6157112.526539 0.001 0.000078 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
23 0 1 SingleBead sb_0_wim6vtbl Pending IN718 80 0.00005 0.00008 483.333333 1.9625 NaN NaN NaN NaN 4925690.021231 0.001 0.000098 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
24 0 1 SingleBead sb_0_vt6viui2 Pending IN718 80 0.00004 0.00008 483.333333 2.5 NaN NaN NaN NaN 4833333.333333 0.001 0.0001 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
25 0 1 SingleBead sb_0_s50l4mcz Pending IN718 80 0.00005 0.00008 483.333333 2.5 NaN NaN NaN NaN 3866666.666667 0.001 0.000125 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
26 0 1 SingleBead sb_0_vc05bxs7 Pending IN718 80 0.00004 0.00008 591.666667 1.9625 NaN NaN NaN NaN 7537154.989384 0.001 0.000078 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
27 0 1 SingleBead sb_0_68l93kjb Pending IN718 80 0.00005 0.00008 591.666667 1.9625 NaN NaN NaN NaN 6029723.991507 0.001 0.000098 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
28 0 1 SingleBead sb_0_hz8lflgb Pending IN718 80 0.00004 0.00008 591.666667 2.5 NaN NaN NaN NaN 5916666.666667 0.001 0.0001 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
29 0 1 SingleBead sb_0_xolwklli Pending IN718 80 0.00005 0.00008 591.666667 2.5 NaN NaN NaN NaN 4733333.333333 0.001 0.000125 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
30 0 1 SingleBead sb_0_klmprn3o Pending IN718 80 0.00005 0.00008 700.0 1.9625 NaN NaN NaN NaN 7133757.961783 0.001 0.000098 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
31 0 1 SingleBead sb_0_2g66g7ny Pending IN718 80 0.00004 0.00008 700.0 2.5 NaN NaN NaN NaN 7000000.0 0.001 0.0001 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
32 0 1 SingleBead sb_0_p3bfr5k0 Pending IN718 80 0.00005 0.00008 700.0 2.5 NaN NaN NaN NaN 5600000.0 0.001 0.000125 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN


Skip some simulations#

If you are working with a large parametric study, you may want to skip some simulations to reduce processing time. To do so, set the simulation status to SimulationStatus.SKIP which is defined in the SimulationStatus class. Here, a DataFrame object is obtained, a filter is applied to get a list of simulation IDs, and then the status is updated on the simulations with those IDs.

df = study.data_frame()
# Get IDs for single bead simulations with laser power below 75 W.
ids = df.loc[
    (df[ColumnNames.LASER_POWER] < 75) & (df[ColumnNames.TYPE] == SimulationType.SINGLE_BEAD),
    ColumnNames.ID,
].tolist()
study.set_status(ids, SimulationStatus.SKIP)
print(study.data_frame()[[ColumnNames.ID, ColumnNames.TYPE, ColumnNames.STATUS]])
               ID        Type   Status
0   sb_0_mjcmeka5  SingleBead     Skip
1   sb_0_x7uy4rtk  SingleBead     Skip
2   sb_0_eg4ddi1b  SingleBead  Pending
3   sb_0_pm0586vy  SingleBead  Pending
4   sb_0_hmjbf79v  SingleBead  Pending
5   sb_0_3738zmn3  SingleBead  Pending
6   sb_0_cw9yho5u  SingleBead  Pending
7   sb_0_pgf64udy  SingleBead  Pending
8   sb_0_wihbcb7g  SingleBead  Pending
9   sb_0_1cyea5s0  SingleBead  Pending
10  sb_0_rr7fw7d3  SingleBead  Pending
11  sb_0_8v7zd4fa  SingleBead  Pending
12  sb_0_qcfmzcj6  SingleBead  Pending
13  sb_0_1fy9rg9v  SingleBead  Pending
14  sb_0_dezm2wou  SingleBead  Pending
15  sb_0_drsrbklv  SingleBead  Pending
16  sb_0_c5yh1lpy  SingleBead  Pending
17  sb_0_62wtclv9  SingleBead  Pending
18  sb_0_o1i38emz  SingleBead  Pending
19  sb_0_uhxzrulm  SingleBead  Pending
20  sb_0_42khmr4e  SingleBead  Pending
21  sb_0_llb46md4  SingleBead  Pending
22  sb_0_jc33vw4j  SingleBead  Pending
23  sb_0_wim6vtbl  SingleBead  Pending
24  sb_0_vt6viui2  SingleBead  Pending
25  sb_0_s50l4mcz  SingleBead  Pending
26  sb_0_vc05bxs7  SingleBead  Pending
27  sb_0_68l93kjb  SingleBead  Pending
28  sb_0_hz8lflgb  SingleBead  Pending
29  sb_0_xolwklli  SingleBead  Pending
30  sb_0_klmprn3o  SingleBead  Pending
31  sb_0_2g66g7ny  SingleBead  Pending
32  sb_0_p3bfr5k0  SingleBead  Pending

Run single bead simulations#

Run the simulations using the run_simulations() method. All simulations with a SimulationStatus.PENDING status are executed.

study.run_simulations(additive)

View single bead results#

The single bead simulation results are shown in the Melt Pool Width (m), Melt Pool Depth (m), Melt Pool Length (m), Melt Pool Length/Width, Melt Pool Ref Width (m), Melt Pool Ref Depth (m), and Melt Pool Ref Depth/Width columns of the data frame. For explanations of these columns, see ColumnNames.

study.data_frame().head(len(study.data_frame()))
Iteration Priority Type ID Status Material Heater Temp (C) Layer Thickness (m) Beam Diameter (m) Laser Power (W) Scan Speed (m/s) Start Angle (degrees) Rotation Angle (degrees) Hatch Spacing (m) Stripe Width (m) Energy Density (J/m^3) Single Bead Length (m) Build Rate (m^3/s) Melt Pool Width (m) Melt Pool Depth (m) Melt Pool Length (m) Melt Pool Length/Width Melt Pool Ref Width (m) Melt Pool Ref Depth (m) Melt Pool Ref Depth/Width Porosity Size X (m) Porosity Size Y (m) Porosity Size Z (m) Relative Density Micro Min X (m) Micro Min Y (m) Micro Min Z (m) Micro Size X (m) Micro Size Y (m) Micro Size Z (m) Micro Sensor Dim (m) Cooling Rate (K/s) Thermal Gradient (K/m) Micro Melt Pool Width (m) Micro Melt Pool Depth (m) Random Seed XY Average Grain Size (microns) XZ Average Grain Size (microns) YZ Average Grain Size (microns) Error Message
0 0 1 SingleBead sb_0_mjcmeka5 Skip IN718 80 0.00004 0.00008 50.0 0.35 NaN NaN NaN NaN 3571428.571429 0.001 0.000014 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
1 0 1 SingleBead sb_0_x7uy4rtk Skip IN718 80 0.00005 0.00008 50.0 0.35 NaN NaN NaN NaN 2857142.857143 0.001 0.000017 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2 0 1 SingleBead sb_0_eg4ddi1b Completed IN718 80 0.00004 0.00008 158.333333 0.8875 NaN NaN NaN NaN 4460093.896714 0.001 0.000036 0.00014 0.00008 0.000407 2.909518 0.000102 0.00004 0.387364 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
3 0 1 SingleBead sb_0_pm0586vy Completed IN718 80 0.00005 0.00008 158.333333 0.8875 NaN NaN NaN NaN 3568075.117371 0.001 0.000044 0.000143 0.000083 0.000424 2.969351 0.000091 0.000033 0.357957 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
4 0 1 SingleBead sb_0_hmjbf79v Completed IN718 80 0.00004 0.00008 158.333333 1.425 NaN NaN NaN NaN 2777777.777778 0.001 0.000057 0.000123 0.000052 0.000432 3.522586 0.000066 0.000012 0.180992 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
5 0 1 SingleBead sb_0_3738zmn3 Completed IN718 80 0.00005 0.00008 158.333333 1.425 NaN NaN NaN NaN 2222222.222222 0.001 0.000071 0.000123 0.000056 0.000453 3.672324 0.000045 0.000006 0.13629 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
6 0 1 SingleBead sb_0_cw9yho5u Completed IN718 80 0.00004 0.00008 158.333333 1.9625 NaN NaN NaN NaN 2016985.138004 0.001 0.000078 0.000111 0.000042 0.000451 4.055825 0.000023 0.000002 0.066085 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
7 0 1 SingleBead sb_0_pgf64udy Completed IN718 80 0.00004 0.00008 266.666667 0.8875 NaN NaN NaN NaN 7511737.089202 0.001 0.000036 0.000164 0.000144 0.000495 3.017293 0.000134 0.000104 0.774275 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
8 0 1 SingleBead sb_0_wihbcb7g Completed IN718 80 0.00005 0.00008 266.666667 0.8875 NaN NaN NaN NaN 6009389.671362 0.001 0.000044 0.000168 0.00015 0.000502 2.987421 0.000128 0.0001 0.785486 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
9 0 1 SingleBead sb_0_1cyea5s0 Completed IN718 80 0.00004 0.00008 266.666667 1.425 NaN NaN NaN NaN 4678362.573099 0.001 0.000057 0.00014 0.000086 0.000513 3.66501 0.000103 0.000046 0.442616 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
10 0 1 SingleBead sb_0_rr7fw7d3 Completed IN718 80 0.00005 0.00008 266.666667 1.425 NaN NaN NaN NaN 3742690.05848 0.001 0.000071 0.000144 0.000089 0.000524 3.648296 0.000094 0.000039 0.410312 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
11 0 1 SingleBead sb_0_8v7zd4fa Completed IN718 80 0.00004 0.00008 266.666667 1.9625 NaN NaN NaN NaN 3397027.600849 0.001 0.000078 0.000129 0.00006 0.000534 4.142145 0.00008 0.00002 0.2555 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
12 0 1 SingleBead sb_0_qcfmzcj6 Completed IN718 80 0.00005 0.00008 266.666667 1.9625 NaN NaN NaN NaN 2717622.080679 0.001 0.000098 0.000132 0.000064 0.000547 4.157178 0.000067 0.000014 0.215802 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
13 0 1 SingleBead sb_0_1fy9rg9v Completed IN718 80 0.00004 0.00008 266.666667 2.5 NaN NaN NaN NaN 2666666.666667 0.001 0.0001 0.000118 0.000049 0.000535 4.523908 0.000057 0.000009 0.163339 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
14 0 1 SingleBead sb_0_dezm2wou Completed IN718 80 0.00005 0.00008 266.666667 2.5 NaN NaN NaN NaN 2133333.333333 0.001 0.000125 0.00012 0.000055 0.000547 4.5686 0.000039 0.000005 0.120028 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
15 0 1 SingleBead sb_0_drsrbklv Completed IN718 80 0.00004 0.00008 375.0 1.425 NaN NaN NaN NaN 6578947.368421 0.001 0.000057 0.000158 0.000126 0.000542 3.439127 0.000124 0.000086 0.696975 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
16 0 1 SingleBead sb_0_c5yh1lpy Completed IN718 80 0.00005 0.00008 375.0 1.425 NaN NaN NaN NaN 5263157.894737 0.001 0.000071 0.000162 0.000133 0.00055 3.401133 0.000117 0.000083 0.703787 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
17 0 1 SingleBead sb_0_62wtclv9 Completed IN718 80 0.00004 0.00008 375.0 1.9625 NaN NaN NaN NaN 4777070.063694 0.001 0.000078 0.000139 0.000089 0.000562 4.047508 0.000102 0.000049 0.480996 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
18 0 1 SingleBead sb_0_o1i38emz Completed IN718 80 0.00005 0.00008 375.0 1.9625 NaN NaN NaN NaN 3821656.050955 0.001 0.000098 0.000143 0.000093 0.000571 4.00096 0.000094 0.000043 0.452533 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
19 0 1 SingleBead sb_0_uhxzrulm Completed IN718 80 0.00004 0.00008 375.0 2.5 NaN NaN NaN NaN 3750000.0 0.001 0.0001 0.000131 0.000066 0.000561 4.299853 0.000085 0.000026 0.303818 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
20 0 1 SingleBead sb_0_42khmr4e Completed IN718 80 0.00005 0.00008 375.0 2.5 NaN NaN NaN NaN 3000000.0 0.001 0.000125 0.000134 0.00007 0.000569 4.240953 0.000074 0.00002 0.274189 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
21 0 1 SingleBead sb_0_llb46md4 Completed IN718 80 0.00005 0.00008 483.333333 1.425 NaN NaN NaN NaN 6783625.730994 0.001 0.000071 0.000169 0.000179 0.000564 3.329164 0.000133 0.000129 0.964388 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
22 0 1 SingleBead sb_0_jc33vw4j Completed IN718 80 0.00004 0.00008 483.333333 1.9625 NaN NaN NaN NaN 6157112.526539 0.001 0.000078 0.00015 0.000118 0.000577 3.845883 0.000118 0.000078 0.659114 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
23 0 1 SingleBead sb_0_wim6vtbl Completed IN718 80 0.00005 0.00008 483.333333 1.9625 NaN NaN NaN NaN 4925690.021231 0.001 0.000098 0.000156 0.000123 0.000586 3.748451 0.000112 0.000073 0.656839 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
24 0 1 SingleBead sb_0_vt6viui2 Completed IN718 80 0.00004 0.00008 483.333333 2.5 NaN NaN NaN NaN 4833333.333333 0.001 0.0001 0.000138 0.000091 0.000576 4.164058 0.000101 0.000051 0.504693 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
25 0 1 SingleBead sb_0_s50l4mcz Completed IN718 80 0.00005 0.00008 483.333333 2.5 NaN NaN NaN NaN 3866666.666667 0.001 0.000125 0.000142 0.000095 0.000584 4.124311 0.000094 0.000045 0.476493 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
26 0 1 SingleBead sb_0_vc05bxs7 Completed IN718 80 0.00004 0.00008 591.666667 1.9625 NaN NaN NaN NaN 7537154.989384 0.001 0.000078 0.00016 0.000147 0.000587 3.676474 0.00013 0.000107 0.822492 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
27 0 1 SingleBead sb_0_68l93kjb Completed IN718 80 0.00005 0.00008 591.666667 1.9625 NaN NaN NaN NaN 6029723.991507 0.001 0.000098 0.000163 0.000155 0.000594 3.642357 0.000124 0.000105 0.84971 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
28 0 1 SingleBead sb_0_hz8lflgb Completed IN718 80 0.00004 0.00008 591.666667 2.5 NaN NaN NaN NaN 5916666.666667 0.001 0.0001 0.000145 0.000113 0.000586 4.042671 0.000113 0.000073 0.643361 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
29 0 1 SingleBead sb_0_xolwklli Completed IN718 80 0.00005 0.00008 591.666667 2.5 NaN NaN NaN NaN 4733333.333333 0.001 0.000125 0.000149 0.000118 0.000593 3.982188 0.000107 0.000068 0.635871 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
30 0 1 SingleBead sb_0_klmprn3o Completed IN718 80 0.00005 0.00008 700.0 1.9625 NaN NaN NaN NaN 7133757.961783 0.001 0.000098 0.000168 0.00019 0.000599 3.571666 0.000133 0.00014 1.0519 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
31 0 1 SingleBead sb_0_2g66g7ny Completed IN718 80 0.00004 0.00008 700.0 2.5 NaN NaN NaN NaN 7000000.0 0.001 0.0001 0.000152 0.000135 0.000593 3.90692 0.000122 0.000095 0.779679 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
32 0 1 SingleBead sb_0_p3bfr5k0 Completed IN718 80 0.00005 0.00008 700.0 2.5 NaN NaN NaN NaN 5600000.0 0.001 0.000125 0.000155 0.000143 0.000597 3.843721 0.000117 0.000093 0.795445 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN


Save the study to a CSV file#

The parametric study is saved with each update in a binary format. For other formats, use the to_* methods provided by the DataFrame class.

study.data_frame().to_csv("demo-study.csv")

Import a study from a CSV file#

Import a study from a CSV file using the ParametricStudy.import_csv_study() method. The CSV file must contain the same columns as the parametric study data frame. The ParametricStudy.import_csv_study() method will return a list of errors for each simulation that failed to import and the number of duplicate simulations removed (if any). All other valid simulations will be added to the study.

study2 = ParametricStudy("demo-csv-study.ps")
errors = study2.import_csv_study("demo-study.csv")
study2.data_frame().head()
Saving parametric study to /home/runner/work/pyadditive/pyadditive/examples/demo-csv-study.ps
Iteration Priority Type ID Status Material Heater Temp (C) Layer Thickness (m) Beam Diameter (m) Laser Power (W) Scan Speed (m/s) Start Angle (degrees) Rotation Angle (degrees) Hatch Spacing (m) Stripe Width (m) Energy Density (J/m^3) Single Bead Length (m) Build Rate (m^3/s) Melt Pool Width (m) Melt Pool Depth (m) Melt Pool Length (m) Melt Pool Length/Width Melt Pool Ref Width (m) Melt Pool Ref Depth (m) Melt Pool Ref Depth/Width Porosity Size X (m) Porosity Size Y (m) Porosity Size Z (m) Relative Density Micro Min X (m) Micro Min Y (m) Micro Min Z (m) Micro Size X (m) Micro Size Y (m) Micro Size Z (m) Micro Sensor Dim (m) Cooling Rate (K/s) Thermal Gradient (K/m) Micro Melt Pool Width (m) Micro Melt Pool Depth (m) Random Seed XY Average Grain Size (microns) XZ Average Grain Size (microns) YZ Average Grain Size (microns) Error Message
0 0 1 SingleBead sb_0_eg4ddi1b Completed IN718 80 0.00004 0.00008 158.333333 0.8875 NaN NaN NaN NaN 4.460094e+06 0.001 0.000036 0.000140 0.000080 0.000407 2.909518 0.000102 0.000040 0.387364 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN <NA> NaN NaN NaN NaN
1 0 1 SingleBead sb_0_pm0586vy Completed IN718 80 0.00005 0.00008 158.333333 0.8875 NaN NaN NaN NaN 3.568075e+06 0.001 0.000044 0.000143 0.000083 0.000424 2.969351 0.000091 0.000033 0.357957 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN <NA> NaN NaN NaN NaN
2 0 1 SingleBead sb_0_hmjbf79v Completed IN718 80 0.00004 0.00008 158.333333 1.4250 NaN NaN NaN NaN 2.777778e+06 0.001 0.000057 0.000123 0.000052 0.000432 3.522586 0.000066 0.000012 0.180992 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN <NA> NaN NaN NaN NaN
3 0 1 SingleBead sb_0_3738zmn3 Completed IN718 80 0.00005 0.00008 158.333333 1.4250 NaN NaN NaN NaN 2.222222e+06 0.001 0.000071 0.000123 0.000056 0.000453 3.672324 0.000045 0.000006 0.136290 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN <NA> NaN NaN NaN NaN
4 0 1 SingleBead sb_0_cw9yho5u Completed IN718 80 0.00004 0.00008 158.333333 1.9625 NaN NaN NaN NaN 2.016985e+06 0.001 0.000078 0.000111 0.000042 0.000451 4.055825 0.000023 0.000002 0.066085 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN <NA> NaN NaN NaN NaN


Load a previously saved study#

Load a previously saved study using the static ParameticStudy.load() method.

study3 = ParametricStudy.load("demo-study.ps")
study3.data_frame().head()
Iteration Priority Type ID Status Material Heater Temp (C) Layer Thickness (m) Beam Diameter (m) Laser Power (W) Scan Speed (m/s) Start Angle (degrees) Rotation Angle (degrees) Hatch Spacing (m) Stripe Width (m) Energy Density (J/m^3) Single Bead Length (m) Build Rate (m^3/s) Melt Pool Width (m) Melt Pool Depth (m) Melt Pool Length (m) Melt Pool Length/Width Melt Pool Ref Width (m) Melt Pool Ref Depth (m) Melt Pool Ref Depth/Width Porosity Size X (m) Porosity Size Y (m) Porosity Size Z (m) Relative Density Micro Min X (m) Micro Min Y (m) Micro Min Z (m) Micro Size X (m) Micro Size Y (m) Micro Size Z (m) Micro Sensor Dim (m) Cooling Rate (K/s) Thermal Gradient (K/m) Micro Melt Pool Width (m) Micro Melt Pool Depth (m) Random Seed XY Average Grain Size (microns) XZ Average Grain Size (microns) YZ Average Grain Size (microns) Error Message
0 0 1 SingleBead sb_0_mjcmeka5 Skip IN718 80 0.00004 0.00008 50.0 0.35 NaN NaN NaN NaN 3571428.571429 0.001 0.000014 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
1 0 1 SingleBead sb_0_x7uy4rtk Skip IN718 80 0.00005 0.00008 50.0 0.35 NaN NaN NaN NaN 2857142.857143 0.001 0.000017 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2 0 1 SingleBead sb_0_eg4ddi1b Completed IN718 80 0.00004 0.00008 158.333333 0.8875 NaN NaN NaN NaN 4460093.896714 0.001 0.000036 0.00014 0.00008 0.000407 2.909518 0.000102 0.00004 0.387364 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
3 0 1 SingleBead sb_0_pm0586vy Completed IN718 80 0.00005 0.00008 158.333333 0.8875 NaN NaN NaN NaN 3568075.117371 0.001 0.000044 0.000143 0.000083 0.000424 2.969351 0.000091 0.000033 0.357957 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
4 0 1 SingleBead sb_0_hmjbf79v Completed IN718 80 0.00004 0.00008 158.333333 1.425 NaN NaN NaN NaN 2777777.777778 0.001 0.000057 0.000123 0.000052 0.000432 3.522586 0.000066 0.000012 0.180992 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN


Create a porosity evaluation#

You can use the insights gained from the single bead evaluation to generate parameters for a porosity evaluation. Alternatively, you can perform a porosity evaluation without a previous single bead evaluation. Here, the laser power and scan speeds are determined by filtering the single bead results where the ratio of the melt pool reference depth to reference width is within a specified range. Additionally, the simulations are restricted to a minimum build rate, which is calculated as scan speed * layer thickness * hatch spacing. The generate_porosity_permutations() method is used to add porosity simulations to the study.

df = study.data_frame()
df = df[
    (df[ColumnNames.MELT_POOL_REFERENCE_DEPTH_OVER_WIDTH] >= 0.3)
    & (df[ColumnNames.MELT_POOL_REFERENCE_DEPTH_OVER_WIDTH] <= 0.65)
]

study.generate_porosity_permutations(
    material_name=material,
    laser_powers=df[ColumnNames.LASER_POWER].unique(),
    scan_speeds=df[ColumnNames.SCAN_SPEED].unique(),
    size_x=1e-3,
    size_y=1e-3,
    size_z=1e-3,
    layer_thicknesses=[40e-6],
    heater_temperatures=[80],
    beam_diameters=[80e-6],
    start_angles=[45],
    rotation_angles=[67.5],
    hatch_spacings=[100e-6],
    min_build_rate=5e-9,
    iteration=1,
)
15

Run porosity simulations#

Run the simulations using the run_simulations() method.

study.run_simulations(additive)

View porosity results#

Porosity simulation results are shown in the Relative Density column of the data frame.

df = study.data_frame()
df = df[df[ColumnNames.TYPE] == SimulationType.POROSITY]
df.head(len(df))
Iteration Priority Type ID Status Material Heater Temp (C) Layer Thickness (m) Beam Diameter (m) Laser Power (W) Scan Speed (m/s) Start Angle (degrees) Rotation Angle (degrees) Hatch Spacing (m) Stripe Width (m) Energy Density (J/m^3) Single Bead Length (m) Build Rate (m^3/s) Melt Pool Width (m) Melt Pool Depth (m) Melt Pool Length (m) Melt Pool Length/Width Melt Pool Ref Width (m) Melt Pool Ref Depth (m) Melt Pool Ref Depth/Width Porosity Size X (m) Porosity Size Y (m) Porosity Size Z (m) Relative Density Micro Min X (m) Micro Min Y (m) Micro Min Z (m) Micro Size X (m) Micro Size Y (m) Micro Size Z (m) Micro Sensor Dim (m) Cooling Rate (K/s) Thermal Gradient (K/m) Micro Melt Pool Width (m) Micro Melt Pool Depth (m) Random Seed XY Average Grain Size (microns) XZ Average Grain Size (microns) YZ Average Grain Size (microns) Error Message
33 1 1 Porosity por_1_fp8t336i Completed IN718 80 0.00004 0.00008 158.333333 1.425 45 67.5 0.0001 0.01 27777777777.777775 NaN 0.0 NaN NaN NaN NaN NaN NaN NaN 0.001 0.001 0.001 0.959907 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
34 1 1 Porosity por_1_m0rvzc8w Completed IN718 80 0.00004 0.00008 158.333333 1.9625 45 67.5 0.0001 0.01 20169851380.042458 NaN 0.0 NaN NaN NaN NaN NaN NaN NaN 0.001 0.001 0.001 0.7966 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
35 1 1 Porosity por_1_fr6kpl53 Completed IN718 80 0.00004 0.00008 158.333333 2.5 45 67.5 0.0001 0.01 15833333333.33333 NaN 0.0 NaN NaN NaN NaN NaN NaN NaN 0.001 0.001 0.001 0.666111 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
36 1 1 Porosity por_1_edufn36e Completed IN718 80 0.00004 0.00008 266.666667 1.425 45 67.5 0.0001 0.01 46783625730.994148 NaN 0.0 NaN NaN NaN NaN NaN NaN NaN 0.001 0.001 0.001 1.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
37 1 1 Porosity por_1_kb97nm3i Completed IN718 80 0.00004 0.00008 266.666667 1.9625 45 67.5 0.0001 0.01 33970276008.492561 NaN 0.0 NaN NaN NaN NaN NaN NaN NaN 0.001 0.001 0.001 0.998938 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
38 1 1 Porosity por_1_zm5abyay Completed IN718 80 0.00004 0.00008 266.666667 2.5 45 67.5 0.0001 0.01 26666666666.666664 NaN 0.0 NaN NaN NaN NaN NaN NaN NaN 0.001 0.001 0.001 0.936676 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
39 1 1 Porosity por_1_shgxs1sy Completed IN718 80 0.00004 0.00008 375.0 1.425 45 67.5 0.0001 0.01 65789473684.210526 NaN 0.0 NaN NaN NaN NaN NaN NaN NaN 0.001 0.001 0.001 1.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
40 1 1 Porosity por_1_68tnf63q Completed IN718 80 0.00004 0.00008 375.0 1.9625 45 67.5 0.0001 0.01 47770700636.942673 NaN 0.0 NaN NaN NaN NaN NaN NaN NaN 0.001 0.001 0.001 1.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
41 1 1 Porosity por_1_yktee9hy Completed IN718 80 0.00004 0.00008 375.0 2.5 45 67.5 0.0001 0.01 37500000000.0 NaN 0.0 NaN NaN NaN NaN NaN NaN NaN 0.001 0.001 0.001 0.999999 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
42 1 1 Porosity por_1_s63yc2y9 Completed IN718 80 0.00004 0.00008 483.333333 1.425 45 67.5 0.0001 0.01 84795321637.426895 NaN 0.0 NaN NaN NaN NaN NaN NaN NaN 0.001 0.001 0.001 1.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
43 1 1 Porosity por_1_6ptlcdpu Completed IN718 80 0.00004 0.00008 483.333333 1.9625 45 67.5 0.0001 0.01 61571125265.392769 NaN 0.0 NaN NaN NaN NaN NaN NaN NaN 0.001 0.001 0.001 1.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
44 1 1 Porosity por_1_6ib848qa Completed IN718 80 0.00004 0.00008 483.333333 2.5 45 67.5 0.0001 0.01 48333333333.333328 NaN 0.0 NaN NaN NaN NaN NaN NaN NaN 0.001 0.001 0.001 1.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
45 1 1 Porosity por_1_ol9so7ws Completed IN718 80 0.00004 0.00008 591.666667 1.425 45 67.5 0.0001 0.01 103801169590.64328 NaN 0.0 NaN NaN NaN NaN NaN NaN NaN 0.001 0.001 0.001 1.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
46 1 1 Porosity por_1_9pt2dos9 Completed IN718 80 0.00004 0.00008 591.666667 1.9625 45 67.5 0.0001 0.01 75371549893.84288 NaN 0.0 NaN NaN NaN NaN NaN NaN NaN 0.001 0.001 0.001 1.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
47 1 1 Porosity por_1_qn3isipq Completed IN718 80 0.00004 0.00008 591.666667 2.5 45 67.5 0.0001 0.01 59166666666.666664 NaN 0.0 NaN NaN NaN NaN NaN NaN NaN 0.001 0.001 0.001 1.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN


Create a microstructure evaluation#

Here a set of microstructure simulations is generated using many of the same parameters used for the porosity simulations. The parameters cooling_rate, thermal_gradient, melt_pool_width, and melt_pool_depth are not specified so they are calculated. The generate_microstructure_permutations() method is used to add microstructure simulations to the study.

df = study.data_frame()
df = df[df[ColumnNames.TYPE] == SimulationType.POROSITY]

study.generate_microstructure_permutations(
    material_name=material,
    laser_powers=df[ColumnNames.LASER_POWER].unique(),
    scan_speeds=df[ColumnNames.SCAN_SPEED].unique(),
    size_x=1e-3,
    size_y=1e-3,
    size_z=1.1e-3,
    sensor_dimension=1e-4,
    layer_thicknesses=df[ColumnNames.LAYER_THICKNESS].unique(),
    heater_temperatures=df[ColumnNames.HEATER_TEMPERATURE].unique(),
    beam_diameters=df[ColumnNames.BEAM_DIAMETER].unique(),
    start_angles=df[ColumnNames.START_ANGLE].unique(),
    rotation_angles=df[ColumnNames.ROTATION_ANGLE].unique(),
    hatch_spacings=df[ColumnNames.HATCH_SPACING].unique(),
    iteration=2,
)
15

Run microstructure simulations#

Run the simulations using the run_simulations() method.

study.run_simulations(additive)

View microstructure results#

Microstructure simulation results are shown in the XY Average Grain Size (microns), XZ Average Grain Size (microns), and YZ Average Grain Size (microns) columns of the data frame. For explanations of these columns, see ColumnNames.

df = study.data_frame()
df = df[df[ColumnNames.TYPE] == SimulationType.MICROSTRUCTURE]
df.head(len(df))
Iteration Priority Type ID Status Material Heater Temp (C) Layer Thickness (m) Beam Diameter (m) Laser Power (W) Scan Speed (m/s) Start Angle (degrees) Rotation Angle (degrees) Hatch Spacing (m) Stripe Width (m) Energy Density (J/m^3) Single Bead Length (m) Build Rate (m^3/s) Melt Pool Width (m) Melt Pool Depth (m) Melt Pool Length (m) Melt Pool Length/Width Melt Pool Ref Width (m) Melt Pool Ref Depth (m) Melt Pool Ref Depth/Width Porosity Size X (m) Porosity Size Y (m) Porosity Size Z (m) Relative Density Micro Min X (m) Micro Min Y (m) Micro Min Z (m) Micro Size X (m) Micro Size Y (m) Micro Size Z (m) Micro Sensor Dim (m) Cooling Rate (K/s) Thermal Gradient (K/m) Micro Melt Pool Width (m) Micro Melt Pool Depth (m) Random Seed XY Average Grain Size (microns) XZ Average Grain Size (microns) YZ Average Grain Size (microns) Error Message
48 2 1 Microstructure micro_2_b9ki3ah7 Completed IN718 80 0.00004 0.00008 158.333333 1.425 45 67.5 0.0001 0.01 27777777777.777775 NaN 0.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0 0 0 0.001 0.001 0.0011 0.0001 NaN NaN NaN NaN NaN 21.485541 26.254241 25.76259 NaN
49 2 1 Microstructure micro_2_y8ldqxyk Completed IN718 80 0.00004 0.00008 158.333333 1.9625 45 67.5 0.0001 0.01 20169851380.042458 NaN 0.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0 0 0 0.001 0.001 0.0011 0.0001 NaN NaN NaN NaN NaN 22.834367 25.617967 21.354045 NaN
50 2 1 Microstructure micro_2_3akc6uo7 Completed IN718 80 0.00004 0.00008 158.333333 2.5 45 67.5 0.0001 0.01 15833333333.33333 NaN 0.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0 0 0 0.001 0.001 0.0011 0.0001 NaN NaN NaN NaN NaN 19.83156 16.377995 16.908892 NaN
51 2 1 Microstructure micro_2_6sz9z0j0 Completed IN718 80 0.00004 0.00008 266.666667 1.425 45 67.5 0.0001 0.01 46783625730.994148 NaN 0.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0 0 0 0.001 0.001 0.0011 0.0001 NaN NaN NaN NaN NaN 26.657182 30.886768 29.777588 NaN
52 2 1 Microstructure micro_2_rnnequ7b Completed IN718 80 0.00004 0.00008 266.666667 1.9625 45 67.5 0.0001 0.01 33970276008.492561 NaN 0.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0 0 0 0.001 0.001 0.0011 0.0001 NaN NaN NaN NaN NaN 22.927889 36.143256 39.155393 NaN
53 2 1 Microstructure micro_2_msm0u7j7 Completed IN718 80 0.00004 0.00008 266.666667 2.5 45 67.5 0.0001 0.01 26666666666.666664 NaN 0.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0 0 0 0.001 0.001 0.0011 0.0001 NaN NaN NaN NaN NaN 20.471348 24.436881 26.289544 NaN
54 2 1 Microstructure micro_2_4fpa3om3 Completed IN718 80 0.00004 0.00008 375.0 1.425 45 67.5 0.0001 0.01 65789473684.210526 NaN 0.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0 0 0 0.001 0.001 0.0011 0.0001 NaN NaN NaN NaN NaN 29.3606 39.009652 34.435426 NaN
55 2 1 Microstructure micro_2_mhvl22mn Completed IN718 80 0.00004 0.00008 375.0 1.9625 45 67.5 0.0001 0.01 47770700636.942673 NaN 0.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0 0 0 0.001 0.001 0.0011 0.0001 NaN NaN NaN NaN NaN 25.82944 26.69688 33.084887 NaN
56 2 1 Microstructure micro_2_hcfi92hi Completed IN718 80 0.00004 0.00008 375.0 2.5 45 67.5 0.0001 0.01 37500000000.0 NaN 0.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0 0 0 0.001 0.001 0.0011 0.0001 NaN NaN NaN NaN NaN 19.379736 33.941361 29.29137 NaN
57 2 1 Microstructure micro_2_r1mbmelo Completed IN718 80 0.00004 0.00008 483.333333 1.425 45 67.5 0.0001 0.01 84795321637.426895 NaN 0.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0 0 0 0.001 0.001 0.0011 0.0001 NaN NaN NaN NaN NaN 37.701737 51.081884 83.283076 NaN
58 2 1 Microstructure micro_2_tsecl7ub Completed IN718 80 0.00004 0.00008 483.333333 1.9625 45 67.5 0.0001 0.01 61571125265.392769 NaN 0.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0 0 0 0.001 0.001 0.0011 0.0001 NaN NaN NaN NaN NaN 28.471004 46.627586 32.799553 NaN
59 2 1 Microstructure micro_2_l9zewkpa Completed IN718 80 0.00004 0.00008 483.333333 2.5 45 67.5 0.0001 0.01 48333333333.333328 NaN 0.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0 0 0 0.001 0.001 0.0011 0.0001 NaN NaN NaN NaN NaN 20.121179 37.002092 29.002794 NaN
60 2 1 Microstructure micro_2_4swg5hdj Completed IN718 80 0.00004 0.00008 591.666667 1.425 45 67.5 0.0001 0.01 103801169590.64328 NaN 0.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0 0 0 0.001 0.001 0.0011 0.0001 NaN NaN NaN NaN NaN 45.058475 41.854243 62.473044 NaN
61 2 1 Microstructure micro_2_0e3v7tki Completed IN718 80 0.00004 0.00008 591.666667 1.9625 45 67.5 0.0001 0.01 75371549893.84288 NaN 0.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0 0 0 0.001 0.001 0.0011 0.0001 NaN NaN NaN NaN NaN 45.585122 51.517126 42.01641 NaN
62 2 1 Microstructure micro_2_h5qj5sra Completed IN718 80 0.00004 0.00008 591.666667 2.5 45 67.5 0.0001 0.01 59166666666.666664 NaN 0.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0 0 0 0.001 0.001 0.0011 0.0001 NaN NaN NaN NaN NaN 28.572737 34.020566 28.721808 NaN


Total running time of the script: (34 minutes 18.298 seconds)

Gallery generated by Sphinx-Gallery