def from_txt_mesh(filename='./garbage/mesh_own.txt_mesh'): ''' importa malla de archivo txt_mesh. formato propio ''' if filename[-8:] != 'txt_mesh': print('WARNING!') print('La extensión del archivo a importar no coincide con la \ extensión utilizada por este programa') print('FINALIZANDO EJECUCIÓN') exit() return with open(filename, 'r') as f: mesh = f.readlines() tipo = str(mesh[0].split()[-1]) d_eta = float(mesh[1].split()[-1]) d_xi = float(mesh[2].split()[-1]) R = float(mesh[3].split()[-1]) M = int(mesh[4].split()[-1]) N = int(mesh[5].split()[-1]) airfoil_alone = str(mesh[6].split()[-1]) airfoil_join = int(mesh[7].split()[-1]) if airfoil_alone == 'True': airfoil_alone = True elif airfoil_alone == 'False': airfoil_alone = False airfoil_boundary = np.fromstring(mesh[9], sep=',') X = np.zeros((M, N)) Y = np.zeros((M, N)) i = 0 line = 11 for line_ in range(line, M + line): X[i, :] = np.fromstring(mesh[line_], sep=',') i += 1 line += M + 1 i = 0 for line_ in range(line, M + line): Y[i, :] = np.fromstring(mesh[line_], sep=',') i += 1 perfil = airfoil.airfoil(c=1) perfil.x = X[:, 0] perfil.y = Y[:, 0] if tipo == 'O': # mesh = mesh_o.mesh_O(R, M, N, perfil) mesh = mesh_o.mesh_O(R, N, perfil) elif tipo == 'C': # mesh = mesh_c.mesh_C(R, M, N, perfil, from_file=True) mesh = mesh_c.mesh_C(R, N, perfil, from_file=True) # se asignan atributos a malla mesh.d_eta = d_eta mesh.d_xi = d_xi mesh.R = R mesh.M = M mesh.N = N mesh.airfoil_alone = airfoil_alone mesh.airfoil_join = airfoil_join mesh.airfoil_boundary = airfoil_boundary mesh.X = X mesh.Y = Y return mesh
########## # MALLA ########## # tipo de malla (C, O) malla_tipo = 'O' # dimensiones de la malla. N (\eta), airfoil_points = M (\xi) N = 275 # dimension de frontera externa R = 400 * c if malla_tipo == 'O': mallaNACA = mesh_o.mesh_O(R, N, perfil) elif malla_tipo == 'C': mallaNACA = mesh_c.mesh_C(R, N, perfil) # metodos de generacion de malla metodo_iterativo = 'SOR' # 'GS', 'J' mallaNACA.gen_Laplace_n(metodo='SOR') # mallaNACA.gen_Laplace_v(metodo='SOR') # mallaNACA.gen_Laplace(metodo='SOR') mallaNACA.gen_Poisson_n(metodo='SOR', omega=0.15, aa=1500, cc=12, linea_eta=0) # mallaNACA.gen_Poisson_v(metodo='SOR', omega=0.15, aa=1500, cc=12, # linea_eta=0) # mallaNACA.gen_Poisson(metodo='SOR', omega=0.15, aa=1500, cc=12, # linea_eta=0) # importar malla malla_importada = 'nombre_archivo_malla.txt_mesh' mallaNACA = util.from_txt_mesh(malla_importada)
perfil = airfoil.NACA4(m, p, t, c) perfil.create_sin(points) flap = airfoil.NACA4(m, p, t, 0.2 * c, number=2) flap.create_sin(points) flap.rotate(15) perfil.join(flap, dx=0.055, dy=0.51, union=union) perfil.rotate(10) M = np.shape(perfil.x)[0] archivo_perfil = 'perfil_final.csv' if malla == 'O': mallaNACA = mesh_o.mesh_O(R, N, perfil) elif malla == 'C': mallaNACA = mesh_c.mesh_C(R, N, perfil, weight=1.13) # mallaNACA.gen_Laplace(metodo='SOR', omega=1.4) # mallaNACA.gen_Poisson(metodo='SOR', omega=0.5, aa=49.95, cc=17.7, linea_eta=0) # normal # mallaNACA.gen_Poisson_v(metodo='SOR', omega=0.5, aa=69.95, cc=7.7, linea_eta=0) # mallaNACA.gen_Poisson_v(metodo='SOR', omega=0.5, aa=50500, cc=3, linea_eta=0) # sectioned in 4 # mallaNACA.gen_Poisson_v_4(metodo='SOR', omega=0.3, aa=139.95, cc=7.7, linea_eta=0) # mallaNACA.gen_Poisson_v_4(metodo='SOR', omega=0.3, aa=0.95, cc=7.7, linea_eta=0) # mallaNACA.gen_Poisson_v_(metodo='SOR', omega=0.3, aa=159.95, cc=0.2, linea_eta=0) # mallaNACA.gen_Poisson_v_(metodo='SOR', omega=0.5, aa=60500, # cc=7, linea_eta=0) # mallaNACA.gen_Laplace_v_(metodo='SOR', omega=0.5) mallaNACA.gen_Laplace_n(metodo='SOR', omega=1.2)
# radio frontera externa R = 410 * c perfil = airfoil.NACA4(m, p, t, c) perfil.create_sin(points) flap = airfoil.NACA4(m, p, t, 0.2 * c, number=2) flap.create_sin(points) flap.rotate(15) perfil.join(flap, dx=0.055, dy=0.05, union=union) M = np.shape(perfil.x)[0] print(f"shape perfil: {M}") mallaNACA_1 = mesh_c.mesh_C(R, N_1, perfil, weight=weight) mallaNACA_1.gen_TFI() mallaNACA = mesh_c.mesh_C(R, N, perfil, weight=weight) mallaNACA.X[:, -1] = mallaNACA_1.X[:, -19] mallaNACA.Y[:, -1] = mallaNACA_1.Y[:, -19] mallaNACA1 = mesh_c.mesh_C(R, N1, perfil, weight=weight) print(f"shape mesh: {np.shape(mallaNACA.X)[0]}") # print('M = ' + str(mallaNACA.M)) # print('N = ' + str(mallaNACA.N)) # mallaNACA = util.from_txt_mesh( # filename='/home/desarrollo/tesis_su2_BADLY/mesh_c_flap.txt_mesh') # mallaNACA.gen_Poisson_n(metodo='SOR', omega=0.15, a=a, c=c, linea_xi=linea_xi,