CFD计算是目前最耗时、对计算机要求最高的高性能计算之一。不同的语言可用于不同的CFD计算程序,如C++、FORTRAN、Python等。目前世界上最大的开源CFD软件OpenFOAM采用C++编写,并在近期兼容了C++11标准。关于OpenFOAM为何采用C++,请戳:CFD访谈(一):看OpenFOAM创始人HenryWeller论CFD! C++特性 C++在C语言的基础上融合面向对象编程(Object-orientedprogramming,OOP)以及泛型编程(Genericprogramming)。其在年代成为最重要的编程语言之一并在年后得到迅猛发展。 面向对象使得C++在当时成为了一个全新的非常特色的编程语言,模板的支持使得用户可以使用一种新技术:泛型编程。这些特性使得C++相对C语言增加了很多新的术语:对象(Object),类(Class),封装(encapsulation),隐藏(Hiding),多态(Polymorphism)以及继承(inherence)。 C++这些特性具体体现为:通过“C”来实现面向过程编程、通过“类”来实现面向对象编程,通过“模板”来实现泛型编程。 C语言计算机在过去得到了非常迅猛的发展。然而在年代。那个时候的计算机内存才KB,甚至不如今天的移动电话内存大。并且体积巨大。 在计算机发展的同时,编程语言同时也在发展。虽然编程语言发展并没有计算机发展的那样猛烈,但是编程语言的发展对于计算机的发展是非常重要的。 年代,美国贝尔实验室的DennisRitchie正在开发一个操作系统。而他开发这个操作系统的根本目的在于打算开发一个类似太空漫游的游戏。 在开发操作系统的时候,Ritchie需要一个非常简洁的语言,来创造一个紧凑的并有效的直接控制硬件的程序。 在当时,程序员大多使用汇编语言(AssemblyLanguage)。汇编语言可以直接的和硬件联系。然而,汇编语言实在是太底层的语言,他直接和硬件捆绑。这意味着,一个处理器对应着一套汇编语言。因此如果你打算把这个计算机上的程序移植到其他计算机,你不得不重新编写程序。 但是操作系统却需要在各个电脑上完美运行。这就需要一个高级的计算机语言。编译器(Compiler)可以把高级语言翻译为具体的某个计算机可以识别的语言来执行。 Ritchie的目的就是要一个具有底层语言的有效性同时也具有高级语言的可移植特性,于是他就创造了C语言。 在年代,C语言以及Pascal语言崇尚面向过程编程。同时,C语言的特点为较为底层并且直接控制端口和数据,因此效率较高。这使得在年代C语言基本成为了当时的主导编程语言。 尽管结构化编程使得程序大大简化、可读并维护简单。但是在编写大型程序的时候,依然存在很多的挑战。 同时,在年代,一个新的编程技术崭露头角,即为面向对象编程技术。 C++ 不同于C语言,其强调算法。C++,强调数据。 在C++中,类(class)表示一个新的数据类型。对象(Object)表示一个特殊的类实体。 比如,类可以为某个概念性的东西,如名字、职称、工资等。对象即为具体的名字如Tyler、教授、月薪元。 泛型编程是C++中另外一个特殊的技能。它存在的目的是尽可能的使得代码可以重用。一个简单的例子即为如果你的数据存在整形、浮点、字符串三个不同的类型。通常你需要写不同的函数来对不同的类型来进行操作。然而通过泛型编程,程序员只需要写一个函数就可以对他们进行操作。 C++也是在贝尔实验室被创造。其创始人为BjarneStroustrup。在Bjarne的个人主页上,问的最多的问题是:“你的名字到底怎么发音?” C++可以看做C语言的增强版,其中的“++”来自于C语言中的操作符++。 C++的流行存在了一个过程,Bjarne也是在C++稍有所成的时候,后来增加的泛型编程技术。后来,泛型编程的支持,使得其成为面向对象编程的一个非常重要的特性。有人甚至认为,泛型编程针织比面向对象还重要。 融合了泛型编程、面向对象后,C++获得了空前的成功。 C++标准 正如语言一样,编程语言也存在着一些方言。如果没有一个标准,很难让这些方言协同工作。 美国国家标准机构(ANSI)在年成立了一个委员会来制定C++标准。同时国际标准委员会(ISO)也制定了他们自己的委员会。在年,ISO和ANSI委员会将C++标准统一。并在当时称之为C++98标准。 在年的时候,C++03标准问世,但是当时C++03标准并没有过多的语言特性变更。因此在谈及C++98标准的时候通常指C++98/C++03标准。 在年,C++11标准问世。C++11标准全文共页。 虽然C++已经被提出30年。在目前,依然存在大量的使用C++的程序员。他们将C++应用于计算机技术的各种不同的应用中。在数值计算上,C++由于其高效性以及代码高度重用,也是高性能计算工作者的首选。 CFD大牛?一测便知 Q16: 在NS方程的求解中,速度计算和压力计算相比哪一个更加耗时? 欢迎在下方留言讨论,或回复q16至CFD界获取来自教材的答案 白癜风的症状与治疗治疗白癜风哪里专业转载请注明原文网址:http://www.gzdatangtv.com/cksc/1812.html |