◆ build_quad_mesh()
void OverlappingTestBase::build_quad_mesh |
( |
unsigned int |
n_refinements = 0 | ) |
|
|
inlineprotectedinherited |
◆ clear()
void OverlappingTestBase::clear |
( |
| ) |
|
|
inlineprotectedinherited |
◆ CPPUNIT_TEST() [1/3]
◆ CPPUNIT_TEST() [2/3]
◆ CPPUNIT_TEST() [3/3]
◆ CPPUNIT_TEST_SUITE()
◆ CPPUNIT_TEST_SUITE_END()
OverlappingCouplingGhostingTest::CPPUNIT_TEST_SUITE_END |
( |
| ) |
|
◆ init()
void OverlappingTestBase::init |
( |
MeshBase & |
mesh | ) |
|
|
inlineprotectedinherited |
◆ run_sparsity_pattern_test()
void OverlappingCouplingGhostingTest::run_sparsity_pattern_test |
( |
const unsigned int |
n_refinements, |
|
|
bool |
build_coupling_matrix |
|
) |
| |
|
inlineprivate |
Definition at line 658 of file overlapping_coupling_test.C.
663 std::unique_ptr<CouplingMatrix> coupling_matrix;
664 if (build_coupling_matrix)
673 coupling_functor.set_coupling_matrix(coupling_matrix);
699 std::unique_ptr<PointLocatorBase> point_locator =
_mesh->sub_point_locator();
710 for (
const auto & elem :
_mesh->active_local_subdomain_elements_ptr_range(1))
712 subdomain_one_context.pre_fe_reinit(system,elem);
713 subdomain_one_context.elem_fe_reinit();
715 std::vector<dof_id_type> & rows = subdomain_one_context.get_dof_indices();
718 std::fill( subdomain_one_context.get_elem_jacobian().get_values().begin(),
719 subdomain_one_context.get_elem_jacobian().get_values().end(),
723 system.
matrix->
add_matrix( subdomain_one_context.get_elem_jacobian(), rows );
726 for (
const auto & elem :
_mesh->active_local_subdomain_elements_ptr_range(2))
729 CPPUNIT_ASSERT_EQUAL(2, (
int)elem->subdomain_id());
731 const std::vector<libMesh::Point> & qpoints = subdomain_two_context.get_element_fe(u_var)->get_xyz();
734 subdomain_two_context.pre_fe_reinit(system,elem);
735 subdomain_two_context.elem_fe_reinit();
739 std::vector<dof_id_type> & rows = subdomain_two_context.get_dof_indices();
741 std::fill( subdomain_two_context.get_elem_jacobian().get_values().begin(),
742 subdomain_two_context.get_elem_jacobian().get_values().end(),
746 system.
matrix->
add_matrix( subdomain_two_context.get_elem_jacobian(), rows );
748 std::set<subdomain_id_type> allowed_subdomains;
749 allowed_subdomains.insert(1);
755 for (
const auto & qp : qpoints )
757 const Elem * overlapping_elem = (*point_locator)( qp, &allowed_subdomains );
758 CPPUNIT_ASSERT(overlapping_elem);
761 subdomain_one_context.pre_fe_reinit(system,overlapping_elem);
762 subdomain_one_context.elem_fe_reinit();
765 std::vector<dof_id_type> & v_indices = subdomain_one_context.get_dof_indices(v_var);
766 std::vector<dof_id_type> columns(rows);
767 columns.insert( columns.end(), v_indices.begin(), v_indices.end() );
770 K21.
resize( rows.size(), columns.size() );
780 K12.
resize(v_indices.size(), rows.size());
References libMesh::DofMap::add_coupling_functor(), libMesh::SparseMatrix< T >::add_matrix(), libMesh::NumericVector< T >::build(), libMesh::DofMap::clear_sparsity(), libMesh::SparseMatrix< T >::close(), libMesh::ParallelObject::comm(), libMesh::DofMap::compute_sparsity(), libMesh::System::current_local_solution, libMesh::FEMContext::elem_fe_reinit(), libMesh::DiffContext::get_dof_indices(), libMesh::System::get_dof_map(), libMesh::DiffContext::get_elem_jacobian(), libMesh::FEMContext::get_element_fe(), libMesh::ImplicitSystem::get_matrix(), libMesh::System::get_mesh(), libMesh::DofMap::get_send_list(), libMesh::DenseMatrix< T >::get_values(), libMesh::GHOSTED, libMesh::TriangleWrapper::init(), libMesh::SparseMatrix< T >::init(), libMesh::DofMap::is_attached(), libMesh::libmesh_assert(), libMesh::ImplicitSystem::matrix, libMesh::System::n_dofs(), libMesh::System::n_local_dofs(), libMesh::FEMContext::pre_fe_reinit(), libMesh::DofMap::reinit_send_list(), libMesh::DenseMatrix< T >::resize(), libMesh::System::solution, and libMesh::System::variable_number().
◆ setUp()
void OverlappingCouplingGhostingTest::setUp |
( |
| ) |
|
|
inline |
◆ setup_coupling_matrix()
void OverlappingTestBase::setup_coupling_matrix |
( |
std::unique_ptr< CouplingMatrix > & |
coupling | ) |
|
|
inlineprotectedinherited |
◆ tearDown()
void OverlappingCouplingGhostingTest::tearDown |
( |
| ) |
|
|
inline |
◆ testSparsityCouplingMatrix()
void OverlappingCouplingGhostingTest::testSparsityCouplingMatrix |
( |
| ) |
|
|
inline |
◆ testSparsityNullCouplingMatrix()
void OverlappingCouplingGhostingTest::testSparsityNullCouplingMatrix |
( |
| ) |
|
|
inline |
◆ testSparsityNullCouplingMatrixUnifRef()
void OverlappingCouplingGhostingTest::testSparsityNullCouplingMatrixUnifRef |
( |
| ) |
|
|
inline |
◆ _es
◆ _mesh
std::unique_ptr<MeshBase> OverlappingTestBase::_mesh |
|
protectedinherited |
The documentation for this class was generated from the following file:
virtual void close()=0
Calls the SparseMatrix's internal assembly routines, ensuring that the values are consistent across p...
Manages consistently variables, degrees of freedom, and coefficient vectors.
unsigned int n_vars() const
void compute_sparsity(const MeshBase &)
Computes the sparsity pattern for the matrices corresponding to proc_id and sends that data to Linear...
bool is_attached(SparseMatrix< Number > &matrix)
Matrices should not be attached more than once.
void run_sparsity_pattern_test(const unsigned int n_refinements, bool build_coupling_matrix)
virtual void init(const numeric_index_type m, const numeric_index_type n, const numeric_index_type m_l, const numeric_index_type n_l, const numeric_index_type nnz=30, const numeric_index_type noz=10, const numeric_index_type blocksize=1)=0
Initialize SparseMatrix with the specified sizes.
const Parallel::Communicator & comm() const
std::vector< T > & get_values()
static std::unique_ptr< NumericVector< T > > build(const Parallel::Communicator &comm, const SolverPackage solver_package=libMesh::default_solver_package())
Builds a NumericVector on the processors in communicator comm using the linear solver package specifi...
void resize(const unsigned int new_m, const unsigned int new_n)
Resize the matrix.
Implements (adaptive) mesh refinement algorithms for a MeshBase.
dof_id_type n_local_dofs() const
std::unique_ptr< MeshBase > _mesh
const MeshBase & get_mesh() const
unsigned int add_variable(const std::string &var, const FEType &type, const std::set< subdomain_id_type > *const active_subdomains=nullptr)
Adds the variable var to the list of variables for this system.
std::unique_ptr< NumericVector< Number > > current_local_solution
All the values I need to compute my contribution to the simulation at hand.
std::unique_ptr< EquationSystems > _es
libMesh::Parallel::Communicator * TestCommWorld
A Point defines a location in LIBMESH_DIM dimensional Real space.
SparseMatrix< Number > * matrix
The system matrix.
The QUAD4 is an element in 2D composed of 4 nodes.
const std::vector< dof_id_type > & get_send_list() const
virtual Node *& set_node(const unsigned int i)
void reinit_send_list(MeshBase &mesh)
Clears the _send_list vector and then rebuilds it.
void setup_coupling_matrix(std::unique_ptr< CouplingMatrix > &coupling)
void build_quad_mesh(unsigned int n_refinements=0)
std::unique_ptr< NumericVector< Number > > solution
Data structure to hold solution values.
virtual void add_matrix(const DenseMatrix< T > &dm, const std::vector< numeric_index_type > &rows, const std::vector< numeric_index_type > &cols)=0
Add the full matrix dm to the SparseMatrix.
This class handles the numbering of degrees of freedom on a mesh.
void init(MeshBase &mesh)
void clear_sparsity()
Clears the sparsity pattern.
subdomain_id_type subdomain_id() const
This is the base class from which all geometric element types are derived.
unsigned short int variable_number(const std::string &var) const
const DofMap & get_dof_map() const
dof_id_type n_dofs() const
Manages consistently variables, degrees of freedom, coefficient vectors, matrices and linear solvers ...
const SparseMatrix< Number > & get_matrix(const std::string &mat_name) const
void add_coupling_functor(GhostingFunctor &coupling_functor, bool to_mesh=true)
Adds a functor which can specify coupling requirements for creation of sparse matrices.
This class provides all data required for a physics package (e.g.