LehrFEM++ 1.0.0
A simple Finite Element Library for teaching
|
Defines the Geometry interface and provides a number of classes that implement this interface + additional geometry related helper routines. More...
Namespaces | |
namespace | test_utils |
Defines the Geometry::test_utils module and provides a number of test functions to check geometry objects. | |
Classes | |
class | Geometry |
Interface class for shape information on a mesh cell in the spirit of parametric finite element methods More... | |
class | Parallelogram |
Affine quadrilateral = parallelogram. More... | |
class | Point |
class | QuadO1 |
Bilinear quadrilateral element shape. More... | |
class | QuadO2 |
A second-order quadrilateral in the plane or in 3D space. More... | |
class | RefinementPattern |
Abstract interface class for encoding topological local refinement More... | |
class | SegmentO1 |
A straight edge defined by the location of its two endpoints. More... | |
class | SegmentO2 |
A second-order segment in the plane or in 3D space. More... | |
class | TriaO1 |
An affine triangle in the plane or in 3D space. More... | |
class | TriaO2 |
A second-order triangle in the plane or in 3D space. More... | |
Functions | |
std::unique_ptr< Geometry > | Compose (std::unique_ptr< Geometry > &&a, std::unique_ptr< Geometry > &&b) |
Create a new geometry object that is the composition of \( \Phi_a \circ \Phi_b \). | |
double | Volume (const Geometry &geo) |
Compute the (approximate) volume (area) of a shape. | |
Eigen::MatrixXd | Corners (const Geometry &geo) |
The corners of a shape with piecewise smooth boundary. | |
void | PrintInfo (std::ostream &o, const Geometry &geom, int output_ctrl) |
std::ostream & | operator<< (std::ostream &stream, const Geometry &geom) |
bool | assertNonDegenerateQuad (const Eigen::Matrix< double, Eigen::Dynamic, 4 > &coords, double tol=1.0E-8) |
Asserting a non-degenerate bilinear quadrilateral. | |
bool | isParallelogram (const Eigen::Matrix< int, Eigen::Dynamic, Eigen::Dynamic > &polygon) |
Test whether a lattice polygon describes a logical parallelogram. | |
bool | assertNonDegenerateTriangle (const Eigen::Matrix< double, Eigen::Dynamic, 3 > &coords, double tol=1.0E-8) |
Asserting non-degenerate shape of a flat triangle. | |
Defines the Geometry interface and provides a number of classes that implement this interface + additional geometry related helper routines.
bool lf::geometry::assertNonDegenerateQuad | ( | const Eigen::Matrix< double, Eigen::Dynamic, 4 > & | coords, |
double | tol = 1.0E-8 ) |
Asserting a non-degenerate bilinear quadrilateral.
coords | w x 4 Eigen matrix whose columns contain the vertex coordinates of the quadrilateral, w = world dimension |
tol | relative tolerance for numerical tests of equality with zero |
Terminates execution in case degenerate shape is detected.
Definition at line 12 of file quad_o1.cc.
Referenced by lf::geometry::Parallelogram::Parallelogram(), lf::geometry::Parallelogram::Parallelogram(), and lf::geometry::QuadO1::QuadO1().
bool lf::geometry::assertNonDegenerateTriangle | ( | const Eigen::Matrix< double, Eigen::Dynamic, 3 > & | coords, |
double | tol = 1.0E-8 ) |
Asserting non-degenerate shape of a flat triangle.
coords | w x 3 Eigen matrix whose columns contain the vertex coordinates of the quadrilateral, w = world dimension |
tol | relative tolerance for numerical tests of equality with zero |
Terminates execution in case degenerate shape is detected.
Definition at line 10 of file tria_o1.cc.
Referenced by lf::geometry::TriaO1::TriaO1().
std::unique_ptr< Geometry > lf::geometry::Compose | ( | std::unique_ptr< Geometry > && | a, |
std::unique_ptr< Geometry > && | b ) |
Create a new geometry object that is the composition of \( \Phi_a \circ \Phi_b \).
a | The mapping \( \Phi_a \) |
b | The mapping \( \Phi_b \) |
|
inline |
The corners of a shape with piecewise smooth boundary.
geo | The geometry object |
(https://www.sam.math.ethz.ch/~grsam/NUMPDEFL/NUMPDE.pdf) Code 2.7.2.23
Additional explanations can be found in [Lecture Document] (https://www.sam.math.ethz.ch/~grsam/NUMPDEFL/NUMPDE.pdf) Paragraph 2.7.2.21.
Definition at line 261 of file geometry_interface.h.
References lf::geometry::Geometry::Global(), lf::base::RefEl::NodeCoords(), and lf::geometry::Geometry::RefEl().
bool lf::geometry::isParallelogram | ( | const Eigen::Matrix< int, Eigen::Dynamic, Eigen::Dynamic > & | polygon | ) |
Test whether a lattice polygon describes a logical parallelogram.
polygon | an integer matrix whose column contain the lattice coordinates of the vertices of the polygon. |
A polygon passes the parallelogram test, if
Definition at line 18 of file refinement_pattern.cc.
Referenced by lf::geometry::Parallelogram::ChildGeometry().
|
related |
Definition at line 26 of file print_info.cc.
|
related |
Definition at line 5 of file print_info.cc.
double lf::geometry::Volume | ( | const Geometry & | geo | ) |
Compute the (approximate) volume (area) of a shape.
geo | The geometry object |
Definition at line 11 of file geometry_interface.cc.
References lf::geometry::Geometry::DimLocal(), lf::geometry::Geometry::IntegrationElement(), lf::base::RefEl::kPoint(), lf::base::RefEl::kQuad(), lf::base::RefEl::kSegment(), lf::base::RefEl::kTria(), lf::geometry::Geometry::RefEl(), and lf::base::RefEl::ToString().
Referenced by lf::uscalfe::LinearFELocalLoadVector< SCALAR, FUNCTOR >::Eval().