Example #1
0
 def evaluate_fields(self, cid, xi, fields):
     num_fields = len(fields)
     X = numpy.zeros((xi.shape[0], num_fields))
     for i, field in enumerate(fields):
         Phi = interpolator.weights(self.EFn[cid], xi, deriv=field[1:])
         X[:, i] = numpy.dot(Phi, self.P[self.EMap[cid][field[0]]])
     return X
Example #2
0
 def evaluate_fields(self, cid, xi, fields):
     num_fields = len(fields)
     X = numpy.zeros((xi.shape[0], num_fields))
     for i, field in enumerate(fields):
         Phi = interpolator.weights(self.EFn[cid], xi, deriv=field[1:])
         X[:, i] = numpy.dot(Phi, self.P[self.EMap[cid][field[0]]])
     return X
Example #3
0
 def evaluate(self, cid, xi, deriv=None):
     num_fields = len(self.EMap[cid])
     X = numpy.zeros((xi.shape[0], num_fields))
     Phi = interpolator.weights(self.EFn[cid], xi, deriv=deriv)
     for i in range(num_fields):
         X[:, i] = numpy.dot(Phi, self.P[self.EMap[cid][i]])
     return X
Example #4
0
 def evaluates(self, cids, xi, deriv=None, X=None):
     num_fields = len(self.EMap[cids[0]])
     if X==None:
         X = numpy.zeros((len(cids) * xi.shape[0], num_fields))
     Phi = interpolator.weights(self.EFn[cids[0]], xi, deriv=deriv)
     Nxi = xi.shape[0]
     ind = 0
     for cid in cids:
         for i in range(num_fields):
             X[ind:ind+Nxi, i] = numpy.dot(Phi, self.P[self.EMap[cid][i]])
         ind += Nxi
     return X
Example #5
0
 def evaluates(self, cids, xi, deriv=None, X=None):
     num_fields = len(self.EMap[cids[0]])
     if X==None:
         X = numpy.zeros((len(cids) * xi.shape[0], num_fields))
     Phi = interpolator.weights(self.EFn[cids[0]], xi, deriv=deriv)
     Nxi = xi.shape[0]
     ind = 0
     for cid in cids:
         for i in range(num_fields):
             X[ind:ind+Nxi, i] = numpy.dot(Phi, self.P[self.EMap[cid][i]])
         ind += Nxi
     return X
Example #6
0
 def update_dependent_nodes(self):
     # update dependent nodes
     for dn in self.DNMap:
         cid = dn[0]
         xi_cids = dn[1]
         dn_cids = dn[2]
         shape = dn[3]
         scale = dn[4]
         num_fields = len(self.EMap[cid])
         if num_fields == 1:
             xi = numpy.array([self.P[xi_cids]]).T
         else:
             xi = numpy.array([self.P[xi_cids]])
         if len(shape) == 1:
             Phi = interpolator.weights(self.EFn[cid], xi)
             for i in range(num_fields):
                 self.P[dn_cids[i]] = numpy.dot(Phi, self.P[self.EMap[cid][i]])
         elif len(shape) == 2:
             components = shape[1]
             Phi = [interpolator.weights(self.EFn[cid], xi)]
             if components == 2:
                 Phi.append(interpolator.weights(self.EFn[cid], xi, deriv=[1]))
             elif components == 4:
                 Phi.append(interpolator.weights(self.EFn[cid], xi, deriv=[1, 0]))
                 Phi.append(interpolator.weights(self.EFn[cid], xi, deriv=[0, 1]))
                 Phi.append(interpolator.weights(self.EFn[cid], xi, deriv=[1, 1]))
             comp_idx = 0
             if scale is None:
                 scale = numpy.ones((shape[1]))
             for i in range(num_fields):
                 for j, phi in enumerate(Phi):
                     self.P[dn_cids[comp_idx]] = scale[j] * numpy.dot(phi, self.P[self.EMap[cid][i]])
                     comp_idx += 1
Example #7
0
 def update_dependent_nodes(self):
     # update dependent nodes
     for dn in self.DNMap:
         cid = dn[0]
         xi_cids = dn[1]
         dn_cids = dn[2]
         num_fields = len(self.EMap[cid])
         if num_fields == 1:
             xi = numpy.array([self.P[xi_cids]]).T
         else:
             xi = numpy.array([self.P[xi_cids]])
         Phi = interpolator.weights(self.EFn[cid], xi)
         for i in range(num_fields):
             self.P[dn_cids[i]] = numpy.dot(Phi, self.P[self.EMap[cid][i]])
Example #8
0
 def update_dependent_nodes(self):
     # update dependent nodes
     for dn in self.DNMap:
         cid = dn[0]
         xi_cids = dn[1]
         dn_cids = dn[2]
         num_fields = len(self.EMap[cid])
         if num_fields == 1:
             xi = numpy.array([self.P[xi_cids]]).T
         else:
             xi = numpy.array([self.P[xi_cids]])
         Phi = interpolator.weights(self.EFn[cid], xi)
         for i in range(num_fields):
             self.P[dn_cids[i]] = numpy.dot(Phi, self.P[self.EMap[cid][i]])
Example #9
0
 def weights(self, cid, xi, deriv=None):
     return interpolator.weights(self.EFn[cid], xi, deriv=deriv)
Example #10
0
 def weights(self, cid, xi, deriv=None):
     return interpolator.weights(self.EFn[cid], xi, deriv=deriv)