Gyselalib++
 
Loading...
Searching...
No Matches
InvJacobianOPoint< CombinedMapping< DiscreteToCartesian< X, Y, SplineEvaluator, R, Theta, MemorySpace >, CartesianToCircular< Xpc, Ypc, R, Theta > >, ddc::Coordinate< R, Theta > > Class Template Reference

A specialisation of InvJacobianOPoint for a combined mapping FoG where F is a discrete mapping from logical to physical, and G is an inverse circular mapping from physical to logical. More...

Public Member Functions

KOKKOS_FUNCTION InvJacobianOPoint (Mapping const &mapping)
 The constructor of InvJacobianOPoint.
 
KOKKOS_FUNCTION Matrix_2x2 operator() () const
 Compute the full inverse Jacobian matrix from a coordinate system (x_pc, y_pc) to a coordinate system (x, y) at the central point.
 

Detailed Description

template<class X, class Y, class SplineEvaluator, class R, class Theta, class MemorySpace, class Xpc, class Ypc>
class InvJacobianOPoint< CombinedMapping< DiscreteToCartesian< X, Y, SplineEvaluator, R, Theta, MemorySpace >, CartesianToCircular< Xpc, Ypc, R, Theta > >, ddc::Coordinate< R, Theta > >

A specialisation of InvJacobianOPoint for a combined mapping FoG where F is a discrete mapping from logical to physical, and G is an inverse circular mapping from physical to logical.

The combined mapping FoG therefore maps from a physical domain (Xpc, Ypc) to a physical domain (X,Y).

Constructor & Destructor Documentation

◆ InvJacobianOPoint()

template<class X , class Y , class SplineEvaluator , class R , class Theta , class MemorySpace , class Xpc , class Ypc >
KOKKOS_FUNCTION InvJacobianOPoint< CombinedMapping< DiscreteToCartesian< X, Y, SplineEvaluator, R, Theta, MemorySpace >, CartesianToCircular< Xpc, Ypc, R, Theta > >, ddc::Coordinate< R, Theta > >::InvJacobianOPoint ( Mapping const &  mapping)
inlineexplicit

The constructor of InvJacobianOPoint.

Parameters
[in]mappingThe mapping for which the inverse of the Jacobian is calculated.

Member Function Documentation

◆ operator()()

template<class X , class Y , class SplineEvaluator , class R , class Theta , class MemorySpace , class Xpc , class Ypc >
KOKKOS_FUNCTION Matrix_2x2 InvJacobianOPoint< CombinedMapping< DiscreteToCartesian< X, Y, SplineEvaluator, R, Theta, MemorySpace >, CartesianToCircular< Xpc, Ypc, R, Theta > >, ddc::Coordinate< R, Theta > >::operator() ( ) const
inline

Compute the full inverse Jacobian matrix from a coordinate system (x_pc, y_pc) to a coordinate system (x, y) at the central point.

The discrete mappings can be difficult to inverse especially at the central point. In case of non analytical invertible mapping, we can work in another domain called pseudo-Cartesian domain. In this domain, it is easier to inverse the Jacobian matrix. The idea is detailed in Edoardo Zoni's article (Solving hyperbolic-elliptic problems on singular mapped disk-like domains with the method of characteristics and spline finite elements, https://doi.org/10.1016/j.jcp.2019.108889)

The current mapping maps from the logical domain to the physical domain \( \mathcal{F}: (r,\theta) \mapsto (x, y)\). The pseudo-Cartesian domain is built with \( \mathcal{F} \) and using the circular mapping \( \mathcal{G} \):

  • \( \mathcal{G}_{11}(r, \theta) = \cos(\theta), \qquad\quad \mathcal{G}_{12}(r, \theta) = \sin(\theta) \),
  • \( \mathcal{G}_{21}(r, \theta) = -\frac{1}{r}\sin(\theta), \qquad\quad \mathcal{G}_{22}(r, \theta) = \frac{1}{r}\cos(\theta) \).

The pseudo-Cartesian domain is obtained by the composition of both mappings: \( (\mathcal{F} \circ \mathcal{G}^{-1})^{-1} \). This new mapping is invertible and its inverse at the central point is given by

  • \( (J_{\mathcal{F}}J_{\mathcal{G}}^{-1})_{11}(0, \theta) = \partial_r x (0, \theta) \cos(\theta) - \partial_{r \theta} x (0, \theta) \sin(\theta), \)
  • \( (J_{\mathcal{F}}J_{\mathcal{G}}^{-1})_{12}(0, \theta) = \partial_r x (0, \theta) \sin(\theta) + \partial_{r \theta} x (0, \theta) \cos(\theta), \)
  • \( (J_{\mathcal{F}}J_{\mathcal{G}}^{-1})_{21}(0, \theta) = \partial_r y (0, \theta) \cos(\theta) - \partial_{r \theta} y (0, \theta) \sin(\theta), \)
  • \( (J_{\mathcal{F}}J_{\mathcal{G}}^{-1})_{22}(0, \theta) = \partial_r y (0, \theta) \sin(\theta) + \partial_{r \theta} y (0, \theta) \cos(\theta). \)

So the pseudo-Cartesian Jacobian matrix at the central point, \( (J_{\mathcal{F}}J_{\mathcal{G}}^{-1})^{-1}(0, \theta) \), is obtained by inversing this matrix.

Returns
The matrix evaluated at the central point.
See also
BslAdvection
AdvectionDomain

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