def generate_gmsh(source, dimensions=None, order=None, other_options=None, extension="geo", gmsh_executable="gmsh", force_ambient_dim=None, output_file_name="output.msh", mesh_construction_kwargs=None, target_unit=None): """Run :command:`gmsh` on the input given by *source*, and return a :class:`meshmode.mesh.Mesh` based on the result. :arg source: an instance of either :class:`gmsh_interop.reader.FileSource` or :class:`gmsh_interop.reader.ScriptSource` :arg force_ambient_dim: if not *None*, truncate point coordinates to this many dimensions. :arg mesh_construction_kwargs: *None* or a dictionary of keyword arguments passed to the :class:`meshmode.mesh.Mesh` constructor. :arg target_unit: Value of the option *Geometry.OCCTargetUnit*. Supported values are the strings `'M'` or `'MM'`. """ if other_options is None: other_options = [] recv = GmshMeshReceiver(mesh_construction_kwargs=mesh_construction_kwargs) from gmsh_interop.runner import GmshRunner from gmsh_interop.reader import parse_gmsh if target_unit is None: target_unit = "MM" from warnings import warn warn( "Not specifying target_unit is deprecated. Set target_unit='MM' " "to retain prior behavior.", DeprecationWarning, stacklevel=2) with GmshRunner(source, dimensions, order=order, other_options=other_options, extension=extension, gmsh_executable=gmsh_executable, target_unit=target_unit) as runner: parse_gmsh(recv, runner.output_file, force_dimension=force_ambient_dim) mesh = recv.get_mesh() if force_ambient_dim is None: AXIS_NAMES = "xyz" # noqa dim = mesh.vertices.shape[0] for idim in range(dim): if (mesh.vertices[idim] == 0).all(): from warnings import warn warn("all vertices' %s coordinate is zero--perhaps you want to pass " "force_ambient_dim=%d (pass any fixed value to " "force_ambient_dim to silence this warning)" % ( AXIS_NAMES[idim], idim)) break return mesh
def generate_gmsh(source, dimensions=None, order=None, other_options=[], extension="geo", gmsh_executable="gmsh", force_ambient_dim=None, output_file_name="output.msh", mesh_construction_kwargs=None): """Run :command:`gmsh` on the input given by *source*, and return a :class:`meshmode.mesh.Mesh` based on the result. :arg source: an instance of either :class:`FileSource` or :class:`LiteralSource` :arg force_ambient_dim: if not None, truncate point coordinates to this many dimensions. :arg mesh_construction_kwargs: *None* or a dictionary of keyword arguments passed to the :class:`meshmode.mesh.Mesh` constructor. """ recv = GmshMeshReceiver(mesh_construction_kwargs=mesh_construction_kwargs) from gmsh_interop.runner import GmshRunner from gmsh_interop.reader import parse_gmsh with GmshRunner(source, dimensions, order=order, other_options=other_options, extension=extension, gmsh_executable=gmsh_executable) as runner: parse_gmsh(recv, runner.output_file, force_dimension=force_ambient_dim) mesh = recv.get_mesh() if force_ambient_dim is None: AXIS_NAMES = "xyz" # noqa dim = mesh.vertices.shape[0] for idim in range(dim): if (mesh.vertices[idim] == 0).all(): from warnings import warn warn( "all vertices' %s coordinate is zero--perhaps you want to pass " "force_ambient_dim=%d (pass any fixed value to " "force_ambient_dim to silence this warning)" % (AXIS_NAMES[idim], idim)) break return mesh
def generate_gmsh(source, dimensions=None, order=None, other_options=[], extension="geo", gmsh_executable="gmsh", force_ambient_dim=None, output_file_name="output.msh", mesh_construction_kwargs=None): """Run :command:`gmsh` on the input given by *source*, and return a :class:`meshmode.mesh.Mesh` based on the result. :arg source: an instance of either :class:`FileSource` or :class:`LiteralSource` :arg force_ambient_dim: if not None, truncate point coordinates to this many dimensions. :arg mesh_construction_kwargs: *None* or a dictionary of keyword arguments passed to the :class:`meshmode.mesh.Mesh` constructor. """ recv = GmshMeshReceiver(mesh_construction_kwargs=mesh_construction_kwargs) from gmsh_interop.runner import GmshRunner from gmsh_interop.reader import parse_gmsh with GmshRunner(source, dimensions, order=order, other_options=other_options, extension=extension, gmsh_executable=gmsh_executable) as runner: parse_gmsh(recv, runner.output_file, force_dimension=force_ambient_dim) mesh = recv.get_mesh() if force_ambient_dim is None: AXIS_NAMES = "xyz" # noqa dim = mesh.vertices.shape[0] for idim in range(dim): if (mesh.vertices[idim] == 0).all(): from warnings import warn warn("all vertices' %s coordinate is zero--perhaps you want to pass " "force_ambient_dim=%d (pass any fixed value to " "force_ambient_dim to silence this warning)" % ( AXIS_NAMES[idim], idim)) break return mesh