FEAT 3
Finite Element Analysis Toolbox
Loading...
Searching...
No Matches
FEAT::Assembly::OldroydAssembler Class Reference

Oldroyd-B operator assembly class. More...

#include <oldroyd_assembler.hpp>

Static Public Member Functions

template<typename DT_ , typename IT_ , typename SpaceV_ , typename SpaceS_ , int dim_, int nsc_>
static void assemble_matrix (LAFEM::SparseMatrixBCSR< DT_, IT_, nsc_, nsc_ > &matrix, const LAFEM::DenseVectorBlocked< DT_, IT_, dim_ > &convect, const SpaceV_ &space_v, const SpaceS_ &space_s, const Cubature::DynamicFactory &cubature_factory, const DT_ lambda, const DT_ gamma=DT_(1), const DT_ zeta=DT_(1))
 Assembles the Oldroyd operator onto a stress matrix. More...
 

Static Protected Member Functions

template<typename DT_ >
static void core_eval (Tiny::Matrix< DT_, 3, 3, 3, 3 > &M, const Tiny::Matrix< DT_, 2, 2, 2, 2 > &G, const DT_ omega)
 Auxiliary evaluation function: symmetric 2D version. More...
 
template<typename DT_ >
static void core_eval (Tiny::Matrix< DT_, 4, 4, 4, 4 > &M, const Tiny::Matrix< DT_, 2, 2, 2, 2 > &G, const DT_ omega)
 Auxiliary evaluation function: unsymmetric 2D version. More...
 

Detailed Description

Oldroyd-B operator assembly class.

This class is responsible for assembling the upper convected time derivative operator

\[ \lambda\sigma + \gamma v\cdot\nabla\sigma - \zeta(\nabla v\cdot\sigma + \sigma\cdot\nabla v^\top)\]

which is used in the Oldroyd-B model for the stress tensor \(\sigma\) in a 3-field Stokes formulation.

This class can assemble the above mentioned operator for both symmetric and unsymmetric representations of \(\sigma\), where stress tensor is encoded as a block vector in the following fashion:

  • 2D unsymmetric (4 components): \((\sigma_{11}, \sigma_{12}, \sigma_{21}, \sigma_{22})\)
  • 2D symmetric (3 components): \((\sigma_{11}, \sigma_{22}, \sigma_{12})\)
  • 3D unsymmetric (9 components): \((\sigma_{11}, \sigma_{12}, \sigma_{13}, \sigma_{21}, \sigma_{22}, \sigma_{23}, \sigma_{31}, \sigma_{32}, \sigma_{33})\)
  • 3D symmetric (6 components): \((\sigma_{11}, \sigma_{22}, \sigma_{33}, \sigma_{12}, \sigma_{23}, \sigma_{31})\)
Author
Peter Zajac

Definition at line 36 of file oldroyd_assembler.hpp.

Member Function Documentation

◆ assemble_matrix()

template<typename DT_ , typename IT_ , typename SpaceV_ , typename SpaceS_ , int dim_, int nsc_>
static void FEAT::Assembly::OldroydAssembler::assemble_matrix ( LAFEM::SparseMatrixBCSR< DT_, IT_, nsc_, nsc_ > &  matrix,
const LAFEM::DenseVectorBlocked< DT_, IT_, dim_ > &  convect,
const SpaceV_ &  space_v,
const SpaceS_ &  space_s,
const Cubature::DynamicFactory cubature_factory,
const DT_  lambda,
const DT_  gamma = DT_(1),
const DT_  zeta = DT_(1) 
)
inlinestatic

Assembles the Oldroyd operator onto a stress matrix.

Parameters
[in,out]matrixThe transient matrix to be assembled.
[in]convectThe transient velocity field vector v.
[in]space_vThe transient velocity space.
[in]space_sThe transient stress space.
[in]cubature_factoryThe cubature factory to be used for integration.
[in]lambdaThe scaling factor \(\lambda\) for the reactive term \(\sigma\).
[in]gammaThe scaling factor \(\gamma\) for the convective term \(v\cdot\nabla\sigma\)
[in]zetaThe scaling factor \(\zeta\) for the complicated term \(\nabla v\cdot\sigma + \sigma\cdot\nabla v^\top\).

Definition at line 67 of file oldroyd_assembler.hpp.

References FEAT::Tiny::Matrix< T_, m_, n_, sm_, sn_ >::add_outer_product(), FEAT::Tiny::Matrix< T_, m_, n_, sm_, sn_ >::add_scalar_main_diag(), FEAT::Tiny::Vector< T_, n_, s_ >::axpy(), FEAT::LAFEM::SparseMatrixBCSR< DT_, IT_, BlockHeight_, BlockWidth_ >::columns(), core_eval(), FEAT::Tiny::dot(), FEAT::Tiny::Vector< T_, n_, s_ >::format(), FEAT::Tiny::Matrix< T_, m_, n_, sm_, sn_ >::format(), FEAT::grad, FEAT::jac_det, FEAT::LAFEM::SparseMatrixBCSR< DT_, IT_, BlockHeight_, BlockWidth_ >::rows(), FEAT::LAFEM::DenseVectorBlocked< DT_, IT_, BlockSize_ >::size(), FEAT::value, and XASSERTM.

◆ core_eval() [1/2]

template<typename DT_ >
static void FEAT::Assembly::OldroydAssembler::core_eval ( Tiny::Matrix< DT_, 3, 3, 3, 3 > &  M,
const Tiny::Matrix< DT_, 2, 2, 2, 2 > &  G,
const DT_  omega 
)
inlinestaticprotected

Auxiliary evaluation function: symmetric 2D version.

This function evaluates the 2D version of the term \(\nabla v\cdot\sigma + \sigma\cdot\nabla v^\top\) while exploiting the symmetry of the stress tensor, thus resulting in a (reduced) 3x3 matrix.

The components of the stress tensor are assumed to be ordered as (sigma_11, sigma_22, sigma_12).

Definition at line 305 of file oldroyd_assembler.hpp.

◆ core_eval() [2/2]

template<typename DT_ >
static void FEAT::Assembly::OldroydAssembler::core_eval ( Tiny::Matrix< DT_, 4, 4, 4, 4 > &  M,
const Tiny::Matrix< DT_, 2, 2, 2, 2 > &  G,
const DT_  omega 
)
inlinestaticprotected

Auxiliary evaluation function: unsymmetric 2D version.

This function evaluates the 2D version of the term \(\nabla v\cdot\sigma + \sigma\cdot\nabla v^\top\) without exploiting the symmetry of the stress tensor, thus resulting in a 4x4 matrix.

The components of the stress tensor are assumed to be ordered as (sigma_11, sigma_12, sigma_21, sigma_22).

Definition at line 241 of file oldroyd_assembler.hpp.

Referenced by assemble_matrix().


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