libMesh
Loading...
Searching...
No Matches
Protected Member Functions | Protected Attributes | List of all members
OverlappingTestBase Class Reference
Inheritance diagram for OverlappingTestBase:
[legend]

Protected Member Functions

void build_quad_mesh (unsigned int n_refinements=0)
 
void init ()
 
void clear ()
 
void setup_coupling_matrix (std::unique_ptr< CouplingMatrix > &coupling)
 

Protected Attributes

std::unique_ptr< MeshBase > _mesh
 
std::unique_ptr< EquationSystems > _es
 

Detailed Description

Definition at line 243 of file overlapping_coupling_test.C.

Member Function Documentation

◆ build_quad_mesh()

void OverlappingTestBase::build_quad_mesh ( unsigned int  n_refinements = 0)
inlineprotected

Definition at line 251 of file overlapping_coupling_test.C.

252 {
253 // We are making assumptions in various places about the presence
254 // of the elements on the current processor so we're restricting to
255 // ReplicatedMesh for now.
256 _mesh = std::make_unique<ReplicatedMesh>(*TestCommWorld);
257
258 _mesh->set_mesh_dimension(2);
259
260 _mesh->add_point( Point(0.0,0.0),0 );
261 _mesh->add_point( Point(1.0,0.0),1 );
262 _mesh->add_point( Point(1.0,1.0),2 );
263 _mesh->add_point( Point(0.0,1.0),3 );
264
265 {
266 Elem * elem = _mesh->add_elem(Elem::build_with_id(QUAD4, 0));
267 elem->subdomain_id() = 1;
268
269 for (unsigned int n=0; n<4; n++)
270 elem->set_node(n, _mesh->node_ptr(n));
271 }
272
273 _mesh->add_point( Point(1.0,2.0),4 );
274 _mesh->add_point( Point(0.0,2.0),5 );
275
276 {
277 Elem * elem = _mesh->add_elem(Elem::build_with_id(QUAD4, 1));
278 elem->subdomain_id() = 1;
279
280 elem->set_node(0, _mesh->node_ptr(3));
281 elem->set_node(1, _mesh->node_ptr(2));
282 elem->set_node(2, _mesh->node_ptr(4));
283 elem->set_node(3, _mesh->node_ptr(5));
284 }
285
286 _mesh->add_point( Point(0.0,0.0),6 );
287 _mesh->add_point( Point(1.0,0.0),7 );
288 _mesh->add_point( Point(1.0,2.0),8 );
289 _mesh->add_point( Point(0.0,2.0),9 );
290
291 {
292 Elem* elem = _mesh->add_elem(Elem::build_with_id(QUAD4, 2));
293 elem->subdomain_id() = 2;
294
295 elem->set_node(0, _mesh->node_ptr(6));
296 elem->set_node(1, _mesh->node_ptr(7));
297 elem->set_node(2, _mesh->node_ptr(8));
298 elem->set_node(3, _mesh->node_ptr(9));
299 }
300
301 _mesh->partitioner() = std::make_unique<OverlappingTestPartitioner>();
302
303 _mesh->prepare_for_use();
304
305#ifdef LIBMESH_ENABLE_AMR
306 if (n_refinements > 0)
307 {
308 MeshRefinement refine(*_mesh);
309 refine.uniformly_refine(n_refinements);
310 }
311#else
312 CPPUNIT_ASSERT_EQUAL(n_refinements, 0u);
313#endif // LIBMESH_ENABLE_AMR
314 }
std::unique_ptr< MeshBase > _mesh
This is the base class from which all geometric element types are derived.
Definition elem.h:96
virtual Node *& set_node(const unsigned int i)
Definition elem.h:2688
static std::unique_ptr< Elem > build_with_id(const ElemType type, dof_id_type id)
Calls the build() method above with a nullptr parent, and additionally sets the newly-created Elem's ...
Definition elem.C:496
subdomain_id_type subdomain_id() const
Definition elem.h:2712
Implements (adaptive) mesh refinement algorithms for a MeshBase.
A Point defines a location in LIBMESH_DIM dimensional Real space.
Definition point.h:41

References _mesh, libMesh::Elem::build_with_id(), libMesh::QUAD4, libMesh::Elem::set_node(), libMesh::Elem::subdomain_id(), TestCommWorld, and libMesh::MeshRefinement::uniformly_refine().

Referenced by OverlappingAlgebraicGhostingTest::run_ghosting_test(), OverlappingCouplingGhostingTest::run_sparsity_pattern_test(), and OverlappingFunctorTest::setUp().

◆ clear()

void OverlappingTestBase::clear ( )
inlineprotected

Definition at line 336 of file overlapping_coupling_test.C.

337 {
338 _es.reset();
339 _mesh.reset();
340 }
std::unique_ptr< EquationSystems > _es

References _es, and _mesh.

Referenced by OverlappingFunctorTest::tearDown(), OverlappingAlgebraicGhostingTest::tearDown(), and OverlappingCouplingGhostingTest::tearDown().

◆ init()

void OverlappingTestBase::init ( )
inlineprotected

Definition at line 316 of file overlapping_coupling_test.C.

317 {
318 _es = std::make_unique<EquationSystems>(*_mesh);
319 LinearImplicitSystem & sys = _es->add_system<LinearImplicitSystem> ("SimpleSystem");
320
321 std::set<subdomain_id_type> sub_one;
322 sub_one.insert(1);
323
324 std::set<subdomain_id_type> sub_two;
325 sub_two.insert(2);
326
327 sys.add_variable("U", FIRST, LAGRANGE, &sub_two);
328 sys.add_variable("L", FIRST, LAGRANGE, &sub_two);
329
330 sys.add_variable("V", FIRST, LAGRANGE, &sub_one);
331 sys.add_variable("p", FIRST, LAGRANGE, &sub_one);
332
333 _es->init();
334 }
Manages consistently variables, degrees of freedom, coefficient vectors, matrices and linear solvers ...
unsigned int add_variable(std::string_view 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.
Definition system.C:1344

References _es, _mesh, libMesh::System::add_variable(), libMesh::FIRST, and libMesh::LAGRANGE.

Referenced by OverlappingAlgebraicGhostingTest::run_ghosting_test(), OverlappingCouplingGhostingTest::run_sparsity_pattern_test(), and OverlappingFunctorTest::setUp().

◆ setup_coupling_matrix()

void OverlappingTestBase::setup_coupling_matrix ( std::unique_ptr< CouplingMatrix > &  coupling)
inlineprotected

Definition at line 342 of file overlapping_coupling_test.C.

343 {
344 System & system = _es->get_system("SimpleSystem");
345
346 coupling = std::make_unique<CouplingMatrix>(system.n_vars());
347
348 const unsigned int u_var = system.variable_number("U");
349 const unsigned int l_var = system.variable_number("L");
350 const unsigned int v_var = system.variable_number("V");
351 const unsigned int p_var = system.variable_number("p");
352
353 // Only adding the overlapping couplings since the primary ones should
354 // be there by default.
355 (*coupling)(u_var,v_var) = true;
356 (*coupling)(l_var,v_var) = true;
357 (*coupling)(l_var,p_var) = true;
358 (*coupling)(v_var,u_var) = true;
359 (*coupling)(v_var,l_var) = true;
360 }
Manages consistently variables, degrees of freedom, and coefficient vectors.
Definition system.h:100
unsigned int variable_number(std::string_view var) const
Definition system.C:1398
unsigned int n_vars() const
Definition system.C:2674

References _es, libMesh::System::n_vars(), and libMesh::System::variable_number().

Referenced by OverlappingAlgebraicGhostingTest::run_ghosting_test(), and OverlappingCouplingGhostingTest::run_sparsity_pattern_test().

Member Data Documentation

◆ _es

std::unique_ptr<EquationSystems> OverlappingTestBase::_es
protected

◆ _mesh

std::unique_ptr<MeshBase> OverlappingTestBase::_mesh
protected

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