def _describe(self, geo, qp_coors, weights): bf_g = self.get_base(qp_coors, diff=True) if nm.allclose(bf_g, 0.0): raise ValueError('zero base function gradient!') try: geo.describe(self.coors, self.conn, bf_g, weights) except: gm.errclear() raise
def describe_geometry( self, field, geom_request, integral, coors ): gtype = geom_request.gtype if gtype == 'Volume': bf_vg, weights = self.get_base( 'v', 1, integral = integral, base_only = False ) ## print bf_vg, weights ## pause() vg = gm.VolumeGeometry( *self.get_v_data_shape( integral.name ) ) vg.mode = gm.GM_Material try: vg.describe( coors, self.econn, bf_vg, weights ) except: # pdb.set_trace() gm.errclear() raise return vg elif (gtype == 'Surface') or (gtype == 'SurfaceExtra'): ## print self.name ## print geom_request region = geom_request.region fa = region.domain.get_neighbour_lists( True )[2] region.setup_face_indices( fa ) region.select_cells_of_surface() self.setup_surface_data( region ) sd = self.surface_data[region.name] ## print sd ## print integral bf_sg, weights = self.get_base( sd.face_type, 1, integral = integral, base_only = False ) ## print bf_sg, weights sg = gm.SurfaceGeometry( *self.get_s_data_shape( integral.name, region.name ) ) sg.mode = gm.GM_Material ## print sg try: sg.describe( coors, sd.econn, bf_sg, weights ) except: gm.errclear() raise if gtype == 'SurfaceExtra': sg.alloc_extra_data( self.get_v_data_shape()[2] ) bf_s = self.get_base( sd.face_type, 0, integral = integral, from_geometry = True ) ## print bf_s bkey = self.create_bqp( sd.face_type, bf_s, weights, integral.name ) bf_bg = self.get_base( bkey, 1, integral = integral ) ## print bf_bg sg.evaluate_bfbgm( bf_bg, coors, sd.fis, self.econn ) ## sg.str( sys.stdout, 0 ) ## pause() return sg elif gtype == 'Point': region = geom_request.region ## print gtype, region.name, self.ig ## pause() if self.ig == region.igs[0]: # Point data only in the first group to avoid multiple # assembling of nodes on group boundaries. self.setup_point_data( field, region ) else: print 'unknown geometry type:', gtype raise ValueError