MFEM  v4.3.0
Finite element discretization library
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Pages
Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | List of all members
mfem::InvariantsEvaluator3D< scalar_t, scalar_ops > Class Template Reference

Auxiliary class for evaluating the 3x3 matrix invariants and their first and second derivatives. More...

#include <invariants.hpp>

Public Member Functions

 InvariantsEvaluator3D (const scalar_t *Jac=NULL)
 The Jacobian should use column-major storage. More...
 
 ~InvariantsEvaluator3D ()
 
void SetJacobian (const scalar_t *Jac)
 The Jacobian should use column-major storage. More...
 
void SetDerivativeMatrix (int height, const scalar_t *Deriv)
 The Deriv matrix is dof x 3, using column-major storage. More...
 
scalar_t Get_I1 ()
 
scalar_t Get_I1b ()
 
scalar_t Get_I2 ()
 
scalar_t Get_I2b ()
 
scalar_t Get_I3 ()
 
scalar_t Get_I3b ()
 
const scalar_t * Get_dI1 ()
 
const scalar_t * Get_dI1b ()
 
const scalar_t * Get_dI2 ()
 
const scalar_t * Get_dI2b ()
 
const scalar_t * Get_dI3 ()
 
const scalar_t * Get_dI3b ()
 
void Assemble_ddI1 (scalar_t w, scalar_t *A)
 
void Assemble_ddI1b (scalar_t w, scalar_t *A)
 
void Assemble_ddI2 (scalar_t w, scalar_t *A)
 
void Assemble_ddI2b (scalar_t w, scalar_t *A)
 
void Assemble_ddI3 (scalar_t w, scalar_t *A)
 
void Assemble_ddI3b (scalar_t w, scalar_t *A)
 
void Assemble_TProd (scalar_t w, const scalar_t *X, const scalar_t *Y, scalar_t *A)
 
void Assemble_TProd (scalar_t w, const scalar_t *X, scalar_t *A)
 

Protected Types

enum  EvalMasks {
  HAVE_I1 = 1, HAVE_I1b = 2, HAVE_B_offd = 4, HAVE_I2 = 8,
  HAVE_I2b = 16, HAVE_I3b = 1<<5, HAVE_I3b_p = 1<<6, HAVE_dI1 = 1<<7,
  HAVE_dI1b = 1<<8, HAVE_dI2 = 1<<9, HAVE_dI2b = 1<<10, HAVE_dI3 = 1<<11,
  HAVE_dI3b = 1<<12, HAVE_DaJ = 1<<13, HAVE_DJt = 1<<14, HAVE_DdI2t = 1<<15
}
 

Protected Member Functions

bool dont (int have_mask) const
 
void Eval_I1 ()
 
void Eval_I1b ()
 
void Eval_B_offd ()
 
void Eval_I2 ()
 
void Eval_I2b ()
 
void Eval_I3b ()
 
scalar_t Get_I3b_p ()
 
void Eval_dI1 ()
 
void Eval_dI1b ()
 
void Eval_dI2 ()
 
void Eval_dI2b ()
 
void Eval_dI3 ()
 
void Eval_dI3b ()
 
void Eval_DZt (const scalar_t *Z, scalar_t **DZt_ptr)
 
void Eval_DaJ ()
 
void Eval_DJt ()
 
void Eval_DdI2t ()
 

Protected Attributes

const scalar_t * J
 
scalar_t I1
 
scalar_t I1b
 
scalar_t I2
 
scalar_t I2b
 
scalar_t I3b
 
scalar_t I3b_p
 
scalar_t dI1 [9]
 
scalar_t dI1b [9]
 
scalar_t dI2 [9]
 
scalar_t dI2b [9]
 
scalar_t dI3 [9]
 
scalar_t dI3b [9]
 
scalar_t B [6]
 
int D_height
 
int alloc_height
 
const scalar_t * D
 
scalar_t * DaJ
 
scalar_t * DJt
 
scalar_t * DdI2t
 
scalar_t * DXt
 
scalar_t * DYt
 
int eval_state
 

Detailed Description

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
class mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >

Auxiliary class for evaluating the 3x3 matrix invariants and their first and second derivatives.

The type scalar_t must support the standard operations:

=, +=, -=, +, -, *, /, unary -, int*scalar_t, int/scalar_t, scalar_t/int

The type scalar_ops must define the static methods:

scalar_t sign(const scalar_t &);
scalar_t pow(const scalar_t &x, int a, int b); // x^(a/b)

Definition at line 494 of file invariants.hpp.

Member Enumeration Documentation

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
enum mfem::InvariantsEvaluator3D::EvalMasks
protected
Enumerator
HAVE_I1 
HAVE_I1b 
HAVE_B_offd 
HAVE_I2 
HAVE_I2b 
HAVE_I3b 
HAVE_I3b_p 
HAVE_dI1 
HAVE_dI1b 
HAVE_dI2 
HAVE_dI2b 
HAVE_dI3 
HAVE_dI3b 
HAVE_DaJ 
HAVE_DJt 
HAVE_DdI2t 

Definition at line 516 of file invariants.hpp.

Constructor & Destructor Documentation

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::InvariantsEvaluator3D ( const scalar_t *  Jac = NULL)
inline

The Jacobian should use column-major storage.

Definition at line 720 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::~InvariantsEvaluator3D ( )
inline

Definition at line 724 of file invariants.hpp.

Member Function Documentation

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
void mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::Assemble_ddI1 ( scalar_t  w,
scalar_t *  A 
)
inline

Definition at line 790 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
void mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::Assemble_ddI1b ( scalar_t  w,
scalar_t *  A 
)
inline

Definition at line 824 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
void mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::Assemble_ddI2 ( scalar_t  w,
scalar_t *  A 
)
inline

Definition at line 948 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
void mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::Assemble_ddI2b ( scalar_t  w,
scalar_t *  A 
)
inline

Definition at line 1087 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
void mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::Assemble_ddI3 ( scalar_t  w,
scalar_t *  A 
)
inline

Definition at line 1203 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
void mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::Assemble_ddI3b ( scalar_t  w,
scalar_t *  A 
)
inline

Definition at line 1250 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
void mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::Assemble_TProd ( scalar_t  w,
const scalar_t *  X,
const scalar_t *  Y,
scalar_t *  A 
)
inline

Definition at line 1294 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
void mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::Assemble_TProd ( scalar_t  w,
const scalar_t *  X,
scalar_t *  A 
)
inline

Definition at line 1321 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
bool mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::dont ( int  have_mask) const
inlineprotected

Definition at line 539 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
void mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::Eval_B_offd ( )
inlineprotected

Definition at line 554 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
void mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::Eval_DaJ ( )
inlineprotected

Definition at line 700 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
void mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::Eval_DdI2t ( )
inlineprotected

Definition at line 711 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
void mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::Eval_dI1 ( )
inlineprotected

Definition at line 594 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
void mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::Eval_dI1b ( )
inlineprotected

Definition at line 602 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
void mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::Eval_dI2 ( )
inlineprotected

Definition at line 615 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
void mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::Eval_dI2b ( )
inlineprotected

Definition at line 643 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
void mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::Eval_dI3 ( )
inlineprotected

Definition at line 659 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
void mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::Eval_dI3b ( )
inlineprotected

Definition at line 671 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
void mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::Eval_DJt ( )
inlineprotected

Definition at line 706 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
void mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::Eval_DZt ( const scalar_t *  Z,
scalar_t **  DZt_ptr 
)
inlineprotected

Definition at line 686 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
void mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::Eval_I1 ( )
inlineprotected

Definition at line 541 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
void mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::Eval_I1b ( )
inlineprotected

Definition at line 549 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
void mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::Eval_I2 ( )
inlineprotected

Definition at line 563 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
void mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::Eval_I2b ( )
inlineprotected

Definition at line 572 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
void mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::Eval_I3b ( )
inlineprotected

Definition at line 578 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
const scalar_t* mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::Get_dI1 ( )
inline

Definition at line 760 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
const scalar_t* mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::Get_dI1b ( )
inline

Definition at line 764 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
const scalar_t* mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::Get_dI2 ( )
inline

Definition at line 768 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
const scalar_t* mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::Get_dI2b ( )
inline

Definition at line 772 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
const scalar_t* mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::Get_dI3 ( )
inline

Definition at line 776 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
const scalar_t* mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::Get_dI3b ( )
inline

Definition at line 780 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
scalar_t mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::Get_I1 ( )
inline

Definition at line 753 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
scalar_t mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::Get_I1b ( )
inline

Definition at line 754 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
scalar_t mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::Get_I2 ( )
inline

Definition at line 755 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
scalar_t mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::Get_I2b ( )
inline

Definition at line 756 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
scalar_t mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::Get_I3 ( )
inline

Definition at line 757 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
scalar_t mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::Get_I3b ( )
inline

Definition at line 758 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
scalar_t mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::Get_I3b_p ( )
inlineprotected

Definition at line 584 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
void mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::SetDerivativeMatrix ( int  height,
const scalar_t *  Deriv 
)
inline

The Deriv matrix is dof x 3, using column-major storage.

Definition at line 737 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
void mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::SetJacobian ( const scalar_t *  Jac)
inline

The Jacobian should use column-major storage.

Definition at line 734 of file invariants.hpp.

Member Data Documentation

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
int mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::alloc_height
protected

Definition at line 512 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
scalar_t mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::B[6]
protected

Definition at line 510 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
const scalar_t* mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::D
protected

Definition at line 513 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
int mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::D_height
protected

Definition at line 512 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
scalar_t* mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::DaJ
protected

Definition at line 514 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
scalar_t * mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::DdI2t
protected

Definition at line 514 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
scalar_t mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::dI1[9]
protected

Definition at line 509 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
scalar_t mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::dI1b[9]
protected

Definition at line 509 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
scalar_t mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::dI2[9]
protected

Definition at line 509 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
scalar_t mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::dI2b[9]
protected

Definition at line 509 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
scalar_t mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::dI3[9]
protected

Definition at line 509 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
scalar_t mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::dI3b[9]
protected

Definition at line 509 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
scalar_t * mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::DJt
protected

Definition at line 514 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
scalar_t * mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::DXt
protected

Definition at line 514 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
scalar_t * mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::DYt
protected

Definition at line 514 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
int mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::eval_state
protected

Definition at line 537 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
scalar_t mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::I1
protected

Definition at line 505 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
scalar_t mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::I1b
protected

Definition at line 505 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
scalar_t mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::I2
protected

Definition at line 505 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
scalar_t mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::I2b
protected

Definition at line 505 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
scalar_t mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::I3b
protected

Definition at line 505 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
scalar_t mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::I3b_p
protected

Definition at line 506 of file invariants.hpp.

template<typename scalar_t, typename scalar_ops = ScalarOps<scalar_t>>
const scalar_t* mfem::InvariantsEvaluator3D< scalar_t, scalar_ops >::J
protected

Definition at line 498 of file invariants.hpp.


The documentation for this class was generated from the following file: