# pantera-pic-dsmc **Repository Path**: gavin78/pantera-pic-dsmc ## Basic Information - **Project Name**: pantera-pic-dsmc - **Description**: No description available - **Primary Language**: Unknown - **License**: GPL-3.0 - **Default Branch**: pantera-unstructured-petsc - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-06 - **Last Updated**: 2025-11-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: 流体力学, Fortran, pantera ## README ![logo](logo.png) [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) Copyright (C) 2025 von Karman Institute for Fluid Dynamics (VKI) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. # PANTERA PIC-DSMC PANTERA(*非平衡反应空气动力学粒子数值工具*)是一款开源软件,用于模拟非平衡气体和等离子体流动。它基于直接模拟蒙特卡洛(Direct Simulation Monte Carlo)和粒子网格(Particle-in-Cell)方法,使用现代Fortran编写,并针对分布式内存机器进行了并行化处理。 主要开发者: * Pietro Parodi - pietro.parodi@vki.ac.be - *VKI / 鲁汶大学* * Jan Skácel - jan.skacel@vki.ac.be - *VKI / 马萨里克大学 / 布鲁塞尔自由大学* * Stefano Boccelli - stefano.boccelli@nasa.gov - *米兰理工大学 / VKI / 渥太华大学 / 美国宇航局戈达德中心* * Federico Bariselli - federico.bariselli@vki.ac.be - *米兰理工大学 / VKI* 原始DSMC代码由米兰理工大学的Aldo Frezzotti编写。主要开发工作在[冯·卡门流体动力学研究所](https://www.vki.ac.be/)进行,由FWO(佛兰德研究基金会)博士奖学金资助。请参阅"历史"部分获取完整的贡献者列表。 ## 应用场景和主要特性 PANTERA在应用方面非常灵活。它已被应用于各种问题,从微机电设备中的流动到稀薄高超音速流动,再到实验室等离子体和空间推进等离子体。主要特性如下: * 多物种模拟 * 1D、2D、3D和2D轴对称域,始终支持3V(3个速度分量) * 结构化规则网格和非结构化网格(读取[SU2](https://su2code.github.io/docs/Mesh-File/)格式) * 使用成对VSS系数的DSMC碰撞,以及可选的使用修改的Arrhenius速率的TCE模型和Borgnakke-Larsen内部能量交换的双元反应 * 来自[LXCat](https://us.lxcat.net/home/)文本格式的表格化截面的DSMC或MCC碰撞和反应 * 显式以及能量守恒(半隐式和全隐式)静电PIC方案 * 可以从保存的状态(粒子转储)重新开始模拟 * 许多模型,包括Maxwell和CLL表面散射、介电固体、表面充电、表面反应、外部施加的电场和磁场等... ## 编译、运行和调试 ### 编译 PANTERA是在Linux环境下设计和测试的。它使用消息传递接口(MPI)进行并行化,并使用PETSc库来求解线性/非线性方程组。 要编译PANTERA,请在主目录中运行`make`命令。 这将读取Makefile并创建"pantera.exe"可执行文件。然后你可以将这个可执行文件复制到工作目录中。 安装PANTERA需要先安装[PETSc](https://petsc.org/release/)库,并正确设置`PETSC_DIR`和`PETSC_ARCH`环境变量。 如果无法运行,请确保: * 已安装编译器(gcc) * 已安装MPI版本,如[OpenMPI](https://www.open-mpi.org/)(在Debian/Ubuntu中,包名为`openmpi-common`和`libopenmpi-dev`)。 ### 运行 编译完成后,可以使用以下命令运行PANTERA: (单进程) `$ ./pantera.exe` (使用MPI的多进程,NUM_PROC为线程数) `$ mpirun -np NUM_PROC ./pantera.exe` 最低要求是提供一个输入文件。Pantera总是读取当前文件夹中的"input"文件。 根据输入文件中定义的内容,可能需要额外的数据文件。 ### 调试 默认情况下,PANTERA在编译时启用了优化(-O3)。使用`make debug`命令运行make将编译一个未优化的版本,包含调试所需的信息(-g)和额外的编译检查。 对于调试,您可以使用gdb。只要您在一台机器上进行调试,您甚至可以使用gdb调试多个进程,如下所示: `$ mpirun -np NUM_PROC xterm -e gdb pantera.exe` 这将在多个xterm实例中运行gdb。在所有实例中键入"run"以启动进程(它们可能会在找到的第一个MPI_BARRIER处相互等待)。 ## 其他说明 代码手册正在准备中。同时,这个Git仓库中的Wiki包含一些有用的信息和教程。输入脚本中关键字的使用方法可以通过查看`initialization.f90`中的`READINPUT`子程序来推断。 ### 输入文件 PANTERA按顺序读取输入文件。当一行的内容被识别为关键字之一时,下一行中的值将保存到相应的变量中。不要在关键字行和值行之间留空行。以`!`开头的行被识别为注释并被忽略。示例输入脚本和关键字说明可以在这个Git仓库的Wiki中找到。 除了少数例外情况外,关键字在输入脚本中出现的顺序并不重要。 一般来说,输入脚本中的所有值都遵循SI单位制(米-千克-秒)。 ### 给开发者的说明 给开发者的几点注意事项。 非常欢迎您为Pantera做出贡献!请尽量保持与现有代码相似的编程风格(缩进使用3个空格,语言指令使用大写,变量和子程序名的命名方式)。 请记住,实数需要使用小数点表示,至少要有一个点,如"2.",而不仅仅是"2"。Fortran不是Matlab,否则会引入错误。同时,当涉及整数除法时要特别注意。在您天真地期望得到实数的地方,可能会得到零。进行除法运算时,请将整数转换为实数。请记住,Fortran的多维数组顺序与C/C++相反。这意味着第一个索引标识内存/缓存中的连续区域。因此,如果在多维循环中第一个索引是最快递增的,将会大大提高速度。 但最重要的是,请遵循KISS原则:保持简单,不要复杂化。 请记住我们的目标: * 我们希望Pantera变得更加强大,能够运行复杂且计算密集的模拟 * 但它也必须允许普通水平的程序员和学生开发它并添加新的物理模型。我们中的许多人想做物理研究,而不是计算机科学...而且,一个不必要复杂的代码会阻碍开发并降低任何编程工作的成果。 请务必为代码添加详细的注释。您会忘记自己做了什么,需要刷新记忆。其他人也需要(快速)理解您做了什么以便进一步开发。 ### 历史简介 Pantera源于最初由Aldo Frezzotti教授用F77编写的DSMC代码。Federico Bariselli将该代码用MPI并行化并改编为Fortran 90(["TheGambler"](https://www.politesi.polimi.it/handle/10589/177659)代码)。 Stefano Boccelli对其进行了部分重写,以引入混合PIC/DSMC功能。 Pietro Parodi在VKI的研究硕士和博士工作期间开发和使用了该代码,引入了多物种处理、碰撞/反应模型、非结构化网格、各种PIC求解器等功能。 ASCII标志制作:S. Boccelli