Skip to content

Commit f44b9fa

Browse files
authored
Merge pull request #28 from KVSlab/add-rigid-cylinder-mesh
Add cylinder mesh for (rigid) Cylinder problem
2 parents e97c99c + f693c9f commit f44b9fa

File tree

3 files changed

+35
-31
lines changed

3 files changed

+35
-31
lines changed

src/oasismove/problems/Cylinder.py

+7-24
Original file line numberDiff line numberDiff line change
@@ -3,28 +3,7 @@
33
__copyright__ = "Copyright (C) 2014 " + __author__
44
__license__ = "GNU Lesser GPL version 3 or any later version"
55

6-
import os
7-
import platform
8-
9-
from dolfin import Mesh, AutoSubDomain, near
10-
11-
if not os.path.isfile("cylinder.xml"):
12-
if platform.system() == "Linux":
13-
os.system("wget -O cylinder.xml https://www.dropbox.com/s/d78g4cyjxl3ylay/cylinder.xml?dl=0")
14-
elif platform.system() == "Darwin":
15-
os.system("curl -L https://www.dropbox.com/s/d78g4cyjxl3ylay/cylinder.xml?dl=0 -o cylinder.xml")
16-
else:
17-
raise ImportError("Could not determine platform")
18-
19-
# try:
20-
# os.system("gmsh mesh/cylinder.geo -2 -o mesh/cylinder.msh")
21-
# os.system("dolfin-convert mesh/cylinder.msh mesh/cylinder.xml")
22-
# os.system("rm mesh/cylinder.msh")
23-
# except RuntimeError:
24-
# os.system("wget -O cylinder.xml https://www.dropbox.com/s/d78g4cyjxl3ylay/cylinder.xml?dl=0")
25-
# raise "Gmsh is required to run this demo"
26-
27-
mesh = Mesh("cylinder.xml")
6+
from dolfin import AutoSubDomain, near
287

298
H = 0.41
309
L = 2.2
@@ -47,14 +26,18 @@
4726

4827

4928
# Overload post_import_problem to choose between the two cases
50-
def post_import_problem(NS_parameters, commandline_kwargs, **NS_namespace):
29+
def post_import_problem(NS_parameters, mesh, commandline_kwargs, **NS_namespace):
30+
# If the mesh is a callable function, then create the mesh here.
31+
if callable(mesh):
32+
mesh = mesh(**NS_parameters)
33+
5134
""" Choose case - case could be defined through command line."""
5235
NS_parameters.update(commandline_kwargs)
5336
case = NS_parameters['case'] if 'case' in NS_parameters else 1
5437
Um = cases[case]["Um"]
5538
Re = cases[case]["Re"]
5639
Umean = 2. / 3. * Um
5740
nu = Umean * D / Re
58-
NS_parameters.update(nu=nu, Re=Re, Um=Um, Umean=Umean)
41+
NS_parameters.update(nu=nu, Re=Re, Um=Um, Umean=Umean, mesh=mesh)
5942

6043
return NS_parameters

src/oasismove/problems/NSCoupled/Cylinder.py

+14-3
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
__copyright__ = "Copyright (C) 2014 " + __author__
66
__license__ = "GNU Lesser GPL version 3 or any later version"
77

8-
from ..Cylinder import *
9-
from ..NSCoupled import *
8+
from oasismove.problems.NSCoupled import *
9+
from oasismove.problems.Cylinder import *
1010

1111

1212
# Override some problem specific parameters
@@ -15,7 +15,9 @@ def problem_parameters(NS_parameters, scalar_components, **NS_namespace):
1515
omega=1.0,
1616
max_iter=100,
1717
plot_interval=10,
18-
velocity_degree=2)
18+
velocity_degree=2,
19+
mesh_path="src/oasismove/mesh/cylinder.xml",
20+
)
1921

2022
scalar_components += ["c", "d"]
2123

@@ -24,6 +26,15 @@ def scalar_source(c_, d_, **NS_namespace):
2426
return {"c": -Constant(0.1) * c_ * c_, "d": -Constant(0.25) * c_ * d_ * d_}
2527

2628

29+
def mesh(mesh_path, dt, **NS_namespace):
30+
# Import mesh
31+
print(mesh_path)
32+
mesh = Mesh(mesh_path)
33+
34+
print_mesh_information(mesh, dt, dim=2)
35+
return mesh
36+
37+
2738
def create_bcs(VQ, Um, CG, V, element, **NS_namespace):
2839
inlet = Expression(("4.*{0}*x[1]*({1}-x[1])/pow({1}, 2)".format(Um, H), "0"), element=V)
2940
ux = Expression(("0.00*x[1]", "-0.00*(x[0]-{})".format(center)), element=V)

src/oasismove/problems/NSfracStep/Cylinder.py

+14-4
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,8 @@
99
from os import getcwd
1010

1111
import matplotlib.pyplot as plt
12-
13-
from ..Cylinder import *
14-
from ..NSfracStep import *
12+
from oasismove.problems.NSfracStep import *
13+
from oasismove.problems.Cylinder import *
1514

1615

1716
def problem_parameters(commandline_kwargs, NS_parameters, scalar_components,
@@ -35,7 +34,9 @@ def problem_parameters(commandline_kwargs, NS_parameters, scalar_components,
3534
plot_interval=10,
3635
velocity_degree=2,
3736
print_intermediate_info=100,
38-
use_krylov_solvers=True)
37+
use_krylov_solvers=True,
38+
mesh_path="src/oasismove/mesh/cylinder.xml",
39+
)
3940
NS_parameters['krylov_solvers'].update(dict(monitor_convergence=True))
4041
NS_parameters['velocity_krylov_solver'].update(dict(preconditioner_type='jacobi',
4142
solver_type='bicgstab'))
@@ -44,6 +45,15 @@ def problem_parameters(commandline_kwargs, NS_parameters, scalar_components,
4445
Schmidt["alfa"] = 0.1
4546

4647

48+
def mesh(mesh_path, dt, **NS_namespace):
49+
# Import mesh
50+
print(mesh_path)
51+
mesh = Mesh(mesh_path)
52+
53+
print_mesh_information(mesh, dt, dim=2)
54+
return mesh
55+
56+
4757
def create_bcs(V, Q, Um, H, **NS_namespace):
4858
inlet = Expression(
4959
"4.*{0}*x[1]*({1}-x[1])/pow({1}, 2)".format(Um, H), degree=2)

0 commit comments

Comments
 (0)