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