Fillet between grains
This commit is contained in:
parent
5fafea7a7a
commit
9066dff9c2
@ -24,24 +24,32 @@ def genMesh(stype, theta, flowdirection, saveto):
|
||||
if structure:
|
||||
salome.salome_init()
|
||||
|
||||
grains, cubic, rhombohedron = structure(theta)
|
||||
fd = namedtuple("fd", ["x", "y", "z"])
|
||||
geometry = cubic
|
||||
#grains, cubic, rhombohedron = structure(theta)
|
||||
#fd = namedtuple("fd", ["x", "y", "z"])
|
||||
grains, geometry1, geometry2 = structure(theta)
|
||||
geometry = geometry1
|
||||
|
||||
if flowdirection == [1, 1, 1]:
|
||||
geometry = rhombohedron
|
||||
direction = fd([1, 1, 1], [1, -1, 1], [1, -1, -1])
|
||||
geometry = geometry2
|
||||
norm = [-1, -1, 1]
|
||||
bcount = 6
|
||||
#direction = fd([1, 1, 1], [1, -1, 1], [1, -1, -1])
|
||||
|
||||
else:
|
||||
geometry = cubic
|
||||
#else:
|
||||
# geometry = cubic
|
||||
|
||||
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]:
|
||||
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
|
||||
mesh = mesh_utils.meshCreate(geometry, boundary, fineness)
|
||||
|
@ -149,7 +149,19 @@ def bodyCenteredCubic(alpha):
|
||||
# Preparation
|
||||
grains = geompy.ExtractShapes(Up_Down, geompy.ShapeType["SOLID"], True)
|
||||
grains += geompy.ExtractShapes(Middle, geompy.ShapeType["SOLID"], True)
|
||||
|
||||
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
|
||||
|
@ -144,7 +144,19 @@ def faceCenteredCubic(alpha):
|
||||
# Preparation
|
||||
grains = geompy.ExtractShapes(Up_Down, geompy.ShapeType["SOLID"], True)
|
||||
grains += geompy.ExtractShapes(Middle_Up, geompy.ShapeType["SOLID"], True)
|
||||
|
||||
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
|
||||
grains = geompy.ExtractShapes(Multi_Translation_3, geompy.ShapeType["SOLID"], True)
|
||||
|
||||
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
|
||||
|
||||
|
||||
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
|
||||
limit = bcount if np.mod(bcount, 2) else int(bcount / 2)
|
||||
|
||||
@ -54,7 +58,7 @@ def createBoundary(gobj, bcount, dvec, grains):
|
||||
#
|
||||
flowvec = geompy.MakeVector(
|
||||
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 = []
|
||||
|
||||
for qvec in vecs:
|
||||
|
Loading…
Reference in New Issue
Block a user