def create_mesh(self, context): ## context is a skeleton context ## setup element types edict = {} # get linear isoparametric master elements if config.dimension() == 2: edict['Triangle'] = masterelement.getMasterElementDict()['T3_3'] edict['Quadrilateral'] = masterelement.getMasterElementDict( )['Q4_4'] elif config.dimension() == 3: edict['Tetrahedron'] = masterelement.getMasterElementDict( )['TET4_4'] skel = context.getObject() ## returns a Mesh (Who) object self.meshname = context.path() + ":__internal_mesh__" #Interface branch, pass skeleton path to femesh femesh = skel.femesh( edict, self.material()) #, self.set_fakematerial, context.path()) meshcontext = ooflib.engine.mesh.meshes.add(self.meshname, femesh, parent=context, skeleton=skel, elementdict=edict) meshcontext.createDefaultSubProblem() return meshcontext
def parallel_femesh(menuitem, name, skeleton, D_typename, T_typename, Q_typename): # Build edict map. Access masterelement dictionary directly MEdict = masterelement.getMasterElementDict() edict = { MEdict[D_typename].nsides(): MEdict[D_typename], MEdict[T_typename].nsides(): MEdict[T_typename], MEdict[Q_typename].nsides(): MEdict[Q_typename] } skelpath = labeltree.makePath(skeleton) skel = skeletoncontext.skeletonContexts[skelpath].getObject() femesh = skel.femesh_shares(edict, skeletonelement.SkeletonElement.realmaterial) if _rank == 0: femesh.all_meshskeletons = skel.all_skeletons #collect_pieces(femesh) if femesh is not None: meshctxt = ooflib.engine.mesh.meshes.add( skelpath + [name], femesh, parent=skeletoncontext.skeletonContexts[skelpath], skeleton=skel, elementdict=edict, materialfactory=skeletonelement.SkeletonElement.realmaterial) meshctxt.createDefaultSubProblem()
def getMyMasterElementDict(masterelems): edict = {} masterdict = masterelement.getMasterElementDict() for ename in masterelems: try: master = masterdict[ename] edict[master.ncorners()] = master except KeyError: raise ooferror.ErrUserError("Element type \"%s\" is unknown." % ename) return edict
def create_mesh(self, context): ## context is a skeleton context ## setup element types edict = {} # get linear isoparametric master elements if config.dimension() == 2: edict[3] = masterelement.getMasterElementDict()['T3_3'] edict[4] = masterelement.getMasterElementDict()['Q4_4'] elif config.dimension() == 3: edict[4] = masterelement.getMasterElementDict()['T4_4'] skel = context.getObject() ## returns a Mesh (Who) object self.meshname = context.path() + ":__internal_mesh__" #Interface branch, pass skeleton path to femesh femesh = skel.femesh(edict, self.set_fakematerial, context.path()) meshcontext = ooflib.engine.mesh.meshes.add( self.meshname, femesh, parent=context, skeleton=skel, elementdict=edict) meshcontext.createDefaultSubProblem() return meshcontext
def parallel_femesh(menuitem,name,skeleton, D_typename,T_typename,Q_typename): # Build edict map. Access masterelement dictionary directly MEdict=masterelement.getMasterElementDict() edict = { MEdict[D_typename].nsides(): MEdict[D_typename], MEdict[T_typename].nsides(): MEdict[T_typename], MEdict[Q_typename].nsides(): MEdict[Q_typename] } skelpath = labeltree.makePath(skeleton) skel = skeletoncontext.skeletonContexts[skelpath].getObject() femesh = skel.femesh_shares(edict, skeletonelement.SkeletonElement.realmaterial) if _rank == 0: femesh.all_meshskeletons = skel.all_skeletons #collect_pieces(femesh) if femesh is not None: meshctxt = ooflib.engine.mesh.meshes.add( skelpath+[name], femesh, parent=skeletoncontext.skeletonContexts[skelpath], skeleton=skel, elementdict=edict, materialfactory=skeletonelement.SkeletonElement.realmaterial) meshctxt.createDefaultSubProblem()