|
FEAT 3
Finite Element Analysis Toolbox
|
Burgers operator assembly class. More...
#include <burgers_assembler_carreau.hpp>
Public Types | |
| typedef DataType_ | DataType |
| the datatype we use here More... | |
Public Member Functions | |
| BurgersAssemblerCarreau () | |
| default constructor More... | |
| template<typename Space_ , typename CubatureFactory_ > | |
| void | assemble_matrix (LAFEM::SparseMatrixBCSR< DataType_, IndexType_, dim_, dim_ > &matrix, const LAFEM::DenseVectorBlocked< DataType_, IndexType_, dim_ > &convect, const Space_ &space, const CubatureFactory_ &cubature_factory, const DataType_ scale=DataType_(1)) const |
| Assembles the Burgers operator into a matrix. More... | |
| template<typename Space_ , typename CubatureFactory_ > | |
| void | assemble_vector (LAFEM::DenseVectorBlocked< DataType_, IndexType_, dim_ > &vector, const LAFEM::DenseVectorBlocked< DataType_, IndexType_, dim_ > &convect, const LAFEM::DenseVectorBlocked< DataType_, IndexType_, dim_ > &primal, const Space_ &space, const CubatureFactory_ &cubature_factory, const DataType_ scale=DataType_(1)) const |
| Assembles the Burgers operator into a vector. More... | |
| template<typename LocalVector_ , typename Mirror_ > | |
| void | set_sd_v_norm (const Global::Vector< LocalVector_, Mirror_ > &convect) |
| Sets the convection field norm \(\|v\|_\Omega\) for the streamline diffusion parameter delta_T. More... | |
| void | set_sd_v_norm (const LAFEM::DenseVectorBlocked< DataType_, IndexType_, dim_ > &convect) |
| Sets the convection field norm \(\|v\|_\Omega\) for the local streamline diffusion parameter delta_T. More... | |
Public Attributes | |
| DataType_ | a |
| DataType_ | beta |
| scaling parameter for convective operator K More... | |
| bool | deformation |
| specifies whether to use the deformation tensor More... | |
| bool | diff |
| DataType_ | frechet_beta |
| scaling parameter for Frechet derivative of convective operator K' More... | |
| bool | frechet_diff |
| DataType_ | lambda |
| DataType_ | mu_0 |
| DataType_ | mu_inf |
| Carreau Data Parameter. More... | |
| DataType_ | n |
| DataType_ | reg_eps |
| DataType_ | sd_delta |
| scaling parameter for streamline diffusion stabilization operator S More... | |
| DataType_ | sd_nu |
| viscosity parameter nu_S for streamline diffusion (usually equal to nu) More... | |
| DataType_ | sd_v_norm |
| velocity norm for streamline diffusion More... | |
| DataType_ | theta |
| scaling parameter for diffusive operator L (aka viscosity) More... | |
Burgers operator assembly class.
This class is responsible for assembling the scalar and vector-valued Burgers operators:
\[\mathbf{N}(v,u,\psi) := \nu \mathbf{L}(u,\psi) + \theta \mathbf{M}(u,\psi) + \beta \mathbf{K}(v,u,\psi) + \beta' \mathbf{K'(v,u,\psi)} + \delta \mathbf{S}(v,u,\psi)\]
where
\[\mathbf{L}(u,\psi) := \int_\Omega \nabla u \cdot \nabla \psi \]
\[\mathbf{L}(u,\psi) := \frac{1}{4} \int_\Omega (\nabla+\nabla^\top) u : (\nabla+\nabla^\top) \psi\]
\[\mathbf{M}(u,\psi) := \int_\Omega u\psi\]
\[\mathbf{K}(v,u,\psi) := \int_\Omega v\cdot \nabla u \psi\]
\[\mathbf{K'}(v,u,\psi) := \int_\Omega \nabla v u \psi\]
\[\mathbf{S}(v,u,\psi) := \sum_{T\in\mathcal{T}_h}\delta_{T}\int_T (v\cdot\nabla u)\cdot(v\cdot\nabla\psi)\]
where\[\delta_T := \frac{h_T}{\|v\|_\Omega}\cdot\frac{2Re_T}{1+Re_T}\qquad\textnormal{and}\qquad Re_T := \frac{\|v\|_T\cdot h_T}{\nu_\mathbf{S}}\]
Notes on Streamline Diffusion Stabilization:
The implementation of the streamline diffusion stabilization is based on Turek's CFD book (see [TurekCFD], pages 119 – 123), however, in the formula above, the local stabilization parameter \(\delta_T\) is not pre- multiplied by the global parameter \(\delta^*\), compare eq. (3.75) in the book, as we use delta as a scaling parameter for the whole operator S in the definition of the full operator N, see above. To enable streamline diffusion stabilization, you have to perform several tasks:
Definition at line 63 of file burgers_assembler_carreau.hpp.
| typedef DataType_ FEAT::Assembly::BurgersAssemblerCarreau< DataType_, IndexType_, dim_ >::DataType |
the datatype we use here
Definition at line 67 of file burgers_assembler_carreau.hpp.
|
inline |
default constructor
Definition at line 102 of file burgers_assembler_carreau.hpp.
|
inline |
Assembles the Burgers operator into a matrix.
| [in,out] | matrix | The transient matrix to be assembled. |
| [in] | convect | The transient transport vector for the convection. |
| [in] | space | The transient velocity space. |
| [in] | cubature_factory | The transient cubature factory to be used for integration. |
| [in] | scale | A scaling factor for the matrix to be assembled. |
Definition at line 140 of file burgers_assembler_carreau.hpp.
References FEAT::Math::abs(), FEAT::Assembly::BurgersAssemblerCarreau< DataType_, IndexType_, dim_ >::beta, FEAT::LAFEM::SparseMatrixBCSR< DT_, IT_, BlockHeight_, BlockWidth_ >::columns(), FEAT::Assembly::BurgersAssemblerCarreau< DataType_, IndexType_, dim_ >::deformation, FEAT::Tiny::dot(), FEAT::Tiny::Vector< T_, n_, s_ >::format(), FEAT::Assembly::BurgersAssemblerCarreau< DataType_, IndexType_, dim_ >::frechet_beta, FEAT::Assembly::BurgersAssemblerCarreau< DataType_, IndexType_, dim_ >::mu_inf, FEAT::Math::pow(), FEAT::LAFEM::SparseMatrixBCSR< DT_, IT_, BlockHeight_, BlockWidth_ >::rows(), FEAT::Assembly::BurgersAssemblerCarreau< DataType_, IndexType_, dim_ >::sd_delta, FEAT::Assembly::BurgersAssemblerCarreau< DataType_, IndexType_, dim_ >::sd_v_norm, FEAT::LAFEM::DenseVectorBlocked< DT_, IT_, BlockSize_ >::size(), FEAT::Math::sqrt(), FEAT::Assembly::BurgersAssemblerCarreau< DataType_, IndexType_, dim_ >::theta, FEAT::value, XASSERT, and XASSERTM.
|
inline |
Assembles the Burgers operator into a vector.
| [in,out] | vector | The transient vector to be assembled. |
| [in] | convect | The transient transport vector for the convection. |
| [in] | primal | The transient primal vector, usually a solution vector. |
| [in] | space | The transient velocity space. |
| [in] | cubature_factory | The transient cubature factory to be used for integration. |
| [in] | scale | A scaling factor the vector to be assembled. |
Definition at line 516 of file burgers_assembler_carreau.hpp.
References FEAT::Math::abs(), FEAT::Tiny::Matrix< T_, m_, n_, sm_, sn_ >::add_outer_product(), FEAT::Tiny::Matrix< T_, m_, n_, sm_, sn_ >::axpy(), FEAT::Tiny::Vector< T_, n_, s_ >::axpy(), FEAT::Assembly::BurgersAssemblerCarreau< DataType_, IndexType_, dim_ >::beta, FEAT::Assembly::BurgersAssemblerCarreau< DataType_, IndexType_, dim_ >::deformation, FEAT::Tiny::dot(), FEAT::Tiny::Vector< T_, n_, s_ >::format(), FEAT::Tiny::Matrix< T_, m_, n_, sm_, sn_ >::format(), FEAT::Assembly::BurgersAssemblerCarreau< DataType_, IndexType_, dim_ >::mu_inf, FEAT::Tiny::Matrix< T_, m_, n_, sm_, sn_ >::norm_frobenius(), FEAT::Math::pow(), FEAT::Tiny::Matrix< T_, m_, n_, sm_, sn_ >::set_transpose(), FEAT::LAFEM::DenseVectorBlocked< DT_, IT_, BlockSize_ >::size(), FEAT::Math::sqrt(), FEAT::Assembly::BurgersAssemblerCarreau< DataType_, IndexType_, dim_ >::theta, FEAT::value, and XASSERTM.
|
inline |
Sets the convection field norm \(\|v\|_\Omega\) for the streamline diffusion parameter delta_T.
| [in] | convect | The transient (global) convection field vector. |
Definition at line 788 of file burgers_assembler_carreau.hpp.
References FEAT::Global::Vector< LocalVector_, Mirror_ >::get_gate(), FEAT::Global::Vector< LocalVector_, Mirror_ >::local(), FEAT::Global::Gate< LocalVector_, Mirror_ >::max(), and FEAT::Assembly::BurgersAssemblerCarreau< DataType_, IndexType_, dim_ >::set_sd_v_norm().
|
inline |
Sets the convection field norm \(\|v\|_\Omega\) for the local streamline diffusion parameter delta_T.
| [in] | convect | The transient (local) convection field vector. |
Definition at line 769 of file burgers_assembler_carreau.hpp.
References FEAT::LAFEM::DenseVectorBlocked< DT_, IT_, BlockSize_ >::elements(), FEAT::Math::max(), and FEAT::LAFEM::DenseVectorBlocked< DT_, IT_, BlockSize_ >::size().
Referenced by FEAT::Assembly::BurgersAssemblerCarreau< DataType_, IndexType_, dim_ >::set_sd_v_norm().
| DataType_ FEAT::Assembly::BurgersAssemblerCarreau< DataType_, IndexType_, dim_ >::a |
Definition at line 99 of file burgers_assembler_carreau.hpp.
| DataType_ FEAT::Assembly::BurgersAssemblerCarreau< DataType_, IndexType_, dim_ >::beta |
scaling parameter for convective operator K
Definition at line 84 of file burgers_assembler_carreau.hpp.
Referenced by FEAT::Assembly::BurgersAssemblerCarreau< DataType_, IndexType_, dim_ >::assemble_matrix(), and FEAT::Assembly::BurgersAssemblerCarreau< DataType_, IndexType_, dim_ >::assemble_vector().
| bool FEAT::Assembly::BurgersAssemblerCarreau< DataType_, IndexType_, dim_ >::deformation |
specifies whether to use the deformation tensor
Definition at line 70 of file burgers_assembler_carreau.hpp.
Referenced by FEAT::Assembly::BurgersAssemblerCarreau< DataType_, IndexType_, dim_ >::assemble_matrix(), and FEAT::Assembly::BurgersAssemblerCarreau< DataType_, IndexType_, dim_ >::assemble_vector().
| bool FEAT::Assembly::BurgersAssemblerCarreau< DataType_, IndexType_, dim_ >::diff |
Definition at line 73 of file burgers_assembler_carreau.hpp.
| DataType_ FEAT::Assembly::BurgersAssemblerCarreau< DataType_, IndexType_, dim_ >::frechet_beta |
scaling parameter for Frechet derivative of convective operator K'
Definition at line 87 of file burgers_assembler_carreau.hpp.
Referenced by FEAT::Assembly::BurgersAssemblerCarreau< DataType_, IndexType_, dim_ >::assemble_matrix().
| bool FEAT::Assembly::BurgersAssemblerCarreau< DataType_, IndexType_, dim_ >::frechet_diff |
Definition at line 75 of file burgers_assembler_carreau.hpp.
| DataType_ FEAT::Assembly::BurgersAssemblerCarreau< DataType_, IndexType_, dim_ >::lambda |
Definition at line 99 of file burgers_assembler_carreau.hpp.
| DataType_ FEAT::Assembly::BurgersAssemblerCarreau< DataType_, IndexType_, dim_ >::mu_0 |
Definition at line 99 of file burgers_assembler_carreau.hpp.
| DataType_ FEAT::Assembly::BurgersAssemblerCarreau< DataType_, IndexType_, dim_ >::mu_inf |
Carreau Data Parameter.
Definition at line 99 of file burgers_assembler_carreau.hpp.
Referenced by FEAT::Assembly::BurgersAssemblerCarreau< DataType_, IndexType_, dim_ >::assemble_matrix(), and FEAT::Assembly::BurgersAssemblerCarreau< DataType_, IndexType_, dim_ >::assemble_vector().
| DataType_ FEAT::Assembly::BurgersAssemblerCarreau< DataType_, IndexType_, dim_ >::n |
Definition at line 99 of file burgers_assembler_carreau.hpp.
| DataType_ FEAT::Assembly::BurgersAssemblerCarreau< DataType_, IndexType_, dim_ >::reg_eps |
Definition at line 99 of file burgers_assembler_carreau.hpp.
| DataType_ FEAT::Assembly::BurgersAssemblerCarreau< DataType_, IndexType_, dim_ >::sd_delta |
scaling parameter for streamline diffusion stabilization operator S
Definition at line 90 of file burgers_assembler_carreau.hpp.
Referenced by FEAT::Assembly::BurgersAssemblerCarreau< DataType_, IndexType_, dim_ >::assemble_matrix().
| DataType_ FEAT::Assembly::BurgersAssemblerCarreau< DataType_, IndexType_, dim_ >::sd_nu |
viscosity parameter nu_S for streamline diffusion (usually equal to nu)
Definition at line 93 of file burgers_assembler_carreau.hpp.
| DataType_ FEAT::Assembly::BurgersAssemblerCarreau< DataType_, IndexType_, dim_ >::sd_v_norm |
velocity norm for streamline diffusion
Definition at line 96 of file burgers_assembler_carreau.hpp.
Referenced by FEAT::Assembly::BurgersAssemblerCarreau< DataType_, IndexType_, dim_ >::assemble_matrix().
| DataType_ FEAT::Assembly::BurgersAssemblerCarreau< DataType_, IndexType_, dim_ >::theta |
scaling parameter for diffusive operator L (aka viscosity)
scaling parameter for reactive operator M
Definition at line 81 of file burgers_assembler_carreau.hpp.
Referenced by FEAT::Assembly::BurgersAssemblerCarreau< DataType_, IndexType_, dim_ >::assemble_matrix(), and FEAT::Assembly::BurgersAssemblerCarreau< DataType_, IndexType_, dim_ >::assemble_vector().