Source code for struphy.geometry.domains.cuboid.cuboid_kernels
"""Pyccel kernels for the mapping and Jacobian matrix of :class:`struphy.geometry.domains.Cuboid`."""
from pyccel.decorators import pure
[docs]
@pure
def cuboid(
eta1: float,
eta2: float,
eta3: float,
l1: float,
r1: float,
l2: float,
r2: float,
l3: float,
r3: float,
f_out: "float[:]",
):
r"""
Point-wise evaluation of
.. math::
F_x &= l_1 + (r_1 - l_1)\,\eta_1\,,
F_y &= l_2 + (r_2 - l_2)\,\eta_2\,,
F_z &= l_3 + (r_3 - l_3)\,\eta_3\,.
Parameters
----------
eta1, eta2, eta3 : float
Logical coordinate in [0, 1].
l1, l2, l3 : float
Left domain boundary.
r1, r2, r3 : float
Right domain boundary.
f_out : array[float]
Output: (x, y, z) = F(eta1, eta2, eta3).
"""
# value = begin + (end - begin) * eta
f_out[0] = l1 + (r1 - l1) * eta1
f_out[1] = l2 + (r2 - l2) * eta2
f_out[2] = l3 + (r3 - l3) * eta3
[docs]
@pure
def cuboid_df(l1: float, r1: float, l2: float, r2: float, l3: float, r3: float, df_out: "float[:,:]"):
"""Jacobian matrix for :meth:`struphy.geometry.domains.cuboid.cuboid_kernels.cuboid`."""
df_out[0, 0] = r1 - l1
df_out[0, 1] = 0.0
df_out[0, 2] = 0.0
df_out[1, 0] = 0.0
df_out[1, 1] = r2 - l2
df_out[1, 2] = 0.0
df_out[2, 0] = 0.0
df_out[2, 1] = 0.0
df_out[2, 2] = r3 - l3