第1章 绪论
1.1 反应堆热工流体模拟研究背景
核能作为一种清洁能源,是应对能源和环境危机的有效手段,确保反应堆安全性和经济性是大规模发展核能的关键。相较于传统的模拟,高精细的大规模并行模拟手段能提供更细致、更接近真实情况的模拟结果,对于优化反应堆设计、确保反应堆的安全性和提升经济性具有重要意义。高精细的模拟对于计算和存储要求高,随着并行计算技术和计算机硬件的快速发展,对反应堆内的物理过程进行高精细的模拟,已成为国际上的前沿研究热点,数值堆就是在这样的背景下提出的研究课题[1]。
数值堆是建立在超级计算(简称超算)上,可实现实际反应堆内各种物理过程高精细模拟的复杂软件系统。它属于反应堆工程技术与并行计算技术、数值模拟、软件工程、计算数学等学科高度融合的交叉研究领域。数值堆有望在反应堆功率提升、延寿、安全性能提升、废物*小化和新堆设计等研究领域发挥重要作用。鉴于其重要性,美国、欧盟、英国等国家和地区已先后开展了数值堆的相关研究。
热工流体模拟软件是数值堆的重要组成部分。因为反应堆是一个十分紧凑的热源,热工流体模拟软件研究燃料元件的传热,以及冷却剂的流动和传热过程,确保堆芯在各种工况下都能得到及时的冷却,保证堆芯的安全。相较于传统的模拟,数值堆的热工流体模拟软件强调借助超算进行高精细、大规模的模拟,在数学物理模型、模拟规模、计算效率等多方面提出了更高的要求。在数学物理模型方面,数值堆模拟软件使用高保真的分析方法,如使用能够提供三维流场信息的计算流体力学方法,或者使用了考虑相邻通道间横向交混的子通道方法,而不使用粗略的、忽略了相邻通道间横向交混的单通道方法。在模拟规模方面,数值堆模拟要求进行接近真实情况的大规模计算,如进行子通道模拟是要求能实施全堆芯的模拟,而不是选取堆芯内部分有代表性的区域进行模拟。在计算效率方面,高精细大规模的模拟要求尽可能在可接受的时间内快速得到模拟结果,如在热工设计阶段,子通道程序会被反复运行(设计人员需探索多个设计方案,每个设计方案又需经过不同算例反复模拟测试),因此要求子通道模拟软件能快速得到计算结果,如15min内就完成一次全堆芯的子通道稳态模拟。这些都对计算机的存储和计算能力提出了极高的要求。
1.2 热工流体模拟对超算资源的需求分析
以神威和天河为代表的我国超算的计算能力已居世界领先地位,“十三五”国家重点研发计划启动了“数值反应堆原型系统开发及示范应用”项目,旨在借助我国的超算优势,实现对反应堆内热工流体、中子物理、材料辐照效应等物理过程的高精细模拟。超算平台的存在为热工流体模拟需要的超大存储量和计算量提供了支持。
具体来说,在存储量方面,以使用子通道方法对大亚湾核电站进行全堆芯的模拟为例,全堆芯模拟需要模拟157个组件,每个组件内有264根燃料棒和25根导向管,假设轴向分层设置为100层,那么网格量约为500万个。假设模拟500个时间步,为了分析冷却剂的温度、压力、密度、速度等参量随着时间的变化,每隔2个时间步将重要的参量(假设只输出5个参量)输出到文件中。假设使用两流体三流场模型,每个网格需要存储液态、气态和液滴态三态的参量。假定所有的变量都使用大小为8B的双精度类型存储,如式(1.1)所示,总共需要约279GB的存储空间。使用CFD进行模拟的存储需求更是巨大的,假设每个网格只需存储温度、压力和三个维度的速度共5个参量,模拟10亿个网格,模拟500个时间步,如式(1.2)所示,需要18TB的存储。
500(时间步)×5(参数的数量)×8B×3(三相)×5000000(网格量)=300000000000B≈279GB(1.1)
500(时间步)×5(参数的数量)×8B×1000000000(网格量)=20000000000000B≈18TB(1.2)
在计算量方面,以典型的子通道模拟软件COBRA-TF(coolant boiling in rod arrays-two fluid, CTF)为例,使用CTF串行版本模拟全堆芯193个组件,需耗时1天多[2]。CFD模拟的计算量则更大,Kothe[3]估算采用大涡模拟的方法进行堆芯局部区域的模拟,需要P级的计算能力,进行全堆芯的模拟则需要E级的计算能力。可以看到,基于超算的强大计算和存储能力,是研发数值堆热工流体模拟软件,实现高精细大规模热工流体模拟的必然选择。
1.3 热工流体并行模拟关键问题
近些年来,计算机硬件和体系结构的新发展促进了并行计算和多处理器编程的重大进展。并行计算是减少大规模应用的周转期和计算成本的*重要手段,大规模并行计算也被认为是实现热工流体并行模拟的关键技术。
并行计算的一个主要问题是复杂的体系结构和数值算法如何有效地利用并行硬件。特别是在由数百个或数千个强大处理器组成的分布式内存机器的情况下,这是一个重大挑战。为不同的架构设计并行算法的关键问题有求解域划分(或称网格生成)、跨边界通信以及区域分解(负载平衡和*小化通信)。
从热工流体CFD角度出发,假设纳维-斯托克斯(Navier-Stokes,N-S)方程已经成功地在单处理器架构上求解。接下来的问题是,同样的问题能否在并行架构上得到解决,从而实现准线性加速,也就是说,能否实现并行可扩展性。目前不考虑数值可扩展性,因为并行和数值可扩展性可能是相互冲突的问题。对于给定的问题,并行可扩展性是执行时间和处理器数量的乘积是常数的理想条件。要实现并行可扩展性,基本上需要满足三个不同的要求:①代码不包含顺序部分;②通信成本为零(不需要额外的时间);③每个处理器有相同的工作负载。
关于实现并行可扩展性问题的讨论可以在文献[4]找到。一般来说,由于程序启动时间、全局通信操作(如残差计算和停止标准)以及顺序I/O操作等,无法实现灵活和用户友好的代码。并且大量时间花在处理器之间发送消息上,即使计算可以与通信重叠,设置消息传输仍有一定数量的工作要做。因此,上述①和②总存在一定的并行低效性。一般情况下,通过在模拟过程中重新分配工作,可以实现给处理器分配相同的工作负载,该过程称为动态负载均衡,然而,必须认识到负载均衡本身也需要计算资源[5]。
对CFD代码来说,基本上有三种并行化代码的方法。
第一种方法简单而直接,是将代码中的do循环并行化。许多自动并行器对do循环进行了分析,并在此基础上提出了并行化策略。然而,这种概念不能扩展到数百或数千个处理器,因而只能得到非常有限的加速[5]。
科学和工程中的大多数应用都可以用某种解空间中的一组方程来描述。因此,第二种方法是对这些方程的数值求解过程进行并行化。例如,如果代码中有矩阵向量乘法,这个乘法可以分布在不同的处理器上并行执行。但同样,这种方法无法获得对大量处理器的可伸缩性。此外,这种技术只适用于大型正则矩阵。如果一个问题由大量较小的矩阵表示(实践中经常出现这种情况),并行化就相当困难,6.4.2节将提出一种并行化矩阵-矩阵乘的方法。
第三种方法称为求解域分解,也称为网格划分。网格划分的想法很简单,求解域被细分为一组子域(块),这些子域在并行求解过程中互相通信以更新子域的信息,每个域求出自己的数值解,独立于其他域。解空间可以是实际的时空连续体,也可以是某个抽象的空间。在模拟过程中,该空间被离散化,从而由一组点来描述。网格划分是CFD*通用的方法,它还可以带来很高的并行效率。因为每个子域的点数量可以自由变化,每个处理器的子域数量也可以自由变化。科学和工程中的大量代码在非结构化或结构化网格上使用有限元法(finite element method,FEM)、有限差分法(finite difference method,FDM)或有限体积法(finite volume method,FVM)。通常,控制物理方程被转换成一组线性方程,并行化这类问题的过程是分解物理求解域。应用网格划分的并行方法可以产生完全可移植的代码,因此如何更好地进行网格划分是热工流体并行模拟的第一个关键问题。
当完成了大规模并行的网格生成后,该问题仍不能进行并行求解,并行时,需要考虑元素间交界处的数据交换,还需要考虑元素在进程中的负载。人们通常希望网格划分后每个求解域可以并发计算,但它们通常不能独立执行。在一个任务中执行的计算通常需要另一个任务相关联的数据。因此必须在任务之间传输数据,以便进行计算。特别是相邻网格之间的共享点、边、面往往需要共享以及统一数据保证数据一致性。选择哪种通信协议、全局与局部求解域之间如何通信、选择怎样的通信路由算法都是通信部分需要考虑的问题,跨边界通信是热工流体并行模拟的第二个关键问题。
将子问题直接作为计算的基本单元,将带来大量的调度与通信成本,无法直接形成有效的并行算法。其中影响并行性能的一个关键问题就是通信成本,在大多数并行计算机上,在发送和接收消息过程中必须停止计算,而通常通信时间成本比计算高得多,减少通信占用的时间可以提高性能,既可以通过发送更少的数据来实现,也可以通过减少通信次数但增加每次通信的数据量的方式实现。而计算任务的负载失衡会导致计算资源的浪费,将会出现有的处理器早早完成了计算,却因为其他负担任务繁重的节点尚未完成计算,而一直处于等待状态。同样地,由于负载不同,处理器运行的同步性变得更差,变相增加了通信成本。因此,有必要根据性能和实现成本的需求对划分的子任务进行聚合得到更大的粗粒度的任务,降低通信频率,在CFD求解程序中体现为对网格单元进行分区,使得各个分区内的网格数量相近以满足计算负载的均衡、各个分区之间割边的数量较少以实现通信频率的降低,因此区域分解是热工流体并行模拟的第三个关键问题。
1.4 本书的结构
本书是“数值核反应堆技术与应用”丛书中对热工流体并行技术进行详细阐述的一本,全面阐述了数值堆中热工流体并行模拟所面临的关键问题,以及CVR1.0系列软件中CVR-PASA(China Virtual Reactor-Parallel Thermal Hydraulics Subchannel Analysis Software)和CVR-PACA(China Virtual Reactor-Parallel Computational Fluid Dynamics Analysis Software)(以下简称PACA)的设计思路、关键技术、软件设计与实现。本书共分为6章,第1章为引言,介绍热工流体模拟的研究背景、计算资源需求和面临的关键问题;第2章介绍目前热工流体并行模拟常采用的方法、国内外的研究进展和亟待解决的关键问题;第3章介绍并行计算的基本概念、国内超算的体系结构和编程方法;第4章主要介绍热工流体子通道模拟软件CVR-PASA的设计与实现;第5章主要介绍热工流体CFD模拟的计算模型、常用数值解法、基本流程以及典型开源CFD软件Nek5000;第6章主要介绍基于谱元法的大规模并行不可压缩N-S方程求解器PACA,对大规模网格生成、大规模网格并行区域分解以及面向异构的并行优化三个关键技术进行详细阐述。
参考文献[范1]
[1]杨文, 胡长军, 刘天才, 等. 数值反应堆及CVR1.0研究进展[J]. 原子能科学技术, 2019, 53(10): 1821-1832.
[2]Salko R K, Schmidt R C, Avramova M N. Optimization and parallelization of the thermal-hydraulic subchannel code CTF for high-fidelity multi-physics applications[J]. Annals of Nuclear Energy, 2015, 84: 122-130.
[3]Kothe D. Toward predictive mode
展开