我是一名航空航天学生,正在为我们的python编程课程学习项目.赋值是仅使用Pygame和numpy创建程序.我决定创建一个模拟二维机翼上气流的风洞模拟.我想知道是否有更有效的方法从编程角度进行计算.我会解释一下这个程序:
(稳定)流场使用涡旋面板方法建模.基本上,我使用Nx乘Ny点的网格,其中在每个点给出速度(u,v)向量.然后使用Pygame我将这些网格点映射为圆圈,这样它们就像一个影响区域.网格点是下图中的灰色圆圈:
我创建N个粒子并通过迭代确定它们的速度如下:
创建一个粒子列表.
创建一个网格列表.
对于网格列表中的每个网格点:
对于粒子列表中的每个粒子:
如果粒子A在网格点n(xn,yn)的影响区域内:
粒子A,其速度=网格点n处的速度.
在Pygame中可视化所有内容.
这种基本方式是我能想到在Pygame中可视化流程的唯一方法.模拟效果很好,但如果我增加网格点的数量(增加流场的精度),性能会下降.我的问题是,如果有一个更有效的方法来做这个只是使用pygame和numpy?
我在这里附上了代码:
import pygame,random,sys,numpy
from Flow import Compute
from pygame.locals import *
import random, math, sys
#from PIL import Image
pygame.init()
Surface = pygame.display.set_mode((1000,600))
#read the airfoil geometry from a dat file
with open ('./resources/naca0012.dat') as file_name:
x, y = numpy.loadtxt(file_name, dtype=float, delimiter='\t', unpack=True)
#parameters used to describe the flow
Nx=30# 30 column grid
Ny=10#10 row grid
N=20#number of panels
alpha=0#angle of attack
u_inf=1#freestream velocity
#compute the flow field …Run Code Online (Sandbox Code Playgroud)