Salome HOME
Fix computation height of isocel triangle with base equal zero : NaN
[tools/medcoupling.git] / doc / tutorial / atestMEDCouplingPoly.rst
1
2 .. _python_testMEDCoupling2D_solution:
3
4 2D polygons meshing
5 ~~~~~~~~~~~~~~~~~~~
6
7 ::
8
9     import medcoupling as mc
10         from math import *
11
12         numberOfNodes = 25
13         numberOfCells = 12
14
15         print("1 ********************")
16         spaceDimension = 2
17
18         # Coordinates of central polygon
19         X = [1.,0.5,-0.5,-1.,-0.5,0.5]
20         Y = [0.,sqrt(3.)/2.,sqrt(3.)/2.,0.,-sqrt(3.)/2.,-sqrt(3.)/2.]
21
22         coordinates = []
23         # origin
24         coordinates.append(0.)
25         coordinates.append(0.)
26
27         # central polygon
28         for i in range(6):
29                 coordinates.append(X[i])
30                 coordinates.append(Y[i])
31
32         # Coordinates of second couron
33         xc = 1.5
34         yc = - sqrt(3.)/2.
35         d = sqrt(xc*xc+yc*yc)
36         a30 = pi/6.0
37         a60 = pi/3.0
38
39         for i in range(6):
40                 angle = a30+a60*i
41                 xtmp = d*cos(angle)
42                 ytmp = d*sin(angle)
43                 start = (i-1)%6
44                 coordinates.append(xtmp+X[(i-1)%6])
45                 coordinates.append(ytmp+Y[(i-1)%6])
46                 coordinates.append(xtmp+X[i%6])
47                 coordinates.append(ytmp+Y[i%6])
48                 coordinates.append(xtmp+X[(i+1)%6])
49                 coordinates.append(ytmp+Y[(i+1)%6])
50
51         print("2 ********************")
52         # Creation of mesh
53         mesh=mc.MEDCoupplingUMesh.New()
54         mesh.setMeshDimension(2)
55         mesh.allocateCells(numberOfCells)
56         mesh.setName("MaFleur")
57
58         myCoords=mc.DataArrayDouble.New()
59         myCoords.setValues(coordinates,numberOfNodes,2)
60         mesh.setCoords(myCoords)
61
62         print("3 ********************")
63         # Connectivity of triangular meshing
64         connectivity = []
65         for i in range(6):
66                 connectivity.append(0)
67                 connectivity.append(i%6+1)
68                 connectivity.append((i+1)%6+1)
69         for i in range(6):
70                 mesh.insertNextCell(mc.NORM_TRI3,3,connectivity[3*i:3*(i+1)])
71                 pass
72
73         print("4 ********************")
74         # Connectivity of hexagons
75         connectivity = []
76         for i in range(6):
77                 start = i%6+1
78                 connectivity.append(start)
79                 connectivity.append(start+2*(i+3))
80                 connectivity.append(start+2*(i+3)+1)
81                 connectivity.append(start+2*(i+3)+2)
82                 if i==5:
83                         connectivity.append(7)
84                 else:
85                         connectivity.append(start+2*(i+3)+3)
86                 connectivity.append((i+1)%6+1)
87         for i in range(6):
88                 mesh.insertNextCell(mc.NORM_POLYGON,6,connectivity[6*i:6*(i+1)])
89                 pass
90
91         print("5 ********************")
92         mesh.checkConsistencyLight()
93
94         medFileName = "MEDCouppling_Fleur.med"
95         mc.WriteUMesh(medFileName,mesh,True)