Salome HOME
CCAR: add a python component PYCOMPO which uses NUMPY API to DSC
[samples/dsccode.git] / src / PYCOMPO / PYCOMPO.py
diff --git a/src/PYCOMPO/PYCOMPO.py b/src/PYCOMPO/PYCOMPO.py
new file mode 100644 (file)
index 0000000..3a7dbeb
--- /dev/null
@@ -0,0 +1,45 @@
+import sys,traceback,os
+import DSCCODE__POA
+import calcium
+import dsccalcium
+import numpy
+
+class PYCOMPO(DSCCODE__POA.PYCOMPO,dsccalcium.PyDSCComponent):
+  """
+     To be identified as a SALOME component this Python class
+     must have the same name as the component, inherit omniorb
+     class DSCCODE__POA.PYCOMPO and DSC class dsccalcium.PyDSCComponent
+     that implements DSC API.
+  """
+  def __init__ ( self, orb, poa, contID, containerName, instanceName, interfaceName ):
+    print "PYCOMPO.__init__: ", containerName, ';', instanceName,interfaceName
+    dsccalcium.PyDSCComponent.__init__(self, orb, poa,contID,containerName,instanceName,interfaceName)
+
+  def init_service(self,service):
+    print "init_service:",service
+    calcium.create_calcium_port(self.proxy,"tabin","CALCIUM_double","IN","I");
+    calcium.create_calcium_port(self.proxy,"tabout","CALCIUM_double","OUT","I");
+    return True
+
+  def run( self):
+    print "PYCOMPO.run"
+    ndim=10
+
+    force=calcium.doubleArray(ndim)
+    for i in xrange(ndim):
+      force[i]=i
+    err=calcium.cp_edb(self.proxy,calcium.CP_ITERATION ,0.,1,"tabout",ndim,force)
+
+    #val=calcium.doubleArray(ndim)
+    val=numpy.zeros(ndim,'d')
+    err,t,i,nval=calcium.cp_ldb(self.proxy,calcium.CP_ITERATION,0.,0.,1,"tabin",ndim,val)
+    print err,t,i,nval
+    #for i in xrange(ndim):
+    #  print val[i],
+    #print
+    print val
+
+    print "End of PYCOMPO.run"
+    sys.stdout.flush()
+
+