PolyDiM
C++ library for POLYtopal DIscretization Methods
Loading...
Searching...
No Matches
MapTriangle.hpp
Go to the documentation of this file.
1// _LICENSE_HEADER_
2//
3// Copyright (C) 2019 - 2025.
4// Terms register on the GPL-3.0 license.
5//
6// This file can be redistributed and/or modified under the license terms.
7//
8// See top level LICENSE file for more details.
9//
10// This file can be used citing references in CITATION.cff file.
11
12#ifndef __MapTriangle_H
13#define __MapTriangle_H
14
15#include "Eigen/Eigen"
16
17namespace Gedim
18{
20{
21 public:
23 {
24 Eigen::Matrix3d BMatrix;
25 Eigen::Matrix3d BMatrixInv;
26 Eigen::Vector3d b;
27 double DetBMatrix;
29 };
30
31 private:
34 static inline Eigen::Matrix3d BMatrix(const Eigen::Matrix3d &vertices)
35 {
36 Eigen::Matrix3d B;
37 B.row(0) << vertices(0, 1) - vertices(0, 0), vertices(0, 2) - vertices(0, 0), 0.0;
38 B.row(1) << vertices(1, 1) - vertices(1, 0), vertices(1, 2) - vertices(1, 0), 0.0;
39 B.row(2) << 0.0, 0.0, 1.0;
40 return B;
41 }
42
46 static inline Eigen::Vector3d b(const Eigen::Matrix3d &vertices)
47 {
48 return vertices.col(0);
49 }
50
51 public:
53 {
54 }
56 {
57 }
58
62 MapTriangleData Compute(const Eigen::Matrix3d &vertices) const;
63
68 static inline Eigen::MatrixXd F(const MapTriangleData &mapData, const Eigen::MatrixXd &x)
69 {
70 return (mapData.BMatrix * x).colwise() + mapData.b;
71 }
76 static inline Eigen::MatrixXd FInv(const MapTriangleData &mapData, const Eigen::MatrixXd &x)
77 {
78 return mapData.BMatrixInv * (x.colwise() - mapData.b);
79 }
84 static Eigen::MatrixXd J(const MapTriangleData &mapData, const Eigen::MatrixXd &x);
85
90 static inline Eigen::VectorXd DetJ(const MapTriangleData &mapData, const Eigen::MatrixXd &x)
91 {
92 return Eigen::VectorXd::Constant(x.cols(), mapData.DetBMatrix);
93 }
94
99 static inline double DetJ(const MapTriangleData &mapData)
100 {
101 return mapData.DetBMatrix;
102 };
103};
104} // namespace Gedim
105
106#endif // __MapTriangle_H
Eigen column vector.
Definition Eigen_Array.hpp:23
Definition MapTriangle.hpp:20
static Eigen::VectorXd DetJ(const MapTriangleData &mapData, const Eigen::MatrixXd &x)
Definition MapTriangle.hpp:90
MapTriangleData Compute(const Eigen::Matrix3d &vertices) const
Definition MapTriangle.cpp:20
MapTriangle()
Definition MapTriangle.hpp:52
static Eigen::MatrixXd F(const MapTriangleData &mapData, const Eigen::MatrixXd &x)
Definition MapTriangle.hpp:68
static Eigen::MatrixXd FInv(const MapTriangleData &mapData, const Eigen::MatrixXd &x)
Definition MapTriangle.hpp:76
static double DetJ(const MapTriangleData &mapData)
Definition MapTriangle.hpp:99
static Eigen::MatrixXd J(const MapTriangleData &mapData, const Eigen::MatrixXd &x)
Definition MapTriangle.cpp:33
~MapTriangle()
Definition MapTriangle.hpp:55
Definition Eigen_Array.cpp:22
Definition MapTriangle.hpp:23
double DetBMatrixInv
Definition MapTriangle.hpp:28
Eigen::Matrix3d BMatrixInv
Definition MapTriangle.hpp:25
Eigen::Matrix3d BMatrix
Definition MapTriangle.hpp:24
Eigen::Vector3d b
Definition MapTriangle.hpp:26
double DetBMatrix
Definition MapTriangle.hpp:27