CPPxDIC
C++ Digital Image Correlation library for fingertip 3D reconstruction
Loading...
Searching...
No Matches
strain_computation.h
Go to the documentation of this file.
1
11#ifndef STRAIN_COMPUTATION_H
12#define STRAIN_COMPUTATION_H
13
14#include <Eigen/Dense>
15#include <vector>
16
17namespace cppxdic {
18
24 // Director vectors
25 std::vector<Eigen::Vector3d> D1; // Reference director 1
26 std::vector<Eigen::Vector3d> D2; // Reference director 2
27 std::vector<Eigen::Vector3d> D3; // Reference normal
28 std::vector<Eigen::Vector3d> d1; // Current director 1
29 std::vector<Eigen::Vector3d> d2; // Current director 2
30 std::vector<Eigen::Vector3d> d3; // Current normal
31
32 // Reciprocal vectors
33 std::vector<Eigen::Vector3d> Drec1;
34 std::vector<Eigen::Vector3d> Drec2;
35 std::vector<double> Dnorm;
36
37 // Deformation gradient tensor (3x3 per face)
38 std::vector<Eigen::Matrix3d> Fmat;
39
40 // Cauchy-Green tensor
41 std::vector<Eigen::Matrix3d> Cmat;
42
43 // Principal stretches
44 std::vector<double> Lamda1;
45 std::vector<double> Lamda2;
46
47 // Dilatation (area change)
48 std::vector<double> J;
49
50 // Lagrangian strain tensor
51 std::vector<Eigen::Matrix3d> Emat;
52
53 // Eulerian-Almansi strain tensor
54 std::vector<Eigen::Matrix3d> emat;
55
56 // Strain magnitudes
57 std::vector<double> Emgn; // Lagrangian
58 std::vector<double> emgn; // Eulerian
59
60 // Planar principal strains (Lagrangian)
61 std::vector<double> Epc1; // Smallest
62 std::vector<double> Epc2; // Largest
63 std::vector<Eigen::Vector3d> Epc1vec; // Direction (reference)
64 std::vector<Eigen::Vector3d> Epc2vec; // Direction (reference)
65 std::vector<Eigen::Vector3d> Epc1vecCur; // Direction (current)
66 std::vector<Eigen::Vector3d> Epc2vecCur; // Direction (current)
67
68 // Planar principal strains (Eulerian)
69 std::vector<double> epc1;
70 std::vector<double> epc2;
71 std::vector<Eigen::Vector3d> epc1vec;
72 std::vector<Eigen::Vector3d> epc2vec;
73
74 // Maximum shear strain
75 std::vector<double> EShearMax; // Lagrangian
76 std::vector<double> eShearMax; // Eulerian
77 std::vector<Eigen::Vector3d> EShearMaxVec1;
78 std::vector<Eigen::Vector3d> EShearMaxVec2;
79 std::vector<Eigen::Vector3d> EShearMaxVecCur1;
80 std::vector<Eigen::Vector3d> EShearMaxVecCur2;
81 std::vector<Eigen::Vector3d> eShearMaxVec1;
82 std::vector<Eigen::Vector3d> eShearMaxVec2;
83
84 // Equivalent strain (von Mises)
85 std::vector<double> Eeq; // Lagrangian
86 std::vector<double> eeq; // Eulerian
87
88 // Area
89 std::vector<double> Area;
90};
91
97 size_t n_frames;
98 size_t n_faces;
99
100 // Each cell corresponds to one time frame
101 std::vector<DeformationResult> frames;
102};
103
114 const std::vector<int>& faces,
115 const std::vector<Eigen::Vector3d>& vertices_ref,
116 const std::vector<std::vector<Eigen::Vector3d>>& vertices_def,
117 bool cumulative = true
118);
119
129 const std::vector<int>& faces,
130 const std::vector<Eigen::Vector3d>& vertices_ref,
131 const std::vector<Eigen::Vector3d>& vertices_cur
132);
133
134} // namespace cppxdic
135
136#endif // STRAIN_COMPUTATION_H
DataSerializer - Abstract base class for format-agnostic DIC data I/O.
DeformationResult computeSingleFrameDeformation(const std::vector< int > &faces, const std::vector< Eigen::Vector3d > &vertices_ref, const std::vector< Eigen::Vector3d > &vertices_cur)
Compute deformation for a single frame.
FrameDeformationResult computeTriSurfaceDeformation(const std::vector< int > &faces, const std::vector< Eigen::Vector3d > &vertices_ref, const std::vector< std::vector< Eigen::Vector3d > > &vertices_def, bool cumulative=true)
Compute deformation and strain for triangular surface elements.
Deformation result structure Contains all computed deformation and strain measures.
std::vector< double > Area
std::vector< double > Epc1
std::vector< Eigen::Vector3d > EShearMaxVec2
std::vector< double > Epc2
std::vector< Eigen::Vector3d > d1
std::vector< Eigen::Vector3d > Epc2vec
std::vector< Eigen::Vector3d > D3
std::vector< Eigen::Vector3d > Epc2vecCur
std::vector< Eigen::Vector3d > d2
std::vector< double > Lamda1
std::vector< double > EShearMax
std::vector< Eigen::Vector3d > d3
std::vector< Eigen::Vector3d > Epc1vecCur
std::vector< Eigen::Matrix3d > emat
std::vector< Eigen::Vector3d > EShearMaxVec1
std::vector< Eigen::Vector3d > Drec1
std::vector< Eigen::Vector3d > Drec2
std::vector< Eigen::Vector3d > epc1vec
std::vector< double > epc1
std::vector< Eigen::Vector3d > D2
std::vector< Eigen::Vector3d > epc2vec
std::vector< double > Eeq
std::vector< Eigen::Vector3d > eShearMaxVec2
std::vector< double > Emgn
std::vector< Eigen::Matrix3d > Cmat
std::vector< Eigen::Vector3d > EShearMaxVecCur1
std::vector< double > eShearMax
std::vector< double > eeq
std::vector< double > Lamda2
std::vector< double > epc2
std::vector< Eigen::Matrix3d > Fmat
std::vector< double > Dnorm
std::vector< Eigen::Vector3d > Epc1vec
std::vector< Eigen::Vector3d > EShearMaxVecCur2
std::vector< double > emgn
std::vector< Eigen::Vector3d > eShearMaxVec1
std::vector< Eigen::Matrix3d > Emat
std::vector< Eigen::Vector3d > D1
Frame-based deformation result Contains deformation results for all frames.
std::vector< DeformationResult > frames