小编Sam*_*ami的帖子

使用numpy在Pygame中进行更高效的风洞模拟

我是一名航空航天学生,正在为我们的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)

python pygame numpy fluid-dynamics

10
推荐指数
1
解决办法
873
查看次数

标签 统计

fluid-dynamics ×1

numpy ×1

pygame ×1

python ×1