b2api
B2000++ API Reference Manual, VERSION 4.6
 
Loading...
Searching...
No Matches
b2right_stretch_tensor.H
Go to the documentation of this file.
1//---------------------------------------------------------------------------
2// b2right_stretch_tensor.H --
3//
4// Compute the right stretch tensor and its derivatives.
5//
6// written by Thomas Ludwig.
7//
8// Copyright (c) 2011-2012 SMR Engineering & Development SA
9// 2502 Bienne, Switzerland
10//
11// All Rights Reserved. Proprietary source code. The contents of
12// this file may not be disclosed to third parties, copied or
13// duplicated in any form, in whole or in part, without the prior
14// written permission of SMR.
15//---------------------------------------------------------------------------
16
17#ifndef __B2_RIGHT_STRETCH_TENSOR_H__
18#define __B2_RIGHT_STRETCH_TENSOR_H__
19
20#include <algorithm>
21#include <cmath>
22
24#include "b2tensor_calculus.H"
25
32namespace b2000 {
33
38inline void polar_decomposition(const double F[3][3], double R[3][3], double U[3][3]) {
39 double u[3][3];
40 double s[3];
41 double v[3][3];
42
43 svd_3_3(F, u, s, v);
44 inner_product_3_3_NN(u, v, R);
45 inner_product_3_3_TN(R, F, U);
46}
47
59public:
62
64 RightStretchTensor_3_3(const double F[3][3], const bool second = false) { compute(F, second); }
65
77 void compute(const double F[3][3], const bool second = false);
78
83 void compute_numerically(const double F[3][3], const bool second);
84
88 static bool check(const double F[3][3], const bool verbose = true);
89
90private:
91 double u[3][3];
92 double s[3];
93 double v[3][3];
94
95 double Y[6];
96 double DY[6];
97
98 double YU[6];
99 double DYU[6];
100
101 double RY[9];
102 double DRY[9];
103
104 double RYU[9];
105 double DRYU[9];
106
107public:
109 double R_3_3[3][3];
110
113 double U_3_3[3][3];
114
116 double R[9];
117
119 double U[6];
120
123 double DU[6][9];
124
127 double DR[9][9];
128
132 double DDU[6][9][9];
133};
134} // namespace b2000
135
136#endif /* __B2_RIGHT_STRETCH_TENSOR_H__ */
Definition b2right_stretch_tensor.H:58
double DU[6][9]
Definition b2right_stretch_tensor.H:123
double DR[9][9]
Definition b2right_stretch_tensor.H:127
double DDU[6][9][9]
Definition b2right_stretch_tensor.H:132
RightStretchTensor_3_3()
Definition b2right_stretch_tensor.H:61
double U_3_3[3][3]
Definition b2right_stretch_tensor.H:113
void compute(const double F[3][3], const bool second=false)
Definition b2right_stretch_tensor.C:29
RightStretchTensor_3_3(const double F[3][3], const bool second=false)
Definition b2right_stretch_tensor.H:64
double R_3_3[3][3]
Definition b2right_stretch_tensor.H:109
double U[6]
Definition b2right_stretch_tensor.H:119
double R[9]
Definition b2right_stretch_tensor.H:116
Contains the base classes for implementing Finite Elements.
Definition b2boundary_condition.H:32
void inner_product_3_3_NN(const T a[3][3], const T b[3][3], T c[3][3])
Definition b2tensor_calculus.H:808
void polar_decomposition(const double F[3][3], double R[3][3], double U[3][3])
Definition b2right_stretch_tensor.H:38
void inner_product_3_3_TN(const T a[3][3], const T b[3][3], T c[3][3])
Definition b2tensor_calculus.H:823
void svd_3_3(const double A[3][3], double U[3][3], double S[3], double V[3][3])
Definition b2singular_value_decomposition.H:47