- 博客(480)
- 收藏
- 关注
原创 PyLops 使用与介绍
PyLops 是一个强大的工具,特别适合处理大规模线性代数问题,在地球物理、图像处理、信号处理等领域有广泛应用。它的主要优势在于能够高效地表示和操作大型线性系统,而无需显式存储大型矩阵,从而节省内存并提高计算效率。
2025-05-19 11:08:23
277
原创 NVC++ 介绍与使用指南
支持 C++17 和部分 C++20 特性内置对 CUDA 的支持基于 LLVM 技术针对 NVIDIA GPU 优化支持 OpenMP 和 OpenACC 指令。
2025-05-17 16:22:41
540
原创 大规模CFD仿真计算中,SIMPLE或者PISO算法中加速压力场方程迭代求解
1. 压力方程求解器的选择与优化代数多重网格法(AMG)压力方程(泊松型)的求解通常占主要计算时间,AMG对这类椭圆型方程具有最优的收敛速度(接近O(n))。优先选用基于AMG的求解器(如Hypre、PETSc或开源库AMGCL)。调整AMG参数:粗化策略(Ruge-Stuben或PMIS)、平滑迭代次数(通常1-2次Gauss-Seidel)、循环类型(V-cycle比W-cycle更快)。Krylov子空间方法预处理结合AMG预处理的CG或GMRES方法,适用于非对称矩阵(如瞬态PISO)
2025-05-16 17:17:49
1005
原创 Recycling Krylov Subspace 方法解释与开源实现
Recycling Krylov Subspace(循环Krylov子空间)方法是迭代求解线性方程组时提高效率的一种技术,特别适用于需要连续求解多个相关线性系统的情况。
2025-05-16 17:02:39
464
原创 AMGX里“One-ring“和“Two-ring“概念和解释
在AMGX函数库(一个用于大规模并行求解线性方程组的GPU加速代数多重网格库)中,"One-ring"和"Two-ring"通常与网格或图结构中的邻域概念相关。具体行为需结合AMGX的文档或源码确认,不同版本的实现可能有所不同。如果AMGX的API或配置文件中出现相关参数(如。
2025-05-15 16:15:53
465
原创 OpenSHMEM 介绍和使用指南
OpenSHMEM 是一个用于并行计算的标准化 API,它提供了一种分区全局地址空间 (PGAS) 编程模型。OpenSHMEM 最初由 Cray 公司开发,后来成为一个开源项目,旨在为高性能计算提供高效的通信接口。
2025-05-14 19:39:20
570
原创 OpenUCX 库介绍与使用指南
对于纯粹的单机多GPU环境,通常不需要额外安装OpenUCX,NVIDIA的NVLink和NCCL已经提供了优化的通信路径。但在需要与分布式系统集成或使用特定UCX功能的场景下,安装OpenUCX可能是有益的。
2025-05-14 19:21:29
438
原创 Thrust库中的Gather和Scatter操作
Thrust是CUDA提供的一个类似于C++ STL的并行算法库,其中包含两个重要的数据操作:gather(聚集)和scatter(散开)。
2025-05-14 19:08:15
505
原创 Fortran 中,你可以使用内部文件(internal file)的方式将内容追加写入到一个字符串
在 Fortran 中,你可以使用内部文件(internal file)的方式将内容追加写入到一个字符串。内部文件允许你像操作外部文件一样操作字符串变量。
2025-05-13 10:45:58
396
原创 IDR方程迭代求解算法介绍与比较
IDR (Induced Dimension Reduction) 是一种用于求解大型稀疏线性方程组的迭代方法,由Peter Sonneveld和Martin B. van Gijzen于2008年提出。它是Krylov子空间方法家族中的一员,特别适合于非对称线性系统的求解。
2025-05-12 17:42:43
786
原创 在Lua中使用轻量级userdata在C/C++之间传递数据和调用函数
轻量级userdata是Lua中一种高效的数据传递机制,它允许你在C/C++和Lua之间传递指针而不创建完整的userdata对象。
2025-05-08 15:22:35
586
原创 DUNE 开源项目介绍与使用指南
DUNE (Distributed and Unified Numerics Environment) 是一个用于求解偏微分方程(PDE)的模块化开源工具箱,采用C++编写。它提供了解决科学和工程中偏微分方程所需的网格抽象、离散化方法和求解器。
2025-05-08 14:28:01
362
原创 OpenFOAM中实现自适应网格加密
在OpenFOAM中实现自适应网格加密(Adaptive Mesh Refinement, AMR)主要通过动态网格细化技术来完成,通常结合场变量梯度或误差指示器来自动调整网格密度。通过上述步骤,OpenFOAM可根据物理场特征动态优化网格,在关键区域(如激波、界面附近)自动提高分辨率,平衡计算效率与精度。:初始网格预留加密空间,避免过度初始细化。教程)开始测试参数敏感性。
2025-05-08 11:51:38
392
原创 使用OpenFOAM中的VOF模型仿真两相流
OpenFOAM中的VOF(Volume of Fluid)方法是模拟两相流界面的常用方法,特别适用于不相溶流体的界面追踪。
2025-05-08 11:48:09
447
原创 油气地震资料处理中,单程波偏移成像介绍
单程波偏移是工业界主流方法之一(如Gazdag相移法、SSF),尤其在与**逆时偏移(RTM)**结合时(如作为初始模型)可平衡效率与精度。(One-Way Wave Equation),即假设地震波在传播过程中仅沿一个主导方向(通常为向下或向上)传播,忽略反向散射波。是一种基于波动方程的成像方法,其核心思想是通过近似波动方程来简化计算,实现对地下构造的快速、高效成像。其中 ( p ) 为波场,( v ) 为速度,( \omega ) 为角频率。其中 ( * ) 表示复共轭,实现上行波与下行波的干涉成像。
2025-05-08 11:28:20
673
原创 油藏模拟开源资源
在油藏模拟(Reservoir Simulation)领域,有许多开源工具和资源可供使用,涵盖从基础建模到高级数值模拟的各个环节。注意:开源工具通常需要一定的编程和油藏工程基础,部分工具文档可能不够完善,建议结合论文或社区(如GitHub Issues)学习。
2025-05-08 11:22:55
862
原创 CFD中Mixture模型
Mixture模型通过简化多相流的动力学描述,在计算效率和精度之间取得平衡,适用于相间耦合紧密且分布均匀的流动问题。使用时需结合具体场景评估其适用性,并合理选择相间作用力模型。是一种用于模拟多相流的简化方法,适用于相间耦合较强且相分布均匀的流动场景(如气泡流、颗粒悬浮流等)。{dr,k}):漂移速度((\vec{v}在CFD(计算流体力学)仿真中,
2025-05-08 10:49:57
584
原创 在地震资料柯希霍夫积分法深度偏移大规模成像中,五维旅行时表高效处理策略
在处理地震资料柯希霍夫积分法深度偏移中,当成像规模非常大时,五维旅行时表(通常包括炮点坐标、检波点坐标和成像点坐标)会带来巨大的存储和计算挑战。通过上述策略,可显著降低五维旅行时表的存储和计算压力,同时保持成像精度。实际选择需根据硬件资源、数据规模和精度要求灵活调整。
2025-05-07 16:53:50
349
原创 柯希霍夫(Kirchhoff)积分法深度偏移的孔径(Aperture)选择
在地震资料处理中,柯希霍夫(Kirchhoff)积分法深度偏移的孔径(Aperture)选择是关键步骤之一,直接影响成像质量和计算效率。孔径函数决定了参与偏移计算的绕射能量范围(即围绕成像点的空间范围)。通过合理选择孔径函数,柯希霍夫偏移能够有效平衡成像精度与计算效率,尤其在复杂地质条件下表现优异。实际应用中需结合工区地质特征和数据处理目标进行参数调优。
2025-05-07 16:47:34
448
原创 HPDDM库使用指南与示例
实现了多种域分解方法(如ASM、RAS、OSM、FETI等)支持多种预条件子(如LU、Cholesky、ILU等)可与PETSc、SLEPc等库集成支持MPI并行计算提供C++接口。
2025-05-07 15:47:03
323
原创 在Python和C/C++之间共享std::vector<std::vector<int>>数据
在Python和C/C++之间共享嵌套向量数据()可以通过几种方法实现。
2025-05-07 14:54:27
381
原创 在Python中调用C/C++函数并与MPI集成
要在Python环境中调用C/C++函数并让Python和C/C++端都能使用MPI进行通信,有几种方法可以实现。下面我将介绍几种常见的方法。
2025-05-07 11:57:41
423
原创 C/C++ Python绑定工具: nanobind 使用指南与示例
nanobind 是一个高效、现代的 C++/Python 绑定工具,特别适合需要高性能和快速开发的项目。通过上面的示例,你可以开始将你的 C++ 代码暴露给 Python 使用。
2025-05-07 11:23:02
202
原创 在Star-CCM+中实现UDF并引用场数据和网格数据
Star-CCM+中的用户自定义函数(UDF)允许用户通过Java或C/C++编程扩展软件功能。下面我将详细介绍如何实现UDF并引用模拟数据。
2025-05-06 17:30:09
593
原创 在Fluent中使用Python脚本实现UDF并访问场数据和网格数据
Fluent软件允许用户通过用户定义函数(UDF)来扩展其功能。虽然传统的UDF是用C语言编写的,但较新版本的Fluent也支持通过Python脚本来实现类似功能。
2025-05-06 17:20:41
407
原创 Fluent UDF底层实现逻辑解析及示例
/ 定义速度剖面UDF// 存储位置坐标face_t f;// 获取通道高度(假设y方向)// 假设通道高度为0.1米// 遍历所有面// 获取面中心坐标// 计算y坐标(归一化)// 设置抛物线速度剖面 (中心最大速度1m/s)
2025-05-06 17:09:22
315
原创 GIMP插件机制设计与Python实现详解
插件发现机制:GIMP在启动时会扫描特定目录寻找插件插件接口:定义了一组标准函数和调用约定进程间通信:插件通常作为独立进程运行,通过协议与主程序通信语言绑定:支持多种语言(C, Python, Scheme等)实现插件GIMP的Python插件系统提供了强大的图像处理扩展能力。通过定义标准接口和使用GIMP Python API (gimpfu),开发者可以轻松创建自定义滤镜和工具。创建Python脚本并放在正确的插件目录使用register()函数注册插件实现核心功能函数。
2025-05-06 16:36:21
495
原创 Blender插件机制设计与Python实现
Blender的插件机制是其强大扩展性的核心,允许开发者通过Python创建自定义功能。下面我将详细介绍Blender插件系统的设计原理,并提供一个完整的示例。
2025-05-06 16:34:03
430
原创 C/C++工程中的Plugin机制设计与Python实现
endif// 定义插件类型// 插件基本信息结构// 插件操作接口// 获取插件信息// 初始化插件// 执行插件功能// 清理插件// 插件注册函数原型#endif。
2025-05-06 16:31:12
493
原创 Fortran 中的函数和子程序指针使用
在 Fortran 中,可以使用过程指针(procedure pointers)来指向函数或子程序,这提供了类似于函数指针的功能。下面我将通过示例程序说明如何在 Fortran 中使用函数和子程序指针。
2025-05-06 14:59:44
329
原创 深度学习在油气地震资料反卷积中的应用
在油气地震勘探中,反卷积(Deconvolution)是一种重要的信号处理技术,用于提高地震资料的分辨率。传统方法(如维纳滤波、预测反卷积等)存在对噪声敏感、假设条件严格等局限。深度学习方法通过数据驱动的方式学习更复杂的反卷积映射关系。
2025-05-06 14:46:06
858
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人