Ejemplo n.º 1
0
    def resync(self,region):
        """Update the master case from a region case
        @param region: Name of the region"""
        rCase=SolutionDirectory(self.master.name+"."+region)
        rTimes=rCase.getTimes()
        for t in rTimes+["constant"]:
            if path.exists(path.join(rCase.name,t)):
                if not path.exists(path.join(self.master.name,t,region)):
                    self._rename(self.master.name,region,t)
            for p in rCase.processorDirs():
                pDir=path.join(self.master.name,p)
                if not path.exists(pDir):
                    mkdir(pDir)
                    symlink(path.join(path.pardir,"system"),path.join(pDir,"system"))

                if path.exists(path.join(rCase.name,p,t)):
                    if not path.exists(path.join(pDir,region,t)):
                        self._rename(self.master.name,region,t,processor=p,prefix=path.pardir)
                if t=="constant":
                    for f in listdir(path.join(self.master.name,t,region)):
                        if f!="polyMesh":
                            #                            print path.join(pDir,"constant",region,f),"->",path.join(path.pardir,path.pardir,path.pardir,"constant",region,f)
                            #                            print path.exists(path.join(path.join(pDir,"constant",region),path.join(path.pardir,path.pardir,path.pardir,"constant",region,f)))
                            dest=path.join(pDir,"constant",region,f)
                            src=path.join(path.pardir,path.pardir,path.pardir,"constant",region,f)
                            if not path.exists(dest):
                                symlink(src,dest)
Ejemplo n.º 2
0
 def __init__(self,
              case,
              time="constant",
              processor=None,
              region=None):
     """@param case: Path to the case-directory
     @param time: Time for which the  mesh should be looked at
     @param processor: Name of the processor directory for decomposed cases"""
     self.sol=SolutionDirectory(case,paraviewLink=False,archive=None,region=region)
     self.time=time
     self.processor=processor
Ejemplo n.º 3
0
class MeshInformation:
    """Reads Information about the mesh on demand"""
    
    def __init__(self,
                 case,
                 time="constant",
                 processor=None,
                 region=None):
        """@param case: Path to the case-directory
        @param time: Time for which the  mesh should be looked at
        @param processor: Name of the processor directory for decomposed cases"""
        self.sol=SolutionDirectory(case,paraviewLink=False,archive=None,region=region)
        self.time=time
        self.processor=processor
        
    def nrOfFaces(self):
        try:
            return self.faces
        except AttributeError:
            try:
                faces=ListFile(self.sol.polyMeshDir(time=self.time,processor=self.processor),"faces")
                self.faces=faces.getSize()
            except IOError:
                faces=ListFile(self.sol.polyMeshDir(processor=self.processor),"faces")
                self.faces=faces.getSize()
                
            return self.faces

    def nrOfPoints(self):
        try:
            return self.points
        except AttributeError:
            try:
                points=ListFile(self.sol.polyMeshDir(time=self.time,processor=self.processor),"points")
                self.points=points.getSize()
            except IOError:
                points=ListFile(self.sol.polyMeshDir(processor=self.processor),"points")
                self.points=points.getSize()

            return self.points

    def nrOfCells(self):
        try:
            return self.cells
        except:
            try:
                try:
                    owner=ParsedFileHeader(path.join(self.sol.polyMeshDir(time=self.time,processor=self.processor),"owner"))
                except IOError:
                    owner=ParsedFileHeader(path.join(self.sol.polyMeshDir(processor=self.processor),"owner"))

                mat=re.compile('.+nCells: *([0-9]+) .+').match(owner["note"])
                self.cells=int(mat.group(1))
                return self.cells
            except:
                raise PyFoamException("Not Implemented")