File: t_PhysicalModel_std.cxx

package info (click to toggle)
persalys 17.0.1%2Bds-2
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 73,312 kB
  • sloc: xml: 496,863; cpp: 56,490; python: 3,605; sh: 389; makefile: 127; ansic: 14
file content (63 lines) | stat: -rw-r--r-- 2,215 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
//                                               -*- C++ -*-
/**
 *  @brief The test file for PhysicalModel
 *
 *  Copyright 2015-2024 EDF-Phimeca
 *
 *  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 3 of the License, or
 *  (at your option) any later version.
 *
 *  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, see <http://www.gnu.org/licenses/>.
 *
 */
#include <iostream>
// OT includes
#include "openturns/OT.hxx"
#include "persalys/Persalys.hxx"

using namespace OT;
using namespace PERSALYS;

int main(int /*argc*/, char ** /*argv*/)
{
  PythonEnvironment pyEnv;

  PERSALYS::Study study("study1");
  Input Q("Q", 0., Normal(10200, 100), "Primary energy");
  Input E("E", 0., Normal(3000, 15), "Produced electric energy");
  Input C("C", 0., Normal(4000, 60), "Valued thermal energy");
  Output Ep("Ep", "Primary energy savings");
  InputCollection inputCollection(3);
  inputCollection[0] = Q;
  inputCollection[1] = E;
  inputCollection[2] = C;
  OutputCollection outputCollection(1);
  outputCollection[0] = Ep;

  Point x(3);
  x[0] = 10200;
  x[1] = 3000;
  x[2] = 4000;

  Description formula(1, "1-(Q/((E/((1-0.05)*0.54))+(C/0.8)))");
  SymbolicPhysicalModel analyticalModel("analyticalModel1", inputCollection, outputCollection, formula);
  study.add(analyticalModel);
  std::cout << analyticalModel.getFunction()(x) << std::endl;

  String code = "def _exec(Q, E, C):\n    Ep = 1-(Q/((E/((1-0.05)*0.54))+(C/0.8)))\n    return Ep";
  PythonPhysicalModel pythonModel("pythonModel1", inputCollection, outputCollection, code);
  pythonModel.setProcessNumber(1);
  study.add(pythonModel);
  std::cout << pythonModel.getFunction()(x) << std::endl;

  std::cout << study.getPythonScript() << std::endl;
  return EXIT_SUCCESS;
}