Salome HOME
Merge from V6_main 01/04/2013
[modules/med.git] / src / MedClient / test / test1 / TestMedCorba2.py
1 #  -*- coding: iso-8859-1 -*-
2 # Copyright (C) 2007-2013  CEA/DEN, EDF R&D, OPEN CASCADE
3 #
4 # Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
5 # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
6 #
7 # This library is free software; you can redistribute it and/or
8 # modify it under the terms of the GNU Lesser General Public
9 # License as published by the Free Software Foundation; either
10 # version 2.1 of the License.
11 #
12 # This library is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15 # Lesser General Public License for more details.
16 #
17 # You should have received a copy of the GNU Lesser General Public
18 # License along with this library; if not, write to the Free Software
19 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
20 #
21 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
22 #
23
24 import os
25 BASE = os.environ["MED_ROOT_DIR"]
26 BASE = os.path.join( BASE, 'share', 'salome', 'resources', 'med' )
27
28 fileName = os.path.join( BASE, 'pointe.med' )
29 fileName = os.path.join( BASE, 'carre_en_quad4_seg2.med' )
30
31 # MED Mesh read from a (local) file
32
33 from libMEDMEM_Swig import *
34
35 md = MED()
36
37 mdDriver = MED_MED_RDONLY_DRIVER(fileName, md)
38
39 mdDriver.open()
40 mdDriver.readFileStruct()
41 mdDriver.close()
42
43 mLocal = md.getMesh(md.getMeshName(0))
44 mLocal.read()
45
46 # MED Mesh recieved from a distant component (via CORBA)
47
48 from omniORB import CORBA
49 from LifeCycleCORBA import *
50 from libSALOME_Swig import *
51
52 orb = CORBA.ORB_init([''], CORBA.ORB_ID)
53 lcc = LifeCycleCORBA(orb)
54
55 C = lcc.FindOrLoadComponent("FactoryServerPy", "Compo1Py")
56 C.Initialise(fileName)
57
58 mDistant = C.Calcul1()
59
60 # Compare local and distant copies
61
62 def ecart(x, y):
63     s = 0.
64     if (len(x) != len(y)):
65         return 1.
66     
67     for i in xrange(len(x)):
68         s = s + abs(x[i] - y[i]);
69     return s
70
71 def compare(x, y):
72     if (len(x) != len(y)):
73         return 0
74     for i in xrange(len(x)):
75         if x[i] != y[i]:
76             return 0
77     return 1
78
79 def transpose(x, n, m):
80     y = range(len(x));
81     for i in xrange(n):
82         for j in xrange(m):
83             y[i + j*n] = x[i*m + j];
84     return y
85
86 m = mDistant.getSpaceDimension();
87 print "SpaceDimension    : ", m
88 n = mDistant.getNumberOfNodes();
89 print "NumberOfNodes     : ", n
90
91 x1 = mDistant.getCoordinates(MED_FULL_INTERLACE);
92 x2 = mDistant.getCoordinates(MED_NO_INTERLACE);
93 x3 = mDistant.getCoordinates(MED_FULL_INTERLACE);
94
95 print "Coordinates (MED_FULL_INTERLACE) : ", x1
96 print "Coordinates (MED_NO_INTERLACE) :   ", x2
97
98 if (ecart(x1, x3) > 1e-7):
99     raise RuntimeError, "getCoordinates : INTERLACE"
100
101 x4 = transpose(x1, n, m);
102 print "Coordinates (MED_NO_INTERLACE) :   ", x4
103
104 if (ecart(x2, x4) > 1e-7):
105     raise RuntimeError, "getCoordinates : NO_INTERLACE"
106
107 print
108 print "All tests passed"