def run_convergence_analysis_gmsh(): config = dict() config['PHYSICAL_PROBLEM'] = 'EULER' config['MACH_NUMBER'] = str(0.65) config['AOA'] = str(1.25) config['FREESTREAM_PRESSURE'] = str(24999.8) #for altitude 10363 m config['FREESTREAM_TEMPERATURE'] = str(220.79) #for altitude 10363 m #config['GAS_CONSTANT'] = str(287.87) #config['REF_LENGTH'] = str(1.0) #config['REF_AREA'] = str(1.0) config['MARKER_EULER'] = '( airfoil )' config['MARKER_FAR'] = '( farfield )' config['EXT_ITER'] = str(1000) config['OUTPUT_FORMAT'] = 'PARAVIEW' config['MG_DAMP_RESTRICTION'] = str(0.75) config['MG_DAMP_PROLONGATION'] = str(0.75) #for gmsh innerMeshSize = np.linspace(0.001, 0.01, 21) outerMeshSize = np.linspace(0.1, 1., 21) innerMeshSize = np.flip(innerMeshSize, 0) outerMeshSize = np.flip(outerMeshSize, 0) cdList = np.zeros((len(innerMeshSize), len(outerMeshSize))) clList = np.zeros((len(innerMeshSize), len(outerMeshSize))) cmList = np.zeros((len(innerMeshSize), len(outerMeshSize))) eList = np.zeros((len(innerMeshSize), len(outerMeshSize))) ouputF = open(WORKING_DIR + '/' + 'convergenceResult.txt', 'w') ouputF.write( 'innerMeshSize,outerMeshSize,CL,CD,CM,E,Iterations,Time(min)\n') for iI in range(0, len(innerMeshSize)): for iO in range(0, len(outerMeshSize)): projectName = 'nacaMesh_i%06d_o%06d' % (int( innerMeshSize[iI] * 1000), int(outerMeshSize[iO] * 1000)) projectDir = WORKING_DIR + '/' + projectName #create project dir if necessary if not os.path.isdir(projectDir): os.mkdir(projectDir) cfd = CFDrun(projectName, used_cores=SU2_USED_CORES) cfd.load_airfoil_from_file(INPUT_DIR + '/naca641-212.csv') cfd.gmsh.innerMeshSize = innerMeshSize[iI] cfd.gmsh.outerMeshSize = outerMeshSize[iO] #cfd.gmsh_generate_mesh() cfd.gmsh_generate_mesh() cfd.su2_fix_mesh() cfd.su2_solve(config) results = cfd.su2_parse_iteration_result() #totalCL, totalCD, totalCM, totalE = cfd.su2_parse_results() totalCL = results['CL'] totalCD = results['CD'] totalCM = results['CMz'] totalE = results['CL/CD'] clList[iI][iO] = totalCL cdList[iI][iO] = totalCD cmList[iI][iO] = totalCM eList[iI][iO] = totalE ouputF.write( str(innerMeshSize[iI]) + ',' + str(outerMeshSize[iO]) + ',' + str(totalCL) + ',' + str(totalCD) + ',' + str(totalCM) + ',' + str(totalE) + ',' + str(results['Iteration']) + ',' + str(results['Time(min)']) + '\n') ouputF.flush() print('totalCL: ' + str(totalCL)) print('totalCD: ' + str(totalCD)) print('iI: ' + str(iI) + ' iO: ' + str(iO)) plt.pcolor(innerMeshSize, outerMeshSize, clList) plt.colorbar() plt.show() print('done')
ouputF.write('machNr,AOA,CL,CD,CM,E,Iterations,Time(min)\n') for mach in MACH_NR: projectName = 'analysis_mach_%0.3f' % (mach) projectDir = WORKING_DIR + '/' + projectName #create project dir if necessary if not os.path.isdir(projectDir): os.mkdir(projectDir) cfd = CFDrun(projectName, used_cores=SU2_USED_CORES) cfd.load_airfoil_from_file(INPUT_DIR + '/vfw-va2.dat') #cfd.construct2d_generate_mesh(scale=REF_LENGTH) cfd.gmsh_generate_mesh(scale=REF_LENGTH) cfd.su2_fix_mesh() config['MACH_NUMBER'] = str(mach) cfd.su2_solve(config) results = cfd.su2_parse_iteration_result() cfd.clean_up() print('totalCL: ' + str(results['CL'])) print('totalCD: ' + str(results['CD'])) ouputF.write(str(mach / 100.) + ',' + str(results['AOA']) + ',' + str(results['CL']) + ',' + str(results['CD']) + ','