FEM: objects, use fem name sheme for object package names

This commit is contained in:
Bernd Hahnebach
2018-01-25 07:16:45 +01:00
committed by Yorik van Havre
parent 07ae0e56c4
commit c85afd0e44
48 changed files with 94 additions and 93 deletions

View File

@@ -158,26 +158,26 @@ SET(FemTools_SRCS
)
SET(FemObjectsScripts_SRCS
PyObjects/__init__.py
PyObjects/_FemConstraintBodyHeatSource.py
PyObjects/_FemConstraintElectrostaticPotential.py
PyObjects/_FemConstraintFlowVelocity.py
PyObjects/_FemConstraintInitialFlowVelocity.py
PyObjects/_FemConstraintSelfWeight.py
PyObjects/_FemElementFluid1D.py
PyObjects/_FemElementGeometry1D.py
PyObjects/_FemElementGeometry2D.py
PyObjects/_FemElementRotation1D.py
PyObjects/_FemMaterial.py
PyObjects/_FemMaterialMechanicalNonlinear.py
PyObjects/_FemMeshBoundaryLayer.py
PyObjects/_FemMeshGmsh.py
PyObjects/_FemMeshGroup.py
PyObjects/_FemMeshRegion.py
PyObjects/_FemMeshResult.py
PyObjects/_FemResultMechanical.py
PyObjects/_FemSolverCalculix.py
PyObjects/FemConstraint.py
femobjects/__init__.py
femobjects/_FemConstraintBodyHeatSource.py
femobjects/_FemConstraintElectrostaticPotential.py
femobjects/_FemConstraintFlowVelocity.py
femobjects/_FemConstraintInitialFlowVelocity.py
femobjects/_FemConstraintSelfWeight.py
femobjects/_FemElementFluid1D.py
femobjects/_FemElementGeometry1D.py
femobjects/_FemElementGeometry2D.py
femobjects/_FemElementRotation1D.py
femobjects/_FemMaterial.py
femobjects/_FemMaterialMechanicalNonlinear.py
femobjects/_FemMeshBoundaryLayer.py
femobjects/_FemMeshGmsh.py
femobjects/_FemMeshGroup.py
femobjects/_FemMeshRegion.py
femobjects/_FemMeshResult.py
femobjects/_FemResultMechanical.py
femobjects/_FemSolverCalculix.py
femobjects/FemConstraint.py
)
SET(FemAllScripts
@@ -223,35 +223,35 @@ INSTALL(FILES ${FemTestsFiles_SRCS} DESTINATION Mod/Fem/femtest/testfiles)
INSTALL(FILES ${FemTestsCcx_SRCS} DESTINATION Mod/Fem/femtest/testfiles/ccx)
INSTALL(FILES ${FemTestsElmer_SRCS} DESTINATION Mod/Fem/femtest/testfiles/elmer)
INSTALL(FILES ${FemTools_SRCS} DESTINATION Mod/Fem/femtools)
INSTALL(FILES ${FemObjectsScripts_SRCS} DESTINATION Mod/Fem/PyObjects)
INSTALL(FILES ${FemObjectsScripts_SRCS} DESTINATION Mod/Fem/femobjects)
# Python Gui packages and modules
SET(FemGuiScripts_SRCS
PyGui/__init__.py
PyGui/_TaskPanelFemSolverControl.py
PyGui/_ViewProviderFemConstraintBodyHeatSource.py
PyGui/_ViewProviderFemConstraintElectrostaticPotential.py
PyGui/_ViewProviderFemConstraintFlowVelocity.py
PyGui/_ViewProviderFemConstraintInitialFlowVelocity.py
PyGui/_ViewProviderFemConstraintSelfWeight.py
PyGui/_ViewProviderFemElementFluid1D.py
PyGui/_ViewProviderFemElementGeometry1D.py
PyGui/_ViewProviderFemElementGeometry2D.py
PyGui/_ViewProviderFemElementRotation1D.py
PyGui/_ViewProviderFemMaterial.py
PyGui/_ViewProviderFemMaterialMechanicalNonlinear.py
PyGui/_ViewProviderFemMeshBoundaryLayer.py
PyGui/_ViewProviderFemMeshGmsh.py
PyGui/_ViewProviderFemMeshGroup.py
PyGui/_ViewProviderFemMeshRegion.py
PyGui/_ViewProviderFemMeshResult.py
PyGui/_ViewProviderFemResultMechanical.py
PyGui/_ViewProviderFemSolverCalculix.py
PyGui/FemSelectionObserver.py
PyGui/FemSelectionWidgets.py
PyGui/ViewProviderFemConstraint.py
femguiobjects/__init__.py
femguiobjects/_TaskPanelFemSolverControl.py
femguiobjects/_ViewProviderFemConstraintBodyHeatSource.py
femguiobjects/_ViewProviderFemConstraintElectrostaticPotential.py
femguiobjects/_ViewProviderFemConstraintFlowVelocity.py
femguiobjects/_ViewProviderFemConstraintInitialFlowVelocity.py
femguiobjects/_ViewProviderFemConstraintSelfWeight.py
femguiobjects/_ViewProviderFemElementFluid1D.py
femguiobjects/_ViewProviderFemElementGeometry1D.py
femguiobjects/_ViewProviderFemElementGeometry2D.py
femguiobjects/_ViewProviderFemElementRotation1D.py
femguiobjects/_ViewProviderFemMaterial.py
femguiobjects/_ViewProviderFemMaterialMechanicalNonlinear.py
femguiobjects/_ViewProviderFemMeshBoundaryLayer.py
femguiobjects/_ViewProviderFemMeshGmsh.py
femguiobjects/_ViewProviderFemMeshGroup.py
femguiobjects/_ViewProviderFemMeshRegion.py
femguiobjects/_ViewProviderFemMeshResult.py
femguiobjects/_ViewProviderFemResultMechanical.py
femguiobjects/_ViewProviderFemSolverCalculix.py
femguiobjects/FemSelectionObserver.py
femguiobjects/FemSelectionWidgets.py
femguiobjects/ViewProviderFemConstraint.py
)
@@ -262,5 +262,5 @@ if(BUILD_GUI)
fc_copy_sources(FemGuiScriptsTarget "${CMAKE_BINARY_DIR}/Mod/Fem" ${FemGuiScripts_SRCS})
# install Python packages (for make install)
INSTALL(FILES ${FemGuiScripts_SRCS} DESTINATION Mod/Fem/PyGui)
INSTALL(FILES ${FemGuiScripts_SRCS} DESTINATION Mod/Fem/femguiobjects)
endif(BUILD_GUI)

View File

@@ -47,10 +47,10 @@ def makeConstraintBearing(doc, name="ConstraintBearing"):
def makeConstraintBodyHeatSource(doc, name="ConstraintBodyHeatSource"):
'''makeConstraintBodyHeatSource(document, [name]): makes a Fem ConstraintBodyHeatSource object'''
obj = doc.addObject("Fem::ConstraintPython", name)
from PyObjects import _FemConstraintBodyHeatSource
from femobjects import _FemConstraintBodyHeatSource
_FemConstraintBodyHeatSource.Proxy(obj)
if FreeCAD.GuiUp:
from PyGui import _ViewProviderFemConstraintBodyHeatSource
from femguiobjects import _ViewProviderFemConstraintBodyHeatSource
_ViewProviderFemConstraintBodyHeatSource.ViewProxy(obj.ViewObject)
return obj
@@ -70,10 +70,10 @@ def makeConstraintDisplacement(doc, name="ConstraintDisplacement"):
def makeConstraintElectrostaticPotential(doc, name="ConstraintElectrostaticPotential"):
'''makeConstraintElectrostaticPotential(document, [name]): makes a Fem ElectrostaticPotential object'''
obj = doc.addObject("Fem::ConstraintPython", name)
from PyObjects import _FemConstraintElectrostaticPotential
from femobjects import _FemConstraintElectrostaticPotential
_FemConstraintElectrostaticPotential.Proxy(obj)
if FreeCAD.GuiUp:
from PyGui import _ViewProviderFemConstraintElectrostaticPotential
from femguiobjects import _ViewProviderFemConstraintElectrostaticPotential
_ViewProviderFemConstraintElectrostaticPotential.ViewProxy(obj.ViewObject)
return obj
@@ -87,10 +87,10 @@ def makeConstraintFixed(doc, name="ConstraintFixed"):
def makeConstraintFlowVelocity(doc, name="ConstraintFlowVelocity"):
'''makeConstraintFlowVelocity(document, [name]): makes a Fem ConstraintFlowVelocity object'''
obj = doc.addObject("Fem::ConstraintPython", name)
from PyObjects import _FemConstraintFlowVelocity
from femobjects import _FemConstraintFlowVelocity
_FemConstraintFlowVelocity.Proxy(obj)
if FreeCAD.GuiUp:
from PyGui import _ViewProviderFemConstraintFlowVelocity
from femguiobjects import _ViewProviderFemConstraintFlowVelocity
_ViewProviderFemConstraintFlowVelocity.ViewProxy(obj.ViewObject)
return obj
@@ -122,10 +122,10 @@ def makeConstraintHeatflux(doc, name="ConstraintHeatflux"):
def makeConstraintInitialFlowVelocity(doc, name="ConstraintInitialFlowVelocity"):
'''makeConstraintInitialFlowVelocity(document, [name]): makes a Fem ConstraintInitialFlowVelocity object'''
obj = doc.addObject("Fem::ConstraintPython", name)
from PyObjects import _FemConstraintInitialFlowVelocity
from femobjects import _FemConstraintInitialFlowVelocity
_FemConstraintInitialFlowVelocity.Proxy(obj)
if FreeCAD.GuiUp:
from PyGui import _ViewProviderFemConstraintInitialFlowVelocity
from femguiobjects import _ViewProviderFemConstraintInitialFlowVelocity
_ViewProviderFemConstraintInitialFlowVelocity.ViewProxy(obj.ViewObject)
return obj
@@ -157,10 +157,10 @@ def makeConstraintPulley(doc, name="ConstraintPulley"):
def makeConstraintSelfWeight(doc, name="ConstraintSelfWeight"):
'''makeConstraintSelfWeight(document, [name]): creates an self weight object to define a gravity load'''
obj = doc.addObject("Fem::ConstraintPython", name)
from PyObjects import _FemConstraintSelfWeight
from femobjects import _FemConstraintSelfWeight
_FemConstraintSelfWeight._FemConstraintSelfWeight(obj)
if FreeCAD.GuiUp:
from PyGui import _ViewProviderFemConstraintSelfWeight
from femguiobjects import _ViewProviderFemConstraintSelfWeight
_ViewProviderFemConstraintSelfWeight._ViewProviderFemConstraintSelfWeight(obj.ViewObject)
return obj
@@ -181,10 +181,10 @@ def makeConstraintTransform(doc, name="ConstraintTransform"):
def makeElementFluid1D(doc, name="ElementFluid1D"):
'''makeElementFluid1D(document, [name]): creates an 1D fluid element object to define 1D flow'''
obj = doc.addObject("Fem::FeaturePython", name)
from PyObjects import _FemElementFluid1D
from femobjects import _FemElementFluid1D
_FemElementFluid1D._FemElementFluid1D(obj)
if FreeCAD.GuiUp:
from PyGui import _ViewProviderFemElementFluid1D
from femguiobjects import _ViewProviderFemElementFluid1D
_ViewProviderFemElementFluid1D._ViewProviderFemElementFluid1D(obj.ViewObject)
return obj
@@ -192,7 +192,7 @@ def makeElementFluid1D(doc, name="ElementFluid1D"):
def makeElementGeometry1D(doc, sectiontype='Rectangular', width=10.0, height=25.0, name="ElementGeometry1D"):
'''makeElementGeometry1D(document, [width], [height], [name]): creates an 1D geometry element object to define a cross section'''
obj = doc.addObject("Fem::FeaturePython", name)
from PyObjects import _FemElementGeometry1D
from femobjects import _FemElementGeometry1D
_FemElementGeometry1D._FemElementGeometry1D(obj)
sec_types = _FemElementGeometry1D._FemElementGeometry1D.known_beam_types
if sectiontype not in sec_types:
@@ -206,7 +206,7 @@ def makeElementGeometry1D(doc, sectiontype='Rectangular', width=10.0, height=25.
obj.PipeDiameter = height
obj.PipeThickness = width
if FreeCAD.GuiUp:
from PyGui import _ViewProviderFemElementGeometry1D
from femguiobjects import _ViewProviderFemElementGeometry1D
_ViewProviderFemElementGeometry1D._ViewProviderFemElementGeometry1D(obj.ViewObject)
return obj
@@ -214,11 +214,11 @@ def makeElementGeometry1D(doc, sectiontype='Rectangular', width=10.0, height=25.
def makeElementGeometry2D(doc, thickness=20.0, name="ElementGeometry2D"):
'''makeElementGeometry2D(document, [thickness], [name]): creates an 2D geometry element object to define a plate thickness'''
obj = doc.addObject("Fem::FeaturePython", name)
from PyObjects import _FemElementGeometry2D
from femobjects import _FemElementGeometry2D
_FemElementGeometry2D._FemElementGeometry2D(obj)
obj.Thickness = thickness
if FreeCAD.GuiUp:
from PyGui import _ViewProviderFemElementGeometry2D
from femguiobjects import _ViewProviderFemElementGeometry2D
_ViewProviderFemElementGeometry2D._ViewProviderFemElementGeometry2D(obj.ViewObject)
return obj
@@ -226,10 +226,10 @@ def makeElementGeometry2D(doc, thickness=20.0, name="ElementGeometry2D"):
def makeElementRotation1D(doc, name="ElementRotation1D"):
'''makeElementRotation1D(document, [name]): creates an 1D geometry rotation element object to rotate a 1D cross section'''
obj = doc.addObject("Fem::FeaturePython", name)
from PyObjects import _FemElementRotation1D
from femobjects import _FemElementRotation1D
_FemElementRotation1D._FemElementRotation1D(obj)
if FreeCAD.GuiUp:
from PyGui import _ViewProviderFemElementRotation1D
from femguiobjects import _ViewProviderFemElementRotation1D
_ViewProviderFemElementRotation1D._ViewProviderFemElementRotation1D(obj.ViewObject)
return obj
@@ -238,11 +238,11 @@ def makeElementRotation1D(doc, name="ElementRotation1D"):
def makeMaterialFluid(doc, name="FluidMaterial"):
'''makeMaterialFluid(document, [name]): makes a FEM Material for fluid'''
obj = doc.addObject("App::MaterialObjectPython", name)
from PyObjects import _FemMaterial
from femobjects import _FemMaterial
_FemMaterial._FemMaterial(obj)
obj.Category = 'Fluid'
if FreeCAD.GuiUp:
from PyGui import _ViewProviderFemMaterial
from femguiobjects import _ViewProviderFemMaterial
_ViewProviderFemMaterial._ViewProviderFemMaterial(obj.ViewObject)
# doc.recompute()
return obj
@@ -251,11 +251,11 @@ def makeMaterialFluid(doc, name="FluidMaterial"):
def makeMaterialMechanicalNonlinear(doc, base_material, name="MechanicalMaterialNonlinear"):
'''makeMaterialMechanicalNonlinear(document, base_material, [name]): creates a nonlinear material object'''
obj = doc.addObject("Fem::FeaturePython", name)
from PyObjects import _FemMaterialMechanicalNonlinear
from femobjects import _FemMaterialMechanicalNonlinear
_FemMaterialMechanicalNonlinear._FemMaterialMechanicalNonlinear(obj)
obj.LinearBaseMaterial = base_material
if FreeCAD.GuiUp:
from PyGui import _ViewProviderFemMaterialMechanicalNonlinear
from femguiobjects import _ViewProviderFemMaterialMechanicalNonlinear
_ViewProviderFemMaterialMechanicalNonlinear._ViewProviderFemMaterialMechanicalNonlinear(obj.ViewObject)
return obj
@@ -263,11 +263,11 @@ def makeMaterialMechanicalNonlinear(doc, base_material, name="MechanicalMaterial
def makeMaterialSolid(doc, name="MechanicalSolidMaterial"):
'''makeMaterialSolid(document, [name]): makes a FEM Material for solid'''
obj = doc.addObject("App::MaterialObjectPython", name)
from PyObjects import _FemMaterial
from femobjects import _FemMaterial
_FemMaterial._FemMaterial(obj)
obj.Category = 'Solid'
if FreeCAD.GuiUp:
from PyGui import _ViewProviderFemMaterial
from femguiobjects import _ViewProviderFemMaterial
_ViewProviderFemMaterial._ViewProviderFemMaterial(obj.ViewObject)
# doc.recompute()
return obj
@@ -277,7 +277,7 @@ def makeMaterialSolid(doc, name="MechanicalSolidMaterial"):
def makeMeshBoundaryLayer(doc, base_mesh, name="MeshBoundaryLayer"):
'''makeMeshBoundaryLayer(document, base_mesh, [name]): creates a FEM mesh BoundaryLayer object to define boundary layer properties'''
obj = doc.addObject("Fem::FeaturePython", name)
from PyObjects import _FemMeshBoundaryLayer
from femobjects import _FemMeshBoundaryLayer
_FemMeshBoundaryLayer._FemMeshBoundaryLayer(obj)
# obj.BaseMesh = base_mesh
# App::PropertyLinkList does not support append, we will use a temporary list to append the mesh BoundaryLayer obj. to the list
@@ -285,7 +285,7 @@ def makeMeshBoundaryLayer(doc, base_mesh, name="MeshBoundaryLayer"):
tmplist.append(obj)
base_mesh.MeshBoundaryLayerList = tmplist
if FreeCAD.GuiUp:
from PyGui import _ViewProviderFemMeshBoundaryLayer
from femguiobjects import _ViewProviderFemMeshBoundaryLayer
_ViewProviderFemMeshBoundaryLayer._ViewProviderFemMeshBoundaryLayer(obj.ViewObject)
return obj
@@ -293,10 +293,10 @@ def makeMeshBoundaryLayer(doc, base_mesh, name="MeshBoundaryLayer"):
def makeMeshGmsh(doc, name="FEMMeshGmsh"):
'''makeMeshGmsh(document, [name]): makes a Gmsh FEM mesh object'''
obj = doc.addObject("Fem::FemMeshObjectPython", name)
from PyObjects import _FemMeshGmsh
from femobjects import _FemMeshGmsh
_FemMeshGmsh._FemMeshGmsh(obj)
if FreeCAD.GuiUp:
from PyGui import _ViewProviderFemMeshGmsh
from femguiobjects import _ViewProviderFemMeshGmsh
_ViewProviderFemMeshGmsh._ViewProviderFemMeshGmsh(obj.ViewObject)
return obj
@@ -304,7 +304,7 @@ def makeMeshGmsh(doc, name="FEMMeshGmsh"):
def makeMeshGroup(doc, base_mesh, use_label=False, name="FEMMeshGroup"):
'''makeMeshGroup(document, base_mesh, [use_label], [name]): creates a FEM mesh region object to define properties for a region of a FEM mesh'''
obj = doc.addObject("Fem::FeaturePython", name)
from PyObjects import _FemMeshGroup
from femobjects import _FemMeshGroup
_FemMeshGroup._FemMeshGroup(obj)
obj.UseLabel = use_label
# obj.BaseMesh = base_mesh
@@ -313,7 +313,7 @@ def makeMeshGroup(doc, base_mesh, use_label=False, name="FEMMeshGroup"):
tmplist.append(obj)
base_mesh.MeshGroupList = tmplist
if FreeCAD.GuiUp:
from PyGui import _ViewProviderFemMeshGroup
from femguiobjects import _ViewProviderFemMeshGroup
_ViewProviderFemMeshGroup._ViewProviderFemMeshGroup(obj.ViewObject)
return obj
@@ -327,7 +327,7 @@ def makeMeshNetgen(doc, name="FEMMeshNetgen"):
def makeMeshRegion(doc, base_mesh, element_length=0.0, name="FEMMeshRegion"):
'''makeMeshRegion(document, base_mesh, [element_length], [name]): creates a FEM mesh region object to define properties for a region of a FEM mesh'''
obj = doc.addObject("Fem::FeaturePython", name)
from PyObjects import _FemMeshRegion
from femobjects import _FemMeshRegion
_FemMeshRegion._FemMeshRegion(obj)
obj.CharacteristicLength = element_length
# obj.BaseMesh = base_mesh
@@ -336,7 +336,7 @@ def makeMeshRegion(doc, base_mesh, element_length=0.0, name="FEMMeshRegion"):
tmplist.append(obj)
base_mesh.MeshRegionList = tmplist
if FreeCAD.GuiUp:
from PyGui import _ViewProviderFemMeshRegion
from femguiobjects import _ViewProviderFemMeshRegion
_ViewProviderFemMeshRegion._ViewProviderFemMeshRegion(obj.ViewObject)
return obj
@@ -344,10 +344,10 @@ def makeMeshRegion(doc, base_mesh, element_length=0.0, name="FEMMeshRegion"):
def makeMeshResult(doc, name="FEMMeshResult"):
'''makeMeshResult(document, name): makes a Fem MeshResult object'''
obj = doc.addObject("Fem::FemMeshObjectPython", name)
from PyObjects import _FemMeshResult
from femobjects import _FemMeshResult
_FemMeshResult._FemMeshResult(obj)
if FreeCAD.GuiUp:
from PyGui import _ViewProviderFemMeshResult
from femguiobjects import _ViewProviderFemMeshResult
_ViewProviderFemMeshResult._ViewProviderFemMeshResult(obj.ViewObject)
return obj
@@ -356,10 +356,10 @@ def makeMeshResult(doc, name="FEMMeshResult"):
def makeResultMechanical(doc, name="MechanicalResult"):
'''makeResultMechanical(document, [name]): creates an mechanical result object to hold FEM results'''
obj = doc.addObject('Fem::FemResultObjectPython', name)
from PyObjects import _FemResultMechanical
from femobjects import _FemResultMechanical
_FemResultMechanical._FemResultMechanical(obj)
if FreeCAD.GuiUp:
from PyGui import _ViewProviderFemResultMechanical
from femguiobjects import _ViewProviderFemResultMechanical
_ViewProviderFemResultMechanical._ViewProviderFemResultMechanical(obj.ViewObject)
return obj
@@ -398,10 +398,10 @@ def makeEquationHeat(doc, base_solver):
def makeSolverCalculixCcxTools(doc, name="CalculiXccxTools"):
'''makeSolverCalculixCcxTools(document, [name]): makes a Calculix solver object for the ccx tools module'''
obj = doc.addObject("Fem::FemSolverObjectPython", name)
from PyObjects import _FemSolverCalculix
from femobjects import _FemSolverCalculix
_FemSolverCalculix._FemSolverCalculix(obj)
if FreeCAD.GuiUp:
from PyGui import _ViewProviderFemSolverCalculix
from femguiobjects import _ViewProviderFemSolverCalculix
_ViewProviderFemSolverCalculix._ViewProviderFemSolverCalculix(obj.ViewObject)
return obj

View File

@@ -33,7 +33,7 @@ import FreeCADGui
# for the panel
from PyObjects import _FemElementFluid1D
from femobjects import _FemElementFluid1D
from PySide import QtCore
from PySide import QtGui

View File

@@ -32,7 +32,7 @@ import FreeCADGui
# for the panel
from PyObjects import _FemElementGeometry1D
from femobjects import _FemElementGeometry1D
from PySide import QtCore
from PySide import QtGui

View File

@@ -33,7 +33,7 @@ import FemGui
# for the panel
from PyObjects import _FemMeshGmsh
from femobjects import _FemMeshGmsh
from PySide import QtCore
from PySide import QtGui
from PySide.QtCore import Qt

View File

@@ -20,10 +20,10 @@
# * *
# ***************************************************************************
__title__ = "Fem object modules"
__title__ = "Fem Gui modules"
__author__ = "Bernd Hahnebach"
__url__ = "http://www.freecadweb.org"
## @package PyObjects
## @package PyGui
# \ingroup Fem
# \brief Fem objects module
# \brief Fem Gui module

View File

@@ -32,7 +32,8 @@ import femtools.femutils as FemUtils
if App.GuiUp:
import FreeCADGui as Gui
from PyGui import FemSelectionWidgets
from femguiobjects import FemSelectionWidgets
class Proxy(equationbase.BaseProxy):

View File

@@ -33,7 +33,7 @@ from . import run
if App.GuiUp:
import FreeCADGui as Gui
from PyGui import _TaskPanelFemSolverControl
from femguiobjects import _TaskPanelFemSolverControl
class Proxy(object):

View File

@@ -617,10 +617,10 @@ class FemTest(unittest.TestCase):
pymodules += collect_python_modules('femmesh')
pymodules += collect_python_modules('femresult')
pymodules += collect_python_modules('femtest')
pymodules += collect_python_modules('PyObjects')
pymodules += collect_python_modules('femobjects')
if FreeCAD.GuiUp:
pymodules += collect_python_modules('femcommands')
pymodules += collect_python_modules('PyGui')
pymodules += collect_python_modules('femguiobjects')
pymodules += collect_python_modules('femsolver')
pymodules += collect_python_modules('femsolver/elmer')
pymodules += collect_python_modules('femsolver/elmer/equations')