# - 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)
# - 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)
# 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")
# - 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)
# - 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)
# - 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))
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])
# - 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)
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)
# - 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)