PolyFEM
Loading...
Searching...
No Matches
polyfem::assembler::MassMatrixAssembler Class Reference

#include <MassMatrixAssembler.hpp>

Public Member Functions

void assemble (const bool is_volume, const int size, const int n_basis, const Density &density, const std::vector< basis::ElementBases > &bases, const std::vector< basis::ElementBases > &gbases, const AssemblyValsCache &cache, StiffnessMatrix &mass) const
 Assembles the mass matrix.
 
void assemble_cross (const bool is_volume, const int size, const int n_from_basis, const std::vector< basis::ElementBases > &from_bases, const std::vector< basis::ElementBases > &from_gbases, const int n_to_basis, const std::vector< basis::ElementBases > &to_bases, const std::vector< basis::ElementBases > &to_gbases, const AssemblyValsCache &cache, StiffnessMatrix &mass) const
 Assembles the cross mass matrix between to function spaces.
 

Detailed Description

Definition at line 16 of file MassMatrixAssembler.hpp.

Member Function Documentation

◆ assemble()

void polyfem::assembler::MassMatrixAssembler::assemble ( const bool  is_volume,
const int  size,
const int  n_basis,
const Density density,
const std::vector< basis::ElementBases > &  bases,
const std::vector< basis::ElementBases > &  gbases,
const AssemblyValsCache cache,
StiffnessMatrix mass 
) const

Assembles the mass matrix.

Parameters
[in]is_volumeTrue if the mesh is volumetric.
[in]sizeSize of the problem (e.g., 1 for Laplace).
[in]n_basisNumber of basis functions (bases and geometric bases).
[in]densityClass that can evaluate per point density.
[in]basesFinite element bases.
[in]gbasesGeometric bases.
[in]cacheAssembly values cache.
[out]massOutput constructed mass matrix.

Definition at line 68 of file MassMatrixAssembler.cpp.

References polyfem::utils::create_thread_storage(), polyfem::utils::get_local_thread_storage(), polyfem::utils::maybe_parallel_for(), quadrature, and vals.

Referenced by polyfem::mesh::Remesher::project_quantities(), and polyfem::mesh::PhysicsRemesher< wmtk::TetMesh >::smooth_after().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ assemble_cross()

void polyfem::assembler::MassMatrixAssembler::assemble_cross ( const bool  is_volume,
const int  size,
const int  n_from_basis,
const std::vector< basis::ElementBases > &  from_bases,
const std::vector< basis::ElementBases > &  from_gbases,
const int  n_to_basis,
const std::vector< basis::ElementBases > &  to_bases,
const std::vector< basis::ElementBases > &  to_gbases,
const AssemblyValsCache cache,
StiffnessMatrix mass 
) const

Assembles the cross mass matrix between to function spaces.

Parameters
[in]is_volumeTrue if the mesh is volumetric.
[in]sizeSize of the problem (e.g., 1 for Laplace).
[in]n_from_basisNumber of basis functions in the initial function space.
[in]from_basesFinite element bases to map from.
[in]from_gbasesGeometric bases to map from.
[in]n_from_basisNumber of basis functions in the resulting function space.
[in]from_basesFinite element bases to map to.
[in]from_gbasesGeometric bases to map to.
[in]cacheAssembly values cache.
[out]massOutput constructed mass matrix.

Definition at line 186 of file MassMatrixAssembler.cpp.

References polyfem::utils::barycentric_coordinates(), polyfem::basis::ElementBases::bases, polyfem::utils::TetrahedronClipping::clip(), polyfem::utils::TriangleClipping::clip(), polyfem::basis::ElementBases::eval_geom_mapping(), polyfem::basis::ElementBases::evaluate_bases(), polyfem::quadrature::TetQuadrature::get_quadrature(), polyfem::quadrature::TriQuadrature::get_quadrature(), polyfem::basis::ElementBases::nodes(), quadrature, polyfem::utils::tetrahedron_volume(), polyfem::utils::triangle_area(), and val.

Referenced by polyfem::mesh::Remesher::project_quantities(), and polyfem::mesh::PhysicsRemesher< wmtk::TetMesh >::smooth_after().

Here is the call graph for this function:
Here is the caller graph for this function:

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