Salome HOME
Copyrights update 2015.
[samples/datafiles.git] / Yacs / Schemas / legendre7.xml
1 <!--
2   Copyright (C) 2006-2015  CEA/DEN, EDF R&D
3
4   This library is free software; you can redistribute it and/or
5   modify it under the terms of the GNU Lesser General Public
6   License as published by the Free Software Foundation; either
7   version 2.1 of the License, or (at your option) any later version.
8
9   This library is distributed in the hope that it will be useful,
10   but WITHOUT ANY WARRANTY; without even the implied warranty of
11   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12   Lesser General Public License for more details.
13
14   You should have received a copy of the GNU Lesser General Public
15   License along with this library; if not, write to the Free Software
16   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
17
18   See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
19
20 -->
21 <proc>
22     <!-- types -->
23
24     <!-- inline -->
25
26     <inline name="init" >
27        <script>
28           <code>x=0.5</code>
29           <code>nsteps=3</code>
30        </script>
31        <outport name="x" type="double"/>
32        <outport name="nsteps" type="int"/>
33     </inline>
34
35     <inline name="poly_7" >
36        <script>
37           <code>Pn=(429*x**7 -693*x**5+315*x**3 -35*x)/16</code>
38           <code>print "reference P7=",Pn</code>
39        </script>
40        <inport name="x" type="double"/>
41        <outport name="Pn" type="double"/>
42     </inline>
43
44
45
46     <!-- service -->
47
48     <bloc name="Legendre" >
49
50       <inline name="iter_0" >
51          <script>
52             <code>Pn=1</code>
53             <code>n=1</code>
54          </script>
55          <outport name="Pn" type="double"/>
56          <outport name="n" type="int"/>
57       </inline>
58
59       <inline name="iter_1" >
60          <script>
61             <code>Pn=x</code>
62             <code>n=2</code>
63          </script>
64          <inport name="x" type="double"/>
65          <outport name="Pn" type="double"/>
66          <outport name="n" type="int"/>
67       </inline>
68
69       <forloop name="loopIter" >
70
71         <bloc name="deuxIter" >
72
73           <inline name="iter1" >
74              <script>
75                 <code>Pn = ((2*n-1)*x*Pnm1 -(n-1)*Pnm2)/n</code>
76                 <code>print "n=",n," Pn=",Pn</code>
77                 <code>n=n+1</code>
78              </script>
79              <inport name="Pnm1" type="double"/>
80              <inport name="Pnm2" type="double"/>
81              <inport name="x" type="double"/>
82              <inport name="n" type="int"/>
83              <outport name="Pn" type="double"/>
84              <outport name="n" type="int"/>
85           </inline>
86
87           <node name="iter2" type="iter1"/>
88
89           <control> <fromnode>iter1</fromnode> <tonode>iter2</tonode> </control>
90
91           <datalink> <fromnode>iter1</fromnode><fromport>Pn</fromport>
92                       <tonode>iter2</tonode><toport>Pnm1</toport> </datalink>
93           <datalink> <fromnode>iter1</fromnode><fromport>n</fromport>
94                       <tonode>iter2</tonode><toport>n</toport> </datalink>
95
96         </bloc>
97         <datalink> <fromnode>deuxIter.iter1</fromnode><fromport>Pn</fromport>
98                     <tonode>deuxIter.iter1</tonode><toport>Pnm2</toport> </datalink>
99         <datalink> <fromnode>deuxIter.iter2</fromnode><fromport>Pn</fromport>
100                     <tonode>deuxIter.iter2</tonode><toport>Pnm2</toport> </datalink>
101         <datalink> <fromnode>deuxIter.iter2</fromnode><fromport>n</fromport>
102                     <tonode>deuxIter.iter1</tonode><toport>n</toport> </datalink>
103         <datalink> <fromnode>deuxIter.iter2</fromnode><fromport>Pn</fromport>
104                     <tonode>deuxIter.iter1</tonode><toport>Pnm1</toport> </datalink>
105
106       </forloop>
107
108       <control> <fromnode>iter_0</fromnode> <tonode>iter_1</tonode> </control>
109       <control> <fromnode>iter_1</fromnode> <tonode>loopIter</tonode> </control>
110
111       <datalink> <fromnode>iter_1</fromnode><fromport>n</fromport>
112                   <tonode>loopIter.deuxIter.iter1</tonode><toport>n</toport> </datalink>
113       <datalink> <fromnode>iter_0</fromnode><fromport>Pn</fromport>
114                   <tonode>loopIter.deuxIter</tonode><toport>iter1.Pnm2</toport> </datalink>
115       <datalink> <fromnode>iter_1</fromnode><fromport>Pn</fromport>
116                   <tonode>loopIter</tonode><toport>deuxIter.iter1.Pnm1</toport> </datalink>
117       <datalink> <fromnode>iter_1</fromnode><fromport>Pn</fromport>
118                   <tonode>loopIter</tonode><toport>deuxIter.iter2.Pnm2</toport> </datalink>
119
120     </bloc>
121
122     <!--control links -->
123
124     <control> <fromnode>init</fromnode> <tonode>poly_7</tonode> </control>
125     <control> <fromnode>init</fromnode> <tonode>Legendre</tonode> </control>
126     <control> <fromnode>Legendre</fromnode> <tonode>poly_7</tonode> </control>
127
128     <!--data links -->
129     <datalink> <fromnode>init</fromnode><fromport>x</fromport>
130                   <tonode>poly_7</tonode><toport>x</toport> </datalink>
131
132     <datalink> <fromnode>init</fromnode><fromport>nsteps</fromport>
133                 <tonode>Legendre.loopIter</tonode><toport>nsteps</toport> </datalink>
134
135     <datalink> <fromnode>init</fromnode><fromport>x</fromport>
136                   <tonode>Legendre.iter_1</tonode><toport>x</toport> </datalink>
137     <datalink> <fromnode>init</fromnode><fromport>x</fromport>
138                 <tonode>Legendre.loopIter.deuxIter.iter1</tonode><toport>x</toport> </datalink>
139     <datalink> <fromnode>init</fromnode><fromport>x</fromport>
140                 <tonode>Legendre.loopIter.deuxIter.iter2</tonode><toport>x</toport> </datalink>
141
142     <!--parameters -->
143
144 </proc>