OGS
|
Implementation of the MeshRevision class.
Definition in file MeshRevision.cpp.
#include "MeshRevision.h"
#include <numeric>
#include <range/v3/algorithm/copy.hpp>
#include <range/v3/range/conversion.hpp>
#include <range/v3/view/transform.hpp>
#include "BaseLib/Algorithm.h"
#include "BaseLib/Logging.h"
#include "GeoLib/Grid.h"
#include "MathLib/GeometricBasics.h"
#include "MeshLib/Elements/Elements.h"
#include "MeshLib/Mesh.h"
#include "MeshLib/Properties.h"
#include "MeshLib/Utils/DuplicateMeshComponents.h"
Go to the source code of this file.
Namespaces | |
namespace | MeshToolsLib |
namespace | anonymous_namespace{MeshRevision.cpp} |
Functions | |
unsigned | MeshToolsLib::lutPrismThirdNode (unsigned const id1, unsigned const id2) |
template<typename ElementType > | |
std::unique_ptr< MeshLib::Element > | anonymous_namespace{MeshRevision.cpp}::createElement (std::span< MeshLib::Node *const > const element_nodes, std::vector< MeshLib::Node * > const &nodes, std::array< std::size_t, ElementType::n_all_nodes > const local_ids) |
unsigned | anonymous_namespace{MeshRevision.cpp}::subdivideQuad (MeshLib::Element const *const quad, std::vector< MeshLib::Node * > const &nodes, std::vector< MeshLib::Element * > &new_elements) |
Subdivides a nonplanar quad into two triangles. | |
unsigned | anonymous_namespace{MeshRevision.cpp}::subdividePrism (MeshLib::Element const *const prism, std::vector< MeshLib::Node * > const &nodes, std::vector< MeshLib::Element * > &new_elements) |
Subdivides a prism with nonplanar quad faces into two tets. | |
unsigned | anonymous_namespace{MeshRevision.cpp}::subdivideHex (MeshLib::Element const *const hex, std::vector< MeshLib::Node * > const &nodes, std::vector< MeshLib::Element * > &new_elements) |
Subdivides a Hex with nonplanar faces into tets. | |
unsigned | anonymous_namespace{MeshRevision.cpp}::subdividePyramid (MeshLib::Element const *const pyramid, std::vector< MeshLib::Node * > const &nodes, std::vector< MeshLib::Element * > &new_elements) |
Subdivides a pyramid with a nonplanar base into two tets. | |
MeshLib::Element * | anonymous_namespace{MeshRevision.cpp}::constructLine (MeshLib::Element const *const element, const std::vector< MeshLib::Node * > &nodes) |
MeshLib::Element * | anonymous_namespace{MeshRevision.cpp}::constructTri (MeshLib::Element const *const element, const std::vector< MeshLib::Node * > &nodes) |
MeshLib::Element * | anonymous_namespace{MeshRevision.cpp}::constructFourNodeElement (MeshLib::Element const *const element, std::vector< MeshLib::Node * > const &nodes, unsigned const min_elem_dim=1) |
void | anonymous_namespace{MeshRevision.cpp}::reducePyramid (MeshLib::Element const *const org_elem, unsigned const n_unique_nodes, std::vector< MeshLib::Node * > const &nodes, std::vector< MeshLib::Element * > &new_elements, unsigned const min_elem_dim) |
unsigned | anonymous_namespace{MeshRevision.cpp}::reducePrism (MeshLib::Element const *const org_elem, unsigned const n_unique_nodes, std::vector< MeshLib::Node * > const &nodes, std::vector< MeshLib::Element * > &new_elements, unsigned const min_elem_dim) |
std::array< unsigned, 4 > | anonymous_namespace{MeshRevision.cpp}::lutHexCuttingQuadNodes (unsigned id1, unsigned id2) |
unsigned | anonymous_namespace{MeshRevision.cpp}::lutHexDiametralNode (unsigned const id) |
std::pair< unsigned, unsigned > | anonymous_namespace{MeshRevision.cpp}::lutHexBackNodes (unsigned const i, unsigned const j, unsigned const k, unsigned const l) |
unsigned | anonymous_namespace{MeshRevision.cpp}::findPyramidTopNode (MeshLib::Element const &element, std::array< std::size_t, 4 > const &base_node_ids) |
unsigned | anonymous_namespace{MeshRevision.cpp}::reduceHex (MeshLib::Element const *const org_elem, unsigned const n_unique_nodes, std::vector< MeshLib::Node * > const &nodes, std::vector< MeshLib::Element * > &new_elements, unsigned const min_elem_dim) |
std::size_t | anonymous_namespace{MeshRevision.cpp}::subdivideElement (MeshLib::Element const *const element, std::vector< MeshLib::Node * > const &nodes, std::vector< MeshLib::Element * > &elements) |
std::size_t | anonymous_namespace{MeshRevision.cpp}::reduceElement (MeshLib::Element const *const element, unsigned const n_unique_nodes, std::vector< MeshLib::Node * > const &nodes, std::vector< MeshLib::Element * > &elements, unsigned const min_elem_dim) |
unsigned | anonymous_namespace{MeshRevision.cpp}::getNumberOfUniqueNodes (MeshLib::Element const *const element) |
template<typename T > | |
void | anonymous_namespace{MeshRevision.cpp}::fillNodeProperty (std::vector< T > &new_prop, std::vector< T > const &old_prop, std::vector< size_t > const &node_ids) |
template<typename T > | |
void | anonymous_namespace{MeshRevision.cpp}::fillElemProperty (std::vector< T > &new_prop, std::vector< T > const &old_prop, std::vector< size_t > const &elem_ids) |
MeshLib::Properties | anonymous_namespace{MeshRevision.cpp}::copyProperties (MeshLib::Properties const &props, std::vector< std::size_t > const &node_ids, std::vector< std::size_t > const &elem_ids) |