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
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
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
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