diff --git a/fipy/meshes/gmshMesh.py b/fipy/meshes/gmshMesh.py index 2dd7267c1b..ed38fee87b 100755 --- a/fipy/meshes/gmshMesh.py +++ b/fipy/meshes/gmshMesh.py @@ -89,6 +89,13 @@ class GmshException(Exception): class MeshExportError(GmshException): pass +def gmshPopen(cmd, stderr=None, stdout=None, shell=True): + cmd = ['gmsh'] + cmd + if shell: + cmd = ' '.join(cmd) + return Popen(cmd, stderr=stderr, stdout=stdout, shell=shell) + + def gmshVersion(communicator=parallel): """Determine the version of Gmsh. @@ -98,7 +105,7 @@ def gmshVersion(communicator=parallel): if communicator.procID == 0: while True: try: - p = Popen(["gmsh", "--version"], stderr=PIPE) + p = gmshPopen(["--version"], stderr=PIPE) except OSError, e: verStr = None break @@ -224,7 +231,7 @@ def openMSHFile(name, dimensions=None, coordDimensions=None, communicator=parall fileIsTemporary = True while True: - p = Popen(["gmsh", geoFile] + gmshFlags + ["-o", mshFile], + p = gmshPopen([geoFile] + gmshFlags + ["-o", mshFile], stdout=PIPE) try: @@ -1208,7 +1215,7 @@ def _test(self): >>> f.close() # doctest: +GMSH >>> if __name__ == "__main__": - ... p = Popen(["gmsh", os.path.join(dir, "g.msh")]) # doctest: +GMSH + ... p = gmshPopen([os.path.join(dir, "g.msh")]) # doctest: +GMSH ... doctest_raw_input("Grid2D... Press enter.") >>> gg = GmshGrid2D(dx=1., dy=1., nx=10, ny=10) @@ -1218,7 +1225,7 @@ def _test(self): >>> f.close() # doctest: +GMSH >>> if __name__ == "__main__": - ... p = Popen(["gmsh", os.path.join(dir, "gg.msh")]) # doctest: +GMSH + ... p = gmshPopen([os.path.join(dir, "gg.msh")]) # doctest: +GMSH ... doctest_raw_input("GmshGrid2D... Press enter.") >>> ug = UniformGrid2D(nx = 10, ny = 10) @@ -1237,7 +1244,7 @@ def _test(self): >>> f.close() # doctest: +GMSH >>> if __name__ == "__main__": - ... p = Popen(["gmsh", os.path.join(dir, "concat.msh")]) # doctest: +GMSH + ... p = gmshPopen([os.path.join(dir, "concat.msh")]) # doctest: +GMSH ... doctest_raw_input("Tri2D + Grid2D... Press enter.") >>> g3d = Grid3D(nx=10, ny=10, nz=30) @@ -1246,7 +1253,7 @@ def _test(self): >>> f.close() # doctest: +GMSH >>> if __name__ == "__main__": - ... p = Popen(["gmsh", os.path.join(dir, "g3d.msh")]) # doctest: +GMSH + ... p = gmshPopen([os.path.join(dir, "g3d.msh")]) # doctest: +GMSH ... doctest_raw_input("Grid3D... Press enter.") >>> cyl = CylindricalGrid2D(nx=10, ny=10) @@ -1255,7 +1262,7 @@ def _test(self): >>> f.close() # doctest: +GMSH >>> if __name__ == "__main__": - ... p = Popen(["gmsh", os.path.join(dir, "cyl.msh")]) # doctest: +GMSH + ... p = gmshPopen([os.path.join(dir, "cyl.msh")]) # doctest: +GMSH ... doctest_raw_input("CylindricalGrid2D... Press enter.") >>> import shutil @@ -1700,7 +1707,7 @@ def _test(self): >>> from fipy import doctest_raw_input >>> if __name__ == "__main__": - ... p = Popen(["gmsh", mshFile]) # doctest: +GMSH + ... p = gmshPopen([mshFile]) # doctest: +GMSH ... doctest_raw_input("Circle... Press enter.") >>> os.remove(mshFile)