SimulationWallWetting< dim, number > Class Template Reference

Developer Documentation: MeltPoolDG::Simulation::WallWetting::SimulationWallWetting< dim, number > Class Template Reference
Developer Documentation
MeltPoolDG::Simulation::WallWetting::SimulationWallWetting< dim, number > Class Template Reference

Simulation of wetting at the bottom wall. This simulates the modelling problem described in "A conservative level set method for contact line dynamics" by Zahedi et al. (2009). DOI: https://doi.org/10.1016/j.jcp.2009.05.043. More...

#include <wall_wetting.hpp>

Inheritance diagram for MeltPoolDG::Simulation::WallWetting::SimulationWallWetting< dim, number >:
[legend]
Collaboration diagram for MeltPoolDG::Simulation::WallWetting::SimulationWallWetting< dim, number >:
[legend]

Public Member Functions

 SimulationWallWetting (std::string parameter_file, const MPI_Comm mpi_communicator)
 Constructor of the wall wetting simulation using wetting boundary condition.
 
bool add_case_specific_parameters (dealii::ParameterHandler &prm) final
 Add parameters that are specific to the simulation.
 
void create_spatial_discretization () final
 Create the spatial discretization of the problem.
 
void set_boundary_conditions () final
 Set boundary conditions.
 
void set_field_conditions () final
 Set initial level-set field condition.
 
void do_postprocessing (const GenericDataOut< dim, double > &generic_data_out) const final
 Post-process the solution to extract the contact angle at the boundary for the current time-step and write it in an output file.
 
void compute_contact_angle_at_boundary (number &contact_angle, const GenericDataOut< dim, double > &generic_data_out) const
 Computes the position-weighted contact angle at the bottom boundary.
 
- Public Member Functions inherited from MeltPoolDG::LevelSet::ReinitializationCase< dim, number >
 ReinitializationCase (const std::string &parameter_file_in, MPI_Comm mpi_communicator_in)
 
- Public Member Functions inherited from MeltPoolDG::SimulationCaseBase< dim, number, spacedim >
virtual ~SimulationCaseBase ()=default
 
 SimulationCaseBase (const std::string &parameter_file_in, MPI_Comm mpi_communicator_in)
 
void create ()
 Main setup function to initialize the simulation.
 
std::map< dealii::types::boundary_id, std::shared_ptr< dealii::Function< dim > > > get_boundary_condition (const std::string &type, const std::string &operation_name, const bool is_optional=true) const
 Retrieve boundary conditions of a specific type for an operation.
 
std::shared_ptr< BoundaryConditionManager< dim, number > > get_boundary_condition_manager (const std::string &operation_name, const bool is_optional=true) const
 Retrieve the boundary condition object for a specific operation.
 
std::string get_boundary_condition_type (dealii::types::boundary_id boundary_id, const std::string &operation_name) const
 Retrieve the type of a boundary condition for a specific boundary ID and operation.
 
void set_time_boundary_conditions (const number time)
 Update the time for all boundary conditions.
 
std::shared_ptr< dealii::Function< dim > > get_field_function (const std::string &type, const std::string &operation_name, const bool is_optional=false)
 
std::shared_ptr< dealii::Function< dim > > get_initial_condition (const std::string &operation_name, const bool is_optional=false)
 Retrieve the initial condition for a given operation.
 
const PeriodicBoundaryConditions< dim > & get_periodic_bc () const
 Get the periodic boundary condition manager.
 
virtual void do_postprocessing (const GenericDataOut< dim, number > &generic_data_out) const
 Perform specific postprocessing (can be overridden by derived classes).
 

Private Attributes

number x_min = 0.0
 Minimal x value of the domain.
 
number x_max = 2.0
 Maximal x value of the domain.
 
number y_min = x_min
 Minimal y value of the domain.
 
number y_max = x_max
 Maximal y value of the domain.
 
number x_interface = 1.0
 Interface location.
 
number contact_angle_deg = 45.0
 Contact angle on bottom wall.
 
number gamma_factor = 1.0
 
number gamma
 Normal vector filter parameter.
 
number epsilon
 Interface thickness parameter.
 
number cell_size_min
 Minimum cell size.
 
number time_step_factor = 1.0
 Time-step scaling factor (for sensitivity analysis on the time-step)
 
dealii::TableHandler postprocess_table
 Contact angle post-processing table.
 
bool output_contact_angle_evolution = true
 Bool output contact-angle evolution in a .txt file.
 

Additional Inherited Members

- Public Attributes inherited from MeltPoolDG::LevelSet::ReinitializationCase< dim, number >
ReinitializationCaseParameters< number > parameters
 
- Public Attributes inherited from MeltPoolDG::SimulationCaseBase< dim, number, spacedim >
std::shared_ptr< dealii::Triangulation< dim, spacedim > > triangulation
 
const std::string parameter_file
 
const MPI_Comm mpi_communicator
 
- Protected Member Functions inherited from MeltPoolDG::SimulationCaseBase< dim, number, spacedim >
void attach_field_function (std::shared_ptr< dealii::Function< dim > > function, const std::string &type, const std::string &operation_name)
 
void attach_initial_condition (std::shared_ptr< dealii::Function< dim > > initial_function, const std::string &operation_name)
 
void attach_boundary_condition (std::pair< const dealii::types::boundary_id, const std::shared_ptr< dealii::Function< dim > > > id_and_function, const std::string &type, const std::string &operation_name)
 Attach a boundary condition for a specific operation.
 
void attach_boundary_condition (const dealii::types::boundary_id id, const std::string &type, const std::string &operation_name)
 Attach a boundary condition with a dummy function for a specific operation.
 
void attach_periodic_boundary_condition (const dealii::types::boundary_id id_in, const dealii::types::boundary_id id_out, const int direction)
 

Detailed Description

template<int dim, typename number>
class MeltPoolDG::Simulation::WallWetting::SimulationWallWetting< dim, number >

Simulation of wetting at the bottom wall. This simulates the modelling problem described in "A conservative level set method for contact line dynamics" by Zahedi et al. (2009). DOI: https://doi.org/10.1016/j.jcp.2009.05.043.

Template Parameters
dimNumber of spatial dimensions of the simulation
numberNumeric type used for computations (e.g., float, double)

Constructor & Destructor Documentation

◆ SimulationWallWetting()

template<int dim, typename number >
MeltPoolDG::Simulation::WallWetting::SimulationWallWetting< dim, number >::SimulationWallWetting ( std::string  parameter_file,
const MPI_Comm  mpi_communicator 
)
inline

Constructor of the wall wetting simulation using wetting boundary condition.

Parameters
[in]parameter_fileParameter file associated to the simulation.
[in]mpi_communicatorMPI communicator.

Member Function Documentation

◆ add_case_specific_parameters()

template<int dim, typename number >
bool MeltPoolDG::Simulation::WallWetting::SimulationWallWetting< dim, number >::add_case_specific_parameters ( dealii::ParameterHandler &  prm)
inlinefinalvirtual

Add parameters that are specific to the simulation.

Parameters
[in,out]prmParameterHandler object to which parameters can be added
Returns
Boolean indicating if parameters should be printed

Reimplemented from MeltPoolDG::SimulationCaseBase< dim, number, spacedim >.

◆ compute_contact_angle_at_boundary()

template<int dim, typename number >
void MeltPoolDG::Simulation::WallWetting::SimulationWallWetting< dim, number >::compute_contact_angle_at_boundary ( number &  contact_angle,
const GenericDataOut< dim, double > &  generic_data_out 
) const
inline

Computes the position-weighted contact angle at the bottom boundary.

This function evaluates the contact angle between the fluid interface and the bottom wall of the domain. It traverses the interface using LevelSet::Tools::evaluate_at_interface, identifies points near the bottom boundary, and computes the contact angle using a scalar product between the wall normal and the gradient of the level set indicator.

The resulting contact angle is weighted based on the vertical distance from the interface point to the bottom wall, so that points closer to the wall have a stronger influence on the result.

Parameters
[out]contact_angleComputed contact angle value in degrees
[in]generic_data_outGenericDataOut object containing solution information

◆ create_spatial_discretization()

template<int dim, typename number >
void MeltPoolDG::Simulation::WallWetting::SimulationWallWetting< dim, number >::create_spatial_discretization ( )
inlinefinalvirtual

Create the spatial discretization of the problem.

Implements MeltPoolDG::SimulationCaseBase< dim, number, spacedim >.

◆ do_postprocessing()

template<int dim, typename number >
void MeltPoolDG::Simulation::WallWetting::SimulationWallWetting< dim, number >::do_postprocessing ( const GenericDataOut< dim, double > &  generic_data_out) const
inlinefinal

Post-process the solution to extract the contact angle at the boundary for the current time-step and write it in an output file.

Parameters
[in]generic_data_outGenericDataOut object containing solution information

◆ set_boundary_conditions()

template<int dim, typename number >
void MeltPoolDG::Simulation::WallWetting::SimulationWallWetting< dim, number >::set_boundary_conditions ( )
inlinefinalvirtual

Set boundary conditions.

Implements MeltPoolDG::SimulationCaseBase< dim, number, spacedim >.

◆ set_field_conditions()

template<int dim, typename number >
void MeltPoolDG::Simulation::WallWetting::SimulationWallWetting< dim, number >::set_field_conditions ( )
inlinefinalvirtual

Set initial level-set field condition.

Implements MeltPoolDG::SimulationCaseBase< dim, number, spacedim >.

Member Data Documentation

◆ cell_size_min

template<int dim, typename number >
number MeltPoolDG::Simulation::WallWetting::SimulationWallWetting< dim, number >::cell_size_min
private

Minimum cell size.

◆ contact_angle_deg

template<int dim, typename number >
number MeltPoolDG::Simulation::WallWetting::SimulationWallWetting< dim, number >::contact_angle_deg = 45.0
private

Contact angle on bottom wall.

◆ epsilon

template<int dim, typename number >
number MeltPoolDG::Simulation::WallWetting::SimulationWallWetting< dim, number >::epsilon
private

Interface thickness parameter.

◆ gamma

template<int dim, typename number >
number MeltPoolDG::Simulation::WallWetting::SimulationWallWetting< dim, number >::gamma
private

Normal vector filter parameter.

◆ gamma_factor

template<int dim, typename number >
number MeltPoolDG::Simulation::WallWetting::SimulationWallWetting< dim, number >::gamma_factor = 1.0
private

Factor multiplying the normal diffusion coefficient in the computation of the normal vector filter parameter as defined in Zahedi et al. (2009)

◆ output_contact_angle_evolution

template<int dim, typename number >
bool MeltPoolDG::Simulation::WallWetting::SimulationWallWetting< dim, number >::output_contact_angle_evolution = true
private

Bool output contact-angle evolution in a .txt file.

◆ postprocess_table

template<int dim, typename number >
dealii::TableHandler MeltPoolDG::Simulation::WallWetting::SimulationWallWetting< dim, number >::postprocess_table
mutableprivate

Contact angle post-processing table.

◆ time_step_factor

template<int dim, typename number >
number MeltPoolDG::Simulation::WallWetting::SimulationWallWetting< dim, number >::time_step_factor = 1.0
private

Time-step scaling factor (for sensitivity analysis on the time-step)

◆ x_interface

template<int dim, typename number >
number MeltPoolDG::Simulation::WallWetting::SimulationWallWetting< dim, number >::x_interface = 1.0
private

Interface location.

◆ x_max

template<int dim, typename number >
number MeltPoolDG::Simulation::WallWetting::SimulationWallWetting< dim, number >::x_max = 2.0
private

Maximal x value of the domain.

◆ x_min

template<int dim, typename number >
number MeltPoolDG::Simulation::WallWetting::SimulationWallWetting< dim, number >::x_min = 0.0
private

Minimal x value of the domain.

◆ y_max

template<int dim, typename number >
number MeltPoolDG::Simulation::WallWetting::SimulationWallWetting< dim, number >::y_max = x_max
private

Maximal y value of the domain.

◆ y_min

template<int dim, typename number >
number MeltPoolDG::Simulation::WallWetting::SimulationWallWetting< dim, number >::y_min = x_min
private

Minimal y value of the domain.


The documentation for this class was generated from the following file:
  • applications/mp-reinit/cases/wall_wetting_zahedi_2009_comparison/wall_wetting.hpp