Esempio n. 1
0
def getC_matrix(node_list, mesh):
    log.info('---starting getCmatrix---')
    D = 1.
    piD16 = pi * D * 16.

    nnodes = len(node_list)
    i = 3
    #C = memmap('Cmatrix.map', dtype='float64', mode='write', shape=(3+nnodes, 3+nnodes) )
    log.info('nnodes=%s' % nnodes)
    sys.stdout.flush()
    C = matrix(zeros((3 + nnodes, 3 + nnodes), 'float64'))
    for inode in node_list:
        nodeI = mesh.Node(inode)
        #i = inode+3
        (xi, yi, zi) = nodeI.get_position()
        #x,y,z = p

        C[0, i] = 1.
        C[1, i] = xi
        C[2, i] = yi

        C[i, 0] = 1.
        C[i, 1] = xi
        C[i, 2] = yi

        j = 3
        for jnode in node_list:
            #j = 3+jnode
            nodeJ = mesh.Node(jnode)
            xj, yj, zj = nodeJ.get_position()
            if i == j:
                C[i, j] = 0.
            else:
                Rij2 = (xi - xj)**2. + (yi - yj)**2  # Rij^2
                if Rij2 == 0.:
                    C[i, j] = 0.
                else:
                    Kij = Rij2 * natural_log(Rij2) / piD16
                    C[i, j] = Kij
                    #msg = "i=%s j=%s xi=%s xj=%s yi=%s yj=%s Rij2=%s Kij=%s" %(
                    #i, j, xi, xj, yi, yj, Rij2, Kij)
                    #assert isinstance(Kij,float64), msg
            j += 1
        i += 1
    log.info('---finished getCmatrix---')
    sys.stdout.flush()
    return C
Esempio n. 2
0
def getC_matrix(node_list, mesh):
    log.info('---starting getCmatrix---')
    D = 1.
    piD16 = pi * D * 16.

    nnodes = len(node_list)
    i = 3
    #C = memmap('Cmatrix.map', dtype='float64', mode='write', shape=(3+nnodes, 3+nnodes) )
    log.info('nnodes=%s' % nnodes)
    sys.stdout.flush()
    C = matrix(zeros((3 + nnodes, 3 + nnodes), 'float64'))
    for inode in node_list:
        nodeI = mesh.Node(inode)
        #i = inode+3
        (xi, yi, zi) = nodeI.get_position()
        #x,y,z = p

        C[0, i] = 1.
        C[1, i] = xi
        C[2, i] = yi

        C[i, 0] = 1.
        C[i, 1] = xi
        C[i, 2] = yi

        j = 3
        for jnode in node_list:
            #j = 3+jnode
            nodeJ = mesh.Node(jnode)
            xj, yj, zj = nodeJ.get_position()
            if i == j:
                C[i, j] = 0.
            else:
                Rij2 = (xi-xj)**2. + (yi-yj)**2  # Rij^2
                if Rij2 == 0.:
                    C[i, j] = 0.
                else:
                    Kij = Rij2 * natural_log(Rij2) / piD16
                    C[i, j] = Kij
                    #msg = "i=%s j=%s xi=%s xj=%s yi=%s yj=%s Rij2=%s Kij=%s" %(
                        #i, j, xi, xj, yi, yj, Rij2, Kij)
                    #assert isinstance(Kij,float64), msg
            j += 1
        i += 1
    log.info('---finished getCmatrix---')
    sys.stdout.flush()
    return C
Esempio n. 3
0
def getXK_matrix(Cws, node_list, mesh, aero_points, log=None):
    """
    Calculates the XK matrix to

    xK = Rij^2 = (xa-xs)^2. + (ya-ys)^2
    xK = Rij^2 * ln(Rij^2) / piD16
    """
    log.info('---starting getXK_matrix---')
    D = 1.
    piD16 = pi * D * 16.

    nnodes = len(node_list)
    #nPoints = len(aero_points.keys())
    wa = {}
    for iaero, aero_node in sorted(iteritems(aero_points)):
        xK = zeros(nnodes+3, 'd')
        #nodeI = mesh.Node(iNode)

        xa, ya, za = aero_node

        xK[0] = 1.
        xK[1] = xa
        xK[2] = ya

        j = 3
        for jnode in node_list:
            structural_node = mesh.Node(jnode)
            (xs, ys, zs) = structural_node.get_position()

            Rij2 = (xa-xs)**2. + (ya-ys)**2  # Rij^2
            if Rij2 == 0.:
                xK[j] = 0.
            else:
                Kij = Rij2 * natural_log(Rij2) / piD16
                xK[j] = Kij
            j += 1

        wai = xK * Cws
        wa[iaero] = wai[0, 0]
        #print("w[%s]=%s" % (iaero, wi[0, 0]))
    #print('---wa---')
    #print('wa = ', wa)
    log.info('---finished getXK_matrix---')
    sys.stdout.flush()
    return wa
Esempio n. 4
0
def getXK_matrix(Cws, node_list, mesh, aero_points):
    log.info('---starting getXK_matrix---')
    D = 1.
    piD16 = pi * D * 16.

    nnodes = len(node_list)
    #nPoints = len(aero_points.keys())
    wa = {}
    #i = 0
    for iaero, aero_node in sorted(iteritems(aero_points)):
        xK = zeros(nnodes+3, 'd')
        #nodeI = mesh.Node(iNode)

        xa, ya, za = aero_node

        xK[0] = 1.
        xK[1] = xa
        xK[2] = ya

        j = 3
        for jnode in node_list:
            structural_node = mesh.Node(jnode)
            (xs, ys, zs) = structural_node.get_position()

            Rij2 = (xa-xs)**2. + (ya-ys)**2  # Rij^2
            if Rij2 == 0.:
                xK[j] = 0.
            else:
                Kij = Rij2 * natural_log(Rij2) / piD16
                xK[j] = Kij
            j += 1

        wai = xK * Cws
        wa[iaero] = wai[0, 0]
        #print("w[%s]=%s" % (iaero, wi[0, 0]))
        #i += 1
    #print('---wa---')
    #print('wa = ', wa)
    log.info('---finished getXK_matrix---')
    sys.stdout.flush()
    return wa