Input file

adamantine supports Boost INFO format and json. The input file is assumed to use the INFO format unless the file extension is .json. The following options are available:

boundary (required)

  • type: type of boundary: adiabatic, radiative, or convective. Multiple types can be chosen simultaneously by separating them by comma (required)

physics (required):

  • thermal: thermal simulation: true or false (required)
  • mechanical: mechanical simulation: true or fase (required)
  • if both thermal and mechanical parameters are true, solve a coupled thermo-mechanics problem

discretization (required):

  • thermal (required if physics.thermal is true):
    • fe_degree: degree of the finite element used (required)
    • quadrature: quadrature used: gauss or lobatto (default value: gauss)
  • mechanical (required if physics.mechanical is true):
    • fe_degree: degree of the finite element used (required)

geometry (required):

  • dim: the dimension of the problem (2 or 3, required)
  • material_height: below this height the domain contains material. Above this height the domain is empty. The height is in meters (default value: 1e9)
  • use_powder: the additive manufacturing process use powder: true or false (default value: false)
  • if use_powder is true:
    • powder_layer: thickness of the initial layer of powder in meters (required)
  • material_deposition: material is deposed during the simulation: true or false (default value: false)
  • if material_deposition is true:
    • material_deposition_method: file or scan_paths
    • if material_deposition_method is file:
      • material_deposition_file: material deposition filename
    • if material_deposition_method is scan_paths:
      • deposition_length: length of material deposition boxes along the scan direction in meters (required)
      • deposition_width: width of material deposition boxes (in the plane of the material, normal to the scan direction, 3D only) in meters (required)
      • deposition_height: height of material deposition boxes (out of the plane of the material) in meters (required)
      • deposition_lead_time: amount of time before the scan path reaches a point that the material is added in seconds (required)
      • deposition_time: add the material in bigger lumps in seconds (optional)
  • import_mesh: true or false (required)
  • if import_mesh is true:
    • mesh_file: The filename for the mesh file (required)
    • mesh_format: abaqus, assimp, unv, ucd, dbmesh, gmsh, tecplot, xda, vtk, vtu, exodus, or default, i.e., use the file suffix to try to determine the mesh format (required)
    • mesh_scale_factor: Apply a uniform scaling factor to the mesh (e.g. if the mesh is defined in mm or inches instead of m) (default value: 1, removed in 1.0, use units.mesh instead)
    • reset_material_id: Clear the material IDs defined in the mesh and set them all to zero so all material properties are given by the material_0 input block: true or false (default value: false)
  • if import_mesh is false:
    • length: the length of the domain in meters (required)
    • height: the height of the domain in meters (required)
    • width: the width of the domain in meters (only in 3D)
    • length_origin: the reference location in the length direction (default value: 0)
    • height_origin: the reference location in the height direction (default value: 0)
    • width_origin: the reference location in the width direction (only in 3D) (default value: 0)
    • length_divisions: number of cell layers in length (default value: 10)
    • height_divisions: number of cell layers in the height (default value: 10)
    • width_divisions: number of cell layers in width (only in 3D) (default value: 10)

materials (required):

  • n_materials: number of materials (required)
  • property_format: format of the material property: table or polynomial (required)
  • initial_temperature: initial temperature of all the materials in kelvins (default value: 300)
  • new_material_temperature: temperature of all the material that is being added during the process in kelvins (default value: 300)
  • material_X: property tree for the material with number X
  • material_X.Y: property tree where Y is either liquid, powder, or solid (one is required)
  • material_X.Y.Z: Z is either density in kg/m^3, specific_heat in J/(K*kg), thermal_conductivity_x, resp. y or z, in the direction x, resp. y or z (in 2D only x and z are used), in W/(m\*K), emissivity, or convection_heat_transfer_coef in W/(m^2\*K) (optional)
  • material_X.A: A is either solidus in kelvins, liquidus in kelvins, latent_heat in J/kg, radiation_temperature_infty in kelvins, or convection_temperature_infty in kelvins (optional)

memory_space (optional):

  • device (use GPU if Kokkos was compiled with GPU support) or host (use CPU) (default value: host)

post_processor (required):

  • filename_prefix: prefix of output files (required)
  • time_steps_between_output: number of time steps between the fields being written to the output files (default value: 1)

refinement (required):

  • n_refinements: number of times the cells on the paths of the beams are refined (default value: 2)
  • beam_cutoff: the cutoff value of the heat source terms above which beam-based refinement occurs (default value: 1e-15)
  • coarsen_after_beam: whether to coarsen cells where the beam has already passed (default value: false)
  • time_steps_between_refinement: number of time steps after which the refinement process is performed (default value: 2)

sources (required):

  • n_beams: number of heat source beams (required)
  • beam_X: property tree for the beam with number X
  • beam_X.type: type of heat source: goldak, electron_beam, or cube (required)
  • beam_X.scan_path_file: scan path filename (required)
  • beam_X.scan_path_file_format: format of the scan path: segment or event_series (required)
  • beam_X.max_power: maximum power of the beam in watts (required)
  • beam_X.depth: maximum depth reached by the electron beam in meters (required)
  • beam_X.absorption_efficiency: absorption efficiency of the beam equivalent to energy_conversion_efficiency * control_efficiency for electon beam. Number between 0 and 1 (required).
  • beam_X.diameter: diameter of the beam in meters (default value: 2e-3)

time_stepping (required):

  • method: name of the method to use for the time integration: forward_euler, rk_third_order, rk_fourth_order, backward_euler, implicit_midpoint, crank_nicolson, or sdirk2 (required)
  • scan_path_for_duration: if the flag is true, the duration of the simulation is determined by the duration of the scan path. In this case the scan path file needs to contain SCAN_PATH_END to terminate the simulation. If the flag is false, the duration of the simulation is determined by the duration input (default value: false, since 1.1)
  • duration: duration of the simulation in seconds (required for 1.0, since 1.1 only required if scan_path_for_duration is false)
  • time_step: length of the time steps used for the simulation in seconds (required)
  • for implicit method:
    • max_iteration: mamximum number of the iterations of the linear solver (default value: 1000)
    • tolerance: tolerance of the linear solver (default value: 1e-12)
    • n_tmp_vectors: maximum number of vectors used by GMRES (default value: 30)
    • right_preconditioner: use left or right preconditioning for the linear solver (default value: false)
    • newton_max_iteration: maximum number of iterations of Newton solver (default value: 100)
    • newton_tolerance: tolerance of the Newton solver (default value: 1e-6)
    • jfnk: use Jacobian-Free Newton Krylov method (default value: false)

experiment (optional):

  • read_in_experimental_data: whether to read in experimental data (default: false)
  • file: format of the file names. The format is pretty arbitrary, the keywords #frame and #camera are replaced by the frame and the camera number. The format of the file itself should be csv. (required)
  • format: format of the experimental data, either point_cloud, with (x, y, z, value) per line, or ray, with (pt0_x, pt0_y, pt0_z, pt1_x, pt1_y, pt1_z, value ) per line, where the ray starts at pt0 and passes through pt1 (required)
  • first_frame: number associated to the first frame (default value: 0)
  • last_frame: number associated to the last frame (required)
  • first_camera_id: number associated to the first camera (required)
  • last_camera_id: number associated to the last camera (required)
  • log_filename: the (full) filename of the log file that lists the timestamps for each frame from each camera. Note that the timestamps are not assumed to match the simulation time frame. The first_frame_temporal_offset parameter controls the simulation time corresponding to the first camera frame (required)
  • first_frame_temporal_offset: a uniform shift to the timestamps from all cameras to match the simulation time (default value: 0.0)
  • estimated_uncertainty: the estimate of the uncertainty in the experimental data points as given by a standard deviation (under the simplifying assumption that the error is normally distributed and independent for each data point) (default value: 0.0).
  • output_experiment_on_mesh: whether to output the experimental data projected onto the simulation mesh at each experiment time stamp (default: true)

ensemble (optional):

  • ensemble_simulation: whether to perform an ensemble of simulations (default value: false)
  • ensemble_size: number of ensemble members for the ensemble Kalman filter (EnKF) (default value: 5)
  • initial_temperature_stddev: standard deviation for the initial temperature of the material (default value: 0.0)
  • new_material_temperature_stddev: standard deviation for the temperature of material added during the process (default value: 0.0)
  • beam_0_max_power_stddev: standard deviation for the max power for beam 0 (if it exists) (default value: 0.0)
  • beam_0_absorption_efficiency_stddev: standard deviation for the absorption efficiency for beam 0 (if it exists) (default value: 0.0)

data_assimilation (optional):

  • assimilate_data: whether to perform data assimilation (default value: false)
  • localization_cutoff_function: function used to decrease the sample covariance as the relevant points become farther away: gaspari_cohn, step_function, none (default: none)
  • localization_cutoff_distance: distance at which sample covariance entries are set to zero (default: infinity)
  • augment_with_beam_0_absorption: whether to augment the state vector with the beam 0 absorption efficiency (default: false)
  • augment_with_beam_0_max_power: whether to augment the state vector with the beam 0 max power (default: false)
  • solver:
    • max_number_of_temp_vectors: maximum number of temporary vectors for the GMRES solve (optional)
    • max_iterations: maximum number of iterations for the GMRES solve (optional)
    • convergence_tolerance: convergence tolerance for the GMRES solve (optional)

profiling (optional):

  • timer: output timing information (default value: false)
  • caliper: configuration string for Caliper (optional)

checkpoint (optional):

  • time_steps_between_checkpoint: number of time steps after which checkpointing is performed (required)
  • filename_prefix: prefix of the checkpoint files (required)
  • overwrite_files: if true the checkpoint files are overwritten by newer ones. If false, the time steps is added to the filename prefix (required)

restart (optional):

  • filename_prefix: prefix of the restart files (required)

units (optional):

Change the unit of some inputs (since 1.1)

  • mesh: unit used for the mesh. Either millimeter, centimeter, inch, or meter (default value: meter)
  • heat_source (optional):
    • power: unit used for the power of the heat sources. Either milliwatt or watt (default value: watt)
    • velocity: unit used for the velocity of the heat sources. Either millimeter/second, centimeter/second, or meter/second (default value: meter/second)
    • dimension: unit used for the dimension of the heat sources. Either millimeter, centimeter, inch, or meter (default value: meter)
    • scan_path: unit used for the scan path of the heat sources. Either millimeter, centimeter, inch, or meter (default value: meter)

verbose_output (optional):

  • true or false (default value: false)