Build a 2d 2x2 square mesh (mesh_one) covering [0.0, 1.0] x [0.0, 1.0] with linear Quad elements. A new mesh will later be moved to this same object using MeshBase::operator = (&&).
Create an ES based on the mesh, with a single variable. We will set non-homogenous bc u = 1.0 on the bottom and right sides of the mesh. After moving a new mesh into mesh_one, we will verify that u is projected properly onto the new mesh_one topology.
Build another 2d 2x2 square mesh (mesh_two) covering [0.0, 1.0] x [0.0, 1.0] with linear Quad elements. We will later refine this mesh and replace mesh_one with it.
63 std::shared_ptr<UnstructuredMesh> mesh_one;
64 std::shared_ptr<UnstructuredMesh> mesh_two;
72 if (mesh_type.compare(
"Mesh") == 0)
74 mesh_one = std::make_shared<Mesh>(*TestCommWorld);
76 else if (mesh_type.compare(
"replicated") == 0)
78 mesh_one = std::make_shared<ReplicatedMesh>(*TestCommWorld);
80 else if (mesh_type.compare(
"distributed") == 0)
82 mesh_one = std::make_shared<DistributedMesh>(*TestCommWorld);
86 libmesh_error_msg(
"Error: specified mesh_type not understood");
104 System & system = es.add_system<
System> (
"SimpleSystem");
113 const std::set<boundary_id_type> bottom_right_bdry_ids(all_bdry_ids, all_bdry_ids + 1);
116 std::vector<unsigned int> variables = {0};
117 variables.push_back(0);
125 if (mesh_type.compare(
"Mesh") == 0)
127 mesh_two = std::make_shared<Mesh>(*TestCommWorld);
129 else if (mesh_type.compare(
"replicated") == 0)
131 mesh_two = std::make_shared<ReplicatedMesh>(*TestCommWorld);
133 else if (mesh_type.compare(
"distributed") == 0)
135 mesh_two = std::make_shared<DistributedMesh>(*TestCommWorld);
139 libmesh_error_msg(
"Error: specified mesh_type not understood");
142 #ifdef LIBMESH_ENABLE_AMR // We refine or read refined meshes for this test 143 if(mesh_creation_type.compare(
"from_memory") == 0)
158 std::unique_ptr<MeshRefinement> mesh_refinement(std::make_unique<MeshRefinement>(*mesh_two));
160 mesh_refinement->uniformly_refine(1);
162 std::unique_ptr<MeshBase> mesh_two_clone =
173 CPPUNIT_ASSERT(system.
get_mesh() == *mesh_two_clone);
189 else if (mesh_creation_type.compare(
"from_file") == 0)
191 mesh_two->read(
"meshes/mesh_assign_test_mesh.xda");
193 std::unique_ptr<MeshBase> mesh_two_clone =
204 CPPUNIT_ASSERT(system.
get_mesh() == *mesh_two_clone);
215 libmesh_error_msg(
"Error: invalid mesh two case type.");
217 #endif // LIBMESH_ENABLE_AMR This is the EquationSystems class.
const EquationSystems & get_equation_systems() const
This class allows one to associate Dirichlet boundary values with a given set of mesh boundary ids an...
const MeshBase & get_mesh() const
virtual MeshBase & assign(MeshBase &&other_mesh)=0
Shim to allow operator = (&&) to behave like a virtual function without having to be one...
Manages consistently variables, degrees of freedom, and coefficient vectors.
virtual void reinit()
Handle any mesh changes and reinitialize all the systems on the updated mesh.
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.
virtual void reinit_mesh()
Handle the association of a completely new mesh with the EquationSystem and all the Systems assigned ...
virtual void clear()
Deletes all the element and node data that is currently stored.
virtual void write(const std::string &name) const =0
Function that returns a single value that never changes.
void add_dirichlet_boundary(const DirichletBoundary &dirichlet_boundary)
Adds a copy of the specified Dirichlet boundary to the system.
virtual dof_id_type n_elem() const =0
const DofMap & get_dof_map() const