]> SALOME platform Git repositories - tools/solverlab.git/blob - CDMATH/postprocessing/analyticalFunction_discretizer.py
Salome HOME
Updated expected values in python unit tests
[tools/solverlab.git] / CDMATH / postprocessing / analyticalFunction_discretizer.py
1 import cdmath
2 import os
3
4 # Function to use in case of a single field to discretize
5
6 def discretizeFunction(func, mesh,var_name):
7     myField=cdmath.Field(var, cdmath.CELLS, mesh,1)
8     nbCells=mesh.getNumberOfCells()
9     spaceDim=mesh.getSpaceDimension()
10
11     if spaceDim==1 :
12         for i in range(nbCells):
13             x=mesh.getCell(i).x()
14             myField[i]=func(x)
15     elif spaceDim==2 :
16         for i in range(nbCells):
17             x=mesh.getCell(i).x()
18             y=mesh.getCell(i).y()
19             myField[i]=func(x,y)
20     elif spaceDim==3 :
21         for i in range(nbCells):
22             x=mesh.getCell(i).x()
23             y=mesh.getCell(i).y()
24             z=mesh.getCell(i).z()
25             myField[i]=func(x,y,z)
26     else :
27         raise ValueError("Wrong space dimension : expected dimension 1, 2 or 3")
28
29     return myField
30
31 # Class to use in case of many fields to discretize (requires the creation of a dictionary)
32
33 class analyticalFunction_discretizer:
34
35     def __init__(self, mesh, var_dict):
36         self.mesh = mesh
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}
41
42 # useless
43     # def ShowAllVar(self):
44     #     for varName in self.varList:
45     #         print varName
46
47
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()
53
54         if spaceDim==1 :
55             for i in range(nbCells):
56                 x=self.mesh.getCell(i).x()
57                 myField[i]=func(x)
58         elif spaceDim==2 :
59             for i in range(nbCells):
60                 x=self.mesh.getCell(i).x()
61                 y=self.mesh.getCell(i).y()
62                 myField[i]=func(x,y)
63         elif spaceDim==3 :
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)
69         else :
70             raise ValueError("Wrong space dimension : expected dimension 1, 2 or 3")
71
72         return myField
73
74     def get_variable(self, var):
75         return self.fields[var]
76
77     def save_all_variablesVTK(self):
78         for var in self.var_list:
79             self.get_variable(var).writeVTK(var)
80
81     def save_all_variablesMED(self):
82         for var in self.var_list:
83             self.get_variable(var).writeMED(var)
84
85     def save_all_variablesCSV(self):
86         for var in self.var_list:
87             self.get_variable(var).writeCSV(var)