Exemple #1
0
    def face_jacobian(self, where):
        bdry_discr = self.get_discr(where)

        ((a, ), (b, )) = parametrization_derivative(self._setup_actx,
                                                    bdry_discr)

        return freeze((a**2 + b**2)**0.5)
Exemple #2
0
    def normal(self, where):
        bdry_discr = self.get_discr(where)

        ((a, ), (b, )) = parametrization_derivative(self._setup_actx,
                                                    bdry_discr)

        nrm = 1 / (a**2 + b**2)**0.5
        return freeze(flat_obj_array(b * nrm, -a * nrm))
Exemple #3
0
 def normal(self, dd):
     surface_discr = self.discr_from_dd(dd)
     actx = surface_discr._setup_actx
     return freeze(
             bind(self,
                 sym.normal(dd, surface_discr.ambient_dim, surface_discr.dim),
                 local_only=True)
             (array_context=actx))
Exemple #4
0
    def inverse_parametrization_derivative(self):
        [a, b], [c, d] = thaw(self._setup_actx,
                              self.parametrization_derivative())

        result = np.zeros((2, 2), dtype=object)
        det = a * d - b * c
        result[0, 0] = d / det
        result[0, 1] = -b / det
        result[1, 0] = -c / det
        result[1, 1] = a / det

        return freeze(result)
Exemple #5
0
def normal(dcoll, dd):
    """Get unit normal to specified surface discretization, *dd*.

    :arg dd: a :class:`~grudge.dof_desc.DOFDesc` as the surface discretization.
    :returns: an object array of :class:`~meshmode.dof_array.DOFArray`.
    """
    surface_discr = dcoll.discr_from_dd(dd)
    actx = surface_discr._setup_actx
    return freeze(
        bind(dcoll,
             sym.normal(dd, surface_discr.ambient_dim, surface_discr.dim),
             local_only=True)(array_context=actx))
Exemple #6
0
 def vol_jacobian(self):
     [a, b], [c, d] = thaw(self._setup_actx,
                           self.parametrization_derivative())
     return freeze(a * d - b * c)
Exemple #7
0
 def parametrization_derivative(self):
     return freeze(
         parametrization_derivative(self._setup_actx, self.volume_discr))