1 <?xml version='1.0' encoding='iso-8859-1' ?>
3 <property name="DefaultStudyID" value="1"/>
4 <type name="bool" kind="bool"/>
5 <sequence name="boolvec" content="bool"/>
6 <type name="double" kind="double"/>
7 <sequence name="dblevec" content="double"/>
8 <objref name="file" id="file"/>
9 <type name="int" kind="int"/>
10 <sequence name="intvec" content="int"/>
11 <objref name="pyobj" id="python:obj:1.0"/>
12 <sequence name="seqdblevec" content="dblevec"/>
13 <type name="string" kind="string"/>
14 <sequence name="stringvec" content="string"/>
15 <container name="DefaultContainer">
16 <property name="container_name" value="FactoryServer"/>
17 <property name="hostname" value="localhost"/>
19 <inline name="Building_B">
20 <script><code><![CDATA[# Construction de la matrice de covariances d'erreurs d'ebauche
23 dimension = len( parametres )
25 B = numpy.matrix(numpy.core.identity(dimension))
28 <inport name="parametres" type="pyobj"/>
29 <outport name="B" type="dblevec"/>
31 <inline name="Building_R">
32 <script><code><![CDATA[# Construction de la matrice de covariances d'erreurs de mesure
35 dimension = len( experiences ) * len( experiences[0] )
37 R = numpy.matrix(numpy.core.identity(dimension))
40 <inport name="experiences" type="pyobj"/>
41 <outport name="R" type="dblevec"/>
43 <inline name="Building_Xb">
44 <script><code><![CDATA[# Script pour extraire l'ebauche comme une liste
45 # et une liste de bornes [min,max]
47 dx = 1.e-2 # Increment en pourcent de Xb
53 for parametre in parametres:
54 Xb.append( parametre[1] )
55 dXb.append( dx * parametre[1] )
56 Bornes.append( parametre[2:4] )
58 <inport name="parametres" type="pyobj"/>
59 <outport name="Xb" type="dblevec"/>
60 <outport name="Bornes" type="seqdblevec"/>
61 <outport name="dXb" type="dblevec"/>
63 <inline name="Building_Yo">
64 <script><code><![CDATA[# Script pour extraire l'es mesures/observations et leur nom
67 if len(calcul) != len(experiences):
68 raise ValueError("Les nombres de variables calculees et observees doient etre les memes")
70 if len(experiences) >=1:
71 nb_observations_par_experience = len( experiences[0] )
76 for i in range( len(experiences) ):
77 Nom_Yo.append( calcul[i][2] )
78 if len( experiences[i] ) != nb_observations_par_experience:
79 raise ValueError("Le nombre de mesures par serie experimentale doit etre constant egal a %i mais la serie %i est longue de %i"%(nb_observations_par_experience,i,len(experiences[i])))
80 for observation in experiences[i]:
81 Yo.append( observation[1] )
83 <inport name="calcul" type="pyobj"/>
84 <inport name="experiences" type="pyobj"/>
85 <outport name="Yo" type="dblevec"/>
86 <outport name="Nom_Yo" type="stringvec"/>
88 <inline name="Entrees du calcul AD">
89 <script><code><![CDATA[import numpy
92 print "### ============================================================="
93 print "### Verification des arguments fabriques pour passer d'Aster a AD"
95 print " Tailles et types :"
96 print " de Xb",len(Xb),type(Xb)
97 print " de Yo",len(Yo),type(Yo)
98 print " de B ",len(B),type(B)
99 print " de R ",len(R),type(R)
100 print " de H ",len(H),type(H)
102 print " Verification de remise a l'echelle :"
103 dimensionXb = len( Xb )
104 dimensionYo = len( Yo )
106 numpyB = numpy.matrix( B, numpy.float ).reshape((dimensionXb,dimensionXb))
108 numpyR = numpy.matrix( R, numpy.float ).reshape((dimensionYo,dimensionYo))
110 numpyH = numpy.matrix( H, numpy.float ).reshape((dimensionYo,dimensionXb))
111 print "### ============================================================="
114 <inport name="Xb" type="dblevec"/>
115 <inport name="Yo" type="dblevec"/>
116 <inport name="B" type="dblevec"/>
117 <inport name="R" type="dblevec"/>
118 <inport name="H" type="dblevec"/>
119 <outport name="Xb" type="dblevec"/>
120 <outport name="Yo" type="dblevec"/>
121 <outport name="B" type="dblevec"/>
122 <outport name="R" type="dblevec"/>
123 <outport name="H" type="dblevec"/>
125 <inline name="Sorties du calcul AD">
126 <script><code><![CDATA[import numpy
127 print "Diagnostics de sortie de test :"
128 print " Remise en numpy des resultats"
131 dimensionXb = len( Xb )
132 dimensionYo = len( Yo )
133 print "Verification de remise a l'echelle de B, R et H"
134 B = numpy.matrix( B, numpy.float ).reshape((dimensionXb,dimensionXb))
135 R = numpy.matrix( R, numpy.float ).reshape((dimensionYo,dimensionYo))
136 H = numpy.matrix( H, numpy.float ).reshape((dimensionYo,dimensionXb))
137 I = numpy.matrix(numpy.core.identity(dimensionYo))
139 deltaA = (Yo - numpy.dot(H,Xa)).A1
140 deltaI = (Yo - numpy.dot(H,Xb)).A1
142 print "deltaA",deltaA
143 LS = float(numpy.dot(deltaA, deltaA))
144 print "Calcul de LSI"
145 LSI = float(numpy.dot(deltaI, deltaI))
147 J = float( numpy.dot(deltaB, numpy.dot(B,deltaB).A1) + numpy.dot(deltaA, numpy.dot(R,deltaA).A1) )
149 JI = float( numpy.dot(deltaI, numpy.dot(R,deltaI).A1) )
152 print "Sortie du test :"
155 print "Difference Xa-Xb :"
156 print " Xa-Xb =",deltaB
157 print " max(Xa-Xb) =",max(deltaB)
158 print " min(Xa-Xb) =",min(deltaB)
159 print "Fonctionnelles d'ecarts :"
160 print " Initialement : J =",JI
162 print " Analyse : J =",J,"(Baise de %i%s)"%(100.*(JI-J)/J,"%")
163 print " LS =",LS,"(Baise de %i%s)"%(100.*(LSI-LS)/LSI,"%")
164 print "Autres informations :"
165 print " d =",Innovation
169 <inport name="xa" type="dblevec"/>
170 <inport name="A" type="dblevec"/>
171 <inport name="Innovation" type="dblevec"/>
172 <inport name="xb" type="dblevec"/>
173 <inport name="Yo" type="dblevec"/>
174 <inport name="B" type="dblevec"/>
175 <inport name="R" type="dblevec"/>
176 <inport name="H" type="dblevec"/>
179 <tonode>Building_B</tonode><toport>parametres</toport>
184 <tonode>Building_Xb</tonode><toport>parametres</toport>
189 <tonode>Building_Yo</tonode><toport>calcul</toport>
194 <tonode>Building_Yo</tonode><toport>experiences</toport>
199 <tonode>Sorties du calcul AD</tonode><toport>xa</toport>
201 </data></array></value>
204 <tonode>Sorties du calcul AD</tonode><toport>A</toport>
206 </data></array></value>
209 <tonode>Sorties du calcul AD</tonode><toport>Innovation</toport>
211 </data></array></value>
214 <tonode>Sorties du calcul AD</tonode><toport>xb</toport>
216 </data></array></value>
219 <tonode>Sorties du calcul AD</tonode><toport>Yo</toport>
221 </data></array></value>
224 <tonode>Sorties du calcul AD</tonode><toport>B</toport>
226 </data></array></value>
229 <tonode>Sorties du calcul AD</tonode><toport>R</toport>
231 </data></array></value>
234 <tonode>Sorties du calcul AD</tonode><toport>H</toport>
236 </data></array></value>
239 <tonode>Building_R</tonode><toport>experiences</toport>
244 <tonode>Entrees du calcul AD</tonode><toport>Xb</toport>
246 </data></array></value>
249 <tonode>Entrees du calcul AD</tonode><toport>Yo</toport>
251 </data></array></value>
254 <tonode>Entrees du calcul AD</tonode><toport>B</toport>
256 </data></array></value>
259 <tonode>Entrees du calcul AD</tonode><toport>R</toport>
261 </data></array></value>
264 <tonode>Entrees du calcul AD</tonode><toport>H</toport>
266 </data></array></value>
268 <presentation name="Building_B" x="9" y="81.5" width="227.5" height="110"/>
269 <presentation name="Building_Xb" x="9" y="233" width="227.5" height="168"/>
270 <presentation name="Building_Yo" x="249" y="231" width="227.5" height="139"/>
271 <presentation name="Sorties du calcul AD" x="246" y="432" width="223" height="313"/>
272 <presentation name="Building_R" x="250" y="84.5" width="227.5" height="110"/>
273 <presentation name="Entrees du calcul AD" x="9" y="429" width="227.5" height="226"/>
274 <presentation name="__ROOT__" x="0" y="0" width="487" height="754"/>