Gyselalib++
AdvectionPhysicalDomain< Mapping > Class Template Reference

Define the physical domain for the advection. More...

Inheritance diagram for AdvectionPhysicalDomain< Mapping >:
AdvectionDomain< Mapping >

Public Types

using X_adv = X
 The first dimension in the advection domain.
 
using Y_adv = 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

 AdvectionPhysicalDomain (Mapping const &mapping)
 Instantiate a AdvectionPhysicalDomain advection domain. More...
 
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. More...
 

Detailed Description

template<class Mapping>
class AdvectionPhysicalDomain< Mapping >

Define the physical domain for the advection.

The physical domain can only be used for analytically invertible mappings.

Here the advection field in the physical domain and the advection domain is the same. So the AdvectionPhysicalDomain::compute_advection_field return the same advection field.

The method to advect is here given by:

  • compute \( (x,y)_{ij} = \mathcal{F} (r,\theta)_{ij} \),
  • advect
    • \( \text{feet}_{x, ij} = x_{ij} - dt A_x(x_{ij}, y_{ij}) \),
    • \( \text{feet}_{y, ij} = y_{ij} - dt A_y(x_{ij}, y_{ij}) \),
  • compute \( (\text{feet}_{r, ij}, \text{feet}_{\theta, ij}) = \mathcal{F}^{-1} (\text{feet}_{x, ij}, \text{feet}_{y, ij}) \) as \(\mathcal{F} \) easily invertible.

Constructor & Destructor Documentation

◆ AdvectionPhysicalDomain()

template<class Mapping >
AdvectionPhysicalDomain< Mapping >::AdvectionPhysicalDomain ( Mapping const &  mapping)
inline

Instantiate a AdvectionPhysicalDomain advection domain.

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

Member Function Documentation

◆ advect_feet()

template<class Mapping >
void AdvectionPhysicalDomain< Mapping >::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: