Salome HOME
Merge from V6_main_20120808 08Aug12
[samples/datafiles.git] / Yacs / Schemas / legendre7.xml
diff --git a/Yacs/Schemas/legendre7.xml b/Yacs/Schemas/legendre7.xml
new file mode 100644 (file)
index 0000000..e362cbc
--- /dev/null
@@ -0,0 +1,144 @@
+<!--
+  Copyright (C) 2006-2011  CEA/DEN, EDF R&D
+
+  This library is free software; you can redistribute it and/or
+  modify it under the terms of the GNU Lesser General Public
+  License as published by the Free Software Foundation; either
+  version 2.1 of the License.
+
+  This library is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+  Lesser General Public License for more details.
+
+  You should have received a copy of the GNU Lesser General Public
+  License along with this library; if not, write to the Free Software
+  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+
+  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+
+-->
+<proc>
+    <!-- types -->
+
+    <!-- inline -->
+
+    <inline name="init" >
+       <script>
+          <code>x=0.5</code>
+          <code>nsteps=3</code>
+       </script>
+       <outport name="x" type="double"/>
+       <outport name="nsteps" type="int"/>
+    </inline>
+
+    <inline name="poly_7" >
+       <script>
+          <code>Pn=(429*x**7 -693*x**5+315*x**3 -35*x)/16</code>
+          <code>print "reference P7=",Pn</code>
+       </script>
+       <inport name="x" type="double"/>
+       <outport name="Pn" type="double"/>
+    </inline>
+
+
+
+    <!-- service -->
+
+    <bloc name="Legendre" >
+
+      <inline name="iter_0" >
+         <script>
+            <code>Pn=1</code>
+            <code>n=1</code>
+         </script>
+         <outport name="Pn" type="double"/>
+         <outport name="n" type="int"/>
+      </inline>
+
+      <inline name="iter_1" >
+         <script>
+            <code>Pn=x</code>
+            <code>n=2</code>
+         </script>
+         <inport name="x" type="double"/>
+         <outport name="Pn" type="double"/>
+         <outport name="n" type="int"/>
+      </inline>
+
+      <forloop name="loopIter" >
+
+        <bloc name="deuxIter" >
+
+          <inline name="iter1" >
+             <script>
+                <code>Pn = ((2*n-1)*x*Pnm1 -(n-1)*Pnm2)/n</code>
+                <code>print "n=",n," Pn=",Pn</code>
+                <code>n=n+1</code>
+             </script>
+             <inport name="Pnm1" type="double"/>
+             <inport name="Pnm2" type="double"/>
+             <inport name="x" type="double"/>
+             <inport name="n" type="int"/>
+             <outport name="Pn" type="double"/>
+             <outport name="n" type="int"/>
+          </inline>
+
+          <node name="iter2" type="iter1"/>
+
+          <control> <fromnode>iter1</fromnode> <tonode>iter2</tonode> </control>
+
+          <datalink> <fromnode>iter1</fromnode><fromport>Pn</fromport>
+                      <tonode>iter2</tonode><toport>Pnm1</toport> </datalink>
+          <datalink> <fromnode>iter1</fromnode><fromport>n</fromport>
+                      <tonode>iter2</tonode><toport>n</toport> </datalink>
+
+        </bloc>
+        <datalink> <fromnode>deuxIter.iter1</fromnode><fromport>Pn</fromport>
+                    <tonode>deuxIter.iter1</tonode><toport>Pnm2</toport> </datalink>
+        <datalink> <fromnode>deuxIter.iter2</fromnode><fromport>Pn</fromport>
+                    <tonode>deuxIter.iter2</tonode><toport>Pnm2</toport> </datalink>
+        <datalink> <fromnode>deuxIter.iter2</fromnode><fromport>n</fromport>
+                    <tonode>deuxIter.iter1</tonode><toport>n</toport> </datalink>
+        <datalink> <fromnode>deuxIter.iter2</fromnode><fromport>Pn</fromport>
+                    <tonode>deuxIter.iter1</tonode><toport>Pnm1</toport> </datalink>
+
+      </forloop>
+
+      <control> <fromnode>iter_0</fromnode> <tonode>iter_1</tonode> </control>
+      <control> <fromnode>iter_1</fromnode> <tonode>loopIter</tonode> </control>
+
+      <datalink> <fromnode>iter_1</fromnode><fromport>n</fromport>
+                  <tonode>loopIter.deuxIter.iter1</tonode><toport>n</toport> </datalink>
+      <datalink> <fromnode>iter_0</fromnode><fromport>Pn</fromport>
+                  <tonode>loopIter.deuxIter</tonode><toport>iter1.Pnm2</toport> </datalink>
+      <datalink> <fromnode>iter_1</fromnode><fromport>Pn</fromport>
+                  <tonode>loopIter</tonode><toport>deuxIter.iter1.Pnm1</toport> </datalink>
+      <datalink> <fromnode>iter_1</fromnode><fromport>Pn</fromport>
+                  <tonode>loopIter</tonode><toport>deuxIter.iter2.Pnm2</toport> </datalink>
+
+    </bloc>
+
+    <!--control links -->
+
+    <control> <fromnode>init</fromnode> <tonode>poly_7</tonode> </control>
+    <control> <fromnode>init</fromnode> <tonode>Legendre</tonode> </control>
+    <control> <fromnode>Legendre</fromnode> <tonode>poly_7</tonode> </control>
+
+    <!--data links -->
+    <datalink> <fromnode>init</fromnode><fromport>x</fromport>
+                  <tonode>poly_7</tonode><toport>x</toport> </datalink>
+
+    <datalink> <fromnode>init</fromnode><fromport>nsteps</fromport>
+                <tonode>Legendre.loopIter</tonode><toport>nsteps</toport> </datalink>
+
+    <datalink> <fromnode>init</fromnode><fromport>x</fromport>
+                  <tonode>Legendre.iter_1</tonode><toport>x</toport> </datalink>
+    <datalink> <fromnode>init</fromnode><fromport>x</fromport>
+                <tonode>Legendre.loopIter.deuxIter.iter1</tonode><toport>x</toport> </datalink>
+    <datalink> <fromnode>init</fromnode><fromport>x</fromport>
+                <tonode>Legendre.loopIter.deuxIter.iter2</tonode><toport>x</toport> </datalink>
+
+    <!--parameters -->
+
+</proc>