def testShapefunctions( ): poly = g.Mesh( 3 ) n0 = poly.createNode( 0.0, 0.0, 0.0 ) n1 = poly.createNode( 1.0, 0.0, 0.0 ) n2 = poly.createNode( 0.0, 1.0, 0.0 ) n3 = poly.createNode( 0.0, 0.0, 0.5 ) poly.createTetrahedron( n0, n1, n2, n3 ) prism = poly.createP2Mesh() u = g.RVector( prism.nodeCount(), 0.0 ) u[ 5 ] = 1.0 prism.addExportData( "u", u ) #n3 = poly.createNode( 1.0, 1.0, 0.0 ) #poly.createTriangle( n0, n1, n3 ) #prism = g.createMesh3D( poly, g.asvector( np.linspace( 0, -1, 2 ) ) ) #prism.exportVTK( "prism" ) #mesh2 = g.createMesh2D( g.asvector( np.linspace( 0, 1, 10 ) ), #g.asvector( np.linspace( 0, 1, 10 ) ) ) #mesh2 = mesh2.createH2Mesh() #g.interpolate( prism, mesh2 ) #ax = g.viewer.showMesh( mesh2, mesh2.exportData('u'), filled = True, showLater = True ) mesh3 = g.createMesh3D( g.asvector( np.linspace( 0, 1, 11 ) ), g.asvector( np.linspace( 0, 1, 11 ) ), g.asvector( np.linspace( 0, 1, 11 ) ) ) grads = g.stdVectorRVector3( ) c = prism.cell( 0 ) uc = g.RVector( mesh3.nodeCount() ) for n in mesh3.nodes(): p = c.shape().xyz( n.pos() ) if not c.shape().isInside( p ): grads.append( g.RVector3( 0.0, 0.0, 0.0 ) ) uc[ n.id() ] = 0.0 continue uc[ n.id() ] = c.pot( p, u ) print uc[ n.id() ] gr = c.grad( p, u ) grads.append( gr ) g.interpolate( prism, mesh3 ) mesh3.addExportData( 'ua', uc ) mesh3.exportVTK( "prismHex", grads ) P.show()
def testShapefunctions(): poly = g.Mesh(3) n0 = poly.createNode(0.0, 0.0, 0.0) n1 = poly.createNode(1.0, 0.0, 0.0) n2 = poly.createNode(0.0, 1.0, 0.0) n3 = poly.createNode(0.0, 0.0, 0.5) poly.createTetrahedron(n0, n1, n2, n3) prism = poly.createP2Mesh() u = g.RVector(prism.nodeCount(), 0.0) u[5] = 1.0 prism.addExportData("u", u) #n3 = poly.createNode( 1.0, 1.0, 0.0 ) #poly.createTriangle( n0, n1, n3 ) #prism = g.createMesh3D( poly, g.asvector( np.linspace( 0, -1, 2 ) ) ) #prism.exportVTK( "prism" ) #mesh2 = g.createMesh2D( g.asvector( np.linspace( 0, 1, 10 ) ), #g.asvector( np.linspace( 0, 1, 10 ) ) ) #mesh2 = mesh2.createH2Mesh() #g.interpolate( prism, mesh2 ) #ax = g.viewer.showMesh( mesh2, mesh2.exportData('u'), filled = True, showLater = True ) mesh3 = g.createMesh3D(g.asvector(np.linspace(0, 1, 11)), g.asvector(np.linspace(0, 1, 11)), g.asvector(np.linspace(0, 1, 11))) grads = g.stdVectorRVector3() c = prism.cell(0) uc = g.RVector(mesh3.nodeCount()) for n in mesh3.nodes(): p = c.shape().xyz(n.pos()) if not c.shape().isInside(p): grads.append(g.RVector3(0.0, 0.0, 0.0)) uc[n.id()] = 0.0 continue uc[n.id()] = c.pot(p, u) print uc[n.id()] gr = c.grad(p, u) grads.append(gr) g.interpolate(prism, mesh3) mesh3.addExportData('ua', uc) mesh3.exportVTK("prismHex", grads) P.show()
def hexahedron( p2 ): """ """ mesh = g.createMesh3D( g.asvector( np.linspace( 0, 1, 2 ) ), g.asvector( np.linspace( 0, 1, 2 ) ), g.asvector( np.linspace( 0, 1, 2 ) ) ) mesh.node(0).setPos( g.RVector3( 0.0, 0.0, 0.5 ) ) #mesh.rotate( g.RVector3( 10.0, 34.0, 45 ) ) #mesh.scale( g.RVector3( 0.9, 0.8, 0.7 ) ) #mesh.rotate( g.RVector3( 10.0, 34.0, 45 ) ) #mesh.scale( g.RVector3( 1.0, 1.0, 5.0 ) ) if p2: mesh = mesh.createP2() show( mesh )
def testCreateTriPrismMesh(): poly = g.Mesh( 2 ) n0 = poly.createNode( 0.0, 0.0, 0. ) n1 = poly.createNode( 1.0, 0.0, 0. ) n2 = poly.createNode( 0.0, 1.0, 0. ) n3 = poly.createNode( 1.0, 1.0, 0. ) poly.createEdge( n0, n1 ) poly.createEdge( n1, n3 ) poly.createEdge( n3, n2 ) poly.createEdge( n2, n0 ) mesh2 = g.Mesh( 2 ) g.TriangleWrapper( poly, mesh2, "-pzeAfa0.01q34" ); mesh3 = g.createMesh3D( mesh2, g.asvector( np.arange(0, -1, -0.1 ) ) ) mesh3.setCellAttributes( g.asvector( range(0, mesh3.cellCount() ) ) ) mesh3.save( "prism" ) mesh3.exportVTK( "prism" )
def testCreateTriPrismMesh(): poly = g.Mesh(2) n0 = poly.createNode(0.0, 0.0, 0.) n1 = poly.createNode(1.0, 0.0, 0.) n2 = poly.createNode(0.0, 1.0, 0.) n3 = poly.createNode(1.0, 1.0, 0.) poly.createEdge(n0, n1) poly.createEdge(n1, n3) poly.createEdge(n3, n2) poly.createEdge(n2, n0) mesh2 = g.Mesh(2) g.TriangleWrapper(poly, mesh2, "-pzeAfa0.01q34") mesh3 = g.createMesh3D(mesh2, g.asvector(np.arange(0, -1, -0.1))) mesh3.setCellAttributes(g.asvector(range(0, mesh3.cellCount()))) mesh3.save("prism") mesh3.exportVTK("prism")
def test_createMesh3D(self): mesh = pg.createMesh3D(xDim=5, yDim=3, zDim=2) self.assertEqual(mesh.cellCount(), 30.0)
def drawShapes( ax, mesh, u ): #ax.set_aspect( 'equal' ) N = 11 mesh3 = g.createMesh3D( g.asvector( np.linspace( 0, 1, N ) ), g.asvector( np.linspace( 0, 1, N ) ), g.asvector( np.linspace( 0, 1, N ) ) ) uc = g.RVector( mesh3.nodeCount( ) ) grads = g.stdVectorRVector3( ) pnts = g.stdVectorRVector3( ) c = mesh.cell( 0 ) imax=g.find( u == max( u ) )[0] N = c.createShapeFunctions()[ imax ] print imax, N # print imax, c.shape().createShapeFunctions()[imax] for i in range( c.nodeCount() ): print c.rst( i ), N( c.rst( i ) ) # draw nodes for i in range( c.nodeCount() ): col = 'black' if i == imax: col = 'red' #ax.plot( [c.node( i ).pos()[0], c.node( i ).pos()[0] ], #[c.node( i ).pos()[1], c.node( i ).pos()[1] ], #[c.node( i ).pos()[2], c.node( i ).pos()[2] ], #'.', markersize = 15, linewidth=0, color=col ) newNode = [] for i in range( mesh3.nodeCount( ) ): p = c.shape().xyz( mesh3.node( i ).pos() ) newNode.append( p ) #ax.plot( p[0], p[1], '.', zorder=10, color='black', markersize = 1 ) if not c.shape().isInside( p ): uc[ i ] = -99.0 grads.append( g.RVector3( 0.0, 0.0 ) ) continue uc[ i ] = c.pot( p, u ) gr = c.grad( p, u ).normalise() grads.append( gr ) #ax.plot( [ p[ 0 ], p[ 0 ] + gr[ 0 ]*0.1 ], #[ p[ 1 ], p[ 1 ] + gr[ 1 ]*0.1 ], #[ p[ 2 ], p[ 2 ] + gr[ 2 ]*0.1 ], '-', color='black' ) #pnts.append( p ) #print len(pnts) #Z = np.ma.masked_where( uc == -99., uc ) ##ax.plot( g.x(pnts), g.y(pnts), g.z(pnts), '.' ) for i, n in enumerate( mesh3.nodes() ): n.setPos( newNode[ i ] ) mesh3.addExportData( 'u', uc.setVal( 0.0, g.find( uc == -99 ) ) ) name = 'cell' + str( c.nodeCount() ) + '-' + str( imax ) print "write ", name mesh3.exportVTK( name, grads )
y = pg.increasingRange(0.2, depth, nz) surface = pg.createMesh2D(border, y, 0, 0, False) #for n in surface.nodes(): #yNodes = pg.increasingRange(yDefault[1], depth+n.y(), nz) #for y in yNodes[0:]: #newNodes.append([n.x(), n.y() -y]) #surface = pg.createGrid(x=yDefault, y=pg.sort(pg.x(surface.positions()))) #for i, n in enumerate(surface.nodes()): #n.setPos(newNodes[i]) #surface.smooth(1, 1, 1, 10) ax, _ = pg.show(surface) #showBoundaryNorm(surface, axes=ax) ax.set_ylim([-21, 1]) ax.set_xlim([-21, 21]) zinc = pg.increasingRange(1, 10, 5) zmid = np.linspace(1, 10, 20) z = pg.cat(-(np.asarray(zinc)[::-1]), zmid) z = pg.cat(z, 11 + zinc) mesh3D = pg.createMesh3D(surface, z) mesh3D.exportVTK("mesh3d") pg.wait()
newNodes = [] y = pg.increasingRange(0.2, depth, nz) surface = pg.createMesh2D(border, y, 0, 0, False) #for n in surface.nodes(): #yNodes = pg.increasingRange(yDefault[1], depth+n.y(), nz) #for y in yNodes[0:]: #newNodes.append([n.x(), n.y() -y]) #surface = pg.createGrid(x=yDefault, y=pg.sort(pg.x(surface.positions()))) #for i, n in enumerate(surface.nodes()): #n.setPos(newNodes[i]) #surface.smooth(1, 1, 1, 10) ax, _ = pg.show(surface) #showBoundaryNorm(surface, axes=ax) ax.set_ylim([-21, 1]) ax.set_xlim([-21, 21]) zinc = pg.increasingRange(1, 10, 5) zmid = np.linspace(1, 10, 20) z = pg.cat(-(np.asarray(zinc)[::-1]), zmid) z = pg.cat(z, 11+zinc) mesh3D = pg.createMesh3D(surface, z) mesh3D.exportVTK("mesh3d") pg.wait()
#!/usr/bin/env python # -*- coding: utf-8 -*- """ 3D Visualization (Proof of concept) ----------------------------------- """ import pygimli as pg from pygimli.viewer import show mesh = pg.createMesh3D(1,1,1) """ If interactive is set to True, a Mayavi window pops up which allows for interactive introspection. If it is set to False, mayavi produces a pixel array of the scene which is plotted in a mpl figure and therefore automatically picked up by the plot2rst extension for the documentation. """ show(mesh, interactive=False) """ .. image:: PLOT2RST.current_figure :scale: 75 """ <<<<<<< .working ======= pg.showNow()>>>>>>> .new