-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathcreate_and_convert_3D_mesh.py
40 lines (32 loc) · 1.38 KB
/
create_and_convert_3D_mesh.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# Copyright (C) 2021-2022 Jørgen S. Dokken
#
# SPDX-License-Identifier: MIT
import argparse
import os
import dolfinx
import dolfinx.graph
from dolfinx.io import gmshio
from mpi4py import MPI
def generate_3D_channel(filename: str, outdir: str):
gdim = 3
os.system(f"gmsh -{gdim} -optimize_netgen cfd.geo")
model_rank = 0
mesh_comm = MPI.COMM_WORLD
mesh, _, ft = gmshio.read_from_msh("cfd.msh", mesh_comm, model_rank)
ft.name = "Facet tags"
with dolfinx.io.XDMFFile(MPI.COMM_WORLD, f"{outdir}/{filename}.xdmf", "w") as xdmf:
xdmf.write_mesh(mesh)
with dolfinx.io.XDMFFile(MPI.COMM_WORLD, f"{outdir}/{filename}_facets.xdmf", "w") as xdmf:
xdmf.write_mesh(mesh)
xdmf.write_meshtags(ft, mesh.geometry)
if __name__ == "__main__":
parser = argparse.ArgumentParser(
description="GMSH scripts to generate the mesh in cfd.geo and convert it to DOLFINx format",
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument("--filename", default="channel3D", type=str, dest="filename",
help="Name of output file (without XDMF extension)")
parser.add_argument("--outdir", default="meshes", type=str, dest="outdir",
help="Name of output folder")
args = parser.parse_args()
os.system(f"mkdir -p {args.outdir}")
generate_3D_channel(args.filename, args.outdir)