4 # Function to use in case of a single field to discretize
6 def discretizeFunction(func, mesh,var_name):
7 myField=cdmath.Field(var, cdmath.CELLS, mesh,1)
8 nbCells=mesh.getNumberOfCells()
9 spaceDim=mesh.getSpaceDimension()
12 for i in range(nbCells):
16 for i in range(nbCells):
21 for i in range(nbCells):
25 myField[i]=func(x,y,z)
27 raise ValueError("Wrong space dimension : expected dimension 1, 2 or 3")
31 # Class to use in case of many fields to discretize (requires the creation of a dictionary)
33 class analyticalFunction_discretizer:
35 def __init__(self, mesh, var_dict):
37 self.var_dict = var_dict
38 self.var_list = self.var_dict.keys()
39 self.fields = {var_name: self.eval(
40 var_name) for var_name in self.var_list}
43 # def ShowAllVar(self):
44 # for varName in self.varList:
48 def eval(self, var_name):
49 func = self.var_dict[var_name]
50 myField=cdmath.Field(var_name, cdmath.CELLS, self.mesh,1)
51 nbCells=self.mesh.getNumberOfCells()
52 spaceDim=self.mesh.getSpaceDimension()
55 for i in range(nbCells):
56 x=self.mesh.getCell(i).x()
59 for i in range(nbCells):
60 x=self.mesh.getCell(i).x()
61 y=self.mesh.getCell(i).y()
64 for i in range(nbCells):
65 x=self.mesh.getCell(i).x()
66 y=self.mesh.getCell(i).y()
67 z=self.mesh.getCell(i).z()
68 myField[i]=func(x,y,z)
70 raise ValueError("Wrong space dimension : expected dimension 1, 2 or 3")
74 def get_variable(self, var):
75 return self.fields[var]
77 def save_all_variablesVTK(self):
78 for var in self.var_list:
79 self.get_variable(var).writeVTK(var)
81 def save_all_variablesMED(self):
82 for var in self.var_list:
83 self.get_variable(var).writeMED(var)
85 def save_all_variablesCSV(self):
86 for var in self.var_list:
87 self.get_variable(var).writeCSV(var)