Gyselalib++
 
Loading...
Searching...
No Matches
AdvectionDomain< LogicalToPhysicalMapping > Class Template Reference

Define a domain for the advection. More...

Public Types

using X_adv = typename PhysicalToLogicalMapping::cartesian_tag_x
 The first dimension in the advection domain.
 
using Y_adv = typename PhysicalToLogicalMapping::cartesian_tag_y
 The second dimension in the advection domain.
 
using CoordXY_adv = Coord< X_adv, Y_adv >
 The coordinate type associated to the dimensions in the advection domain.
 

Public Member Functions

 AdvectionDomain (LogicalToPhysicalMapping const &to_physical_mapping)
 Instantiate a AdvectionDomain advection domain.
 
void advect_feet (host_t< FieldRTheta< CoordRTheta > > feet_coords_rp, host_t< DConstVectorFieldRTheta< X_adv, Y_adv > > advection_field, double dt) const
 Advect the characteristic feet.
 

Detailed Description

template<class LogicalToPhysicalMapping>
class AdvectionDomain< LogicalToPhysicalMapping >

Define a domain for the advection.

The natural advection domain is the physical domain (AdvectionDomain), where the studied equation is given. However, not all the mappings used are analytically invertible and inverting the Jacobian matrix of the mapping could be costly. That is why, we also introduce a pseudo-Cartesian domain (AdvectionPseudoCartesianDomain).

The method used to advect the characteristic feet depends on the advection domain.

More details can be found in Edoardo Zoni's article (https://doi.org/10.1016/j.jcp.2019.108889).

See also
BslAdvectionRTheta
IFootFinder

Constructor & Destructor Documentation

◆ AdvectionDomain()

Instantiate a AdvectionDomain advection domain.

Parameters
[in]to_physical_mappingThe mapping from the logical domain to the physical domain.

Member Function Documentation

◆ advect_feet()

template<class LogicalToPhysicalMapping >
void AdvectionDomain< LogicalToPhysicalMapping >::advect_feet ( host_t< FieldRTheta< CoordRTheta > >  feet_coords_rp,
host_t< DConstVectorFieldRTheta< X_adv, Y_adv > >  advection_field,
double  dt 
) const
inline

Advect the characteristic feet.

In the Backward Semi-Lagrangian method, the advection of a function uses the conservation along the characteristic property. So, we firstly compute the characteristic feet and then interpolate the function at these characteristic feet.

The function implemented here deals with the computation of the characteristic feet. The IFootFinder class uses a time integration method to solve the characteristic equation. The BslAdvectionRTheta class calls advect_feet to compute the characteristic feet and interpolate the function we want to advect.

The advect_feet implemented here computes only

  • \( (\text{feet}_r, \text{feet}_\theta) = \mathcal{F}^{-1} (\text{feet}_x, \text{feet}_y) \)

with

  • \( \text{feet}_x = x_{ij} - dt A_x(x_{ij}, y_{ij}) \),
  • \( \text{feet}_y = y_{ij} - dt A_y(x_{ij}, y_{ij}) \),

and

  • \( (x,y)_{ij} = \mathcal{F}(r_{ij}, \theta_{ij})\), with \(\{(r, \theta)_{ij}\}_{ij} \) the logical mesh points,
  • \( A \) the advection field in the advection domain,
  • \( \mathcal{F} \) the mapping from the logical domain to the advection domain.
Parameters
[in,out]feet_coords_rpThe computed characteristic feet in the logical domain. On input: the points we want to advect. On output: the characteristic feet.
[in]advection_fieldThe advection field defined on the advection domain.
[in]dtThe time step.

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