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. | |
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).
|
inline |
Instantiate a AdvectionDomain advection domain.
[in] | to_physical_mapping | The mapping from the logical domain to the physical domain. |
|
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
with
and
[in,out] | feet_coords_rp | The computed characteristic feet in the logical domain. On input: the points we want to advect. On output: the characteristic feet. |
[in] | advection_field | The advection field defined on the advection domain. |
[in] | dt | The time step. |