3 # Copyright (C) 2009-2014 EDF R&D
5 # This library is free software; you can redistribute it and/or
6 # modify it under the terms of the GNU Lesser General Public
7 # License as published by the Free Software Foundation; either
8 # version 2.1 of the License.
10 # This library is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 # Lesser General Public License for more details.
15 # You should have received a copy of the GNU Lesser General Public
16 # License along with this library; if not, write to the Free Software
17 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
24 from module_generator import *
26 # This example shows how to create a component used as a calculation code for OpenTURNS
27 # with YACSGEN tool. This example is very basic. See YACSGEN documentation and DEVIATION
28 # component for more advanced features.
30 # edit those values to reflect your environment:
31 prerequisites_script_path = "/path/to/prerequisites.sh"
32 kernel_path = "/path/to/KERNEL_install"
33 openturns_module_path = "/path/to/OPENTURNS_install"
34 eficas_module_path = "/path/to/EFICAS_install"
36 c1 = PYComponent("EXAMPLE_COMPONENT",
39 inport=[("studyID", "long"),
40 ("detCaseEntry", "string")],
42 # Those values should be initialized from the deterministic case in the study
43 # (see component DEVIATION for an example)
44 self.deterministicValues = {'E' : 210.e9,
51 inport=[("paramInput", "SALOME_TYPES/ParametricInput"),],
52 outport=[("paramOutput", "SALOME_TYPES/ParametricOutput")],
53 defs = "from salome.kernel.parametric.compo_utils import \
54 create_input_dict, create_normal_parametric_output, create_error_parametric_output",
56 # This section creates the point to evaluate "inputDict"
57 inputDict = create_input_dict(self.deterministicValues, paramInput)
59 # This section should be modified according to your needs (it's the evaluation itself)
60 if inputDict["L"] <= 0: # Test for an invalid parameter and return an error in this case
61 paramOutput = create_error_parametric_output("Invalid value: L must be positive")
64 outputDict["dev"] = (inputDict["F"] * inputDict["L"] * inputDict["L"] * inputDict["L"]) / \
65 (3. * inputDict["E"] * inputDict["I"])
67 # This section builds the returned object
68 paramOutput = create_normal_parametric_output(outputDict, paramInput)
72 Service("GetFilesToTransfer",
73 inport=[("studyID", "long"),
74 ("detCaseEntry", "string")],
75 outport=[("inputFiles", "stringvec"),
76 ("outputFiles", "stringvec")],
80 return (inputFiles, outputFiles)
86 m = Module("EXAMPLE_MODULE",components=[c1],prefix="./EXAMPLE_MODULE_INSTALL")
89 "prerequisites":prerequisites_script_path,
92 g=Generator(m,context)
98 g.make_appli("example_appli",
99 altmodules={"OPENTURNS":openturns_module_path,
100 "EFICAS":eficas_module_path})