一个有趣的,轻量级的工具,可视化的潜在流动迅速!

PotentialFlowVisualizer的Python项目详细描述


流量可视化仪

{str}

一个有趣、轻量级的工具,可以快速可视化潜在的流!

PFV说明

PotentialFlowVisualizer是一个方便的Python库,可用于快速可视化各种潜在流场。如果您不熟悉潜在的流程,我在本文的底部写了一个简短的介绍。在

PFV语法被明确地设计为简洁易读。流场渲染通过Plot.ly公司的漂亮的可视化工具。这个库被设计成具有最小的依赖性-它只需要NumPy和ployly。在

示例

下面是几个示例,向您展示如何使用PFV查看基本流场:

自由流、源和汇(Rankine Oval)

frompotentialflowvisualizerimport*field=Flowfield([Freestream(1,0),Source(10,-3,0),Source(-10,3,0),])field.draw("streamfunction")

Freestream Source Sink

提升油缸流量

^{pr2}$

Lifting Cylinder Flow

非提升NACA020

这里,我们使用细长体理论的一些关键结果来(近似地)模拟一个细长的流线型体。在

frompotentialflowvisualizerimport*# Body Geometry definitionx=np.linspace(-5,5,21)c=np.max(x)-np.min(x)x0=np.min(x)y=0.2*c*10*(+0.2969*((x-x0)/c)**0.5-0.1260*((x-x0)/c)-0.3516*((x-x0)/c)**2+0.2843*((x-x0)/c)**3-0.1036*((x-x0)/c)**4)dy=np.diff(y)# Freestream propertiesV=1# Set up the flowfieldfield=Flowfield([Freestream(V,0)])field.objects.extend(# Add line sources to model the thickness[LineSource(V*dy[i],x[i],0,x[i+1],0)foriinrange(len(x)-1)])field.draw("streamfunction")# And visualize it

Nonlifting NACA0020 Flow

以一定角度不提升NACA0020

对于一阶,我们可以通过添加双峰来模拟NACA0202截面周围的流动。(注意,缺乏净涡度意味着这是一个非升力流。)正如我们所见,细长体理论在这种情况下开始有点崩溃。在

frompotentialflowvisualizerimport*# Body Geometry definitionx=np.linspace(-5,5,51)c=np.max(x)-np.min(x)x0=np.min(x)y=0.2*c*10*(+0.2969*((x-x0)/c)**0.5-0.1260*((x-x0)/c)-0.3516*((x-x0)/c)**2+0.2843*((x-x0)/c)**3-0.1036*((x-x0)/c)**4)dy=np.diff(y)# Freestream propertiesV=1alpha=10alpha_rad=np.radians(alpha)# Set up the flowfieldfield=Flowfield([Freestream(V*np.cos(alpha_rad),V*np.sin(alpha_rad))])field.objects.extend(# Add line sources to model the thickness[LineSource(V*dy[i],x[i],0,x[i+1],0)foriinrange(len(x)-1)])field.objects.extend(# Add doublets to model crossflow[Doublet(2*V*y[i]*alpha_rad,x[i],0,np.radians(90))foriinrange(len(x))])field.draw("streamfunction")# And visualize it

Nonlifting NACA0020 at angle

潜在流量:30秒速成课程

势流是在某些数学上方便的假设下流体行为的模型。势流可以用一个简短而优雅的方程式来描述:

这里,是一个标量,代表给定点的“速度势”,我们用“势”这个词,因为它有点类似于势能或电压势。为了求出流体在某一点上的速度,我们看一下该点的势导数:

这个控制方程有几个“基本解”——其中一些如下所示。控制方程是线性的,所以我们可以叠加各种基本解,直到我们得到一个描述一些物理相关情况的流场。在

正因为如此,势流适用于空气动力学和流体力学中的许多常见问题。此外,将复杂的流场分解为简单的“基本解”的能力使工程师能够直观地理解正在发挥作用的物理过程,而这对于其他更复杂的流动模型来说可能要困难得多。在

许可证

麻省理工学院执照

版权所有2020彼得·夏普

特此免费授予获得本软件和相关文档文件(以下简称“软件”)副本的任何人无限制地使用本软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,并允许向其提供软件的人提供软件,但须符合以下条件:

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。在

本软件按“原样”提供,无任何明示或暗示的保证,包括但不限于适销性、特定用途适用性和非侵权性的保证。在任何情况下,作者或版权持有人均不对因本软件或本软件的使用或其他交易而引起的、与之相关的任何索赔、损害赔偿或其他责任负责,无论是合同诉讼、侵权诉讼还是其他诉讼。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何向xsi:nil元素添加另一个属性?   Java抽象泛型方法,使用具体类型实现通配符   java使用pcap4j截断pcap文件   当我放置字母a、b和c时,java中的异常预期会下降   java设置活动对话框不可取消   接口类型变量上的Java克隆   使用Java或BouncyCastle对CSR(证书签名请求)进行安全解码/读取   java调用SavingsAccount对象上的函数并打印结果   java如何在Android应用程序上显示地图上的兴趣点(POI)并与之交互?   如果在JavaFX中的ResultSet中未找到任何内容,则显示java警报   java我将springboot和@component与@scheduled一起使用,它每12小时锁定一次   ApachePOI如何使用java删除包含字符串的word表的行   java如果对象(x,y)靠近其他对象(x,y)   从未对JMSException调用java JMS CachingConnectionFactory OneException方法   javascript使用java将HTML页面转换为MS word