AdvectionDGOperation< dim, number > Class Template Reference

Developer Documentation: MeltPoolDG::LevelSet::AdvectionDGOperation< dim, number > Class Template Reference
Developer Documentation
MeltPoolDG::LevelSet::AdvectionDGOperation< dim, number > Class Template Reference

#include <advection_DG_operation.hpp>

Inheritance diagram for MeltPoolDG::LevelSet::AdvectionDGOperation< dim, number >:
[legend]
Collaboration diagram for MeltPoolDG::LevelSet::AdvectionDGOperation< dim, number >:
[legend]

Public Member Functions

 AdvectionDGOperation (const ScratchData< dim, dim, number > &scratch_data_in, const AdvectionDiffusionData< number > &advec_diff_data_in, const TimeIntegration::TimeIterator< number > &time_iterator, const unsigned int advec_diff_dof_idx_in, const unsigned int advec_diff_quad_idx_in, const std::shared_ptr< BoundaryConditionManager< dim, number > > &boundary_conditions_in)
 
void set_initial_condition (const dealii::Function< dim > &initial_field_function) override
 
void set_initial_condition (const VectorType &solution_level_set_in)
 
void set_advection_velocity (const VectorType &advection_velocity, const unsigned int velocity_dof_idx) final
 
void set_advection_velocity_function (const std::shared_ptr< dealii::Function< dim, number > > &advection_velocity) final
 
void setup_constraints (ScratchData< dim, dim, number > &, const PeriodicBoundaryConditions< dim > &, const std::map< dealii::types::boundary_id, std::shared_ptr< dealii::Function< dim > > > &) final
 
void reinit () override
 
void init_time_advance () override
 
void solve (const bool do_finish_time_step=true) override
 
const VectorTypeget_advected_field () const override
 
VectorTypeget_advected_field () override
 
const VectorTypeget_advected_field_old () const override
 
VectorTypeget_advected_field_old () override
 
VectorTypeget_user_rhs () override
 
const VectorTypeget_user_rhs () const override
 
void attach_vectors (std::vector< VectorType * > &vectors) override
 
void attach_output_vectors (GenericDataOut< dim, number > &data_out) const override
 
- Public Member Functions inherited from MeltPoolDG::LevelSet::AdvectionDiffusionOperationBase< dim, number >
virtual ~AdvectionDiffusionOperationBase ()=default
 
virtual void finish_time_advance ()
 

Private Types

using VectorType = dealii::LinearAlgebra::distributed::Vector< number >
 
using BlockVectorType = dealii::LinearAlgebra::distributed::BlockVector< number >
 
using SparseMatrixType = dealii::TrilinosWrappers::SparseMatrix
 

Private Member Functions

void create_operator ()
 

Private Attributes

const ScratchData< dim, dim, number > & scratch_data
 
const TimeIntegration::TimeIterator< number > & time_iterator
 
const unsigned int advec_diff_dof_idx = 0
 
const unsigned int advec_diff_quad_idx = 0
 
std::shared_ptr< BoundaryConditionManager< dim, number > > boundary_conditions
 
std::shared_ptr< dealii::Function< dim > > advection_velocity_function = nullptr
 
const dealii::LinearAlgebra::distributed::Vector< number > * advection_velocity = nullptr
 
unsigned int velocity_dof_idx = dealii::numbers::invalid_unsigned_int
 
TimeIntegration::SolutionHistory< VectorTypesolution_history
 
VectorType rhs
 
VectorType user_rhs
 
std::shared_ptr< AdvectionDGOperator< dim, number > > advection_DG_operator
 
std::shared_ptr< TimeIntegration::TimeIntegratorBase< number > > time_integrator
 

Additional Inherited Members

- Public Attributes inherited from MeltPoolDG::LevelSet::AdvectionDiffusionOperationBase< dim, number >
AdvectionDiffusionData< number > advec_diff_data
 
- Protected Attributes inherited from MeltPoolDG::LevelSet::AdvectionDiffusionOperationBase< dim, number >
bool ready_for_time_advance = false
 determine whether solution vectors are prepared for time advance
 

Member Typedef Documentation

◆ BlockVectorType

template<int dim, typename number >
using MeltPoolDG::LevelSet::AdvectionDGOperation< dim, number >::BlockVectorType = dealii::LinearAlgebra::distributed::BlockVector<number>
private

◆ SparseMatrixType

template<int dim, typename number >
using MeltPoolDG::LevelSet::AdvectionDGOperation< dim, number >::SparseMatrixType = dealii::TrilinosWrappers::SparseMatrix
private

◆ VectorType

template<int dim, typename number >
using MeltPoolDG::LevelSet::AdvectionDGOperation< dim, number >::VectorType = dealii::LinearAlgebra::distributed::Vector<number>
private

Constructor & Destructor Documentation

◆ AdvectionDGOperation()

template<int dim, typename number >
MeltPoolDG::LevelSet::AdvectionDGOperation< dim, number >::AdvectionDGOperation ( const ScratchData< dim, dim, number > &  scratch_data_in,
const AdvectionDiffusionData< number > &  advec_diff_data_in,
const TimeIntegration::TimeIterator< number > &  time_iterator,
const unsigned int  advec_diff_dof_idx_in,
const unsigned int  advec_diff_quad_idx_in,
const std::shared_ptr< BoundaryConditionManager< dim, number > > &  boundary_conditions_in 
)

Member Function Documentation

◆ attach_output_vectors()

template<int dim, typename number >
void MeltPoolDG::LevelSet::AdvectionDGOperation< dim, number >::attach_output_vectors ( GenericDataOut< dim, number > &  data_out) const
overridevirtual

◆ attach_vectors()

template<int dim, typename number >
void MeltPoolDG::LevelSet::AdvectionDGOperation< dim, number >::attach_vectors ( std::vector< VectorType * > &  vectors)
overridevirtual

◆ create_operator()

template<int dim, typename number >
void MeltPoolDG::LevelSet::AdvectionDGOperation< dim, number >::create_operator ( )
private

◆ get_advected_field() [1/2]

template<int dim, typename number >
const LinearAlgebra::distributed::Vector< number > & MeltPoolDG::LevelSet::AdvectionDGOperation< dim, number >::get_advected_field ( ) const
overridevirtual

◆ get_advected_field() [2/2]

template<int dim, typename number >
LinearAlgebra::distributed::Vector< number > & MeltPoolDG::LevelSet::AdvectionDGOperation< dim, number >::get_advected_field ( )
overridevirtual

◆ get_advected_field_old() [1/2]

template<int dim, typename number >
const LinearAlgebra::distributed::Vector< number > & MeltPoolDG::LevelSet::AdvectionDGOperation< dim, number >::get_advected_field_old ( ) const
overridevirtual

◆ get_advected_field_old() [2/2]

template<int dim, typename number >
LinearAlgebra::distributed::Vector< number > & MeltPoolDG::LevelSet::AdvectionDGOperation< dim, number >::get_advected_field_old ( )
overridevirtual

◆ get_user_rhs() [1/2]

template<int dim, typename number >
const LinearAlgebra::distributed::Vector< number > & MeltPoolDG::LevelSet::AdvectionDGOperation< dim, number >::get_user_rhs ( ) const
overridevirtual

◆ get_user_rhs() [2/2]

template<int dim, typename number >
LinearAlgebra::distributed::Vector< number > & MeltPoolDG::LevelSet::AdvectionDGOperation< dim, number >::get_user_rhs ( )
overridevirtual

◆ init_time_advance()

template<int dim, typename number >
void MeltPoolDG::LevelSet::AdvectionDGOperation< dim, number >::init_time_advance ( )
overridevirtual

◆ reinit()

template<int dim, typename number >
void MeltPoolDG::LevelSet::AdvectionDGOperation< dim, number >::reinit ( )
overridevirtual

Allocates memory for the vectors based on the degrees of freedom of the DoFHandler.

Implements MeltPoolDG::LevelSet::AdvectionDiffusionOperationBase< dim, number >.

◆ set_advection_velocity()

template<int dim, typename number >
void MeltPoolDG::LevelSet::AdvectionDGOperation< dim, number >::set_advection_velocity ( const VectorType advection_velocity,
const unsigned int  velocity_dof_idx 
)
finalvirtual

◆ set_advection_velocity_function()

template<int dim, typename number >
void MeltPoolDG::LevelSet::AdvectionDGOperation< dim, number >::set_advection_velocity_function ( const std::shared_ptr< dealii::Function< dim, number > > &  advection_velocity)
finalvirtual

◆ set_initial_condition() [1/2]

template<int dim, typename number >
void MeltPoolDG::LevelSet::AdvectionDGOperation< dim, number >::set_initial_condition ( const dealii::Function< dim > &  initial_field_function)
overridevirtual

Sets the initial conditions of the advection field based on a given analytical function. The initial conditions are applied using a L_2 projection for each element. This reduces oscillations for higher order elements.

Parameters
initial_field_functionAnalytical initial condition

Implements MeltPoolDG::LevelSet::AdvectionDiffusionOperationBase< dim, number >.

◆ set_initial_condition() [2/2]

template<int dim, typename number >
void MeltPoolDG::LevelSet::AdvectionDGOperation< dim, number >::set_initial_condition ( const VectorType solution_level_set_in)

Copies a given field to the initial conditions

◆ setup_constraints()

template<int dim, typename number >
void MeltPoolDG::LevelSet::AdvectionDGOperation< dim, number >::setup_constraints ( ScratchData< dim, dim, number > &  ,
const PeriodicBoundaryConditions< dim > &  ,
const std::map< dealii::types::boundary_id, std::shared_ptr< dealii::Function< dim > > > &   
)
inlinefinalvirtual

◆ solve()

template<int dim, typename number >
void MeltPoolDG::LevelSet::AdvectionDGOperation< dim, number >::solve ( const bool  do_finish_time_step = true)
overridevirtual

Advances the solution in time by one time step according to the advection equation.

Implements MeltPoolDG::LevelSet::AdvectionDiffusionOperationBase< dim, number >.

Member Data Documentation

◆ advec_diff_dof_idx

template<int dim, typename number >
const unsigned int MeltPoolDG::LevelSet::AdvectionDGOperation< dim, number >::advec_diff_dof_idx = 0
private

◆ advec_diff_quad_idx

template<int dim, typename number >
const unsigned int MeltPoolDG::LevelSet::AdvectionDGOperation< dim, number >::advec_diff_quad_idx = 0
private

◆ advection_DG_operator

template<int dim, typename number >
std::shared_ptr<AdvectionDGOperator<dim, number> > MeltPoolDG::LevelSet::AdvectionDGOperation< dim, number >::advection_DG_operator
private

◆ advection_velocity

template<int dim, typename number >
const dealii::LinearAlgebra::distributed::Vector<number>* MeltPoolDG::LevelSet::AdvectionDGOperation< dim, number >::advection_velocity = nullptr
private

◆ advection_velocity_function

template<int dim, typename number >
std::shared_ptr<dealii::Function<dim> > MeltPoolDG::LevelSet::AdvectionDGOperation< dim, number >::advection_velocity_function = nullptr
private

◆ boundary_conditions

template<int dim, typename number >
std::shared_ptr<BoundaryConditionManager<dim, number> > MeltPoolDG::LevelSet::AdvectionDGOperation< dim, number >::boundary_conditions
private

◆ rhs

template<int dim, typename number >
VectorType MeltPoolDG::LevelSet::AdvectionDGOperation< dim, number >::rhs
private

◆ scratch_data

template<int dim, typename number >
const ScratchData<dim, dim, number>& MeltPoolDG::LevelSet::AdvectionDGOperation< dim, number >::scratch_data
private

◆ solution_history

template<int dim, typename number >
TimeIntegration::SolutionHistory<VectorType> MeltPoolDG::LevelSet::AdvectionDGOperation< dim, number >::solution_history
private

◆ time_integrator

template<int dim, typename number >
std::shared_ptr<TimeIntegration::TimeIntegratorBase<number> > MeltPoolDG::LevelSet::AdvectionDGOperation< dim, number >::time_integrator
private

◆ time_iterator

template<int dim, typename number >
const TimeIntegration::TimeIterator<number>& MeltPoolDG::LevelSet::AdvectionDGOperation< dim, number >::time_iterator
private

◆ user_rhs

template<int dim, typename number >
VectorType MeltPoolDG::LevelSet::AdvectionDGOperation< dim, number >::user_rhs
private

◆ velocity_dof_idx

template<int dim, typename number >
unsigned int MeltPoolDG::LevelSet::AdvectionDGOperation< dim, number >::velocity_dof_idx = dealii::numbers::invalid_unsigned_int
private

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