]> SALOME platform Git repositories - tools/yacsgen.git/blob - Examples/calcium1/components.py
Salome HOME
Merge from V6_main 01/04/2013
[tools/yacsgen.git] / Examples / calcium1 / components.py
1 # Copyright (C) 2009-2013  EDF R&D
2 #
3 # This library is free software; you can redistribute it and/or
4 # modify it under the terms of the GNU Lesser General Public
5 # License as published by the Free Software Foundation; either
6 # version 2.1 of the License.
7 #
8 # This library is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11 # Lesser General Public License for more details.
12 #
13 # You should have received a copy of the GNU Lesser General Public
14 # License along with this library; if not, write to the Free Software
15 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
16 #
17 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18 #
19
20 import os
21 #import context from ..
22 execfile("../context.py")
23 from module_generator import Generator,Module,Service,PYComponent,CPPComponent,F77Component
24
25 # C++ component
26
27 body="""
28 std::cerr << "a: " << a << std::endl;
29 std::cerr << "b: " << b << std::endl;
30 int info;
31 double t1,t2;
32 float tt1,tt2;
33 int i=1;
34 int mval;
35 double val[10],rval[10];
36 int ival[10],rival[10];
37 long lval[10],rlval[10];
38 float cval[20],rcval[20];
39 char* sval[]={"coucou","bonjour","salut"};
40 char* rsval[3];
41 char mystring1[10];
42 char mystring2[10];
43 char mystring3[10];
44 rsval[0]=mystring1;
45 rsval[1]=mystring2;
46 rsval[2]=mystring3;
47
48 char instance_name[72];
49 info = cp_cd(component,instance_name);
50 std::cerr << "instance_name: " << instance_name << std::endl;
51
52 val[0]=3.2;
53 val[1]=5.2;
54 val[2]=9.8;
55 std::cerr << "val: " << val[0] << std::endl;
56 std::cerr << "val: " << val[1] << std::endl;
57 std::cerr << "val: " << val[2] << std::endl;
58 cp_edb(component,CP_ITERATION,0.,1,(char*)"ba",10,val);
59 cp_edb(component,CP_ITERATION,0.,2,(char*)"ba",10,val);
60 cp_edb(component,CP_ITERATION,0.,3,(char*)"ba",10,val);
61
62 std::cerr << "sval: " << sval[0] << std::endl;
63 std::cerr << "sval: " << sval[1] << std::endl;
64 std::cerr << "sval: " << sval[2] << std::endl;
65 cp_ech(component,CP_ITERATION,0.,1,(char*)"bb",3,sval,6);
66
67 ival[0]=1;
68 ival[1]=2;
69 ival[2]=3;
70 std::cerr << "ival: " << ival[0] << std::endl;
71 std::cerr << "ival: " << ival[1] << std::endl;
72 std::cerr << "ival: " << ival[2] << std::endl;
73 cp_een(component,CP_ITERATION,0.,1,(char*)"bc",10,ival);
74
75 cval[0]=1;
76 cval[1]=2;
77 cval[2]=3;
78 cval[3]=4.5;
79 cval[4]=5.6;
80 cval[5]=7.8;
81 std::cerr << "cval: " << cval[0] << std::endl;
82 std::cerr << "cval: " << cval[1] << std::endl;
83 std::cerr << "cval: " << cval[2] << std::endl;
84 std::cerr << "cval: " << cval[3] << std::endl;
85 std::cerr << "cval: " << cval[4] << std::endl;
86 std::cerr << "cval: " << cval[5] << std::endl;
87 cp_ecp(component,CP_ITERATION,0.,1,(char*)"bd",10,cval);
88
89 cval[0]=1.1;
90 cval[1]=2.2;
91 cval[2]=3.3;
92 std::cerr << "cval: " << cval[0] << std::endl;
93 std::cerr << "cval: " << cval[1] << std::endl;
94 std::cerr << "cval: " << cval[2] << std::endl;
95 cp_ere(component,CP_ITERATION,0.,1,(char*)"be",10,cval);
96
97 ival[0]=1;
98 ival[1]=0;
99 ival[2]=1;
100 std::cerr << "ival: " << ival[0] << std::endl;
101 std::cerr << "ival: " << ival[1] << std::endl;
102 std::cerr << "ival: " << ival[2] << std::endl;
103 cp_elo(component,CP_ITERATION,0.,1,(char*)"bf",10,ival);
104
105 lval[0]=1;
106 lval[1]=2;
107 lval[2]=3;
108 std::cerr << "lval: " << lval[0] << std::endl;
109 std::cerr << "lval: " << lval[1] << std::endl;
110 std::cerr << "lval: " << lval[2] << std::endl;
111 cp_eln(component,CP_ITERATION,0.,1,(char*)"bg",10,lval);
112
113 ival[0]=1;
114 ival[1]=2;
115 ival[2]=3;
116 std::cerr << "ival: " << ival[0] << std::endl;
117 std::cerr << "ival: " << ival[1] << std::endl;
118 std::cerr << "ival: " << ival[2] << std::endl;
119 cp_een(component,CP_ITERATION,0.,1,(char*)"bh",10,ival);
120
121 lval[0]=1;
122 lval[1]=2;
123 lval[2]=3;
124 std::cerr << "lval: " << lval[0] << std::endl;
125 std::cerr << "lval: " << lval[1] << std::endl;
126 std::cerr << "lval: " << lval[2] << std::endl;
127 cp_elg(component,CP_ITERATION,0.,1,(char*)"bi",10,lval);
128
129 /* read */
130 info=cp_ldb(component,CP_ITERATION,&t1,&t2,&i,(char*)"aa",3,&mval,rval);
131 std::cerr << "info: " << info << std::endl;
132 std::cerr << "rval: " << rval[0] << std::endl;
133 std::cerr << "rval: " << rval[1] << std::endl;
134 std::cerr << "rval: " << rval[2] << std::endl;
135
136 info=cp_lch(component,CP_ITERATION,&tt1,&tt2,&i,(char*)"ab",3,&mval,rsval,7);
137 std::cerr << "info: " << info << std::endl;
138 std::cerr << "rsval: " << rsval[0] << std::endl;
139 std::cerr << "rsval: " << rsval[1] << std::endl;
140 std::cerr << "rsval: " << rsval[2] << std::endl;
141
142 info=cp_len(component,CP_ITERATION,&tt1,&tt2,&i,(char*)"ac",3,&mval,rival);
143 std::cerr << "info: " << info << std::endl;
144 std::cerr << "rival: " << rival[0] << std::endl;
145 std::cerr << "rival: " << rival[1] << std::endl;
146 std::cerr << "rival: " << rival[2] << std::endl;
147
148 info=cp_lcp(component,CP_ITERATION,&tt1,&tt2,&i,(char*)"ad",3,&mval,rcval);
149 std::cerr << "info: " << info << std::endl;
150 std::cerr << "rcval: " << rcval[0] << std::endl;
151 std::cerr << "rcval: " << rcval[1] << std::endl;
152 std::cerr << "rcval: " << rcval[2] << std::endl;
153 std::cerr << "rcval: " << rcval[3] << std::endl;
154 std::cerr << "rcval: " << rcval[4] << std::endl;
155 std::cerr << "rcval: " << rcval[5] << std::endl;
156
157 rcval[0]=0.;
158 rcval[1]=0.;
159 rcval[2]=0.;
160 info=cp_lre(component,CP_ITERATION,&tt1,&tt2,&i,(char*)"ae",3,&mval,rcval);
161 std::cerr << "info: " << info << std::endl;
162 std::cerr << "rcval: " << rcval[0] << std::endl;
163 std::cerr << "rcval: " << rcval[1] << std::endl;
164 std::cerr << "rcval: " << rcval[2] << std::endl;
165
166 rival[0]=0;
167 rival[1]=0;
168 rival[2]=0;
169 i=1;
170 info=cp_llo(component,CP_ITERATION,&tt1,&tt2,&i,(char*)"af",3,&mval,rival);
171 std::cerr << "info: " << info << std::endl;
172 std::cerr << "rival: " << rival[0] << std::endl;
173 std::cerr << "rival: " << rival[1] << std::endl;
174 std::cerr << "rival: " << rival[2] << std::endl;
175
176 info=cp_lln(component,CP_ITERATION,&tt1,&tt2,&i,(char*)"ag",3,&mval,rlval);
177 std::cerr << "info: " << info << std::endl;
178 std::cerr << "rlval: " << rlval[0] << std::endl;
179 std::cerr << "rlval: " << rlval[1] << std::endl;
180 std::cerr << "rlval: " << rlval[2] << std::endl;
181
182 rival[0]=0;
183 rival[1]=0;
184 rival[2]=0;
185 i=1;
186 info=cp_len(component,CP_ITERATION,&tt1,&tt2,&i,(char*)"ah",3,&mval,rival);
187 std::cerr << "info: " << info << std::endl;
188 std::cerr << "rival: " << rival[0] << std::endl;
189 std::cerr << "rival: " << rival[1] << std::endl;
190 std::cerr << "rival: " << rival[2] << std::endl;
191
192 info=cp_llg(component,CP_ITERATION,&tt1,&tt2,&i,(char*)"ai",3,&mval,rlval);
193 std::cerr << "info: " << info << std::endl;
194 std::cerr << "rlval: " << rlval[0] << std::endl;
195 std::cerr << "rlval: " << rlval[1] << std::endl;
196 std::cerr << "rlval: " << rlval[2] << std::endl;
197
198 info=cp_fini(component,(char*)"aa",1);
199 std::cerr << "info: " << info << std::endl;
200
201 info=cp_effi(component,(char*)"aa",3);
202 std::cerr << "info: " << info << std::endl;
203
204 cp_fin(component,CP_ARRET);
205
206 c=2*rval[0];
207 std::cerr << "c: " << c << std::endl;
208 """
209 c1=CPPComponent("compo1",services=[
210           Service("s1",inport=[("a","double"),("b","double")],
211                        outport=[("c","double")],
212                        instream=[("aa","CALCIUM_double","I"),
213                                  ("ab","CALCIUM_string","I"),
214                                  ("ac","CALCIUM_integer","I"),
215                                  ("ad","CALCIUM_complex","I"),
216                                  ("ae","CALCIUM_real","I"),
217                                  ("af","CALCIUM_logical","I"),
218                                  ("ag","CALCIUM_long","I"),
219                                  ("ah","CALCIUM_integer","I"),
220                                  ("ai","CALCIUM_integer","I"),
221                                 ],
222                        outstream=[("ba","CALCIUM_double","I"),
223                                   ("bb","CALCIUM_string","I"),
224                                   ("bc","CALCIUM_integer","I"),
225                                   ("bd","CALCIUM_complex","I"),
226                                   ("be","CALCIUM_real","I"),
227                                   ("bf","CALCIUM_logical","I"),
228                                   ("bg","CALCIUM_long","I"),
229                                   ("bh","CALCIUM_integer","I"),
230                                   ("bi","CALCIUM_integer","I"),
231                                  ],
232                        defs="//def1",body=body,
233                  ),
234           ],
235          )
236
237 # python component
238
239 defs="""
240 """
241
242 body="""
243 #b1
244 info,name= calcium.cp_cd(component)
245 print "name=",name
246 print "info=",info
247
248 dep=calcium.CP_ITERATION
249
250 #double
251 val=numpy.zeros(10,'d')
252 val[0]=7.7
253 val[5]=a*b
254 nval=10
255 print "--------> Appel calcium.cp_edb",val
256 info=calcium.cp_edb(component, dep, 0., 1, "ba", nval,val)
257 info=calcium.cp_edb(component, dep, 0., 2, "ba", nval,val)
258 info=calcium.cp_edb(component, dep, 0., 3, "ba", nval,val)
259
260 #string
261 val=numpy.array(["coucouc ","bonjour ","salut "])
262 val=calcium.stringArray(3,8)
263 val[0]="coucouc"
264 val[1]="bonjour"
265 val[2]="salut"
266 print "--------> Appel calcium.cp_ech",val
267 info=calcium.cp_ech(component, dep, 0., 1, "bb", 3,val)
268
269 #int
270 val=numpy.zeros(10,'i')
271 val[0]=1
272 val[1]=3
273 print "--------> Appel calcium.cp_een",val
274 info=calcium.cp_een(component, dep, 0., 1, "bc", 3,val)
275
276 val=numpy.zeros(10,'F')
277 val[0]=1+2j
278 val[1]=3+2j
279 print "--------> Appel calcium.cp_ecp",val
280 info=calcium.cp_ecp(component, dep, 0., 1, "bd", 3,val)
281
282 val=numpy.zeros(10,'f')
283 val[0]=1.3
284 val[1]=3.2
285 print "--------> Appel calcium.cp_ere",val
286 info=calcium.cp_ere(component, dep, 0., 1, "be", 3,val)
287
288 val=numpy.zeros(10,'i')
289 val[0]=True
290 val[1]=False
291 val[2]=False
292 print "--------> Appel calcium.cp_elo",val
293 info=calcium.cp_elo(component, dep, 0., 1, "bf", 3,val)
294
295 val=numpy.zeros(10,'l')
296 val[0]=1
297 val[1]=3
298 val[2]=333
299 print "--------> Appel calcium.cp_eln",val
300 info=calcium.cp_eln(component, dep, 0., 1, "bg", 3,val)
301
302 val=numpy.zeros(10,'i')
303 val[0]=1
304 val[1]=3
305 val[2]=4
306 print "--------> Appel calcium.cp_een",val
307 info=calcium.cp_een(component, dep, 0., 1, "bh", 3,val)
308
309 val=numpy.zeros(10,'l')
310 val[0]=1
311 val[1]=3
312 val[2]=333
313 print "--------> Appel calcium.cp_elg",val
314 info=calcium.cp_elg(component, dep, 0., 1, "bi", 3,val)
315 print "info=",info
316
317 #read
318 val=numpy.zeros(10,'d')
319 print "--------> Appel calcium.cp_ldb"
320 info,tt,ii,mval=calcium.cp_ldb(component, dep, 0.,1., 1, "aa", 3,val)
321 print mval,val
322
323 val=numpy.array(["","","",], dtype='S13')
324 print "--------> Appel calcium.cp_lch"
325 info,tt,ii,mval=calcium.cp_lch(component, dep, 0.,1., 1, "ab", 3,val)
326 print mval,val
327 print val.dtype
328
329 val=numpy.array(["            ","  ","  ",], dtype='S13')
330 print "--------> Appel calcium.cp_lch"
331 info,tt,ii,mval=calcium.cp_lch(component, dep, 0.,1., 1, "ab", 3,val)
332 print mval,val
333 print val.dtype
334
335 val=calcium.stringArray(3,8)
336 print "--------> Appel calcium.cp_lch"
337 info,tt,ii,mval=calcium.cp_lch(component, dep, 0.,1., 1, "ab", 3,val)
338 print mval,val
339 print val[0]
340 print val[1]
341 print val[2]
342
343 val=numpy.zeros(10,'i')
344 print "--------> Appel calcium.cp_len"
345 info,tt,ii,mval=calcium.cp_len(component, dep, 0.,1., 1, "ac", 3,val)
346 print mval,val
347
348 val=numpy.zeros(10,'F')
349 print "--------> Appel calcium.cp_lcp"
350 info,tt,ii,mval=calcium.cp_lcp(component, dep, 0.,1., 1, "ad", 3,val)
351 print mval,val
352
353 val=numpy.zeros(10,'f')
354 print "--------> Appel calcium.cp_lre"
355 info,tt,ii,mval=calcium.cp_lre(component, dep, 0.,1., 1, "ae", 3,val)
356 print mval,val
357
358 val=numpy.zeros(10,'i')
359 print "--------> Appel calcium.cp_llo"
360 info,tt,ii,mval=calcium.cp_llo(component, dep, 0.,1., 1, "af", 3,val)
361 print mval,val
362
363 val=numpy.zeros(10,'l')
364 print "--------> Appel calcium.cp_lln"
365 info,tt,ii,mval=calcium.cp_lln(component, dep, 0.,1., 1, "ag", 3,val)
366 print mval,val
367
368 val=numpy.zeros(10,'i')
369 print "--------> Appel calcium.cp_len"
370 info,tt,ii,mval=calcium.cp_len(component, dep, 0.,1., 1, "ah", 3,val)
371 print mval,val
372
373 val=numpy.zeros(10,'l')
374 print "--------> Appel calcium.cp_llg"
375 info,tt,ii,mval=calcium.cp_llg(component, dep, 0.,1., 1, "ai", 3,val)
376 print "info=",info
377 print mval,val
378
379 info=calcium.cp_fini(component,"aa",1)
380 print "info=",info
381
382 info=calcium.cp_effi(component,"aa",3)
383 print "info=",info
384
385 import time
386 time.sleep(15)
387
388 c=a+b
389 d=a-b
390 err=calcium.cp_fin(component,calcium.CP_ARRET)
391 print "err=",err
392 """
393 c2=PYComponent("compo2",services=[
394           Service("s1",inport=[("a","double"),("b","double")],
395                        outport=[("c","double"),("d","double")],
396                        instream=[("aa","CALCIUM_double","I"),
397                                  ("ab","CALCIUM_string","I"),
398                                  ("ac","CALCIUM_integer","I"),
399                                  ("ad","CALCIUM_complex","I"),
400                                  ("ae","CALCIUM_real","I"),
401                                  ("af","CALCIUM_logical","I"),
402                                  ("ag","CALCIUM_long","I"),
403                                  ("ah","CALCIUM_integer","I"),
404                                  ("ai","CALCIUM_integer","I"),
405                                 ],
406                        outstream=[("ba","CALCIUM_double","I"),
407                                   ("bb","CALCIUM_string","I"),
408                                   ("bc","CALCIUM_integer","I"),
409                                   ("bd","CALCIUM_complex","I"),
410                                   ("be","CALCIUM_real","I"),
411                                   ("bf","CALCIUM_logical","I"),
412                                   ("bg","CALCIUM_long","I"),
413                                   ("bh","CALCIUM_integer","I"),
414                                   ("bi","CALCIUM_integer","I"),
415                                  ],
416                        defs=defs,body=body,
417                  ),
418              ],
419          )
420
421 #fortran component
422
423 cwd=os.getcwd()
424
425 c3=F77Component("fcode1", 
426                 services=[
427                           Service("serv1",
428                                   inport=[("a","double"),("b","double")],
429                                   outport=[("c","double")],
430                                   instream=[("aa","CALCIUM_double","I"),
431                                             ("ab","CALCIUM_string","I"),
432                                             ("ac","CALCIUM_integer","I"),
433                                             ("ad","CALCIUM_complex","I"),
434                                             ("ae","CALCIUM_real","I"),
435                                             ("af","CALCIUM_logical","I"),
436                                             ("ag","CALCIUM_long","I"),
437                                             ("ah","CALCIUM_integer","I"),
438                                             ("ai","CALCIUM_integer","I"),
439                                            ],
440                                   outstream=[("ba","CALCIUM_double","I"),
441                                              ("bb","CALCIUM_string","I"),
442                                              ("bc","CALCIUM_integer","I"),
443                                              ("bd","CALCIUM_complex","I"),
444                                              ("be","CALCIUM_real","I"),
445                                              ("bf","CALCIUM_logical","I"),
446                                              ("bg","CALCIUM_long","I"),
447                                              ("bh","CALCIUM_integer","I"),
448                                              ("bi","CALCIUM_integer","I"),
449                                             ],
450                                  ),
451                          ],
452                 libs="-L%s -lcode1" % cwd,
453                 rlibs="-Wl,--rpath -Wl,%s" % cwd,
454                )
455
456 g=Generator(Module("pycompos",components=[c1,c2,c3],prefix="./install",layout="multidir"),context)
457 g.generate()
458 g.bootstrap()
459 g.configure()
460 g.make()
461 g.install()
462 g.make_appli("appli", restrict=["KERNEL"], altmodules={"GUI":GUI_ROOT_DIR, "YACS":YACS_ROOT_DIR})
463
464
465