DUNE-ACFEM (unstable)

Dune::ACFem::PDEModel::FluidSelfTransportModel< FunctionSpace > Class Template Reference

Define a model for the "Navier-Stokes" non-lineariry. More...

#include <dune/acfem/models/modules/fluidselftransportmodel.hh>

+ Collaboration diagram for Dune::ACFem::PDEModel::FluidSelfTransportModel< FunctionSpace >:

Public Member Functions

template<class Intersection >
auto classifyBoundary (const Intersection &intersection)
 Bind to the given intersection and classify the components w.r.t. More...
 
JacobianRangeType flux (const RangeType &value) const
 Evaluate \(A(x, u)\nabla u(x)\) in local coordinates. More...
 
template<class Point >
JacobianRangeType linearizedFlux (const RangeType &uBar, const RangeType &value) const
 Evaluate the linearized flux in local coordinates. More...
 
RangeType fluxDivergence (const RangeType &value, const JacobianRangeType &jacobian) const
 Compute the point-wise value of the flux-part of the operator, meaning the part of the differential operator which is multiplied by the derivative of the test function. More...
 

FunctionSpaceTypes

Forward some basic type from the supplied function-spaces to the model class.

Note that FunctionSpace is defined as a shortcut for RangeFunctionSpace in order to simplify the common case DomainFunctionSpace == RangeFunctionSpace.

using HessianRangeSelector = typename std::conditional< std::is_convertible< typename FunctionSpace::RangeType, typename FunctionSpace::HessianRangeType >::value, Fem::ExplicitFieldVector< typename FunctionSpace::HessianRangeType::value_type, FunctionSpace::dimRange >, typename FunctionSpace::HessianRangeType >::type
 The type returned by classifyBoundary().
 
using RangeFunctionSpaceType = FunctionSpace
 The type returned by classifyBoundary().
 
using DomainFunctionSpaceType = FunctionSpace
 The type returned by classifyBoundary().
 
using FunctionSpaceType = RangeFunctionSpaceType
 The type returned by classifyBoundary().
 
using DomainType = typename FunctionSpaceType::DomainType
 The type returned by classifyBoundary().
 
using RangeType = typename FunctionSpaceType::RangeType
 The type returned by classifyBoundary().
 
using JacobianRangeType = typename FunctionSpaceType::JacobianRangeType
 The type returned by classifyBoundary().
 
using HessianRangeType = HessianRangeSelector< FunctionSpaceType >
 The type returned by classifyBoundary().
 
using DomainFieldType = typename FunctionSpaceType::DomainFieldType
 The type returned by classifyBoundary().
 
using RangeFieldType = typename FunctionSpaceType::RangeFieldType
 The type returned by classifyBoundary().
 
using DomainRangeType = typename DomainFunctionSpaceType::RangeType
 The type returned by classifyBoundary().
 
using DomainDomainType = typename DomainFunctionSpaceType::DomainType
 The type returned by classifyBoundary().
 
using DomainJacobianRangeType = typename DomainFunctionSpaceType::JacobianRangeType
 The type returned by classifyBoundary().
 
using DomainHessianRangeType = HessianRangeSelector< DomainFunctionSpaceType >
 The type returned by classifyBoundary().
 
using DomainDomainFieldType = typename DomainFunctionSpaceType::DomainFieldType
 The type returned by classifyBoundary().
 
using DomainRangeFieldType = typename DomainFunctionSpaceType::RangeFieldType
 The type returned by classifyBoundary().
 
using RangeRangeType = typename RangeFunctionSpaceType::RangeType
 The type returned by classifyBoundary().
 
using RangeDomainType = typename RangeFunctionSpaceType::DomainType
 The type returned by classifyBoundary().
 
using RangeJacobianRangeType = typename RangeFunctionSpaceType::JacobianRangeType
 The type returned by classifyBoundary().
 
using RangeHessianRangeType = HessianRangeSelector< RangeFunctionSpaceType >
 The type returned by classifyBoundary().
 
using RangeDomainFieldType = typename RangeFunctionSpaceType::DomainFieldType
 The type returned by classifyBoundary().
 
using RangeRangeFieldType = typename RangeFunctionSpaceType::RangeFieldType
 The type returned by classifyBoundary().
 
using BoundaryConditionsType = std::pair< bool, std::bitset< dimRange > >
 The type returned by classifyBoundary().
 
void bind (const Entity &entity)
 Bind to the given entity. More...
 
void unbind ()
 Unbind from the previously bound entity. More...
 
static constexpr int dimDomain
 The type returned by classifyBoundary().
 
static constexpr int dimRange
 The type returned by classifyBoundary().
 
static constexpr int domainDimDomain
 The type returned by classifyBoundary().
 
static constexpr int domainDimRange
 
static constexpr int rangeDimDomain
 The type returned by classifyBoundary().
 
static constexpr int rangeDimRange
 

Detailed Description

template<class FunctionSpace>
class Dune::ACFem::PDEModel::FluidSelfTransportModel< FunctionSpace >

Define a model for the "Navier-Stokes" non-lineariry.

An alternate formulation of the the Navier-Stokes non-linearity obtained by integration by parts, at the cost of introducting a boundary integral for non-Dirichlet boundaries

In formulas: this fragment implements the right-hand-side of the following equation (where the equality only holds for \(\nabla\cdot U = 0\)):

\[ \int_\Omega U_i\,\partial_i U_j\,\phi_j = - \int_\Omega U_i\,U_j\,\partial_i\phi_j + \int_{\partial\Omega} U\cdot\nu\,U\cdot\phi \]

Of course, the formula uses sum-convention. The left-hand-side is implemented by IncompressibleSelfTransportModel.

See also
IncompressibleSelfTransportModel, DeformationTensorModel, Transport/Advection Models
Parameters
GridPartThe grid-part we live on.

Member Function Documentation

◆ bind()

void Dune::ACFem::ModelBase< FunctionSpace , FunctionSpace >::bind ( const Entity &  entity)
inlineinherited

Bind to the given entity.

Parameters
[in]entityThe entity to bind to.
Warning
Calling any other method without first binding the model results in undefined behaviour.
Models needing this method need to reimplement it. This is just here to obey the "bindable" interface of Dune::Fem.

◆ unbind()

void Dune::ACFem::ModelBase< FunctionSpace , FunctionSpace >::unbind ( )
inlineinherited

Unbind from the previously bound entity.

Warning
Calling this method on an unbound model may cause undefined behaviour.
Models needing this method need to reimplement it. This is just here to obey the "bindable" interface of Dune::Fem.

Member Data Documentation

◆ domainDimRange

constexpr int Dune::ACFem::ModelBase< FunctionSpace , FunctionSpace >::domainDimRange
staticconstexprinherited

◆ rangeDimRange

constexpr int Dune::ACFem::ModelBase< FunctionSpace , FunctionSpace >::rangeDimRange
staticconstexprinherited

The documentation for this class was generated from the following file:
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.80.0 (May 3, 22:32, 2024)