def createGrid(grid, dim, deg=1, addTruncatedBorder=False): # create new grid gridType = grid.getType() deg = max(deg, grid.getDegree()) # print( gridType, deg ) if deg > 1 and gridType in [GridType_Linear]: return Grid.createPolyGrid(dim, deg) if deg > 1 and gridType in [ GridType_LinearBoundary, GridType_LinearL0Boundary ]: return Grid.createPolyBoundaryGrid(dim, deg) elif deg > 1 and gridType in [GridType_LinearClenshawCurtis]: return Grid.createPolyClenshawCurtisGrid(dim, deg) elif deg > 1 and gridType in [GridType_LinearClenshawCurtisBoundary]: return Grid.createPolyClenshawCurtisBoundaryGrid(dim, deg) elif deg > 1 and gridType in [GridType_ModLinear]: return Grid.createModPolyGrid(dim, deg) elif deg > 1 and gridType in [GridType_ModLinearClenshawCurtis]: return Grid.createModPolyClenshawCurtisGrid(dim, deg) else: gridConfig = RegularGridConfiguration() gridConfig.type_ = gridType gridConfig.dim_ = dim gridConfig.maxDegree_ = deg return Grid.createGrid(gridConfig)
def createGrid(self): """ Creates the specified grid """ grid = None if self.__file is not None and os.path.exists(self.__file): gridFormatter = GridFormatter() grid = gridFormatter.deserializeFromFile(self.__file) else: if self.__grid is not None: self.__dim = self.__grid.getStorage().dim() if (self.__dim is None or self.level is None) and self.__grid is None: raise AttributeError("Not all attributes assigned to create\ grid") if self.__border is not None: if self.__border == BorderTypes.TRAPEZOIDBOUNDARY: if self.__deg > 1: grid = Grid.createPolyBoundaryGrid( self.__dim, self.__deg) else: grid = Grid.createLinearBoundaryGrid(self.__dim) elif self.__border == BorderTypes.COMPLETEBOUNDARY: if self.__deg > 1: raise NotImplementedError() else: grid = Grid.createLinearBoundaryGrid(self.__dim, 0) else: if self.__deg > 1: grid = Grid.createModPolyGrid(self.__dim, self.__deg) else: grid = Grid.createModLinearGrid(self.__dim) else: # no border points if self.__deg > 1: grid = Grid.createPolyGrid(self.__dim, self.__deg) else: grid = Grid.createLinearGrid(self.__dim) # generate the grid if self.level is not None: generator = grid.createGridGenerator() if not self.__full: generator.regular(self.level) else: generator.full(self.level) # if there is a grid specified, add all the missing points if self.__grid is not None: gs = grid.getStorage() copygs = self.__grid.getStorage() # insert grid points for i in xrange(copygs.size()): gp = copygs.get(i) # insert grid point if not gs.has_key(gp): gs.insert(HashGridIndex(gp)) if self.__border == BorderTypes.TRAPEZOIDBOUNDARY: insertTruncatedBorder(grid, gp) gs.recalcLeafProperty() return grid