66#include " Eigen/Dense"
77#include " catch.hpp"
88
9- #include " handler .h"
9+ #include " map .h"
1010#include " node.h"
1111
12- // ! \brief Check node handler class for 2D case
13- TEST_CASE (" Node handler is checked for 2D case" , " [nodehandler ][2D]" ) {
12+ // ! \brief Check node map class for 2D case
13+ TEST_CASE (" Node map is checked for 2D case" , " [nodemap ][2D]" ) {
1414 // Dimension
1515 const unsigned Dim = 2 ;
1616 // Degrees of freedom
@@ -32,41 +32,52 @@ TEST_CASE("Node handler is checked for 2D case", "[nodehandler][2D]") {
3232 std::shared_ptr<mpm::NodeBase<Dim>> node2 =
3333 std::make_shared<mpm::Node<Dim, Dof, Nphases>>(id2, coords);
3434
35- // Node handler
36- auto nodehandler = std::make_shared<mpm::Handler<mpm::NodeBase<Dim>>>();
35+ // Node 3
36+ mpm::Index id3 = 2 ;
37+ std::shared_ptr<mpm::NodeBase<Dim>> node3 =
38+ std::make_shared<mpm::Node<Dim, Dof, Nphases>>(id3, coords);
3739
38- // Check insert node
39- SECTION (" Check insert node functionality" ) {
40+ // Node map
41+ auto nodemap = std::make_shared<mpm::Map<mpm::NodeBase<Dim>>>();
42+
43+ // Check insert and remove node
44+ SECTION (" Check insert and remove node functionality" ) {
4045 // Insert node 1 and check status
41- bool status1 = nodehandler->insert (node1);
42- REQUIRE (status1 == true );
46+ REQUIRE (nodemap->insert (node1) == true );
4347 // Insert node 2 and check status
44- bool status2 = nodehandler->insert (node2->id (), node2);
45- REQUIRE (status2 == true );
48+ REQUIRE (nodemap->insert (node2->id (), node2) == true );
49+ // Insert node 3 and check status
50+ REQUIRE (nodemap->insert (node3->id (), node3) == true );
4651 // Check size of node hanlder
47- REQUIRE (nodehandler->size () == 2 );
52+ REQUIRE (nodemap->size () == 3 );
53+ // Remove node 3 and check status
54+ REQUIRE (nodemap->remove (node3->id ()) == true );
55+ // Try to remove node 3 again
56+ REQUIRE (nodemap->remove (node3->id ()) == false );
57+ // Check size of node hanlder
58+ REQUIRE (nodemap->size () == 2 );
4859 }
4960
5061 SECTION (" Check operator []" ) {
5162 // Insert node 1
52- nodehandler ->insert (id1, node1);
63+ nodemap ->insert (id1, node1);
5364 // Insert node 2
54- nodehandler ->insert (id2, node2);
65+ nodemap ->insert (id2, node2);
5566
5667 // Check operator []
57- REQUIRE ((*nodehandler )[0 ]->id () == id1);
58- REQUIRE ((*nodehandler )[1 ]->id () == id2);
68+ REQUIRE ((*nodemap )[0 ]->id () == id1);
69+ REQUIRE ((*nodemap )[1 ]->id () == id2);
5970 }
6071
6172 // Check iterator
6273 SECTION (" Check node range iterator" ) {
6374 // Insert node 1
64- nodehandler ->insert (node1);
75+ nodemap ->insert (node1);
6576 // Insert node 2
66- nodehandler ->insert (node2);
77+ nodemap ->insert (node2);
6778 // Check size of node hanlder
6879 std::size_t counter = 0 ;
69- for (auto itr = nodehandler ->begin (); itr != nodehandler ->end (); ++itr) {
80+ for (auto itr = nodemap ->begin (); itr != nodemap ->end (); ++itr) {
7081 auto coords = ((*itr).second )->coordinates ();
7182 // Check if coordinates for each node is zero
7283 for (unsigned i = 0 ; i < coords.size (); ++i)
@@ -81,14 +92,14 @@ TEST_CASE("Node handler is checked for 2D case", "[nodehandler][2D]") {
8192 // Check for_each
8293 SECTION (" Check node for_each" ) {
8394 // Insert node 1
84- nodehandler ->insert (node1);
95+ nodemap ->insert (node1);
8596 // Insert node 2
86- nodehandler ->insert (node2);
97+ nodemap ->insert (node2);
8798 // Check size of node hanlder
88- REQUIRE (nodehandler ->size () == 2 );
99+ REQUIRE (nodemap ->size () == 2 );
89100
90101 // Check coordinates before updating
91- for (auto itr = nodehandler ->begin (); itr != nodehandler ->end (); ++itr) {
102+ for (auto itr = nodemap ->begin (); itr != nodemap ->end (); ++itr) {
92103 auto coords = ((*itr).second )->coordinates ();
93104 // Check if coordinates for each node is zero
94105 for (unsigned i = 0 ; i < coords.size (); ++i)
@@ -98,13 +109,13 @@ TEST_CASE("Node handler is checked for 2D case", "[nodehandler][2D]") {
98109 // Set coordinates to unity
99110 coords << 1 ., 1 .;
100111
101- // Iterate through node handler to update coordinaates
102- nodehandler ->for_each ( // function structure
112+ // Iterate through node map to update coordinaates
113+ nodemap ->for_each ( // function structure
103114 std::bind (&mpm::NodeBase<Dim>::assign_coordinates,
104115 std::placeholders::_1, coords));
105116
106117 // Check if update has gone through
107- for (auto itr = nodehandler ->begin (); itr != nodehandler ->end (); ++itr) {
118+ for (auto itr = nodemap ->begin (); itr != nodemap ->end (); ++itr) {
108119 auto coords = ((*itr).second )->coordinates ();
109120 // Check if coordinates for each node is zero
110121 for (unsigned i = 0 ; i < coords.size (); ++i)
@@ -113,8 +124,8 @@ TEST_CASE("Node handler is checked for 2D case", "[nodehandler][2D]") {
113124 }
114125}
115126
116- // ! \brief Check node handler class for 3D case
117- TEST_CASE (" Node handler is checked for 3D case" , " [nodehandler ][3D]" ) {
127+ // ! \brief Check node map class for 3D case
128+ TEST_CASE (" Node map is checked for 3D case" , " [nodemap ][3D]" ) {
118129 // Dimension
119130 const unsigned Dim = 3 ;
120131 // Degrees of freedom
@@ -136,41 +147,52 @@ TEST_CASE("Node handler is checked for 3D case", "[nodehandler][3D]") {
136147 std::shared_ptr<mpm::NodeBase<Dim>> node2 =
137148 std::make_shared<mpm::Node<Dim, Dof, Nphases>>(id2, coords);
138149
139- // Node handler
140- auto nodehandler = std::make_shared<mpm::Handler<mpm::NodeBase<Dim>>>();
150+ // Node 3
151+ mpm::Index id3 = 2 ;
152+ std::shared_ptr<mpm::NodeBase<Dim>> node3 =
153+ std::make_shared<mpm::Node<Dim, Dof, Nphases>>(id3, coords);
154+
155+ // Node map
156+ auto nodemap = std::make_shared<mpm::Map<mpm::NodeBase<Dim>>>();
141157
142158 // Check insert node
143159 SECTION (" Check insert node functionality" ) {
144160 // Insert node 1 and check status
145- bool status1 = nodehandler->insert (node1);
146- REQUIRE (status1 == true );
161+ REQUIRE (nodemap->insert (node1) == true );
147162 // Insert node 2 and check status
148- bool status2 = nodehandler->insert (node2->id (), node2);
149- REQUIRE (status2 == true );
163+ REQUIRE (nodemap->insert (node2->id (), node2) == true );
164+ // Insert node 3 and check status
165+ REQUIRE (nodemap->insert (node3->id (), node3) == true );
166+ // Check size of node hanlder
167+ REQUIRE (nodemap->size () == 3 );
168+ // Remove node 3 and check status
169+ REQUIRE (nodemap->remove (node3->id ()) == true );
170+ // Try to remove node 3 again
171+ REQUIRE (nodemap->remove (node3->id ()) == false );
150172 // Check size of node hanlder
151- REQUIRE (nodehandler ->size () == 2 );
173+ REQUIRE (nodemap ->size () == 2 );
152174 }
153175
154176 SECTION (" Check operator []" ) {
155177 // Insert node 1
156- nodehandler ->insert (id1, node1);
178+ nodemap ->insert (id1, node1);
157179 // Insert node 2
158- nodehandler ->insert (id2, node2);
180+ nodemap ->insert (id2, node2);
159181
160182 // Check operator []
161- REQUIRE ((*nodehandler )[0 ]->id () == id1);
162- REQUIRE ((*nodehandler )[1 ]->id () == id2);
183+ REQUIRE ((*nodemap )[0 ]->id () == id1);
184+ REQUIRE ((*nodemap )[1 ]->id () == id2);
163185 }
164186
165187 // Check iterator
166188 SECTION (" Check node range iterator" ) {
167189 // Insert node 1
168- nodehandler ->insert (node1);
190+ nodemap ->insert (node1);
169191 // Insert node 2
170- nodehandler ->insert (node2);
192+ nodemap ->insert (node2);
171193 // Check size of node hanlder
172194 std::size_t counter = 0 ;
173- for (auto itr = nodehandler ->begin (); itr != nodehandler ->end (); ++itr) {
195+ for (auto itr = nodemap ->begin (); itr != nodemap ->end (); ++itr) {
174196 auto coords = ((*itr).second )->coordinates ();
175197 // Check if coordinates for each node is zero
176198 for (unsigned i = 0 ; i < coords.size (); ++i)
@@ -185,13 +207,13 @@ TEST_CASE("Node handler is checked for 3D case", "[nodehandler][3D]") {
185207 // Check for_each
186208 SECTION (" Check node for_each" ) {
187209 // Insert node 1
188- nodehandler ->insert (node1);
210+ nodemap ->insert (node1);
189211 // Insert node 2
190- nodehandler ->insert (node2);
212+ nodemap ->insert (node2);
191213 // Check size of node hanlder
192- REQUIRE (nodehandler ->size () == 2 );
214+ REQUIRE (nodemap ->size () == 2 );
193215
194- for (auto itr = nodehandler ->begin (); itr != nodehandler ->end (); ++itr) {
216+ for (auto itr = nodemap ->begin (); itr != nodemap ->end (); ++itr) {
195217 auto coords = ((*itr).second )->coordinates ();
196218 // Check if coordinates for each node is zero
197219 for (unsigned i = 0 ; i < coords.size (); ++i)
@@ -201,14 +223,14 @@ TEST_CASE("Node handler is checked for 3D case", "[nodehandler][3D]") {
201223 // Set coordinates to unity
202224 coords << 1 ., 1 ., 1 .;
203225
204- // Iterate through node handler to update coordinaates
205- nodehandler ->for_each (
226+ // Iterate through node map to update coordinaates
227+ nodemap ->for_each (
206228 // function structure
207229 std::bind (&mpm::NodeBase<Dim>::assign_coordinates,
208230 std::placeholders::_1, coords));
209231
210232 // Check if update has gone through
211- for (auto itr = nodehandler ->begin (); itr != nodehandler ->end (); ++itr) {
233+ for (auto itr = nodemap ->begin (); itr != nodemap ->end (); ++itr) {
212234 auto coords = ((*itr).second )->coordinates ();
213235 // Check if coordinates for each node is zero
214236 for (unsigned i = 0 ; i < coords.size (); ++i)
0 commit comments