示例#1
0
def test_Tetrahedron():
    nodes0 = [
        Node(0, 0.0, 0.0, 0.0),
        Node(1, 0.0, 1.0, 0.0),
        Node(2, 1.0, 1.0, 0.0),
        Node(3, 0.0, 0.0, 1.0)
    ]
    nodes1 = nodes0[1:] + [Node(4, 1.0, 0.0, 1.0)]
    T0 = Tetrahedron(0, nodes0)
    T1 = Tetrahedron(1, nodes1)
    ok_(T0.nodes < T1.nodes)
    ok_(T0.nodes != T1.nodes)
    ok_(not T0.nodes > T1.nodes)
    ok_(not T0.hasGeometricInfo)
    T0.computeGeometricInfo()
    ok_(T0.volume == 1.0 / 6.0)
    triangleDict = {}
    for t in T0.triangles:
        triangleDict[t.nodes] = t
    edgeDict = {}
    for e in T0.edges:
        edgeDict[e.nodes] = e
    T0_1 = Tetrahedron(0, nodes0, edgeDict=edgeDict)
    T0_2 = Tetrahedron(0, nodes0, triangleDict=triangleDict)
    T0_3 = Tetrahedron(0, nodes0, edgeDict=edgeDict, triangleDict=triangleDict)
    ok_(T0.nodes == T0_1.nodes == T0_2.nodes)
示例#2
0
def test_Polygon():
    nodeList = [
        Node(nodeNumber=1, x=0.5, y=0.5, z=0.5),
        Node(nodeNumber=2, x=0.5, y=0.5, z=-0.5),
        Node(nodeNumber=3, x=0.5, y=-0.5, z=0.5)
    ]
    polygon = Polygon(12, nodes=nodeList)
    ok_(polygon.N == 12)
    ok_(len(polygon.nodes) == 3)
    nodeList.sort()
    ok_(tuple(nodeList) == polygon.nodes)
    polygon.edges = [
        Edge(0, [nodeList[0], nodeList[1]]),
        Edge(1, [nodeList[1], nodeList[2]]),
        Edge(2, [nodeList[2], nodeList[0]])
    ]
    edges = getEdgesFromPolygons([polygon])
    ok_(len(edges) == 3)
    polygon.edges = [
        Edge(0, [nodeList[0], nodeList[1]]),
        Edge(1, [nodeList[1], nodeList[2]]),
        Edge(3, [nodeList[1], nodeList[2]]),
        Edge(2, [nodeList[2], nodeList[0]])
    ]
    edges = getEdgesFromPolygons([polygon])
    ok_(len(edges) == 3)
示例#3
0
def test_Edge():
    edge0 = Edge(0, nodes=[Node(0, 0.0, 0.0, 0.0), Node(1, 1.0, 1.0, 1.0)])
    edge1 = Edge(1, nodes=[Node(1, 1.0, 1.0, 1.0), Node(2, 2.0, 1.0, 1.0)])
    edgesOrdered = [edge0, edge1]
    edgesDisordered = {edge1.nodes: edge1, edge0.nodes: edge0}
    edgeKeys = edgesDisordered.keys()
    edgeKeys.sort()
    for e1, e2_key in zip(edgesOrdered, edgeKeys):
        ok_(e1.nodes == edgesDisordered[e2_key].nodes)
    edge0.computeGeometricInfo()
    ok_((edge0.barycenter == EVec(0.5, 0.5, 0.5)).all())
    ok_(edge0.length == math.sqrt(3.0))
    ok_(edge0.diameter == math.sqrt(3.0))
    ok_(edge0.innerDiameter == math.sqrt(3.0))
    ok_(edge0.hasGeometricInfo)
    nodeSet = set(edge0.nodes + edge1.nodes)
    ok_(nodeSet == set(getNodesFromEdges([edge0, edge1])))
示例#4
0
 def test_Element(self):
     nodesCube= [Node(0,0.0,0.0,0.0),
                 Node(1,0.0,1.0,0.0),
                 Node(2,1.0,1.0,0.0),
                 Node(3,1.0,0.0,0.0),
                 Node(4,0.0,0.0,1.0),
                 Node(5,0.0,1.0,1.0),
                 Node(6,1.0,1.0,1.0),
                 Node(7,1.0,0.0,1.0)]
     e0 = Element(elementNumber=1, nodes = nodesCube)
     nodesCube.sort()
     ok_(e0.N == 1)
     for N, n   in enumerate(nodesCube):
         ok_(e0.nodes[N] == n)
示例#5
0
def test_Quadrilateral():
    nodes = [
        Node(0, 0.0, 0.0, 0.0),
        Node(1, 0.0, 1.0, 0.0),
        Node(2, 1.0, 1.0, 0.0),
        Node(3, 1.0, 0.0, 0.0),
        Node(4, 2.0, 1.0, 0.0),
        Node(5, 2.0, 0.0, 0.0)
    ]
    edges0 = [
        Edge(0, [nodes[0], nodes[1]]),
        Edge(1, [nodes[1], nodes[2]]),
        Edge(2, [nodes[2], nodes[3]]),
        Edge(3, [nodes[3], nodes[0]])
    ]
    edges1 = [
        Edge(2, [nodes[3], nodes[2]]),
        Edge(4, [nodes[2], nodes[4]]),
        Edge(5, [nodes[4], nodes[5]]),
        Edge(6, [nodes[5], nodes[3]])
    ]
    q0 = Quadrilateral(0, edges0)
    q1 = Quadrilateral(1, edges1)
    ok_(q0.nodes < q1.nodes)
    ok_(q0.nodes != q1.nodes)
    ok_(not q0.nodes > q1.nodes)
    ok_(not q0.hasGeometricInfo)
    q0.computeGeometricInfo()
    ok_(q0.area == 1.0)
示例#6
0
 def test_Triangle(self):
     t0 = Triangle(0,nodes=[Node(0, 0.0, 0.0, 0.0),
                            Node(1, 0.0, 1.0, 0.0),
                            Node(2, 1.0, 0.0, 0.0)])
     t1 = Triangle(0,nodes=[Node(3, 1.0, 1.0, 0.0),
                            Node(1, 0.0, 1.0, 0.0),
                            Node(2, 1.0, 0.0, 0.0)])
     ok_(not t0.hasGeometricInfo)
     ok_(t0.nodes < t1.nodes)
     t0.computeGeometricInfo()
     ok_((t0.barycenter == EVec(1.0/3.0,1.0/3.0,0.0)).all())
示例#7
0
 def test_Node(self):
     origin_default = Node()
     origin = Node(nodeNumber=0,x=0.0,y=0.0,z=0.0)
     ppp = Node(nodeNumber=1, x= 0.5, y= 0.5, z= 0.5)
     ppm = Node(nodeNumber=2, x= 0.5, y= 0.5, z=-0.5)
     pmp = Node(nodeNumber=3, x= 0.5, y=-0.5, z= 0.5)
     pmm = Node(nodeNumber=4, x= 0.5, y=-0.5, z=-0.5)
     mpp = Node(nodeNumber=5, x=-0.5, y= 0.5, z= 0.5)
     mpm = Node(nodeNumber=6, x=-0.5, y= 0.5, z=-0.5)
     mmp = Node(nodeNumber=7, x=-0.5, y=-0.5, z= 0.5)
     mmm = Node(nodeNumber=8, x=-0.5, y=-0.5, z=-0.5)
     lexicographic_ordering = [ppp, ppm, pmp, pmm, mpp, mpm, mmp, mmm]
     ok_(origin.N == 0)
     ok_(origin.p[0] == 0.0)
     ok_(origin.p[1] == 0.0)
     ok_(origin.p[2] == 0.0)
     ok_(origin.length == 1.0)
     ok_(origin.diameter == 1.0)
     ok_((origin.unitNormal == Node.xUnitVector).all())
     ok_(origin == origin_default)
     ok_(str(origin) == str(origin_default))
     ok_(hash(origin) == hash(origin_default))
     ok_(ppp > origin)
     for  i in range(8):
         p = lexicographic_ordering[i]
         for pg in lexicographic_ordering[:i]:
             ok_(pg > p)
             ok_(pg >= p)
             ok_(pg != p)
         for pl in lexicographic_ordering[i+1:]:
             ok_(pl < p)
             ok_(pl <= p)
             ok_(pl != p)
     v = EVec(0.25,0.35,0.45)
     ntest = Node(29,0.0,0.0,0.0)
     ntest.p +=v
     ok_((ntest.p == (0.25, 0.35, 0.45)).all())