|
SpECTRE
v2025.08.19
|
Compute the divergence of a Variables. More...
#include <Divergence.hpp>
Public Types | |
| using | base = db::add_tag_prefix< div, Tag > |
| using | return_type = typename base::type |
| using | argument_tags = tmpl::list< Tag, domain::Tags::Mesh< dim >, InverseJacobianTag > |
Static Public Attributes | |
| static constexpr void(* | function )(const gsl::not_null< return_type * >, const typename Tag::type &, const Mesh< dim > &, const typename InverseJacobianTag::type &) = &divergence |
Compute the divergence of a Variables.
Computes the divergence of the every Tensor in the Variables represented by Tag. The first index of each Tensor must be an upper spatial index, i.e., the first index must have type TensorIndexType<Dim, UpLo::Up, Frame::TargetFrame, IndexType::Spatial>. The divergence is computed in the frame TargetFrame, and InverseJacobianTag must be associated with a map from Frame::ElementLogical to Frame::TargetFrame.
Note that each tensor may have additional tensor indices - in this case the divergence is computed for each additional index. For instance, a tensor \(F^i_{ab}\) has divergence \(Div_{ab} = \partial_i F^i_{ab}\). This is to accommodate evolution equations where the evolved variables \(u_\alpha\) are higher-rank tensors and thus their fluxes can be written as \(F^i_\alpha\). A simple example would be the fluid velocity in hydro systems, where we would write the flux as \(F^{ij}\).
This tag inherits from db::add_tag_prefix<Tags::div, Tag>.