include/meltpooldg/linear_algebra/utilities_matrixfree.hpp File Reference

Developer Documentation: include/meltpooldg/linear_algebra/utilities_matrixfree.hpp File Reference
Developer Documentation
utilities_matrixfree.hpp File Reference
#include <deal.II/lac/generic_linear_algebra.h>
#include <deal.II/matrix_free/matrix_free.h>
#include <deal.II/matrix_free/operators.h>
#include <meltpooldg/core/operator_base.hpp>
#include <meltpooldg/core/scratch_data.hpp>
#include <meltpooldg/utilities/fe_integrator.hpp>
Include dependency graph for utilities_matrixfree.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  MeltPoolDG
 Interface for a general preconditioner.
 
namespace  MeltPoolDG::Utilities
 
namespace  MeltPoolDG::Utilities::MatrixFree
 

Typedefs

template<typename number = double>
using MeltPoolDG::Utilities::MatrixFree::VectorType = dealii::LinearAlgebra::distributed::Vector< number >
 
template<typename number = double>
using MeltPoolDG::Utilities::MatrixFree::BlockVectorType = dealii::LinearAlgebra::distributed::BlockVector< number >
 

Functions

template<int dim, typename number = double, typename DoFVectorType = VectorType<number>, typename SrcRhsVectorType = VectorType<number>, typename std::enable_if_t< std::is_same_v< DoFVectorType, VectorType< number > >, int > = 0>
void MeltPoolDG::Utilities::MatrixFree::create_rhs_and_apply_dirichlet_matrixfree (OperatorMatrixFree< dim, number > &operator_base, DoFVectorType &rhs, const SrcRhsVectorType &src, const ScratchData< dim, dim, number > &scratch_data, const unsigned int dof_idx, const unsigned int dof_no_bc_idx, const bool zero_out, const std::optional< std::pair< std::vector< unsigned int >, std::vector< number > > > &additional_inhomogeneous_constraints=std::nullopt)
 
template<int dim, typename number = double, typename DoFVectorType = BlockVectorType<number>, typename SrcRhsVectorType = VectorType<number>, typename std::enable_if_t< std::is_same_v< DoFVectorType, BlockVectorType< number > >, int > = 0>
void MeltPoolDG::Utilities::MatrixFree::create_rhs_and_apply_dirichlet_matrixfree (OperatorMatrixFree< dim, number > &operator_base, DoFVectorType &rhs, const SrcRhsVectorType &src, const ScratchData< dim, dim, number > &scratch_data, const std::array< unsigned int, dim > &dof_indices_per_block, const unsigned int &dof_no_bc_idx, const bool zero_out, const std::optional< std::pair< std::vector< unsigned int >, std::vector< std::vector< number > > > > &additional_inhomogeneous_constraints=std::nullopt)
 Compute the modified right-hand side for (inhomogeneous) dirichlet boundary conditions \( x_d \), as above, but for BlockVector solutions with component-wise DoF indices.
 
template<int dim, int n_components, typename number >
void MeltPoolDG::Utilities::MatrixFree::local_apply_inverse_mass_matrix (const dealii::MatrixFree< dim, number > &matrix_free, VectorType< number > &dst, const VectorType< number > &src, const std::pair< unsigned int, unsigned int > &cell_range, const unsigned int dof_idx, const unsigned int quad_idx)