Salome HOME
CCAR: add SALOME exception in run
[samples/dsccode.git] / src / PYCOMPO / PYCOMPO.py
1 import sys,traceback,os
2 import DSCCODE__POA
3 import calcium
4 import dsccalcium
5 import SALOME
6
7 try:
8   import numpy
9 except:
10   numpy=None
11
12 class PYCOMPO(DSCCODE__POA.PYCOMPO,dsccalcium.PyDSCComponent):
13   """
14      To be identified as a SALOME component this Python class
15      must have the same name as the component, inherit omniorb
16      class DSCCODE__POA.PYCOMPO and DSC class dsccalcium.PyDSCComponent
17      that implements DSC API.
18   """
19   def __init__ ( self, orb, poa, contID, containerName, instanceName, interfaceName ):
20     print "PYCOMPO.__init__: ", containerName, ';', instanceName,interfaceName
21     dsccalcium.PyDSCComponent.__init__(self, orb, poa,contID,containerName,instanceName,interfaceName)
22
23   def init_service(self,service):
24     print "init_service:",service
25     calcium.create_calcium_port(self.proxy,"tabin","CALCIUM_double","IN","I");
26     calcium.create_calcium_port(self.proxy,"tabout","CALCIUM_double","OUT","I");
27     return True
28
29   def run( self):
30     print "PYCOMPO.run"
31     try:
32       ndim=10
33
34       force=calcium.doubleArray(ndim)
35       for i in xrange(ndim):
36         force[i]=i
37       err=calcium.cp_edb(self.proxy,calcium.CP_ITERATION ,0.,1,"tabout",ndim,force)
38
39       if numpy:
40         val=numpy.zeros(ndim,'d')
41       else:
42         val=calcium.doubleArray(ndim)
43       err,t,i,nval=calcium.cp_ldb(self.proxy,calcium.CP_ITERATION,0.,0.,1,"tabin",ndim,val)
44       print err,t,i,nval
45       if numpy:
46         print val
47       else:
48         for i in xrange(ndim):
49           print val[i],
50         print
51
52       print "End of PYCOMPO.run"
53       sys.stdout.flush()
54     except:
55       sys.stdout.flush()
56       typ,exc_val,exc_fr=sys.exc_info()
57       l=traceback.format_exception(exc_typ,exc_val,exc_fr)
58       raise SALOME.SALOME_Exception(SALOME.ExceptionStruct(SALOME.BAD_PARAM,"".join(l),"PYCOMPO.py",0))
59