From ece663444cac967e6d978b06fd8383343ed6b92c Mon Sep 17 00:00:00 2001 From: Bernd Hahnebach Date: Wed, 15 Jul 2020 23:54:10 +0200 Subject: [PATCH] FEM: elmer solver, improve binary handling on Linux --- src/Mod/Fem/femsolver/elmer/tasks.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/Mod/Fem/femsolver/elmer/tasks.py b/src/Mod/Fem/femsolver/elmer/tasks.py index 5629069cd2..972841b995 100644 --- a/src/Mod/Fem/femsolver/elmer/tasks.py +++ b/src/Mod/Fem/femsolver/elmer/tasks.py @@ -28,9 +28,11 @@ __url__ = "http://www.freecadweb.org" ## \addtogroup FEM # @{ +import os import os.path import subprocess import sys +from platform import system import FreeCAD @@ -103,6 +105,15 @@ class Solve(run.Solve): self.pushStatus("Executing solver...\n") binary = settings.get_binary("ElmerSolver") if binary is not None: + # if ELMER_HOME is not set, set it. + # Needed if elmer is compiled but not installed on Linux + # http://www.elmerfem.org/forum/viewtopic.php?f=2&t=7119 + # https://stackoverflow.com/questions/1506010/how-to-use-export-with-python-on-linux + if system() == "Linux" and "ELMER_HOME" not in os.environ: + solvpath = os.path.split(binary)[0] + if os.path.isdir(solvpath): + os.environ["ELMER_HOME"] = solvpath + os.environ["LD_LIBRARY_PATH"] = "$LD_LIBRARY_PATH:{}/modules".format(solvpath) self._process = subprocess.Popen( [binary], cwd=self.directory, stdout=subprocess.PIPE,