Fillet between grains
This commit is contained in:
parent
5fafea7a7a
commit
9066dff9c2
@ -24,24 +24,32 @@ def genMesh(stype, theta, flowdirection, saveto):
|
|||||||
if structure:
|
if structure:
|
||||||
salome.salome_init()
|
salome.salome_init()
|
||||||
|
|
||||||
grains, cubic, rhombohedron = structure(theta)
|
#grains, cubic, rhombohedron = structure(theta)
|
||||||
fd = namedtuple("fd", ["x", "y", "z"])
|
#fd = namedtuple("fd", ["x", "y", "z"])
|
||||||
geometry = cubic
|
grains, geometry1, geometry2 = structure(theta)
|
||||||
|
geometry = geometry1
|
||||||
|
|
||||||
if flowdirection == [1, 1, 1]:
|
if flowdirection == [1, 1, 1]:
|
||||||
geometry = rhombohedron
|
geometry = geometry2
|
||||||
direction = fd([1, 1, 1], [1, -1, 1], [1, -1, -1])
|
norm = [-1, -1, 1]
|
||||||
|
bcount = 6
|
||||||
|
#direction = fd([1, 1, 1], [1, -1, 1], [1, -1, -1])
|
||||||
|
|
||||||
else:
|
#else:
|
||||||
geometry = cubic
|
# geometry = cubic
|
||||||
|
|
||||||
if flowdirection == [1, 0, 0]:
|
if flowdirection == [1, 0, 0]:
|
||||||
direction = fd([1, 1, 0], [1, -1, 0], [0, 0, 1])
|
norm = [0, 0, 1]
|
||||||
|
bcount = 4
|
||||||
|
#direction = fd([1, 1, 0], [1, -1, 0], [0, 0, 1])
|
||||||
|
|
||||||
if flowdirection == [0, 0, 1]:
|
if flowdirection == [0, 0, 1]:
|
||||||
direction = fd([0, 0, 1], [1, -1, 0], [1, 1, 0])
|
norm = [1, 1, 0]
|
||||||
|
bcount = 4
|
||||||
|
#direction = fd([0, 0, 1], [1, -1, 0], [1, 1, 0])
|
||||||
|
|
||||||
boundary = geometry_utils.boundaryCreate(geometry, direction, grains)
|
#boundary = geometry_utils.boundaryCreate(geometry, direction, grains)
|
||||||
|
boundary = geometry_utils.createBoundary(geometry, bcount, flowdirection, norm, grains)
|
||||||
|
|
||||||
fineness = 3
|
fineness = 3
|
||||||
mesh = mesh_utils.meshCreate(geometry, boundary, fineness)
|
mesh = mesh_utils.meshCreate(geometry, boundary, fineness)
|
||||||
|
@ -149,7 +149,19 @@ def bodyCenteredCubic(alpha):
|
|||||||
# Preparation
|
# Preparation
|
||||||
grains = geompy.ExtractShapes(Up_Down, geompy.ShapeType["SOLID"], True)
|
grains = geompy.ExtractShapes(Up_Down, geompy.ShapeType["SOLID"], True)
|
||||||
grains += geompy.ExtractShapes(Middle, geompy.ShapeType["SOLID"], True)
|
grains += geompy.ExtractShapes(Middle, geompy.ShapeType["SOLID"], True)
|
||||||
|
|
||||||
grains = geompy.MakeFuseList(grains, False, False)
|
grains = geompy.MakeFuseList(grains, False, False)
|
||||||
|
|
||||||
|
R = r0 / (1 - alpha)
|
||||||
|
C1 = 0.8
|
||||||
|
C2 = 0.4
|
||||||
|
alpha1 = 0.01
|
||||||
|
alpha2 = 0.13
|
||||||
|
|
||||||
|
Cf = C1 + (C2 - C1) / (alpha2 - alpha1) * (alpha - alpha1)
|
||||||
|
R_fillet = Cf * (r0 * math.sqrt(2) - R)
|
||||||
|
|
||||||
|
grains = geompy.MakeFilletAll(grains, R_fillet)
|
||||||
|
geometry1 = geompy.MakeCutList(Pore_1a, [grains], True)
|
||||||
|
geometry2 = geompy.MakeCutList(Pore_3c, [grains], True)
|
||||||
|
|
||||||
return grains, Pore_1a, Pore_3c
|
return grains, Pore_1a, Pore_3c
|
||||||
|
@ -144,7 +144,19 @@ def faceCenteredCubic(alpha):
|
|||||||
# Preparation
|
# Preparation
|
||||||
grains = geompy.ExtractShapes(Up_Down, geompy.ShapeType["SOLID"], True)
|
grains = geompy.ExtractShapes(Up_Down, geompy.ShapeType["SOLID"], True)
|
||||||
grains += geompy.ExtractShapes(Middle_Up, geompy.ShapeType["SOLID"], True)
|
grains += geompy.ExtractShapes(Middle_Up, geompy.ShapeType["SOLID"], True)
|
||||||
|
|
||||||
grains = geompy.MakeFuseList(grains, False, False)
|
grains = geompy.MakeFuseList(grains, False, False)
|
||||||
|
|
||||||
|
R = r0 / (1 - alpha)
|
||||||
|
C1 = 0.8
|
||||||
|
C2 = 0.4
|
||||||
|
alpha1 = 0.01
|
||||||
|
alpha2 = 0.18
|
||||||
|
|
||||||
|
Cf = C1 + (C2 - C1) / (alpha2 - alpha1) * (alpha - alpha1)
|
||||||
|
R_fillet = Cf * (r0 * math.sqrt(2) - R)
|
||||||
|
|
||||||
|
grains = geompy.MakeFilletAll(grains, R_fillet)
|
||||||
|
geometry1 = geompy.MakeCutList(Common, [grains], True)
|
||||||
|
geometry2 = geompy.MakeCutList(Cut_8, [grains], True)
|
||||||
|
|
||||||
return grains, Common, Cut_8
|
return grains, geometry1, geometry2
|
||||||
|
@ -113,7 +113,19 @@ def simpleCubic(alpha):
|
|||||||
|
|
||||||
# Preparation
|
# Preparation
|
||||||
grains = geompy.ExtractShapes(Multi_Translation_3, geompy.ShapeType["SOLID"], True)
|
grains = geompy.ExtractShapes(Multi_Translation_3, geompy.ShapeType["SOLID"], True)
|
||||||
|
|
||||||
grains = geompy.MakeFuseList(grains, False, False)
|
grains = geompy.MakeFuseList(grains, False, False)
|
||||||
|
|
||||||
return grains, Cut_1, Cut_4
|
R = r0 / (1 - alpha)
|
||||||
|
C1 = 0.8
|
||||||
|
C2 = 0.4
|
||||||
|
alpha1 = 0.01
|
||||||
|
alpha2 = 0.28
|
||||||
|
|
||||||
|
Cf = C1 + (C2 - C1) / (alpha2 - alpha1) * (alpha - alpha1)
|
||||||
|
R_fillet = Cf * (r0 * math.sqrt(2) - R)
|
||||||
|
|
||||||
|
grains = geompy.MakeFilletAll(grains, R_fillet)
|
||||||
|
geometry1 = geompy.MakeCutList(Cut_1, [grains], True)
|
||||||
|
geometry2 = geompy.MakeCutList(Cut_4, [grains], True)
|
||||||
|
|
||||||
|
return grains, geometry1, geometry2
|
||||||
|
@ -41,11 +41,15 @@ def createGroup(gobj, planelist, grains, name):
|
|||||||
return gr
|
return gr
|
||||||
|
|
||||||
|
|
||||||
def createBoundary(gobj, bcount, dvec, grains):
|
def createBoundary(gobj, bcount, dvec, norm, grains):
|
||||||
|
|
||||||
|
direction = np.quaternion(0, dvec[0], dvec[1], dvec[2]).normalized()
|
||||||
|
ax = lambda alpha: np.quaternion(
|
||||||
|
np.cos(alpha * 0.5),
|
||||||
|
np.sin(alpha * 0.5) * norm[0],
|
||||||
|
np.sin(alpha * 0.5) * norm[1],
|
||||||
|
np.sin(alpha * 0.5) * norm[2])
|
||||||
|
|
||||||
direction = np.quaternion(0, dvec.x[0], dvec.x[1], dvec.x[2]).normalized()
|
|
||||||
ax = lambda alpha: np.quaternion(np.cos(alpha * 0.5), \
|
|
||||||
np.sin(alpha * 0.5) * 1, np.sin(alpha * 0.5) * 1, np.sin(alpha * 0.5) * 1)
|
|
||||||
ang = lambda n, count: 2 * np.pi * n / count
|
ang = lambda n, count: 2 * np.pi * n / count
|
||||||
limit = bcount if np.mod(bcount, 2) else int(bcount / 2)
|
limit = bcount if np.mod(bcount, 2) else int(bcount / 2)
|
||||||
|
|
||||||
@ -54,7 +58,7 @@ def createBoundary(gobj, bcount, dvec, grains):
|
|||||||
#
|
#
|
||||||
flowvec = geompy.MakeVector(
|
flowvec = geompy.MakeVector(
|
||||||
geompy.MakeVertex(0, 0, 0),
|
geompy.MakeVertex(0, 0, 0),
|
||||||
geompy.MakeVertex(dvec.x[0], dvec.x[1], dvec.x[2]))
|
geompy.MakeVertex(dvec[0], dvec[1], dvec[2]))
|
||||||
symvec = []
|
symvec = []
|
||||||
|
|
||||||
for qvec in vecs:
|
for qvec in vecs:
|
||||||
|
Loading…
Reference in New Issue
Block a user