Exemple #1
0
# - adaptOctree (array) - 
import Generator as G
import Converter as C
import Geom as D
import KCore.test as test

s = D.circle((0,0,0), 1., N=100); snear = 0.1
o = G.octree([s], [snear], dfar=5.,balancing=1)
indic = C.node2Center(o)
indic = C.initVars(indic,'indicator',2.)
res = G.adaptOctree(o, indic)
test.testA([res])

# 3D
s = D.sphere((0,0,0), 1., N=20); snear = 0.5
o = G.octree([s], [snear], dfar=5.,balancing=1)
indic = C.node2Center(o)
indic = C.initVars(indic,'indicator',2.)
res = G.adaptOctree(o, indic)
test.testA([res],2)
Exemple #2
0
# - compIndicatorValue(array) -
import Generator as G
import Converter as C
import Geom as D
import Post as P
import KCore.test as test
#2D
s = D.circle((0, 0, 0), 1.)
snear = 0.1
o = G.octree([s], [snear], dfar=10., balancing=1)
res = G.octree2Struct(o, vmin=11, merged=1)
vol = G.getVolumeMap(res)
res = C.node2Center(res)
res = P.computeIndicatorValue(o, res, vol)
test.testA([res])
# 3D
s = D.sphere((0, 0, 0), 1.)
snear = 1.
o = G.octree([s], [snear], dfar=10., balancing=1)
res = G.octree2Struct(o, vmin=11, merged=1)
vol = G.getVolumeMap(res)
res = C.node2Center(res)
res = P.computeIndicatorValue(o, res, vol)
test.testA([res], 2)
Exemple #3
0
# test pierce points XRAY (array)
# cas surface 2D avec body en BAR
import Converter as C
import Connector as X
import Generator as G
import Geom as D
import Transform as T

surf = D.circle((0,0,0), 0.5, 0., 360.)
surf = C.convertArray2Tetra(surf)
res = [surf]
res0 =  X.maskXRay__(res, 0.,2)
C.convertArrays2File([res0], "out.plt")
Exemple #4
0
# - axisym (array) -
import Generator as G
import Converter as C
import Geom as D

# Axisym a curve
a0 = D.line((0.5,0,0), (0.6,0,1))
a = D.axisym(a0,(0.,0.,0.),(0.,0.,1.),360.,360)
C.convertArrays2File(a, "out.plt")

# Axisym a curve with varying r
a0 = D.line((1.0,0,0), (0.,0,1))
a1 = D.circle((0,0,0), 2.)
import Modeler.Models as Models
a1 = Models.circle2(1, 0.8)
a = D.axisym(a0, (0.,0.,0.), (0.,0.,1.), rmod=a1)
C.convertArrays2File([a,a0,a1], "out1.plt")

# Axisym a 2D cart grid
a0 = G.cart((0.,0.,0.), (0.1,0.1,0.2),(10,10,1))
a = D.axisym(a0,(1.,0.,0.),(0.,1.,0.),30.,4)
C.convertArrays2File(a, "out2.plt")
# - volumeFromCrossSections (array) -
import Converter as C
import Geom as D
contours = []
for z in [0., 1.]:
    contours.append(D.circle((0, 0, z), 1., N=15))
vol = D.volumeFromCrossSections(contours)
C.convertArrays2File([vol] + contours, 'out.plt')
# - octree2Struct (array) -
import Generator as G
import Geom as D
import KCore.test as test

# cas 2D : contours->QUAD sans equilibrage
s = D.circle((0, 0, 0), 1., N=100)
snear = 0.2
res = G.octree([s], [snear], dfar=5., balancing=0)
res1 = G.octree2Struct(res, vmin=5, ext=0, merged=0)
test.testA(res1, 1)
res1 = G.octree2Struct(res, vmin=5, ext=0, merged=0, optimized=0)
test.testA(res1, 2)

res1 = G.octree2Struct(res, vmin=5, ext=1, merged=0)
test.testA(res1, 3)
res1 = G.octree2Struct(res, vmin=5, ext=1, merged=0, optimized=0)
test.testA(res1, 4)

res1 = G.octree2Struct(res, vmin=5, ext=2, merged=0)
test.testA(res1, 5)
res1 = G.octree2Struct(res, vmin=5, ext=2, merged=0, optimized=0)
test.testA(res1, 6)

# cas 2D : contours->QUAD avec equilibrage
res = G.octree([s], [snear], dfar=5., balancing=1)
res1 = G.octree2Struct(res, vmin=5, ext=0, merged=0)
test.testA(res1, 7)
res1 = G.octree2Struct(res, vmin=5, ext=0, merged=0, optimized=0)
test.testA(res1, 8)
# - fittingPlaster (array) -
import Generator as G
import Converter as C
import Geom as D

a = D.circle((0, 0, 0), 1, N=50)
a = C.convertArray2Tetra(a)
a = G.close(a)
b = G.fittingPlaster(a, bumpFactor=0.5)
C.convertArrays2File([a, b], 'out.plt')
# - stitchedHat (array) -
import Geom as D
import Generator as G
import Transform as T
import KCore.test as test

c = D.circle((0, 0, 0), 1., 360., 0., 100)
c = T.contract(c, (0, 0, 0), (0, 1, 0), (0, 0, 1), 0.1)
c = G.stitchedHat(c, (0, 0, 0), 1.e-4)
test.testA([c], 1)
# - densify (array) -
import Generator as G
import Converter as C
import Geom as D

a = D.circle((0, 0, 0), 1., 10)
b = G.densify(a, 0.01)
C.convertArrays2File([b], 'out.plt')
# - addSeparationLine (array) -
import Geom as D
import Converter as C
import KCore.test as test

# Add a line to a circle
a1 = D.circle((0, 0, 0), 1, 0., 360, 1000)
a2 = D.line((0., 1., 0.), (0., 2., 0), 100)
a0 = D.addSeparationLine(a1, a2)
test.testA(a0, 1)

# Avec un demi cercle
a1 = D.circle((0, 0, 0), 1, 180, 360, 1000)
a2 = D.line((0., -1., 0.), (0., -2., 0), 100)
a0 = D.addSeparationLine(a1, a2)
test.testA(a0, 2)

# Avec un champ en plus
a1 = D.circle((0, 0, 0), 1, 0., 360, 1000)
a1 = C.initVars(a1, '{F}=3*{x}+{y}')
a2 = D.line((0., 1., 0.), (0., 2., 0), 100)
a2 = C.initVars(a2, '{F}=3*{x}+{y}')
a0 = D.addSeparationLine(a1, a2)
test.testA(a0, 3)
Exemple #11
0
# - lineGenerate (array) -
import Geom as D
import Generator as G
import KCore.test as test
import Converter as C

# 1D structure
a = D.naca(12.)
b = D.line((0, 0, 0), (0, 0., 1.))
c = D.lineGenerate(a, b)
test.testA([c], 1)

# 1D structure + champ
a = D.circle((0, 0, 0), 1)
a = C.addVars(a, 'var')
b = D.line((0, 0, 0), (0, 0., 1.))
c = D.lineGenerate(a, b)
test.testA([c], 2)

# 2D structure
a = G.cylinder((0, 0, 0), 1, 2, 360, 0, 1, (50, 21, 1))
a = C.addVars(a, 'var')
b = D.line((0, 0, 0), (0, 0., 1.))
c = D.lineGenerate(a, b)
test.testA([c], 3)

# BAR
a = D.line((0, 0, 0), (1, 0, 0), N=10)
a = C.convertArray2Tetra(a)
b = D.line((0, 0, 0), (0, 0., 1.), N=10)
c = D.lineGenerate(a, b)
Exemple #12
0
# - close (array) -
import Generator as G
import Converter as C
import KCore.test as test
import Geom as D
import Transform as T

# test 1D : circle
a = D.circle((0., 0., 0.), 1., 0., 359.995, 500)
a = C.convertArray2Tetra(a)
a = C.addVars(a, 'F')
a2 = G.close(a, 1.e-4)
test.testA([a2], 1)

# test 2D cylindre QUAD
a0 = G.cylinder((0., 0., 0.), 0., 1., 0., 359, 1., (20, 20, 5))
a0 = T.subzone(a0, (1, a0[3], 1), (a0[2], a0[3], a0[4]))
a = C.convertArray2Hexa(a0)
a = C.addVars(a, 'F')
a2 = G.close(a, 0.1)
test.testA([a2], 2)

# test 2D TRI
a = C.convertArray2Tetra(a0)
a = C.addVars(a, 'F')
a2 = G.close(a, 0.1)
test.testA([a2], 3)

# test 3D cylindre HEXA
a0 = G.cylinder((0., 0., 0.), 0., 1., 0., 359, 1., (20, 20, 5))
a0 = T.subzone(a0, (1, 10, 1), (20, 13, 5))
Exemple #13
0
def circle(Center, R, tetas=0., tetae=360., N=100):
    """Create a portion of circle of N points and of center C,
    radius R, between angle tetas and tetae.
    Usage: circle((xc,yc,zc), R, tetas, tetae, N)"""
    a = Geom.circle(Center, R, tetas, tetae, N)
    return C.convertArrays2ZoneNode('circle', [a])
Exemple #14
0
# - axisym -
import Generator as G
import Converter as C
import Transform as T
import Geom as D
import KCore.test as test

def F(x):
    return x

# test 1D structure (i-array) + variable
a = D.circle( (0,0,0), 1., 20., 60.)
a = C.addVars(a, 'F'); a = C.initVars(a, 'F', F, ['y'])
a = D.axisym(a, (0,0,0), (0,1,0), 360., 50)
test.testA([a], 1)

# test 2D structure (i,j-array)
a = G.cart((0.,0.,0.), (0.1,0.1,0.2),(10,10,1))
a = D.axisym(a,(1.,0.,0.),(0.,1.,0.),30.,20)
test.testA([a], 2)

# test BAR-array + variable
a = D.circle( (0,0,0), 1., 20., 60., 10)
a = C.convertArray2Tetra(a)
a = C.addVars(a, 'F'); a = C.initVars(a, 'F', F, ['y'])
a = D.axisym(a, (0,0,0), (0,1,0), 360., 50)
test.testA([a], 3)

# test TRI-array
a = G.cart((0.,0.,0.), (0.1,0.1,0.2),(10,10,1))
a = C.convertArray2Tetra(a)
# - expandLayer (array) -
import Generator as G
import Converter as C
import Geom as D
import KCore.test as test
#
# 2D
s = D.circle((0., 0., 0.), 1., N=100)
o = G.octree([s], [0.1], dfar=1., balancing=1)
o2 = G.expandLayer(o, level=0)
test.testA([o2], 1)
#
# 3D
s = D.sphere((0., 0., 0.), 1., N=100)
o = G.octree([s], [0.1], dfar=1., balancing=1)
o2 = G.expandLayer(o, level=0)
test.testA([o2], 2)
Exemple #16
0
a = T.join([a, b])
a = D.enforceh(a, h=0.05)
test.testA([a], 1)
#C.convertArrays2File(a, 'out.plt')

# fourche (BAR)
a = D.line((0, 0, 0), (1, 0, 0), N=10)
D.setH(a, 0, 0.1)
D.setH(a, -1, 0.01)
b = D.line((1, 0, 0), (2, 1, 0), N=50)
D.setH(b, 0, 0.01)
D.setH(b, -1, 0.1)
c = D.line((1, 0, 0), (2, -1, 0), N=100)
D.setH(c, 0, 0.01)
D.setH(c, -1, 0.1)
A = [a, b, c]
A = C.convertArray2Hexa(A)
a = T.join(A)
a = D.enforceh(a, N=100)
#C.convertArrays2File(a, 'out.plt')
test.testA([a], 2)

# Circle (STRUCT)
a = D.circle((0, 0, 0), 1, N=120)
D.setH(a, 0, 0.1)
D.setH(a, 60, 0.01)
D.setH(a, -1, 0.1)
a = D.enforceh(a, N=120)
#C.convertArrays2File(a, 'out.plt')
test.testA([a], 3)
# - TFIHalfO (array) -
import Generator as G
import Geom as D
import KCore.test as test

a1 = D.circle((0, 0, 0), 1., tetas=0, tetae=180., N=41)
a2 = D.line((-1, 0, 0), (1, 0, 0), N=21)
r = G.TFIHalfO(a1, a2)
test.testA(r, 1)
Exemple #18
0
# - stack (array) -
import Generator as G
import Converter as C
import Transform as T
import Geom as D

# Concatenate 2 structured grids
a = G.cylinder((0, 0, 0), 1, 1.3, 360, 0, 1., (50, 10, 1))
b = T.rotate(a, (0, 0, 0), (1, 0, 0), 5.)
b = T.translate(b, (0, 0, 0.5))
c = G.stack(a, b)

# Concatenate a list of structured grids
a = []
for i in range(10):
    a.append(D.circle((0, 0, i), 1.))
c = G.stack(a)

C.convertArrays2File(c, 'out.plt')
# - distance2Walls (array) -
# test : 2D
import Dist2Walls
import Generator as G
import Transform as T
import KCore.test as test
import Geom as D
import Converter as C

a = G.cart((0., 0., 0.), (0.1, 0.1, 0.1), (21, 21, 1))
cyl = D.circle((0.5, 0.5, 0), 1., N=10)
dist = Dist2Walls.distance2Walls(a, [cyl],
                                 loc='nodes',
                                 type='ortho',
                                 signed=0,
                                 dim=2)
test.testA([dist], 1)
dist = Dist2Walls.distance2Walls(a, [cyl],
                                 loc='nodes',
                                 type='ortho',
                                 signed=1,
                                 dim=2)
test.testA([dist], 2)
# - TFIO (array) -
import Converter as C
import Generator as G
import Geom as D

a = D.circle((0, 0, 0), 1., N=41)
r = G.TFIO(a)
C.convertArrays2File(r, 'out.plt')
# - gapfixer (array) -
import Generator as G
import Converter as C
import Geom as D
import numpy as np

# Fix the gap inside a circle drawn on a plane
a = D.circle((0, 0, 0), 1, N=100)
a = C.convertArray2Tetra(a)
a = G.close(a)
b = G.cart((-2., -2., 0.), (0.1, 0.1, 1.), (50, 50, 1))
a1 = G.gapfixer(a, b)
C.convertArrays2File([a1], 'out.plt')

# Fill the gap in the circle, using one defined point
hp = D.point((0.5, 0.5, 0.))
a2 = G.gapfixer(a, b, hp, refine=0)
C.convertArrays2File([a2], 'outHP.plt')
# - surfaceWalk (array)
import Converter as C
import Geom as D
import Transform as T
import Generator as G


# User definition of parametric curve
def f(t, u):
    x = t + u
    y = t * t + 1 + u * u
    z = u
    return (x, y, z)


# Array definition of geometry
a = D.surface(f)

c = D.circle((1.2, 1.7, 0.6), 0.1, N=100)
c = T.rotate(c, (1.2, 1.7, 0.6), (0, 1, 0), 90.)
c = T.reorder(c, (-1, 2, 3))
c = T.projectOrtho(c, [a])

h = G.cart((0., 0., 0.), (0.01, 1, 1), (30, 1, 1))
r = G.surfaceWalk([a], c, h, niter=100)
C.convertArrays2File([a, c, r], "out.plt")
# - conformUnstr (array) -
# Conforming 1 or 2 TRI/BAR together (same type for both operands
import Generator as G
import Intersector as XOR
import Converter as C
import Geom as D
from Geom.Parametrics import base
import Transform as T

s1 = D.sphere((0,0,0), 1, N=20)

s2 = D.surface(base['plane'], N=30)
s2 = T.translate(s2, (0.2,0.2,0.2))

s1 = C.convertArray2Tetra(s1); s1 = G.close(s1)
s2 = C.convertArray2Tetra(s2); s2 = G.close(s2)

x = XOR.conformUnstr(s1, s2, 0., 2)
C.convertArrays2File([x], 'out.plt')

c1 = D.circle((0,0,0), 1, N=100)
c2 = D.circle((0.2,0,0), 1, N=50)

c1 = C.convertArray2Tetra(c1); c1 = G.close(c1)
c2 = C.convertArray2Tetra(c2); c2 = G.close(c2)

x = XOR.conformUnstr(c1, c2, tol=0.)
C.convertArrays2File([x], 'out1.plt')
# - circle (array) -
import Geom as D
import KCore.test as test

a = D.circle((0, 0, 0), 1., 0., 360.)
test.testA([a], 1)
test.writeCoverage(100)