def field_generator(self):
        support = self._f_support(self.__manifold.gd)
        vectors = self._f_vectors(self.__manifold.gd)

        return StructuredField_0(support,
                                 self.__controls * vectors,
                                 self.__sigma,
                                 device=self.device,
                                 backend=self.backend)
示例#2
0
    def cot_to_vs(self, sigma, backend=None):
        v0 = StructuredField_0(self.gd[0],
                               self.cotan[0],
                               sigma,
                               backend=backend)
        R = torch.einsum('nik, njk->nij', self.cotan[1], self.gd[1])

        vm = StructuredField_m(self.gd[0], R, sigma, backend=backend)

        return SumStructuredField([v0, vm])
    def cot_to_vs(self, sigma, backend=None):
        v0 = StructuredField_0(self.gd[0],
                               self.cotan[0],
                               sigma,
                               device=self.device,
                               backend=backend)

        if self.__transport == 'vector':
            vu = StructuredField_0_u(self.gd[0], self.cotan[1], self.gd[1],
                                     sigma)
        else:
            vu = StructuredField_0_u(self.gd[0], -self.gd[1], self.cotan[1],
                                     sigma)

        return SumStructuredField([v0, vu])
    def compute_geodesic_control(self, man):
        support = self._f_support(self.manifold.gd)
        vectors = self._f_vectors(self.manifold.gd)

        # vector field for control = 1
        v = StructuredField_0(support,
                              vectors,
                              self.sigma,
                              device=self.device,
                              backend='torch')

        K_q = K_xx(support, self.sigma)
        m = torch.mm(K_q, vectors)
        co = self.coeff * torch.dot(m.flatten(), vectors.flatten())

        self.controls = man.inner_prod_field(v) / co
示例#5
0
 def field_generator(self):
     return StructuredField_0(self.__manifold.gd,
                              self.__controls,
                              self.__sigma,
                              device=self.device,
                              backend=self.backend)
 def field_generator(self):
     return StructuredField_0(self.__manifold.gd[0], self.__controls.unsqueeze(1).repeat(1, self.dim)*self.__manifold.gd[1], self.__sigma, device=self.device, backend=self.backend)
示例#7
0
 def cot_to_vs(self, sigma, backend=None):
     return StructuredField_0(self.gd,
                              self.cotan,
                              sigma,
                              device=self.device,
                              backend=backend)