OGS
MeshRevision.cpp File Reference

Detailed Description

Implementation of the MeshRevision class.

Author
Karsten Rink
Date
2014-02-14

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"
Include dependency graph for MeshRevision.cpp:

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::Elementanonymous_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::Elementanonymous_namespace{MeshRevision.cpp}::constructLine (MeshLib::Element const *const element, const std::vector< MeshLib::Node * > &nodes)
 
MeshLib::Elementanonymous_namespace{MeshRevision.cpp}::constructTri (MeshLib::Element const *const element, const std::vector< MeshLib::Node * > &nodes)
 
MeshLib::Elementanonymous_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)