def get_mapping(self, qp_coors, weights, poly_space=None, ori=None): """ Get the mapping for given quadrature points, weights, and polynomial space. Returns ------- cmap : CMapping instance The volume mapping. """ poly_space = get_default(poly_space, self.poly_space) bf_g = self.get_base(qp_coors, diff=True) ebf_g = poly_space.eval_base(qp_coors, diff=True, ori=ori, force_axis=True) flag = ori is not None cmap = CMapping(self.n_el, qp_coors.shape[0], self.dim, poly_space.n_nod, mode='volume', flag=flag) cmap.describe(self.coors, self.conn, bf_g, ebf_g, weights) return cmap
def get_mapping(self, qp_coors, weights, poly_space=None, mode='surface'): """ Get the mapping for given quadrature points, weights, and polynomial space. Returns ------- cmap : CMapping instance The surface mapping. """ poly_space = get_default(poly_space, self.poly_space) bf_g = self.get_base(qp_coors, diff=True) if nm.allclose(bf_g, 0.0): raise ValueError('zero base function gradient!') cmap = CMapping(self.n_el, qp_coors.shape[0], self.dim, poly_space.n_nod, mode=mode) cmap.describe(self.coors, self.conn, bf_g, None, weights) return cmap
def get_mapping(self, qp_coors, weights, poly_space=None, ori=None, transform=None): """ Get the mapping for given quadrature points, weights, and polynomial space. Returns ------- cmap : CMapping instance The volume mapping. """ poly_space = get_default(poly_space, self.poly_space) bf_g = self.get_base(qp_coors, diff=True) ebf_g = poly_space.eval_base(qp_coors, diff=True, ori=ori, force_axis=True, transform=transform) size = ebf_g.nbytes * self.n_el site_config = Config() raise_if_too_large(size, site_config.refmap_memory_factor()) flag = (ori is not None) or (ebf_g.shape[0] > 1) cmap = CMapping(self.n_el, qp_coors.shape[0], self.dim, poly_space.n_nod, mode='volume', flag=flag) cmap.describe(self.coors, self.conn, bf_g, ebf_g, weights) return cmap
def get_mapping(self, qp_coors, weights): """ Get the mapping for given quadrature points and weights. Returns ------- cmap : CMapping instance The reference mapping. Notes ----- Does not set total volume of the C mapping structure! """ nurbs = self.nurbs bfs, bfgs, dets = iga.eval_mapping_data_in_qp(qp_coors, nurbs.cps, nurbs.weights, nurbs.degrees, nurbs.cs, nurbs.conn, self.cells) # Weight Jacobians by quadrature point weights. dets = nm.abs(dets) * weights[None, :, None, None] # Cell volumes. volumes = dets.sum(axis=1)[..., None] cmap = CMapping(self.v_shape[0], qp_coors.shape[0], self.v_shape[2], bfs.shape[3], mode='volume', flag=1) cmap.bf[:] = bfs cmap.bfg[:] = bfgs cmap.det[:] = dets cmap.volume[:] = volumes return cmap