MFEM v2.0
|
#include <iostream>
#include <iomanip>
#include <math.h>
#include <stdlib.h>
#include "vector.hpp"
#include "matrix.hpp"
#include "densemat.hpp"
Go to the source code of this file.
Functions | |
void | dsyevr_Eigensystem (DenseMatrix &a, Vector &ev, DenseMatrix *evect) |
void | dsyev_Eigensystem (DenseMatrix &a, Vector &ev, DenseMatrix *evect) |
void | Add (const DenseMatrix &A, const DenseMatrix &B, double alpha, DenseMatrix &C) |
C = A + alpha*B. | |
void | Mult (const DenseMatrix &b, const DenseMatrix &c, DenseMatrix &a) |
Matrix matrix multiplication. A = B * C. | |
void | CalcAdjugate (const DenseMatrix &a, DenseMatrix &adja) |
Calculate the adjugate of a matrix (for 2x2 or 3x3 matrices) | |
void | CalcAdjugateTranspose (const DenseMatrix &a, DenseMatrix &adjat) |
Calculate the transposed adjugate of a matrix (for 2x2 or 3x3 matrices) | |
void | CalcInverse (const DenseMatrix &a, DenseMatrix &inva) |
void | CalcInverseTranspose (const DenseMatrix &a, DenseMatrix &inva) |
Calculate the inverse transpose of a matrix (for 2x2 or 3x3 matrices) | |
void | MultAAt (const DenseMatrix &a, DenseMatrix &aat) |
Calculate the matrix A.At. | |
void | AddMultADAt (const DenseMatrix &A, const Vector &D, DenseMatrix &ADAt) |
ADAt += A D A^t, where D is diagonal. | |
void | MultADAt (const DenseMatrix &A, const Vector &D, DenseMatrix &ADAt) |
ADAt = A D A^t, where D is diagonal. | |
void | MultABt (const DenseMatrix &A, const DenseMatrix &B, DenseMatrix &ABt) |
Multiply a matrix A with the transpose of a matrix B: A*Bt. | |
void | AddMultABt (const DenseMatrix &A, const DenseMatrix &B, DenseMatrix &ABt) |
ABt += A * B^t. | |
void | MultAtB (const DenseMatrix &A, const DenseMatrix &B, DenseMatrix &AtB) |
Multiply the transpose of a matrix A with a matrix B: At*B. | |
void | AddMult_a_AAt (double a, const DenseMatrix &A, DenseMatrix &AAt) |
AAt += a * A * A^t. | |
void | Mult_a_AAt (double a, const DenseMatrix &A, DenseMatrix &AAt) |
AAt = a * A * A^t. | |
void | MultVVt (const Vector &v, DenseMatrix &vvt) |
Make a matrix from a vector V.Vt. | |
void | MultVWt (const Vector &v, const Vector &w, DenseMatrix &VWt) |
void | AddMultVWt (const Vector &v, const Vector &w, DenseMatrix &VWt) |
VWt += v w^t. | |
void | AddMult_a_VVt (const double a, const Vector &v, DenseMatrix &VVt) |
VVt += a * v v^t. |
void Add | ( | const DenseMatrix & | A, |
const DenseMatrix & | B, | ||
double | alpha, | ||
DenseMatrix & | C | ||
) |
C = A + alpha*B.
Definition at line 1795 of file densemat.cpp.
References DenseMatrix::Height(), and Operator::Size().
void AddMult_a_AAt | ( | double | a, |
const DenseMatrix & | A, | ||
DenseMatrix & | AAt | ||
) |
AAt += a * A * A^t.
Definition at line 2226 of file densemat.cpp.
References DenseMatrix::Height(), and DenseMatrix::Width().
Referenced by VectorFEMassIntegrator::AssembleElementMatrix(), CurlCurlIntegrator::AssembleElementMatrix(), and DiffusionIntegrator::AssembleElementMatrix().
void AddMult_a_VVt | ( | const double | a, |
const Vector & | v, | ||
DenseMatrix & | VVt | ||
) |
VVt += a * v v^t.
Definition at line 2303 of file densemat.cpp.
References DenseMatrix::Height(), mfem_error(), Vector::Size(), and DenseMatrix::Width().
Referenced by ElasticityIntegrator::AssembleElementMatrix(), DivDivIntegrator::AssembleElementMatrix(), and MassIntegrator::AssembleElementMatrix().
void AddMultABt | ( | const DenseMatrix & | A, |
const DenseMatrix & | B, | ||
DenseMatrix & | ABt | ||
) |
ABt += A * B^t.
Definition at line 2154 of file densemat.cpp.
References DenseMatrix::Height(), mfem_error(), and DenseMatrix::Width().
Referenced by DiffusionIntegrator::AssembleElementMatrix(), and VectorFECurlIntegrator::AssembleElementMatrix2().
void AddMultADAt | ( | const DenseMatrix & | A, |
const Vector & | D, | ||
DenseMatrix & | ADAt | ||
) |
ADAt += A D A^t, where D is diagonal.
Definition at line 2032 of file densemat.cpp.
References DenseMatrix::Height(), and DenseMatrix::Width().
Referenced by VectorFEMassIntegrator::AssembleElementMatrix().
void AddMultVWt | ( | const Vector & | v, |
const Vector & | w, | ||
DenseMatrix & | VWt | ||
) |
VWt += v w^t.
Definition at line 2286 of file densemat.cpp.
References DenseMatrix::Height(), mfem_error(), Vector::Size(), and DenseMatrix::Width().
Referenced by ConvectionIntegrator::AssembleElementMatrix(), VectorDivergenceIntegrator::AssembleElementMatrix2(), DerivativeIntegrator::AssembleElementMatrix2(), VectorFEDivergenceIntegrator::AssembleElementMatrix2(), and MassIntegrator::AssembleElementMatrix2().
void CalcAdjugate | ( | const DenseMatrix & | a, |
DenseMatrix & | adja | ||
) |
Calculate the adjugate of a matrix (for 2x2 or 3x3 matrices)
Definition at line 1838 of file densemat.cpp.
References DenseMatrix::Height(), mfem_error(), and Operator::Size().
Referenced by VectorDivergenceIntegrator::AssembleElementMatrix2(), and VectorFiniteElement::Project_RT().
void CalcAdjugateTranspose | ( | const DenseMatrix & | a, |
DenseMatrix & | adjat | ||
) |
Calculate the transposed adjugate of a matrix (for 2x2 or 3x3 matrices)
Definition at line 1868 of file densemat.cpp.
References DenseMatrix::Height(), mfem_error(), and Operator::Size().
Referenced by RT0TetFiniteElement::GetLocalInterpolation(), RT1HexFiniteElement::GetLocalInterpolation(), RT0HexFiniteElement::GetLocalInterpolation(), RT2QuadFiniteElement::GetLocalInterpolation(), RT1QuadFiniteElement::GetLocalInterpolation(), RT1TriangleFiniteElement::GetLocalInterpolation(), RT0QuadFiniteElement::GetLocalInterpolation(), RT0TriangleFiniteElement::GetLocalInterpolation(), VectorFiniteElement::LocalInterpolation_RT(), RT0TetFiniteElement::Project(), RT1HexFiniteElement::Project(), RT0HexFiniteElement::Project(), RT2QuadFiniteElement::Project(), RT1QuadFiniteElement::Project(), RT1TriangleFiniteElement::Project(), RT0QuadFiniteElement::Project(), RT0TriangleFiniteElement::Project(), and VectorFiniteElement::Project_RT().
void CalcInverse | ( | const DenseMatrix & | a, |
DenseMatrix & | inva | ||
) |
Calculate the inverse of a matrix (for 2x2 or 3x3 matrices) or the left inverse (A^t.A)^{-1}.A^t (for 2x1, 3x1, or 3x2 matrices)
Definition at line 1898 of file densemat.cpp.
References DenseMatrix::Data(), DenseMatrix::Det(), DenseMatrix::FNorm(), DenseMatrix::Height(), mfem_error(), and DenseMatrix::Width().
Referenced by ElasticityIntegrator::AssembleElementMatrix(), VectorDiffusionIntegrator::AssembleElementMatrix(), ConvectionIntegrator::AssembleElementMatrix(), DiffusionIntegrator::AssembleElementMatrix(), DerivativeIntegrator::AssembleElementMatrix2(), VectorFiniteElement::CalcVShape_ND(), DiffusionIntegrator::ComputeElementFlux(), GridFunction::ComputeH1Error(), GridFunction::ComputeW11Error(), Geometry::Geometry(), GridFunction::GetDerivative(), GridFunction::GetDivergence(), GridFunction::GetGradients(), GridFunction::GetVectorGradient(), and NodalFiniteElement::ProjectGrad().
void CalcInverseTranspose | ( | const DenseMatrix & | a, |
DenseMatrix & | inva | ||
) |
Calculate the inverse transpose of a matrix (for 2x2 or 3x3 matrices)
Definition at line 1983 of file densemat.cpp.
References DenseMatrix::Det(), DenseMatrix::Height(), mfem_error(), and Operator::Size().
void dsyev_Eigensystem | ( | DenseMatrix & | a, |
Vector & | ev, | ||
DenseMatrix * | evect | ||
) |
Definition at line 630 of file densemat.cpp.
References DenseMatrix::Data(), Vector::GetData(), DenseMatrix::Height(), mfem_error(), DenseMatrix::SetSize(), Vector::SetSize(), Operator::Size(), and DenseMatrix::Width().
Referenced by DenseMatrix::Eigensystem().
void dsyevr_Eigensystem | ( | DenseMatrix & | a, |
Vector & | ev, | ||
DenseMatrix * | evect | ||
) |
Definition at line 488 of file densemat.cpp.
References DenseMatrix::Data(), Vector::GetData(), DenseMatrix::Height(), mfem_error(), DenseMatrix::SetSize(), Vector::SetSize(), Operator::Size(), and DenseMatrix::Width().
void Mult | ( | const DenseMatrix & | b, |
const DenseMatrix & | c, | ||
DenseMatrix & | a | ||
) |
Matrix matrix multiplication. A = B * C.
Definition at line 1804 of file densemat.cpp.
References DenseMatrix::data, DenseMatrix::height, mfem_error(), and Operator::size.
void Mult_a_AAt | ( | double | a, |
const DenseMatrix & | A, | ||
DenseMatrix & | AAt | ||
) |
AAt = a * A * A^t.
Definition at line 2247 of file densemat.cpp.
References DenseMatrix::Height(), and DenseMatrix::Width().
void MultAAt | ( | const DenseMatrix & | a, |
DenseMatrix & | aat | ||
) |
Calculate the matrix A.At.
Definition at line 2020 of file densemat.cpp.
References DenseMatrix::Height(), and Operator::Size().
Referenced by ElasticityIntegrator::AssembleElementMatrix(), and VectorDiffusionIntegrator::AssembleElementMatrix().
void MultABt | ( | const DenseMatrix & | A, |
const DenseMatrix & | B, | ||
DenseMatrix & | ABt | ||
) |
Multiply a matrix A with the transpose of a matrix B: A*Bt.
Definition at line 2076 of file densemat.cpp.
References DenseMatrix::Data(), DenseMatrix::Height(), mfem_error(), and DenseMatrix::Width().
Referenced by CurlCurlIntegrator::AssembleElementMatrix(), DiffusionIntegrator::AssembleElementMatrix(), VectorFECurlIntegrator::AssembleElementMatrix2(), and VectorFiniteElement::CalcVShape_RT().
void MultADAt | ( | const DenseMatrix & | A, |
const Vector & | D, | ||
DenseMatrix & | ADAt | ||
) |
ADAt = A D A^t, where D is diagonal.
Definition at line 2056 of file densemat.cpp.
References DenseMatrix::Height(), and DenseMatrix::Width().
void MultAtB | ( | const DenseMatrix & | A, |
const DenseMatrix & | B, | ||
DenseMatrix & | AtB | ||
) |
Multiply the transpose of a matrix A with a matrix B: At*B.
Definition at line 2174 of file densemat.cpp.
References DenseMatrix::Data(), DenseMatrix::Height(), mfem_error(), Operator::Size(), and DenseMatrix::Width().
void MultVVt | ( | const Vector & | v, |
DenseMatrix & | vvt | ||
) |
Make a matrix from a vector V.Vt.
Definition at line 2259 of file densemat.cpp.
References Vector::Size().
Referenced by VectorMassIntegrator::AssembleElementMatrix().
void MultVWt | ( | const Vector & | v, |
const Vector & | w, | ||
DenseMatrix & | VWt | ||
) |
Definition at line 2268 of file densemat.cpp.
References DenseMatrix::Height(), mfem_error(), Operator::Size(), and Vector::Size().