]> SALOME platform Git repositories - modules/adao.git/blob - resources/ADAOSchemaCatalog.xml
Salome HOME
Adding control on user defined sparse matrix
[modules/adao.git] / resources / ADAOSchemaCatalog.xml
1 <?xml version='1.0' encoding='iso-8859-1' ?>
2 <!--
3   Copyright (C) 2008-2017 EDF R&D
4
5   This file is part of SALOME ADAO module
6
7   This library is free software; you can redistribute it and/or
8   modify it under the terms of the GNU Lesser General Public
9   License as published by the Free Software Foundation; either
10   version 2.1 of the License.
11
12   This library is distributed in the hope that it will be useful,
13   but WITHOUT ANY WARRANTY; without even the implied warranty of
14   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15   Lesser General Public License for more details.
16
17   You should have received a copy of the GNU Lesser General Public
18   License along with this library; if not, write to the Free Software
19   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
20
21   See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
22   
23   Author: Jean-Philippe Argaud, jean-philippe.argaud@edf.fr, EDF R&D
24 -->
25 <proc>
26
27   <objref name="computeAD" id="python:computeAD:1.0">
28     <base>pyobj</base>
29   </objref>
30
31   <!-- Types for parametric computations -->
32   <!-- TODO On devrait pouvoir le lire depuis le KERNEL !!!-->
33   <type name="long" kind="int"/>
34   <struct name="SALOME_TYPES/Parameter">
35     <member type="string" name="name"></member>
36     <member type="string" name="value"></member>
37   </struct>
38   <sequence content="SALOME_TYPES/Parameter" name="SALOME_TYPES/ParameterList"></sequence>
39   <sequence content="double" name="SALOME_TYPES/Variable"></sequence>
40   <sequence content="SALOME_TYPES/Variable" name="SALOME_TYPES/VariableSequence"></sequence>
41   <sequence content="SALOME_TYPES/VariableSequence" name="SALOME_TYPES/StateSequence"></sequence>
42   <sequence content="SALOME_TYPES/StateSequence" name="SALOME_TYPES/TimeSequence"></sequence>
43   <sequence content="string" name="SALOME_TYPES/VarList"></sequence>
44   <struct name="SALOME_TYPES/ParametricInput">
45     <member type="SALOME_TYPES/VarList" name="inputVarList"></member>
46     <member type="SALOME_TYPES/VarList" name="outputVarList"></member>
47     <member type="SALOME_TYPES/TimeSequence" name="inputValues"></member>
48     <member type="SALOME_TYPES/ParameterList" name="specificParameters"></member>
49   </struct>
50   <struct name="SALOME_TYPES/ParametricOutput">
51     <member type="SALOME_TYPES/TimeSequence" name="outputValues"></member>
52     <member type="SALOME_TYPES/ParameterList" name="specificOutputInfos"></member>
53     <member type="long" name="returnCode"></member>
54     <member type="string" name="errorMessage"></member>
55   </struct>
56
57
58   <inline name="CreateAssimilationStudy">
59     <script><code>
60
61 <![CDATA[
62 import numpy, logging
63 logging.debug("CREATE Entering in CreateAssimilationStudy")
64 print "Entering in the assimilation study"
65 print "Name is set to........:", Name
66 print "Algorithm is set to...:", Algorithm
67
68 # Create Assimilation study
69 from daYacsIntegration.daStudy import *
70 assim_study = daStudy(Name, Algorithm, Debug)
71
72 logging.debug("CREATE Data entered are:")
73
74 # Algorithm parameters
75 try:
76   AlgorithmParameters
77 except NameError:
78   pass
79 else:
80   logging.debug("CREATE AlgorithmParameters is %s"%AlgorithmParameters)
81   assim_study.setAlgorithmParameters(AlgorithmParameters)
82
83 # Background
84 try:
85   Background
86 except NameError:
87   pass
88 else:
89   logging.debug("CREATE Background is set")
90   logging.debug("CREATE BackgroundType is %s"%BackgroundType)
91   logging.debug("CREATE BackgroundStored is %s"%BackgroundStored)
92   assim_study.setBackgroundType(BackgroundType)
93   assim_study.setBackgroundStored(BackgroundStored)
94   assim_study.setBackground(Background)
95
96 # CheckingPoint
97 try:
98   CheckingPoint
99 except NameError:
100   pass
101 else:
102   logging.debug("CREATE CheckingPoint is set")
103   logging.debug("CREATE CheckingPointType is %s"%CheckingPointType)
104   logging.debug("CREATE CheckingPointStored is %s"%CheckingPointStored)
105   assim_study.setCheckingPointType(CheckingPointType)
106   assim_study.setCheckingPointStored(CheckingPointStored)
107   assim_study.setCheckingPoint(CheckingPoint)
108
109 # ControlInput
110 try:
111   ControlInput
112 except NameError:
113   pass
114 else:
115   logging.debug("CREATE ControlInput is set")
116   logging.debug("CREATE ControlInputType is %s"%ControlInputType)
117   logging.debug("CREATE ControlInputStored is %s"%ControlInputStored)
118   assim_study.setControlInputType(ControlInputType)
119   assim_study.setControlInputStored(ControlInputStored)
120   assim_study.setControlInput(ControlInput)
121
122 # Observation
123 try:
124   Observation
125 except NameError:
126   pass
127 else:
128   logging.debug("CREATE Observation is set")
129   logging.debug("CREATE ObservationType is %s"%ObservationType)
130   logging.debug("CREATE ObservationStored is %s"%ObservationStored)
131   assim_study.setObservationType(ObservationType)
132   assim_study.setObservationStored(ObservationStored)
133   assim_study.setObservation(Observation)
134
135 # BackgroundError
136 try:
137   BackgroundError
138 except NameError:
139   pass
140 else:
141   logging.debug("CREATE BackgroundError is set")
142   logging.debug("CREATE BackgroundErrorType is %s"%BackgroundErrorType)
143   logging.debug("CREATE BackgroundErrorStored is %s"%BackgroundErrorStored)
144   assim_study.setBackgroundErrorType(BackgroundErrorType)
145   assim_study.setBackgroundErrorStored(BackgroundErrorStored)
146   assim_study.setBackgroundError(BackgroundError)
147
148 # ObservationError
149 try:
150   ObservationError
151 except NameError:
152   pass
153 else:
154   logging.debug("CREATE ObservationError is set")
155   logging.debug("CREATE ObservationErrorType is %s"%ObservationErrorType)
156   logging.debug("CREATE ObservationErrorStored is %s"%ObservationErrorStored)
157   assim_study.setObservationErrorType(ObservationErrorType)
158   assim_study.setObservationErrorStored(ObservationErrorStored)
159   assim_study.setObservationError(ObservationError)
160
161 # EvolutionError
162 try:
163   EvolutionError
164 except NameError:
165   pass
166 else:
167   logging.debug("CREATE EvolutionError is set")
168   logging.debug("CREATE EvolutionErrorType is %s"%EvolutionErrorType)
169   logging.debug("CREATE EvolutionErrorStored is %s"%EvolutionErrorStored)
170   assim_study.setEvolutionErrorType(EvolutionErrorType)
171   assim_study.setEvolutionErrorStored(EvolutionErrorStored)
172   assim_study.setEvolutionError(EvolutionError)
173
174 # ObservationOperator
175 ObservationOperatorOk = 0
176 try:
177   ObservationOperator
178 except NameError:
179   pass
180 else:
181   logging.debug("CREATE ObservationOperator is set")
182   logging.debug("CREATE ObservationOperatorType is %s"%ObservationOperatorType)
183   assim_study.setObservationOperatorType("Matrix", ObservationOperatorType)
184   assim_study.setObservationOperator("Matrix", ObservationOperator)
185   ObservationOperatorOk = 1
186
187 if ObservationOperatorOk == 0:
188   try:
189     ObservationOperatorDirect
190   except NameError:
191     pass
192   else:
193     logging.debug("CREATE ObservationOperatorDirect is %s"%ObservationOperatorDirect)
194     assim_study.setObservationOperatorType("Direct", "Function")
195     assim_study.setObservationOperator("Direct", ObservationOperatorDirect)
196   try:
197     ObservationOperatorTangent
198   except NameError:
199     pass
200   else:
201     logging.debug("CREATE ObservationOperatorTangent is %s"%ObservationOperatorTangent)
202     assim_study.setObservationOperatorType("Tangent", "Function")
203     assim_study.setObservationOperator("Tangent", ObservationOperatorTangent)
204   try:
205     ObservationOperatorAdjoint
206   except NameError:
207     pass
208   else:
209     logging.debug("CREATE ObservationOperatorAdjoint is %s"%ObservationOperatorAdjoint)
210     assim_study.setObservationOperatorType("Adjoint", "Function")
211     assim_study.setObservationOperator("Adjoint", ObservationOperatorAdjoint)
212
213 # EvolutionModel
214 EvolutionModelOk = 0
215 try:
216   EvolutionModel
217 except NameError:
218   pass
219 else:
220   logging.debug("CREATE EvolutionModel is set")
221   logging.debug("CREATE EvolutionModelType is %s"%EvolutionModelType)
222   assim_study.setEvolutionModelType("Matrix", EvolutionModelType)
223   assim_study.setEvolutionModel("Matrix", EvolutionModel)
224   EvolutionModelOk = 1
225
226 if EvolutionModelOk == 0:
227   try:
228     EvolutionModelDirect
229   except NameError:
230     pass
231   else:
232     logging.debug("CREATE EvolutionModelDirect is %s"%EvolutionModelDirect)
233     assim_study.setEvolutionModelType("Direct", "Function")
234     assim_study.setEvolutionModel("Direct", EvolutionModelDirect)
235   try:
236     EvolutionModelTangent
237   except NameError:
238     pass
239   else:
240     logging.debug("CREATE EvolutionModelTangent is %s"%EvolutionModelTangent)
241     assim_study.setEvolutionModelType("Tangent", "Function")
242     assim_study.setEvolutionModel("Tangent", EvolutionModelTangent)
243   try:
244     EvolutionModelAdjoint
245   except NameError:
246     pass
247   else:
248     logging.debug("CREATE EvolutionModelAdjoint is %s"%EvolutionModelAdjoint)
249     assim_study.setEvolutionModelType("Adjoint", "Function")
250     assim_study.setEvolutionModel("Adjoint", EvolutionModelAdjoint)
251
252 # Variables
253 for name, size in zip(InputVariablesNames, InputVariablesSizes):
254   assim_study.setInputVariable(name, size)
255 for name, size in zip(OutputVariablesNames, OutputVariablesSizes):
256   assim_study.setOutputVariable(name, size)
257
258 if has_observers:
259   logging.debug("CREATE Observers keys are %s"%observers.keys())
260   # Adding observers to the study
261   for observer_name in observers.keys():
262     scheduler = ""
263     info = ""
264     number = str(observers[observer_name]["number"])
265     if "scheduler" in observers[observer_name].keys():
266       scheduler = observers[observer_name]["scheduler"]
267     if "info" in observers[observer_name].keys():
268       info = observers[observer_name]["info"]
269     assim_study.addObserver(observer_name, scheduler, info, number)
270 Study = assim_study
271 ]]>
272
273 </code></script>
274     <inport name="Name" type="string"/>
275     <inport name="Algorithm" type="string"/>
276     <inport name="Debug" type="bool"/>
277     <inport name="InputVariablesNames" type="stringvec"/>
278     <inport name="InputVariablesSizes" type="intvec"/>
279     <inport name="OutputVariablesNames" type="stringvec"/>
280     <inport name="OutputVariablesSizes" type="intvec"/>
281     <inport name="has_observers" type="bool"/>
282     <inport name="observers" type="pyobj"/>
283     <outport name="Study" type="pyobj"/>
284   </inline>
285
286   <inline name="CreateNumpyMatrixFromString">
287     <script><code><![CDATA[
288 import numpy, logging
289 logging.debug("CREATE Entering in CreateNumpyMatrixFromString")
290 matrix = numpy.matrix(matrix_in_string)
291 type = "Matrix"
292 logging.debug("CREATE Matrix is %s"%matrix)
293 ]]></code></script>
294     <inport name="matrix_in_string" type="string"/>
295     <outport name="matrix" type="pyobj"/>
296     <outport name="type" type="string"/>
297     <outport name="stored" type="bool"/>
298   </inline>
299
300   <inline name="CreateNumpyScalarSparseMatrixFromString">
301     <script><code><![CDATA[
302 import numpy, logging
303 logging.debug("CREATE Entering in CreateNumpyScalarSparseMatrixFromString")
304 matrix = numpy.matrix(matrix_in_string)
305 if matrix.size != 1: raise ValueError('\n\n  The sparse matrix, declared as a "ScalarSparseMatrix" to be build using a scalar input,\n  is not of the good size (its actual measured size is %i). Please correct your input and relaunch.'%matrix.size)
306 type = "ScalarSparseMatrix"
307 logging.debug("CREATE ScalarSparseMatrix is %s"%matrix)
308 ]]></code></script>
309     <inport name="matrix_in_string" type="string"/>
310     <outport name="matrix" type="pyobj"/>
311     <outport name="type" type="string"/>
312     <outport name="stored" type="bool"/>
313   </inline>
314
315   <inline name="CreateNumpyDiagonalSparseMatrixFromString">
316     <script><code><![CDATA[
317 import numpy, logging
318 logging.debug("CREATE Entering in CreateNumpyDiagonalSparseMatrixFromString")
319 matrix = numpy.matrix(matrix_in_string)
320 type = "DiagonalSparseMatrix"
321 logging.debug("CREATE DiagonalSparseMatrix is %s"%matrix)
322 ]]></code></script>
323     <inport name="matrix_in_string" type="string"/>
324     <outport name="matrix" type="pyobj"/>
325     <outport name="type" type="string"/>
326     <outport name="stored" type="bool"/>
327   </inline>
328
329   <inline name="CreateNumpyMatrixFromScript">
330     <script><code><![CDATA[
331 import logging, sys, os
332 logging.debug("CREATE Entering in CreateNumpyMatrixFromScript")
333 type = "Matrix"
334
335 # Get file path and filename
336 try:
337     if sys.path.count(studydir)==0 or (sys.path.count(studydir)>0 and sys.path.index(studydir)>0):
338         sys.path.insert(0,studydir)
339 except:
340     pass
341 filepath = os.path.dirname(script)
342 filename = os.path.basename(script)
343 module_name = os.path.splitext(filename)[0]
344 if sys.path.count(filepath)==0 or (sys.path.count(filepath)>0 and sys.path.index(filepath)>0):
345     sys.path.insert(0,filepath)
346
347 ]]></code></script>
348     <inport name="script" type="string"/>
349     <outport name="type" type="string"/>
350     <outport name="stored" type="bool"/>
351   </inline>
352
353   <inline name="CreateNumpyScalarSparseMatrixFromScript">
354     <script><code><![CDATA[
355 import logging, sys, os
356 logging.debug("CREATE Entering in CreateNumpyScalarSparseMatrixFromScript")
357 type = "ScalarSparseMatrix"
358
359 # Get file path and filename
360 try:
361     if sys.path.count(studydir)==0 or (sys.path.count(studydir)>0 and sys.path.index(studydir)>0):
362         sys.path.insert(0,studydir)
363 except:
364     pass
365 filepath = os.path.dirname(script)
366 filename = os.path.basename(script)
367 module_name = os.path.splitext(filename)[0]
368 if sys.path.count(filepath)==0 or (sys.path.count(filepath)>0 and sys.path.index(filepath)>0):
369     sys.path.insert(0,filepath)
370
371 ]]></code></script>
372     <inport name="script" type="string"/>
373     <outport name="type" type="string"/>
374     <outport name="stored" type="bool"/>
375   </inline>
376
377   <inline name="CreateNumpyDiagonalSparseMatrixFromScript">
378     <script><code><![CDATA[
379 import logging, sys, os
380 logging.debug("CREATE Entering in CreateNumpyDiagonalSparseMatrixFromScript")
381 type = "DiagonalSparseMatrix"
382
383 # Get file path and filename
384 try:
385     if sys.path.count(studydir)==0 or (sys.path.count(studydir)>0 and sys.path.index(studydir)>0):
386         sys.path.insert(0,studydir)
387 except:
388     pass
389 filepath = os.path.dirname(script)
390 filename = os.path.basename(script)
391 module_name = os.path.splitext(filename)[0]
392 if sys.path.count(filepath)==0 or (sys.path.count(filepath)>0 and sys.path.index(filepath)>0):
393     sys.path.insert(0,filepath)
394
395 ]]></code></script>
396     <inport name="script" type="string"/>
397     <outport name="type" type="string"/>
398     <outport name="stored" type="bool"/>
399   </inline>
400
401   <inline name="CreateNumpyVectorFromString">
402     <script><code><![CDATA[
403 import numpy, logging
404 logging.debug("CREATE Entering in CreateNumpyVectorFromString")
405 vector = numpy.matrix(vector_in_string)
406 type = "Vector"
407 logging.debug("Vector is %s"%vector)
408 ]]></code></script>
409     <inport name="vector_in_string" type="string"/>
410     <outport name="vector" type="pyobj"/>
411     <outport name="type" type="string"/>
412     <outport name="stored" type="bool"/>
413   </inline>
414
415   <inline name="CreateNumpyVectorFromScript">
416     <script><code><![CDATA[
417 import logging, sys, os
418 logging.debug("CREATE Entering in CreateNumpyVectorFromScript")
419 type = "Vector"
420
421 # Get file path and filename
422 try:
423     if sys.path.count(studydir)==0 or (sys.path.count(studydir)>0 and sys.path.index(studydir)>0):
424         sys.path.insert(0,studydir)
425 except:
426     pass
427 filepath = os.path.dirname(script)
428 filename = os.path.basename(script)
429 module_name = os.path.splitext(filename)[0]
430 if sys.path.count(filepath)==0 or (sys.path.count(filepath)>0 and sys.path.index(filepath)>0):
431     sys.path.insert(0,filepath)
432
433 ]]></code></script>
434     <inport name="script" type="string"/>
435     <outport name="type" type="string"/>
436     <outport name="stored" type="bool"/>
437   </inline>
438
439   <inline name="CreateNumpyVectorSerieFromString">
440     <script><code><![CDATA[
441 import numpy, logging
442 logging.debug("CREATE Entering in CreateNumpyVectorSerieFromString")
443 vector_in_list = eval(str(vector_in_string),{},{})
444 vector = numpy.matrix(vector_in_list)
445 type = "VectorSerie"
446 logging.debug("VectorSerie is %s"%vector)
447 ]]></code></script>
448     <inport name="vector_in_string" type="string"/>
449     <outport name="vector" type="pyobj"/>
450     <outport name="type" type="string"/>
451     <outport name="stored" type="bool"/>
452   </inline>
453
454   <inline name="CreateNumpyVectorSerieFromScript">
455     <script><code><![CDATA[
456 import logging, sys, os
457 logging.debug("CREATE Entering in CreateNumpyVectorSerieFromScript")
458 type = "VectorSerie"
459
460 # Get file path and filename
461 try:
462     if sys.path.count(studydir)==0 or (sys.path.count(studydir)>0 and sys.path.index(studydir)>0):
463         sys.path.insert(0,studydir)
464 except:
465     pass
466 filepath = os.path.dirname(script)
467 filename = os.path.basename(script)
468 module_name = os.path.splitext(filename)[0]
469 if sys.path.count(filepath)==0 or (sys.path.count(filepath)>0 and sys.path.index(filepath)>0):
470     sys.path.insert(0,filepath)
471
472 ]]></code></script>
473     <inport name="script" type="string"/>
474     <outport name="type" type="string"/>
475     <outport name="stored" type="bool"/>
476   </inline>
477
478   <inline name="SimpleExecuteDirectAlgorithm">
479     <script><code><![CDATA[
480 import logging
481 logging.debug("EXECUTE Entering in SimpleExecuteDirectAlgorithm")
482 from daYacsIntegration.daStudy import *
483 ADD = Study.getResults()
484 ADD.analyze()
485 ]]></code></script>
486     <inport name="Study" type="pyobj"/>
487     <outport name="Study" type="pyobj"/>
488   </inline>
489
490   <inline name="SimpleUserAnalysis">
491     <script><code><![CDATA[
492 #-*-coding:iso-8859-1-*-
493 import logging
494 logging.debug("TERMINATE Entering in SimpleUserAnalysis")
495 ADD = Study.getResults()
496 # User code is below
497
498 ]]></code></script>
499     <inport name="Study" type="pyobj"/>
500   </inline>
501
502   <inline name="FakeOptimizerLoopNode">
503     <script><code><![CDATA[
504 import logging
505 logging.debug("EXECUTE Entering in FakeOptimizerLoopNode")
506 result = None
507 ]]></code></script>
508     <inport name="computation" type="SALOME_TYPES/ParametricInput"/>
509     <outport name="result" type="SALOME_TYPES/ParametricOutput"/>
510   </inline>
511
512   <inline name="CreateDictFromString">
513     <script><code><![CDATA[
514 import logging, sys, os
515 logging.debug("CREATE Entering in CreateDictFromString")
516 dico = eval(dict_in_string)
517 ]]></code></script>
518     <inport name="dict_in_string" type="string"/>
519   </inline>
520
521   <inline name="CreateDictFromScript">
522     <script><code><![CDATA[
523 import logging, sys, os
524 logging.debug("CREATE Entering in CreateDictFromScript")
525
526 # Get file path and filename
527 try:
528     if sys.path.count(studydir)==0 or (sys.path.count(studydir)>0 and sys.path.index(studydir)>0):
529         sys.path.insert(0,studydir)
530 except:
531     pass
532 filepath = os.path.dirname(script)
533 filename = os.path.basename(script)
534 module_name = os.path.splitext(filename)[0]
535 if sys.path.count(filepath)==0 or (sys.path.count(filepath)>0 and sys.path.index(filepath)>0):
536     sys.path.insert(0,filepath)
537
538 ]]></code></script>
539     <inport name="script" type="string"/>
540   </inline>
541
542   <inline name="UserDataInitFromScript">
543     <script><code><![CDATA[
544 import logging, sys, os
545 logging.debug("CREATE Entering in UserDataInitFromScript")
546
547 # Get file path and filename
548 try:
549     if sys.path.count(studydir)==0 or (sys.path.count(studydir)>0 and sys.path.index(studydir)>0):
550         sys.path.insert(0,studydir)
551 except:
552     pass
553 filepath = os.path.dirname(script)
554 filename = os.path.basename(script)
555 module_name = os.path.splitext(filename)[0]
556 if sys.path.count(filepath)==0 or (sys.path.count(filepath)>0 and sys.path.index(filepath)>0):
557     sys.path.insert(0,filepath)
558
559 ]]></code></script>
560     <inport name="script" type="string"/>
561     <outport name="init_data" type="pyobj"/>
562   </inline>
563
564   <inline name="ReadForSwitchNode">
565     <script><code><![CDATA[
566 import logging
567 logging.debug("CREATE Entering in ReadForSwitchNode")
568 logging.debug("       with input data : "+str(data["specificParameters"]))
569 switch_value = -1
570 for param in data["specificParameters"]:
571   if param["name"] == "switch_value":
572     switch_value = int(param["value"])
573 logging.debug("       switching to value : "+str(switch_value))
574 ]]></code></script>
575     <inport name="data" type="SALOME_TYPES/ParametricInput"/>
576     <outport name="data" type="SALOME_TYPES/ParametricInput"/>
577     <outport name="switch_value" type="int"/>
578   </inline>
579
580   <inline name="ExtractDataNode">
581     <script><code><![CDATA[
582 import logging
583 logging.debug("TERMINATE Entering in ExtractDataNode")
584 import cPickle
585 from daCore.AssimilationStudy import AssimilationStudy
586 var = None
587 info = None
588 for param in data["specificParameters"]:
589   if param["name"] == "var":
590     var = cPickle.loads(param["value"])
591   if param["name"] == "info":
592     info = param["value"]
593 ]]></code></script>
594     <inport name="data" type="SALOME_TYPES/ParametricInput"/>
595     <outport name="var" type="pyobj"/>
596     <outport name="info" type="pyobj"/>
597   </inline>
598
599   <inline name="ObservationNodeString">
600     <script><code><![CDATA[]]></code></script>
601     <inport name="var" type="pyobj"/>
602     <inport name="info" type="pyobj"/>
603   </inline>
604
605   <inline name="ObservationNodeFile">
606     <script><code><![CDATA[execfile(script)]]></code></script>
607     <inport name="var"    type="pyobj"/>
608     <inport name="info"   type="pyobj"/>
609     <inport name="script" type="string"/>
610   </inline>
611
612   <inline name="EndObservationNode">
613     <script><code><![CDATA[
614 # Create a fake output object.
615 # An observer is always successful.
616 output = {}
617 output["outputValues"]        = [[[[]]]]
618 output["specificOutputInfos"] = []
619 output["returnCode"]          = 0
620 output["errorMessage"]        = ""
621 ]]></code></script>
622     <outport name="output" type="SALOME_TYPES/ParametricOutput"/>
623   </inline>
624
625   <inline name="SetObserversNode">
626     <script><code><![CDATA[
627 #print "Setting observers"
628 ]]></code></script>
629     <outport name="has_observers" type="bool"/>
630     <outport name="observers" type="pyobj"/>
631   </inline>
632 </proc>