Loading...
Searching...
No Matches
terra::fe::wedge::linearforms::shell::SUPGRHS< ScalarT, VelocityVecDim > Class Template Reference

Linear form to assemble part of the RHS vector for a SUPG-stabilized method-of-lines discretization of the advection-diffusion equation. More...

#include <supg_rhs.hpp>

Public Types

using DstVectorType = linalg::VectorQ1Scalar< ScalarT >
 
using ScalarType = ScalarT
 

Public Member Functions

 SUPGRHS (const grid::shell::DistributedDomain &domain, const grid::Grid3DDataVec< ScalarT, 3 > &grid, const grid::Grid2DDataScalar< ScalarT > &radii, const linalg::VectorQ1Scalar< ScalarT > &f, const linalg::VectorQ1Vec< ScalarT, VelocityVecDim > &velocity, const ScalarT diffusivity, const linalg::OperatorApplyMode operator_apply_mode=linalg::OperatorApplyMode::Replace, const linalg::OperatorCommunicationMode operator_communication_mode=linalg::OperatorCommunicationMode::CommunicateAdditively)
 
void apply_impl (DstVectorType &dst)
 
void operator() (const int local_subdomain_id, const int x_cell, const int y_cell, const int r_cell) const
 

Detailed Description

template<typename ScalarT, int VelocityVecDim = 3>
class terra::fe::wedge::linearforms::shell::SUPGRHS< ScalarT, VelocityVecDim >

Linear form to assemble part of the RHS vector for a SUPG-stabilized method-of-lines discretization of the advection-diffusion equation.

Note
See terra::fe::wedge::operators::shell::UnsteadyAdvectionDiffusionSUPG for notes on the discretization. This linear form evaluates what is therein called \(F_{\mathrm{SUPG}}\).

Given finite element functions \(f\) and \(\mathbf{u}\), this linear form evaluates

\[ (F_{\mathrm{SUPG}})_i = \sum_E \int_E \tau_E (\mathbf{u} \cdot \nabla \phi_i) f \]

into a finite element coefficient vector, where \(\tau_E\) is the element-local SUPG stabilization parameter (computed on-the-fly, like in terra::fe::wedge::operators::shell::UnsteadyAdvectionDiffusionSUPG).

Member Typedef Documentation

◆ DstVectorType

template<typename ScalarT , int VelocityVecDim = 3>
using terra::fe::wedge::linearforms::shell::SUPGRHS< ScalarT, VelocityVecDim >::DstVectorType = linalg::VectorQ1Scalar< ScalarT >

◆ ScalarType

template<typename ScalarT , int VelocityVecDim = 3>
using terra::fe::wedge::linearforms::shell::SUPGRHS< ScalarT, VelocityVecDim >::ScalarType = ScalarT

Constructor & Destructor Documentation

◆ SUPGRHS()

template<typename ScalarT , int VelocityVecDim = 3>
terra::fe::wedge::linearforms::shell::SUPGRHS< ScalarT, VelocityVecDim >::SUPGRHS ( const grid::shell::DistributedDomain domain,
const grid::Grid3DDataVec< ScalarT, 3 > &  grid,
const grid::Grid2DDataScalar< ScalarT > &  radii,
const linalg::VectorQ1Scalar< ScalarT > &  f,
const linalg::VectorQ1Vec< ScalarT, VelocityVecDim > &  velocity,
const ScalarT  diffusivity,
const linalg::OperatorApplyMode  operator_apply_mode = linalg::OperatorApplyMode::Replace,
const linalg::OperatorCommunicationMode  operator_communication_mode = linalg::OperatorCommunicationMode::CommunicateAdditively 
)
inline

Member Function Documentation

◆ apply_impl()

template<typename ScalarT , int VelocityVecDim = 3>
void terra::fe::wedge::linearforms::shell::SUPGRHS< ScalarT, VelocityVecDim >::apply_impl ( DstVectorType dst)
inline

◆ operator()()

template<typename ScalarT , int VelocityVecDim = 3>
void terra::fe::wedge::linearforms::shell::SUPGRHS< ScalarT, VelocityVecDim >::operator() ( const int  local_subdomain_id,
const int  x_cell,
const int  y_cell,
const int  r_cell 
) const
inline

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