Revision 32e4bfbf98a60e761b1a1ac679774f6cb4f98b21 authored by Wenqing Wang on 30 June 2021, 13:26:29 UTC, committed by Dmitry Yu. Naumov on 05 July 2021, 10:50:41 UTC
1 parent be8cfd9
TestElementStatus.cpp
/**
* \file
* \author Karsten Rink
* \date 2013-03-14
* \brief Tests for ElementStatus class
*
* \copyright
* Copyright (c) 2012-2021, OpenGeoSys Community (http://www.opengeosys.org)
* Distributed under a Modified BSD License.
* See accompanying file LICENSE.txt or
* http://www.opengeosys.org/project/license
*/
#include <gtest/gtest.h>
#include <memory>
#include "MeshLib/ElementStatus.h"
#include "MeshLib/Elements/Element.h"
#include "MeshLib/Mesh.h"
#include "MeshLib/MeshGenerators/MeshGenerator.h"
#include "MeshLib/Node.h"
TEST(MeshLib, ElementStatus)
{
const unsigned width(100);
const unsigned elements_per_side(20);
auto const mesh = std::unique_ptr<MeshLib::Mesh>{
MeshLib::MeshGenerator::generateRegularQuadMesh(width,
elements_per_side)};
auto* const material_id_properties =
mesh->getProperties().createNewPropertyVector<int>(
"MaterialIDs", MeshLib::MeshItemType::Cell);
ASSERT_NE(nullptr, material_id_properties);
material_id_properties->resize(mesh->getNumberOfElements());
const std::vector<MeshLib::Element*> elements(mesh->getElements());
for (unsigned i = 0; i < elements_per_side; ++i)
{
for (unsigned j = 0; j < elements_per_side; ++j)
{
(*material_id_properties)[elements[i * elements_per_side + j]
->getID()] = i;
}
}
{
// all elements and nodes active
MeshLib::ElementStatus status(mesh.get());
ASSERT_EQ(elements.size(), status.getNumberOfActiveElements());
ASSERT_EQ(mesh->getNumberOfNodes(), status.getNumberOfActiveNodes());
}
{
// set material 1 to false
std::vector<int> inactiveMat{1};
MeshLib::ElementStatus status(mesh.get(), inactiveMat);
ASSERT_EQ(elements.size() - elements_per_side,
status.getNumberOfActiveElements());
}
{
// set material 0 and 1 to false
std::vector<int> inactiveMat{0, 1};
MeshLib::ElementStatus status(mesh.get(), inactiveMat);
ASSERT_EQ(elements.size() - (2 * elements_per_side),
status.getNumberOfActiveElements());
// active elements
auto& active_elements(status.getActiveElements());
ASSERT_EQ(active_elements.size(), status.getNumberOfActiveElements());
// active nodes
auto& active_nodes(status.getActiveNodes());
ASSERT_EQ(active_nodes.size(), status.getNumberOfActiveNodes());
}
}
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...