56、使用SaC和Fortran - 90进行非定常冲击波相互作用的数值模拟

使用SaC和Fortran - 90进行非定常冲击波相互作用的数值模拟

1. 引言

过去,若想让代码具备高性能,往往需要牺牲较高的抽象层次。本文将介绍一种能克服这些缺点的方法,即引入数据并行语言SaC,并通过在欧拉系统中实现非定常冲击波模拟器来展示其用法。我们会在16核计算服务器上运行该应用程序,对比SaC和Fortran的性能。

SaC在语法上接近C语言,这使其更易被计算科学家接受。同时,它是一种无副作用的声明式语言,这使得编译器能够进行一系列复杂的优化。更重要的是,它让程序员无需过多关注内存访问效率、空间管理、数据并行性的利用以及迭代空间的优化等实现细节。此外,借助SaC精心设计的数组子类型系统以及强大的函数和运算符重载功能,为特定维度数组编写的代码可在更高维度中复用,其能力远超Fortran和面向对象语言。

SaC已在图像处理、密码学和信号分析等多种应用中得到使用,但在计算流体动力学(CFD)应用方面,据我们所知,仅有一次用于Kademtsev - Petviashivili系统的编程尝试,且该示例过于深奥,无法为单赋值C语言的实际适用性提供结论。本文首次展示了将SaC作为工具解决实际问题——欧拉系统中非定常冲击波模拟的结果。

流体力学方程仅能对少数简单流动进行解析求解,因此CFD在科研和众多工程应用中被广泛使用。计算效率和代码开发的便捷性在CFD中至关重要,CFD也是实现计算机科学新概念和工具的最具前景的领域之一。

2. SaC语言特性

SaC是一种数组处理语言,乍看像Fortran那样的命令式程序,但实际上与函数式编程语言有更多共同点。SaC函数由一系列定义和重新定义数组对象的语句组成。对C程序员来说,这看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值