SimulationLaserMeltingSimonds< dim, Number, CaseClass > Class Template Reference

Developer Documentation: MeltPoolDG::Simulation::LaserMeltingSimonds::SimulationLaserMeltingSimonds< dim, Number, CaseClass > Class Template Reference
Developer Documentation
MeltPoolDG::Simulation::LaserMeltingSimonds::SimulationLaserMeltingSimonds< dim, Number, CaseClass > Class Template Reference

Simulation setup for the Simonds laser-melting benchmark. More...

#include <laser_melting_simonds.hpp>

Inheritance diagram for MeltPoolDG::Simulation::LaserMeltingSimonds::SimulationLaserMeltingSimonds< dim, Number, CaseClass >:
[legend]
Collaboration diagram for MeltPoolDG::Simulation::LaserMeltingSimonds::SimulationLaserMeltingSimonds< dim, Number, CaseClass >:
[legend]

Public Member Functions

 SimulationLaserMeltingSimonds (std::string parameter_file, const MPI_Comm mpi_communicator)
 Construct the Simonds laser-melting simulation.
 
bool add_case_specific_parameters (dealii::ParameterHandler &prm) override
 Declare simulation-specific parameters.
 
void create_spatial_discretization () override
 Create the triangulation and initial spatial discretization.
 
void set_boundary_conditions () override
 Assign boundary identifiers and attach boundary conditions.
 
void set_field_conditions () override
 Attach initial conditions for all active fields.
 
void do_postprocessing (const GenericDataOut< dim, Number > &generic_data_out) const final
 Perform simulation-specific postprocessing.
 

Private Attributes

std::vector< unsigned int > cell_repetitions
 Number of initial cell repetitions in each coordinate direction.
 
unsigned int n_local_refinement = 0
 Number of additional local refinement cycles.
 
Point< dim > local_refinement_1_bottom_left
 Lower-left point of the first local refinement box.
 
Point< dim > local_refinement_1_top_right
 Upper-right point of the first local refinement box.
 
Point< dim > local_refinement_2_bottom_left
 Lower-left point of the second local refinement box.
 
Point< dim > local_refinement_2_top_right
 Upper-right point of the second local refinement box.
 
Point< dim > bottom_left
 Lower-left corner of the computational domain.
 
Point< dim > top_right
 Upper-right corner of the computational domain.
 
std::ofstream file_conservation_variables
 Output stream for conservation-variable postprocessing.
 
int n_time_step = 0
 Counter for postprocessing calls.
 
TableHandler output_table
 Table used to collect conservation-variable output.
 

Detailed Description

template<int dim, typename Number, typename CaseClass>
class MeltPoolDG::Simulation::LaserMeltingSimonds::SimulationLaserMeltingSimonds< dim, Number, CaseClass >

Simulation setup for the Simonds laser-melting benchmark.

This class defines the simulation-specific configuration for the laser-melting case. It creates the computational domain, assigns boundary identifiers, attaches boundary and initial conditions, and performs optional postprocessing of conservation quantities.

The computational domain consists of a substrate region and a gas region separated by an initially planar interface at zero level set. For dimensions larger than one, the domain has a finite horizontal width. In one dimension, the coordinate is interpreted along the vertical axis.

The class is templated on the base case class and can therefore be used with different physical models, for example a pure heat-transfer case or a coupled melt-pool case.

Simulation-specific parameters are registered in the "simulation specific" subsection. These include domain dimensions, mesh repetitions, optional local refinement regions, initial temperature values, prescribed level-set parameters, and boundary-condition data.

Template Parameters
dimSpatial dimension.
NumberScalar number type.
CaseClassBase simulation case class.

Constructor & Destructor Documentation

◆ SimulationLaserMeltingSimonds()

template<int dim, typename Number , typename CaseClass >
MeltPoolDG::Simulation::LaserMeltingSimonds::SimulationLaserMeltingSimonds< dim, Number, CaseClass >::SimulationLaserMeltingSimonds ( std::string  parameter_file,
const MPI_Comm  mpi_communicator 
)

Construct the Simonds laser-melting simulation.

Parameters
parameter_filePath to the parameter file.
mpi_communicatorMPI communicator used by the simulation.

Member Function Documentation

◆ add_case_specific_parameters()

template<int dim, typename Number , typename CaseClass >
bool MeltPoolDG::Simulation::LaserMeltingSimonds::SimulationLaserMeltingSimonds< dim, Number, CaseClass >::add_case_specific_parameters ( dealii::ParameterHandler &  prm)
override

Declare simulation-specific parameters.

Adds parameters for domain dimensions, mesh generation, optional local refinement, initial temperature values, prescribed level-set thickness, and boundary-condition data.

Parameters
prmParameter handler to which the parameters are added.
Returns
Whether the parameter values should be printed.

◆ create_spatial_discretization()

template<int dim, typename Number , typename CaseClass >
void MeltPoolDG::Simulation::LaserMeltingSimonds::SimulationLaserMeltingSimonds< dim, Number, CaseClass >::create_spatial_discretization ( )
override

Create the triangulation and initial spatial discretization.

Builds the rectangular or simplex-based domain consisting of substrate and gas regions. The triangulation type depends on the finite-element type and dimension.

◆ do_postprocessing()

template<int dim, typename Number , typename CaseClass >
void MeltPoolDG::Simulation::LaserMeltingSimonds::SimulationLaserMeltingSimonds< dim, Number, CaseClass >::do_postprocessing ( const GenericDataOut< dim, Number > &  generic_data_out) const
final

Perform simulation-specific postprocessing.

For coupled melt-pool simulations, this function computes globally integrated conservation quantities such as mass, momentum, kinetic energy, and thermal energy. The results are written to a text file in the configured output directory.

Parameters
generic_data_outData container providing access to solution vectors, DoF handlers, mappings, and the current simulation time.

◆ set_boundary_conditions()

template<int dim, typename Number , typename CaseClass >
void MeltPoolDG::Simulation::LaserMeltingSimonds::SimulationLaserMeltingSimonds< dim, Number, CaseClass >::set_boundary_conditions ( )
override

Assign boundary identifiers and attach boundary conditions.

Sets boundary identifiers for substrate bottom, substrate walls, gas top, gas inflow, and gas outlet boundaries. Depending on the selected base case and inflow velocity, this function attaches heat-transfer, Navier-Stokes, level-set, and reinitialization boundary conditions.

The function also performs optional local mesh refinement inside up to two user-defined refinement boxes.

◆ set_field_conditions()

template<int dim, typename Number , typename CaseClass >
void MeltPoolDG::Simulation::LaserMeltingSimonds::SimulationLaserMeltingSimonds< dim, Number, CaseClass >::set_field_conditions ( )
override

Attach initial conditions for all active fields.

Initializes temperature fields, prescribed level-set fields for heat-transfer simulations, and signed-distance and velocity fields for coupled melt-pool simulations.

Member Data Documentation

◆ bottom_left

template<int dim, typename Number , typename CaseClass >
Point<dim> MeltPoolDG::Simulation::LaserMeltingSimonds::SimulationLaserMeltingSimonds< dim, Number, CaseClass >::bottom_left
private

Lower-left corner of the computational domain.

◆ cell_repetitions

template<int dim, typename Number , typename CaseClass >
std::vector<unsigned int> MeltPoolDG::Simulation::LaserMeltingSimonds::SimulationLaserMeltingSimonds< dim, Number, CaseClass >::cell_repetitions
private

Number of initial cell repetitions in each coordinate direction.

◆ file_conservation_variables

template<int dim, typename Number , typename CaseClass >
std::ofstream MeltPoolDG::Simulation::LaserMeltingSimonds::SimulationLaserMeltingSimonds< dim, Number, CaseClass >::file_conservation_variables
mutableprivate

Output stream for conservation-variable postprocessing.

◆ local_refinement_1_bottom_left

template<int dim, typename Number , typename CaseClass >
Point<dim> MeltPoolDG::Simulation::LaserMeltingSimonds::SimulationLaserMeltingSimonds< dim, Number, CaseClass >::local_refinement_1_bottom_left
private

Lower-left point of the first local refinement box.

◆ local_refinement_1_top_right

template<int dim, typename Number , typename CaseClass >
Point<dim> MeltPoolDG::Simulation::LaserMeltingSimonds::SimulationLaserMeltingSimonds< dim, Number, CaseClass >::local_refinement_1_top_right
private

Upper-right point of the first local refinement box.

◆ local_refinement_2_bottom_left

template<int dim, typename Number , typename CaseClass >
Point<dim> MeltPoolDG::Simulation::LaserMeltingSimonds::SimulationLaserMeltingSimonds< dim, Number, CaseClass >::local_refinement_2_bottom_left
private

Lower-left point of the second local refinement box.

◆ local_refinement_2_top_right

template<int dim, typename Number , typename CaseClass >
Point<dim> MeltPoolDG::Simulation::LaserMeltingSimonds::SimulationLaserMeltingSimonds< dim, Number, CaseClass >::local_refinement_2_top_right
private

Upper-right point of the second local refinement box.

◆ n_local_refinement

template<int dim, typename Number , typename CaseClass >
unsigned int MeltPoolDG::Simulation::LaserMeltingSimonds::SimulationLaserMeltingSimonds< dim, Number, CaseClass >::n_local_refinement = 0
private

Number of additional local refinement cycles.

◆ n_time_step

template<int dim, typename Number , typename CaseClass >
int MeltPoolDG::Simulation::LaserMeltingSimonds::SimulationLaserMeltingSimonds< dim, Number, CaseClass >::n_time_step = 0
mutableprivate

Counter for postprocessing calls.

◆ output_table

template<int dim, typename Number , typename CaseClass >
TableHandler MeltPoolDG::Simulation::LaserMeltingSimonds::SimulationLaserMeltingSimonds< dim, Number, CaseClass >::output_table
mutableprivate

Table used to collect conservation-variable output.

◆ top_right

template<int dim, typename Number , typename CaseClass >
Point<dim> MeltPoolDG::Simulation::LaserMeltingSimonds::SimulationLaserMeltingSimonds< dim, Number, CaseClass >::top_right
private

Upper-right corner of the computational domain.


The documentation for this class was generated from the following files: