- 博客(356)
- 收藏
- 关注
原创 Collecting Integer-Type Variables in Fortran Source Code
【代码】Collecting Integer-Type Variables in Fortran Source Code。
2025-04-20 09:44:32
188
原创 Using fparser to Parse Fortran Code
【代码】Using fparser to Parse Fortran Code。
2025-04-19 21:44:13
105
原创 Python中用默认函数替代模块中的不存在函数
使用result = safe_mod.desired_func() # 如果不存在会调用 default_func简单场景:方法 1 或方法 2需要明确检查:方法 3需要预设参数:方法 4需要大量复用:方法 5注意:如果模块是动态生成的(如插件系统),可能需要结合importlib使用。
2025-04-19 09:28:24
101
原创 ForPy: Fortran 与 Python传递数组和字典示例
ForPy 是一个让 Fortran 程序能够调用 Python 代码的工具库。下面我将展示如何使用 ForPy 在 Fortran 和 Python 之间传递数据,包括数组和字典。
2025-04-19 06:41:09
184
原创 Ways to improve the convergence rate of SIMPLEC in CFD simulation
The SIMPLE (Semi-Implicit Method for Pressure-Linked Equations) and its variant SIMPLEC (SIMPLE-Consistent) are widely used algorithms in Computational Fluid Dynamics (CFD) for solving the pressure-velocity coupling in incompressible flows. While SIMPLEC i
2025-04-18 17:24:55
565
原创 使用Hypre BoomerAMG求解大规模泊松方程示例
下面是一个使用Hypre库中的BoomerAMG预处理器求解大规模泊松方程的C++示例程序。这个示例假设你已经在系统上安装了Hypre库。
2025-04-18 14:21:00
258
原创 FVM方法大规模泊松方程(自由度约5000万)的求解
对于大规模泊松方程(自由度约5000万)的求解,在有限体积法离散后,**多重网格法(Multigrid Method)**通常是效率最高的迭代方法,尤其是几何多重网格(Geometric Multigrid, GMG)或代数多重网格(Algebraic Multigrid, AMG)。通过上述方法,可在现代HPC系统上高效求解5000万自由度的泊松方程,典型强扩展性可达到80%以上(千核规模)。
2025-04-18 14:15:31
302
原创 动态计算FPS(每秒帧数)的方法
在数据处理循环中动态计算FPS(Frames Per Second)是一个常见的需求,特别是在实时系统、游戏开发或视频处理中。
2025-04-18 12:09:51
172
原创 混合精度(Mixed Precision)在科学计算领域应用
混合精度(Mixed Precision)在科学计算领域通过结合高精度(如FP32)和低精度(如FP16/BF16)的计算,显著提升了计算效率和内存利用率,同时保持足够的数值精度。通过合理应用混合精度和利用开源工具,科学计算任务可在精度和效率之间取得平衡。实际应用中建议结合领域需求进行性能分析与验证。
2025-04-18 11:29:35
329
原创 稀疏矩阵的Krylov子空间方法(KSP)迭代求解中,使用Chebyshev多项式作为预条件子
在稀疏矩阵的Krylov子空间方法(KSP)迭代求解中,使用Chebyshev多项式作为预条件子(Chebyshev加速)可以显著加速收敛。,即能在所有多项式中最均匀地振荡。通过将矩阵的特征值区间映射到 ([-1, 1]),Chebyshev多项式可以最大化地抑制该区间外的分量,从而加速收敛。\alpha_k = \frac{2}{\lambda_{\max} + \lambda_{\min}}, \quad \text{或动态调整}此时,( \tilde{\lambda} \in [-1, 1] )。
2025-04-17 14:52:05
800
原创 Fortran 中使用 C_LOC 和 C_F_POINTER 结合的方法来实现不同类型指针指向同一块内存区域
在 Fortran 中,可以使用C_LOC和结合的方法来实现不同类型指针指向同一块内存区域。
2025-04-16 13:39:04
375
原创 OpenFOAM里多分区并行,processor之间的边界是如何实现的,如何实现进程之间的数据交换逻辑
OpenFOAM的并行通信基于MPI,通过processor边界和机制实现高效数据交换。分解网格时明确处理器边界;通过管理数据映射;利用UPstream封装MPI调用完成通信;在求解器和场更新中嵌入通信逻辑。开发者可通过调试相关代码或使用Info输出通信数据,进一步分析具体交换过程。
2025-04-15 11:32:44
972
原创 OpenFOAM中,边界条件的实现
在OpenFOAM中,边界条件的实现采用了面向对象的编程思想,通过继承和多态机制来实现不同类型的边界条件。以下是其继承关系和实现机制的详细说明:OpenFOAM的边界条件继承关系主要围绕以下几个核心基类:以标量场()的固定值边界为例,其继承链如下:典型派生类:固定值:零梯度:自定义边界:用户可通过继承或现有派生类实现新边界类型。3. 关键实现机制(1) 多态行为通过虚函数(如、)实现不同边界条件的特定行为。例如:(2) 工厂模式边界条件的创建通过动态解析,利用宏注册:
2025-04-15 11:30:19
744
原创 在OpenFOAM中自定义边界条件
在OpenFOAM中自定义边界条件是一个常见的需求,尤其是当内置边界条件无法满足特定物理场景时。以下是详细的实现方法和内部机制分析:根据边界类型选择基类:(3) 实现文件 ()(4) 编译与注册在用户库的中添加:在中链接依赖库:编译:2. 内部实现机制(1) 多态与运行时类型识别工厂模式:通过宏注册类名,实现动态创建。字典解析:字典中的字段匹配到对应的类名。(2) 关键函数调用链耦合其他变量4. 调试与验证日志输出:在中添加语句,检查计算值。边界
2025-04-15 11:28:22
687
原创 Folly (Facebook Open-source Library) 功能概述
Folly 是 Facebook 开源的 C++ 基础库集合,提供了高性能、线程安全的组件,用于解决 Facebook 后端服务开发中的常见问题。
2025-04-15 10:35:13
203
原创 C/C++ Plugin 框架设计指南
设计一个灵活且可扩展的plugin框架是许多C/C++项目的常见需求。下面我将介绍几种设计方法和可参考的开源项目。
2025-04-15 10:24:10
75
原创 矩阵平衡(Matrix Balancing)
通过左乘和右乘对角矩阵 ( D ) 和 ( D^{-1} ) 对矩阵 ( A ) 进行平衡,使得变换后矩阵 ( B = DAD^{-1} ) 的行和列范数接近。矩阵平衡(Matrix Balancing)是一种通过相似变换改善矩阵条件数的技术,旨在加速迭代求解的收敛并提高数值稳定性。平衡技术虽增加预处理开销,但能显著提升求解效率,尤其适合病态系统的迭代法和直接法(如 LU 分解)。:使矩阵的双随机性(行和与列和均为1)最大化,适用于非负矩阵。:大型稀疏矩阵或分块矩阵。
2025-04-14 16:14:03
750
原创 CFD中的动量方程非守恒形式详解
方程左侧的 (\frac{D\mathbf{u}}{Dt} = \frac{\partial \mathbf{u}}{\partial t} + (\mathbf{u} \cdot \nabla) \mathbf{u}) 表示速度的。非守恒形式直接体现牛顿第二定律((F=ma)),即流体微元的加速度由压力梯度、粘性力和体积力共同驱动。通过理解非守恒形式的推导和物理意义,可以更灵活地选择适合具体问题的CFD方程形式。((\nabla \cdot \mathbf{u} = 0))或。,描述流体微元的加速度。
2025-04-14 15:32:43
640
原创 C/C++程序中实现Python绑定多种技术路线
在C/C++程序中实现Python绑定有多种技术路线,选择合适的方法取决于项目需求、性能要求和开发效率。
2025-04-14 10:44:34
502
原创 在SU2中使用Python脚本实现用户自定义函数(UDF)
获取边界信息# 修改边界条件geometry.marker[marker].GetBoundaryHeatFlux()[:] = ... # 设置自定义值# 设置自定义初始条件nodes[i].SetSolution(...) # 设置初始值# 计算自定义目标函数值# ... 计算逻辑 ...
2025-04-14 10:16:13
1180
原创 在AMGCL中使用多个GPU和多个计算节点求解大规模稀疏矩阵方程
AMGCL是一个高效的代数多重网格(AMG)求解器库,主要用于求解大规模稀疏线性系统。
2025-04-13 19:33:52
503
原创 在AMGCL中使用混合精度求解稀疏矩阵方程
AMGCL是一个高效的C++库,用于求解大型稀疏线性系统。使用混合精度(即在不同计算阶段使用不同的浮点精度)可以显著提高性能,同时保持足够的精度。
2025-04-13 17:33:02
418
原创 使用Trilinos进行稀疏矩阵方程迭代求解及配置指南
Trilinos是一个强大的科学计算软件包,特别适合求解大规模稀疏线性系统。下面我将介绍如何使用Trilinos的Krylov子空间方法(KSP)和预处理器来求解稀疏矩阵方程。
2025-04-13 17:30:23
376
原创 Trilinos稀疏矩阵求解库KSP的混合精度支持
Trilinos的KSP (Krylov Subspace Package)稀疏矩阵求解器确实支持混合精度优化策略,主要通过其底层组件实现。
2025-04-13 17:27:49
249
原创 HYPRE 是否支持混合精度
如需更具体的配置,建议直接查阅HYPRE用户手册或提交Issue至其GitHub仓库。)是一个广泛用于大规模并行稀疏线性方程组求解的库,主要面向科学计算。:参数名可能因版本而异,例如。
2025-04-13 17:20:20
311
原创 使用HYPRE进行方程迭代求解及GPU加速
HYPRE (High Performance Preconditioners) 是一个由劳伦斯利弗莫尔国家实验室开发的大型稀疏线性方程组求解库,支持多种迭代求解器和预条件器,并且可以利用GPU进行加速计算。
2025-04-13 17:13:23
363
原创 在PETSc中使用NVIDIA GPU卡(多卡多机环境)
PETSc (Portable, Extensible Toolkit for Scientific Computation) 支持通过CUDA在NVIDIA GPU上进行加速计算。下面我将介绍如何编译支持GPU的PETSc,以及如何在多卡多机环境下使用GPU。
2025-04-13 17:06:38
249
原创 PETSc编译配置优化指南
PETSc (Portable, Extensible Toolkit for Scientific Computation) 是一个广泛使用的科学计算库,合理的编译配置可以显著提高其计算性能。
2025-04-13 17:02:30
397
原创 编译PETSc的Python绑定(petsc4py)指南
PETSc的Python绑定(petsc4py)允许你在Python中使用PETSc的强大功能。
2025-04-13 16:59:53
208
原创 使用 pybind11 将 C/C++ 的 struct 数据传递给 Python
在 C/C++ 程序中嵌入 Python 解释器并使用 pybind11 传递复合类型 struct 数据时,有几种主要方法可以实现。下面我将详细介绍这些方法。
2025-04-13 16:11:55
400
原创 使用 pybind11 在 C++ 和 Python 之间共享数组数据,同时由 C++ 管理数组的创建和销毁
pybind11 是一个优秀的工具,可以在 C++ 和 Python 之间建立桥梁。下面我将展示如何使用 pybind11 在 C++ 和 Python 之间共享数组数据,同时由 C++ 管理数组的创建和销毁。
2025-04-13 16:06:33
195
原创 IEEE-754标准中单精度(32位)和双精度(64位)浮点数的表示范围及精度
类型位数最大正数最小正规格化数最小非规格化数单精度32双精度64此范围涵盖了从极小的非规格化数到极大的有限数,同时包含±∞和NaN的特殊值。
2025-04-13 13:01:44
356
原创 通过pybind11在C++中调用Python函数并获取返回值
通过以上方法,你可以灵活地在C++中调用Python函数并处理返回值。假设有一个Python模块。
2025-04-13 12:48:44
395
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人