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