OGS
FaceRule.cpp
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) OpenGeoSys Community (opengeosys.org)
2// SPDX-License-Identifier: BSD-3-Clause
3
4#include "FaceRule.h"
5
6#include <Eigen/Geometry>
7
8#include "Element.h"
9#include "MathLib/MathTools.h"
10#include "MeshLib/Node.h"
11
12namespace MeshLib
13{
15{
16 return getSurfaceNormal(e)[2] < 0;
17}
18
20{
21 Eigen::Vector3d const v =
23 return v;
24}
25
27{
28 Eigen::Vector3d const v =
30 return v;
31}
32
33Eigen::Vector3d FaceRule::getSurfaceNormal(Element const& e)
34{
35 Eigen::Vector3d const u = getFirstSurfaceVector(e);
36 Eigen::Vector3d const v = getSecondSurfaceVector(e);
37 return u.cross(v);
38}
39
40} // namespace MeshLib
Eigen::Vector3d const & asEigenVector3d() const
Definition Point3d.h:55
virtual const Node * getNode(unsigned idx) const =0
static bool testElementNodeOrder(Element const &e)
Definition FaceRule.cpp:14
static Eigen::Vector3d getSecondSurfaceVector(Element const &e)
Definition FaceRule.cpp:26
static Eigen::Vector3d getFirstSurfaceVector(Element const &e)
Definition FaceRule.cpp:19
static Eigen::Vector3d getSurfaceNormal(Element const &e)
Returns the surface normal of a 2D element.
Definition FaceRule.cpp:33