17#ifndef __B2_SINGULAR_VALUE_DECOMPOSITION_H__
18#define __B2_SINGULAR_VALUE_DECOMPOSITION_H__
23#include "b2eigen_decomposition.H"
47inline void svd_3_3(
const double A[3][3],
double U[3][3],
double S[3],
double V[3][3]) {
70 eigen_decomposition(AA, S);
73 double s1 = std::max(0.0, S[0]);
74 double s2 = std::max(0.0, S[1]);
75 double s3 = std::max(0.0, S[2]);
83 std::copy(AA[0], AA[0] + 3 * 3, V[0]);
105 for (
int i = 0; i != 3; ++i) {
106 const double s = 1.0 / std::sqrt(U[i][0] * U[i][0] + U[i][1] * U[i][1] + U[i][2] * U[i][2]);
Contains the base classes for implementing Finite Elements.
Definition b2boundary_condition.H:32
void inner_product_3_3_NT(const T a[3][3], const T b[3][3], T c[3][3])
Definition b2tensor_calculus.H:848
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