40#include <boost/test/tools/floating_point_comparison.hpp>
41#include <boost/test/unit_test.hpp>
49 char *args[] = {&arg};
57const std::vector<NekDouble>
velocity = {1., 1., 2.};
71 zoneID, domainID, domain, 3));
77 std::make_shared<LibUtilities::Equation>(interpreter,
81 zoneID, domainID, domain, 3,
origin,
axis, angularVelEqn));
88 zoneID, domainID, domain, 3,
velocity));
94 xEqn = std::make_shared<LibUtilities::Equation>(interpreter,
96 yEqn = std::make_shared<LibUtilities::Equation>(interpreter,
98 zEqn = std::make_shared<LibUtilities::Equation>(interpreter,
102 zoneID, domainID, domain, 3, xEqn, yEqn, zEqn));
115 std::vector<int> compositeIDs)
118 for (
auto &
id : compositeIDs)
141 std::map<int, SpatialDomains::ZoneBaseShPtr> zones = m.
GetZones();
142 BOOST_TEST(zones.size() == 2);
143 BOOST_TEST(zones.at(0).get() == zone1.get());
144 BOOST_TEST(zones.at(2).get() == zone2.get());
145 BOOST_TEST(zones.at(0) == zone1);
146 BOOST_TEST(zones.at(2) == zone2);
159 BOOST_TEST(interfaces.size() == 3);
161 std::make_pair(0,
"north")),
162 east = interfaces.at(
163 std::make_pair(1,
"east")),
164 south = interfaces.at(
165 std::make_pair(2,
"south"));
166 BOOST_TEST(north->m_leftInterface == interface1);
167 BOOST_TEST(north->m_rightInterface == interface2);
168 BOOST_TEST(east->m_leftInterface == interface2);
169 BOOST_TEST(east->m_rightInterface == interface3);
170 BOOST_TEST(south->m_leftInterface == interface3);
171 BOOST_TEST(south->m_rightInterface == interface1);
193 std::map<int, SpatialDomains::ZoneBaseShPtr> zones = m.
GetZones();
194 TiXmlElement *nektar =
new TiXmlElement(
"NEKTAR");
196 TiXmlElement *movement = nektar->FirstChildElement(
"MOVEMENT");
197 BOOST_TEST(movement);
198 TiXmlElement *xmlZones = movement->FirstChildElement(
"ZONES"),
199 *xmlInterfaces = movement->FirstChildElement(
"INTERFACES");
200 BOOST_TEST(xmlZones);
201 BOOST_TEST(xmlInterfaces);
205 std::vector<NekDouble> vec;
208 TiXmlElement *zone = xmlZones->FirstChildElement();
209 BOOST_TEST(zone->Value() ==
"F");
210 err = zone->QueryIntAttribute(
"ID", &
id);
211 BOOST_TEST(err == TIXML_SUCCESS);
213 err = zone->QueryStringAttribute(
"DOMAIN", &attr);
214 BOOST_TEST(err == TIXML_SUCCESS);
215 BOOST_TEST(attr ==
"D[10]");
218 zone = xmlZones->IterateChildren(zone)->ToElement();
219 BOOST_TEST(zone->Value() ==
"R");
220 err = zone->QueryIntAttribute(
"ID", &
id);
221 BOOST_TEST(err == TIXML_SUCCESS);
223 err = zone->QueryStringAttribute(
"DOMAIN", &attr);
224 BOOST_TEST(err == TIXML_SUCCESS);
225 BOOST_TEST(attr ==
"D[11]");
226 err = zone->QueryStringAttribute(
"ORIGIN", &attr);
227 BOOST_TEST(err == TIXML_SUCCESS);
230 err = zone->QueryStringAttribute(
"AXIS", &attr);
231 BOOST_TEST(err == TIXML_SUCCESS);
234 for (
int i = 0; i < 3; i++)
236 BOOST_TEST(xmlAxis[i] ==
axis[i]);
238 err = zone->QueryStringAttribute(
"ANGVEL", &attr);
239 BOOST_TEST(err == TIXML_SUCCESS);
243 zone = xmlZones->IterateChildren(zone)->ToElement();
244 BOOST_TEST(zone->Value() ==
"P");
245 err = zone->QueryIntAttribute(
"ID", &
id);
246 BOOST_TEST(err == TIXML_SUCCESS);
248 err = zone->QueryStringAttribute(
"DOMAIN", &attr);
249 BOOST_TEST(err == TIXML_SUCCESS);
250 BOOST_TEST(attr ==
"D[12]");
251 err = zone->QueryStringAttribute(
"XDEFORM", &attr);
252 BOOST_TEST(err == TIXML_SUCCESS);
254 err = zone->QueryStringAttribute(
"YDEFORM", &attr);
255 BOOST_TEST(err == TIXML_SUCCESS);
257 err = zone->QueryStringAttribute(
"ZDEFORM", &attr);
258 BOOST_TEST(err == TIXML_SUCCESS);
262 zone = xmlZones->IterateChildren(zone)->ToElement();
263 BOOST_TEST(zone->Value() ==
"T");
264 err = zone->QueryIntAttribute(
"ID", &
id);
265 BOOST_TEST(err == TIXML_SUCCESS);
267 err = zone->QueryStringAttribute(
"DOMAIN", &attr);
268 BOOST_TEST(err == TIXML_SUCCESS);
269 BOOST_TEST(attr ==
"D[13]");
270 err = zone->QueryStringAttribute(
"VELOCITY", &attr);
271 BOOST_TEST(err == TIXML_SUCCESS);
276 BOOST_TEST(xmlZones->LastChild() == zone);
281 TiXmlElement *
interface = xmlInterfaces->FirstChildElement();
282 BOOST_TEST(interface->Value() ==
"INTERFACE");
283 err = interface->QueryStringAttribute(
"NAME", &attr);
284 BOOST_TEST(err == TIXML_SUCCESS);
285 BOOST_TEST(attr ==
"north");
286 intr = interface->FirstChildElement();
287 BOOST_TEST(intr->Value() ==
"L");
288 err = intr->QueryIntAttribute(
"ID", &
id);
289 BOOST_TEST(err == TIXML_SUCCESS);
291 err = intr->QueryStringAttribute(
"BOUNDARY", &attr);
292 BOOST_TEST(err == TIXML_SUCCESS);
293 BOOST_TEST(attr ==
"C[0]");
294 intr = interface->IterateChildren(intr)->ToElement();
295 BOOST_TEST(intr->Value() ==
"R");
296 err = intr->QueryIntAttribute(
"ID", &
id);
297 BOOST_TEST(err == TIXML_SUCCESS);
299 err = intr->QueryStringAttribute(
"BOUNDARY", &attr);
300 BOOST_TEST(err == TIXML_SUCCESS);
301 BOOST_TEST(attr ==
"C[1-4]");
304 interface = xmlInterfaces->IterateChildren(interface)->ToElement();
305 BOOST_TEST(interface->Value() ==
"INTERFACE");
306 err = interface->QueryStringAttribute(
"NAME", &attr);
307 BOOST_TEST(err == TIXML_SUCCESS);
308 BOOST_TEST(attr ==
"south");
309 intr = interface->FirstChildElement();
310 BOOST_TEST(intr->Value() ==
"L");
311 err = intr->QueryIntAttribute(
"ID", &
id);
312 BOOST_TEST(err == TIXML_SUCCESS);
314 err = intr->QueryStringAttribute(
"BOUNDARY", &attr);
315 BOOST_TEST(err == TIXML_SUCCESS);
316 BOOST_TEST(attr ==
"C[5-9,11]");
317 intr = interface->IterateChildren(intr)->ToElement();
318 BOOST_TEST(intr->Value() ==
"R");
319 err = intr->QueryIntAttribute(
"ID", &
id);
320 BOOST_TEST(err == TIXML_SUCCESS);
322 err = intr->QueryStringAttribute(
"BOUNDARY", &attr);
323 BOOST_TEST(err == TIXML_SUCCESS);
324 BOOST_TEST(attr ==
"C[12]");
326 BOOST_TEST(xmlInterfaces->LastChild() == interface);
static SessionReaderSharedPtr CreateInstance(int argc, char *argv[])
Creates an instance of the SessionReader class.
General purpose memory allocation routines with the ability to allocate from thread specific memory p...
static std::shared_ptr< DataType > AllocateSharedPtr(const Args &...args)
Allocate a shared pointer from the memory pool.
unsigned int GetDimension() const
Returns the number of dimensions for the point.
static bool GenerateVector(const std::string &str, std::vector< T > &out)
Takes a comma-separated string and converts it to entries in a vector.
const std::map< int, ZoneBaseShPtr > & GetZones() const
const InterfaceCollection & GetInterfaces() const
void AddInterface(std::string name, InterfaceShPtr left, InterfaceShPtr right)
Add pair of interfaces to this data.
void AddZone(ZoneBaseShPtr zone)
Add a zone object to this Movement data.
void WriteMovement(TiXmlElement *root)
Write the MOVEMENT section of the XML file.
std::shared_ptr< Interpreter > InterpreterSharedPtr
std::shared_ptr< SessionReader > SessionReaderSharedPtr
std::shared_ptr< Equation > EquationSharedPtr
LibUtilities::SessionReaderSharedPtr CreateSession()
const std::string xEqnStr
SpatialDomains::ZoneBaseShPtr CreateZone(SpatialDomains::MovementType type, int zoneID, int domainID, LibUtilities::InterpreterSharedPtr interpreter)
Produce dummy Zone objects, containing empty domain pointers.
const std::vector< NekDouble > velocity
const NekPoint< NekDouble > origin
const std::string yEqnStr
SpatialDomains::InterfaceShPtr CreateInterface(int interfaceID, std::vector< int > compositeIDs)
Produce dummy Interface objects, containing empty domain pointers.
BOOST_AUTO_TEST_CASE(TestAddGetZones)
const std::string zEqnStr
const std::string angVelStr
std::shared_ptr< ZoneBase > ZoneBaseShPtr
std::shared_ptr< ZonePrescribe > ZonePrescribeShPtr
std::shared_ptr< ZoneTranslate > ZoneTranslateShPtr
std::shared_ptr< InterfacePair > InterfacePairShPtr
std::shared_ptr< ZoneRotate > ZoneRotateShPtr
std::shared_ptr< Interface > InterfaceShPtr
MovementType
Enum of zone movement type.
std::map< std::pair< int, std::string >, InterfacePairShPtr > InterfaceCollection
std::shared_ptr< ZoneFixed > ZoneFixedShPtr
std::map< int, CompositeSharedPtr > CompositeMap