Salome HOME
Merge branch 'V9_9_BR'
[modules/med.git] / src / MEDCalc / tui / medprocessing.py
1 # Copyright (C) 2011-2022  CEA/DEN, EDF R&D
2 #
3 # This library is free software; you can redistribute it and/or
4 # modify it under the terms of the GNU Lesser General Public
5 # License as published by the Free Software Foundation; either
6 # version 2.1 of the License, or (at your option) any later version.
7 #
8 # This library is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11 # Lesser General Public License for more details.
12 #
13 # You should have received a copy of the GNU Lesser General Public
14 # License along with this library; if not, write to the Free Software
15 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
16 #
17 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18 #
19
20 import medcalc
21 import MEDCALC
22 import SALOME
23 from medcalc.medevents import notifyGui_error
24
25
26 def ChangeUnderlyingMesh(fieldId, meshId):
27   try:
28     dataManager = medcalc.medcorba.factory.getDataManager()
29     fieldHandler = dataManager.getFieldHandler(fieldId)
30
31     # We don't modify the original field but create first a duplicate
32     duplicate = medcalc.medcorba.factory.getCalculator().dup(fieldHandler)
33     dataManager.changeUnderlyingMesh(duplicate.id, meshId)
34
35     from medcalc.medevents import notifyGui_changeUnderlyingMesh
36     notifyGui_changeUnderlyingMesh(duplicate.id)
37     return duplicate.id
38   except SALOME.SALOME_Exception as e:
39     notifyGui_error("An error occurred while changing underlying mesh:\n" + e.details.text)
40     raise Exception(e.details.text)
41 #
42
43 def InterpolateField(fieldId,
44                      meshId,
45                      precision,
46                      defaultValue,
47                      reverse,
48                      method,
49                      nature,
50                      intersectionType
51                      ):
52   params = MEDCALC.InterpolationParameters(precision, defaultValue, reverse, method, nature, intersectionType)
53   try:
54     dataManager = medcalc.medcorba.factory.getDataManager()
55     fieldHandler = dataManager.interpolateField(fieldId, meshId, params)
56     from medcalc.medevents import notifyGui_interpolateField
57     notifyGui_interpolateField(fieldHandler.id)
58     return fieldHandler.id
59   except SALOME.SALOME_Exception as e:
60     notifyGui_error("An error occurred while interpolating field:\n" + e.details.text)
61     raise Exception(e.details.text)
62 #