示例#1
0
    def tabulate(self, order, points, entity=None):
        # This overrides the default with a more numerically stable algorithm
        if hasattr(self.dual, "gll_points"):
            if entity is None:
                entity = (self.ref_el.get_dimension(), 0)

            entity_dim, entity_id = entity
            transform = self.ref_el.get_entity_transform(entity_dim, entity_id)
            xsrc = self.dual.gll_points
            xdst = numpy.array(list(map(transform, points))).flatten()
            tabulation = barycentric_interpolation(xsrc, xdst, order=order)
            for key in tabulation:
                tabulation[key] = numpy.dot(self.dual.gll_tabulation, tabulation[key])
            return tabulation
        else:
            return super(FDMLagrange, self).tabulate(order, points, entity)
    def tabulate(self, order, points, entity=None):
        # This overrides the default with a more numerically stable algorithm

        if entity is None:
            entity = (self.ref_el.get_dimension(), 0)

        entity_dim, entity_id = entity
        transform = self.ref_el.get_entity_transform(entity_dim, entity_id)

        xsrc = []
        for node in self.dual.nodes:
            # Assert singleton point for each node.
            (pt, ), = node.get_point_dict().keys()
            xsrc.append(pt)
        xsrc = numpy.asarray(xsrc)
        xdst = numpy.array(list(map(transform, points))).flatten()
        return barycentric_interpolation(xsrc, xdst, order=order)