--- /dev/null
+A Python component
+====================
+
+To build this example, modify the components.py file
+to take into account your configuration.
+
+1- your prerequisite file
+2- your KERNEL_ROOT_DIR
+
+Then set the environment (including PYTHONPATH for YACGEN, ../.. from here and execute components.py ::
+
+ source <your prerequisite file>
+ python components.py
+
+You should get a SALOME module in source form (pycompos_SRC), its installation (install) and
+a SALOME application (appli) composed of modules KERNEL, GUI, YACS and pycompos.
+
+To run a coupling:
+
+ 1. start SALOME in background : ./appli/runAppli -t
+ 2. start a SALOME session : ./appli/runSession
+ 3. start YACS coupler with coupling file : driver coupling.xml
+ 4. examine output files in /tmp
+ 5. shutdown SALOME : shutdowSalome.py
+ 6. exit session : CTRL-D (or exit)
--- /dev/null
+import os
+from module_generator import Generator,Module,Service,PYComponent
+
+context={'update':1,
+ "prerequisites":"/local/cchris/.packages.d/envSalome50",
+ "kernel":"/local/chris/SALOME2/RELEASES/Install/KERNEL_V5",
+ }
+
+cwd=os.getcwd()
+
+
+body="""
+ #b1
+ dep=calcium.CP_ITERATION
+ val=numpy.zeros(10,'d')
+ val[5]=a*b
+ nval=10
+ print "--------> Appel calcium.cp_edb"
+ info=calcium.cp_edb(component, dep, 0., 1, "ba", nval,val)
+ val=numpy.zeros(10,'d')
+ info,tt,ii,mval=calcium.cp_ldb(component, dep, 0.,1., 1, "aa", nval,val)
+ print mval,val
+ c=a+b
+ d=a-b
+ err=calcium.cp_fin(component,calcium.CP_ARRET)
+"""
+c1=PYComponent("compo2",services=[
+ Service("s1",inport=[("a","double"),("b","double")],
+ outport=[("c","double"),("d","double")],
+ instream=[("aa","CALCIUM_double","I"),],
+ outstream=[("ba","CALCIUM_double","I"),],
+ defs="#def1",body=body,
+ ),
+ ],
+ kind="exe",
+ )
+
+
+g=Generator(Module("pycompos",components=[c1],prefix="./install"),context)
+g.generate()
+g.bootstrap()
+g.configure()
+g.make()
+g.install()
+g.make_appli("appli",restrict=["KERNEL","GUI","YACS"])
+
--- /dev/null
+
+<proc>
+
+<!-- types -->
+
+
+<container name="A">
+</container>
+
+<container name="B">
+</container>
+
+<service name="node1" >
+ <component>compo2</component>
+ <method>s1</method>
+ <load container="A"/>
+ <inport name="a" type="double"/>
+ <inport name="b" type="double"/>
+ <outport name="c" type="double"/>
+ <outport name="d" type="double"/>
+ <instream name="aa" type="CALCIUM_double"/>
+ <outstream name="ba" type="CALCIUM_double"/>
+</service>
+
+<service name="node2" >
+ <component>compo2</component>
+ <method>s1</method>
+ <load container="B"/>
+ <inport name="a" type="double"/>
+ <inport name="b" type="double"/>
+ <outport name="c" type="double"/>
+ <outport name="d" type="double"/>
+ <instream name="aa" type="CALCIUM_double"/>
+ <outstream name="ba" type="CALCIUM_double"/>
+</service>
+
+<!--datalinks -->
+<stream>
+ <fromnode>node1</fromnode><fromport>ba</fromport>
+ <tonode>node2</tonode><toport>aa</toport>
+</stream>
+<stream>
+ <fromnode>node2</fromnode><fromport>ba</fromport>
+ <tonode>node1</tonode><toport>aa</toport>
+</stream>
+
+<parameter>
+ <tonode>node1</tonode> <toport>a</toport>
+ <value><double>23</double> </value>
+</parameter>
+<parameter>
+ <tonode>node1</tonode> <toport>b</toport>
+ <value><double>53</double> </value>
+</parameter>
+<parameter>
+ <tonode>node2</tonode> <toport>a</toport>
+ <value><double>63</double> </value>
+</parameter>
+<parameter>
+ <tonode>node2</tonode> <toport>b</toport>
+ <value><double>73</double> </value>
+</parameter>
+
+</proc>
+