自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 收藏
  • 关注

原创 有限元方法中的数值技术:稀疏矩阵存储方式

本文介绍了三种稀疏矩阵存储格式:CSR(按行压缩)、CSC(按列压缩)和COO(坐标格式)。CSR通过val、col_ind和row_ptr三个数组存储非零元素及其位置;CSC类似但按列优先;COO直接记录每个非零元的行号、列号和值。文中给出了Fortran代码实现将稠密矩阵转换为这三种格式的方法,并以3×3矩阵为例展示了转换结果。实际应用中,可预先统计非零元素数量,在装配过程中直接填充稀疏格式,最后统一处理。三种格式各有特点,适合不同计算需求。

2025-09-04 16:35:56 418

原创 Python_occ 学习记录 | 细观建模(2)

混凝土随机骨料建模方法 本文介绍了一种基于Python-OCC的混凝土随机骨料二维建模方法。主要内容包括: 基本建模方法: 采用随机采样算法在指定区域内布置圆形骨料 支持均匀分布和幂律分布(模拟Fuller曲线)两种粒径分布方式 可控制骨料占空比、粒径范围和最小间距等参数 进阶功能: 引入界面过渡区(ITZ)建模 实现更致密的骨料堆积算法(大粒径优先+shrink-to-fit) 支持孔洞建模和布尔运算 采用模糊容差提高计算稳定性 技术实现: 使用Python-OCC进行几何建模和可视化 提供多种分布采样函

2025-09-04 16:09:47 354

原创 Python_occ 学习记录 | 细观建模(1)

本文介绍了CAD建模中的几何与拓扑概念区别,以及如何在OpenCascade中实现挖孔和拉伸操作。几何描述形状的数学定义(如点、圆),而拓扑描述几何间的连接关系(如边、面)。通过创建外环矩形面和内环反向圆环,可实现挖孔效果。代码演示了创建带孔平面并将其拉伸为三维实体的过程,包括几何定义、拓扑构建和实体生成等关键步骤。

2025-09-03 17:22:41 277

原创 有限元方法中的数值技术:预处理共轭梯度法 PCG (2)

摘要: 本文介绍了基于Cholesky分解的预处理共轭梯度法(PCG),用于求解对称正定线性系统。核心步骤包括:1)对矩阵A进行Cholesky分解($A=LL^T$);2)通过前向/后向替换求解预处理向量$z$;3)迭代更新近似解。算法在Fortran中实现,通过三角系统求解替代Jacobi预处理,保留标准PCG框架。代码展示了残差计算、步长更新及收敛判断,适用于高效求解大规模稀疏问题。

2025-09-03 16:52:27 362

原创 Python_occ 学习记录 | 网格划分

【代码】Python_occ 学习记录 | 网格划分。

2025-09-01 08:52:04 261

原创 Python_occ 学习记录 | display显示

可以获得该形状的特征。后处理显示时更加灵活。(Hidden Line Removal,隐藏线消除模式),在这个模式下,物体只显示轮廓线和可见边。

2025-08-29 11:00:48 611

原创 有限元方法中的数值技术:预处理共轭梯度法PCG(1)

摘要:本文介绍了预处理共轭梯度法(PCG)的基本概念及其在求解大型稀疏对称正定线性方程组中的应用。PCG通过引入预处理矩阵$\mathbf{M}$改善系统谱性质,加速收敛。重点阐述了Jacobi预处理器的分量形式实现,包括预处理向量计算、步长更新等核心公式,并提供了Fortran代码示例。该方法特别适用于有限元计算中的稀疏矩阵问题,后续将讨论适应不同稀疏存储格式的改进方案。

2025-08-29 10:33:36 897

原创 有限元方法中的数值技术:共轭梯度法

摘要:本文介绍了共轭梯度法求解对称正定线性方程组的计算原理及Fortran实现。该方法通过构造共轭方向显著提升收敛速度,详细给出了算法步骤和收敛判据。文中提供了完整的Fortran子程序代码及数值算例,对一个4×4矩阵方程组进行求解,结果显示该方法在4次迭代内即达到精确解。该实现适用于科学计算领域,可作为高效求解大型线性系统的参考方案。

2025-08-28 09:34:24 673

原创 Python_occ 学习记录 | colorbar

本文介绍了在PythonOCC中创建和自定义颜色标尺(colorbar)的两种方法。基础设置部分展示了如何使用AIS_ColorScale类创建简单的颜色标尺,包括设置数值范围、分段数、位置和渲染层级等参数。高度自定义部分则封装了一个add_color_scale函数,支持更丰富的配置选项,如自定义标题、标签格式、字体、颜色映射等,并可生成类似Abaqus风格的标尺。该函数利用matplotlib的颜色映射功能,实现了灵活的颜色配置,同时支持文本样式、位置偏移等细节调整。两种方法都可在3D模型可视化中有效显

2025-08-28 09:21:21 650

原创 有限元方法中的数值技术:最速下降法

摘要:本文介绍了最速下降法求解对称正定线性方程组的原理及Fortran实现。该方法通过沿负梯度方向迭代逼近解,具有简单高效的特点。文中给出了Fortran子程序代码,并以4阶线性方程组为例进行数值验证。结果显示经过19次迭代后解向量收敛,验证了该算法的有效性。该实现适用于科学计算中大型线性方程组的求解需求。

2025-08-27 10:36:19 387

原创 有限元方法中的数值技术:Jacobi超松弛迭代法

本文介绍了Jacobi超松弛迭代法的原理及其Fortran实现。该方法通过引入松弛因子ω加速线性方程组求解,公式为x_i^(k+1)=x_i^(k)-ω/a_ii(∑a_ijx_j^(k)-b_i)。文中给出了Fortran子程序实现,包括同步迭代、精度控制和结果输出。通过一个4×4方程组的数值算例展示了迭代过程,当ω=1.04时,经过18次迭代达到1e-7精度。该方法在ω=1时退化为标准Jacobi迭代,适当选择ω>1可加速收敛。

2025-08-26 11:26:20 364

原创 Python_occ 学习记录 |尺寸标注

本文介绍了使用PythonOCC库进行CAD图形标注的方法,重点演示了半径标注和直径标注的实现。通过代码示例展示了如何创建几何对象、设置标注样式(包括箭头、线条、文字等属性),并详细说明了不同标注类型的应用场景。具体包括:1) 半径标注的基本实现;2) 箭头样式自定义;3) 标注线条颜色设置;4) 数值格式控制;5) 3D箭头/文字效果;6) 直径标注的实现方法。文章提供了完整的代码示例和效果截图,适合CAD开发人员参考使用。

2025-08-26 10:51:15 414

原创 有限元方法中的数值技术:广义 Richardson 迭代法

广义Richardson迭代法是一种求解线性方程组的数值方法,其特点是允许每个分量采用不同的松弛因子。该方法通过同步迭代格式实现,其中各分量独立更新,松弛因子矩阵为对角阵。Fortran实现展示了该算法的具体编程过程,包括迭代更新和精度控制。数值案例验证了该方法的有效性,迭代过程显示解向量逐步收敛。该方法适用于需要分量独立步长的线性方程组求解场景。

2025-08-25 13:17:08 900

原创 Python_occ 学习记录 | 阵列

OCC阵列实现方案 OCC(Open CASCADE)没有内置阵列方法,但可通过几何变换实现。文章介绍了三种阵列实现方式: 线性阵列:沿指定方向等距平移复制,参数包括实例数量、位移向量,可选择是否包含原件。 网格阵列:在XY平面内排列行列式实例,通过双重循环实现行列平移复制。 环形阵列:绕指定轴等角度旋转复制,参数包括实例数量、旋转轴、总角度等,支持设置起始角度。 所有阵列方法都返回实例列表和组合体(Compound),便于统一处理。实现基于几何变换(平移/旋转)计算位置后复制物体,核心思路是循环+变换操作

2025-08-25 13:04:16 238

原创 有限元方法中的数值技术:Richardson同步迭代法

本文介绍了Richardson迭代法及其Fortran实现。该迭代法用于求解线性方程组Ax=b,通过分量更新公式逐步逼近解。Fortran子程序采用同步迭代方式,所有新值基于上一轮迭代结果计算。数值案例展示了3×3矩阵的求解过程,迭代10次后收敛。实现要点包括:设置松弛因子ω=1.2,最大迭代次数1000,精度阈值1e-7,使用norm2函数计算误差。程序输出每步迭代结果,最终得到满足精度的近似解。

2025-08-23 09:41:58 637

原创 Python_occ 学习记录 | 2D/3D圆角

本文介绍了使用OpenCASCADE工具包在二维和三维几何中进行圆角处理的方法。二维部分通过ChFi2d_AnaFilletAlgo类为两条相交直线创建圆角;三维部分使用BRepFilletAPI_MakeFillet类在实体模型上生成圆角,支持全局或指定边处理,并提供了不同数学表示方式选项。文中包含代码示例展示如何创建基本几何体、添加圆角特征,以及基于几何特征筛选特定边进行圆角处理。

2025-08-23 09:26:25 295

原创 有限元方法中的数值技术:逐次超松弛迭代法SOR

本文介绍了SOR(逐次超松弛)迭代法求解线性方程组的原理与Fortran实现。SOR方法在Gauss-Seidel基础上引入松弛因子ω加速收敛,当ω>1时为超松弛迭代。文章给出了分量形式的迭代公式、推荐松弛因子范围和算法步骤,并提供了包含收敛性判断的Fortran代码实现。通过一个4×4线性方程组的数值案例,展示了迭代过程及收敛效果。该方法适用于对角占优矩阵,通过调整松弛因子可优化收敛速度。

2025-08-22 09:36:11 935

原创 Python_occ 学习记录 | 几何变换

OpenCascade(OCC)提供了gp_Trsf类实现几何变换,包括平移、旋转、缩放和镜像操作。通过BRepBuilderAPI_Transform应用变换到形体上。变换方法包括:SetTranslation平移、SetRotation旋转(需指定轴和角度)、SetScale缩放(设置中心和比例因子)以及三种镜像方式(点、线、平面)。文中还展示了一个封装函数transform_shape,支持通过参数字典指定不同变换类型和参数,简化了变换操作流程。最后通过示例演示了各种变换效果,包括平移、旋转、缩放和镜

2025-08-22 09:14:25 216

原创 Python_occ 学习记录 | 布尔运算

本文介绍了三种OpenCASCADE布尔运算操作:差集(Cut)、并集(Fuse)和交集(Common)。通过Python代码示例展示了基本使用方法,并针对复杂场景提出了改进方案。在差集运算中,通过设置模糊容差值(SetFuzzyValue)和并行计算(SetRunParallel)来优化多布尔运算的稳定性和效率。类似方法也适用于并集和交集运算,解决了共面/微小间隙导致的计算失败问题。文中还提供了随机圆柱体与立方体进行多次差集运算的案例,展示了改进方法的实际效果。这些技术对CAD建模中处理复杂几何体布尔运算

2025-08-21 09:56:48 454

原创 Python_occ 学习记录 | 二维基础建模

本文介绍了使用PythonOCC库创建基本几何元素的方法。内容包括:1) 点、线、面的创建,通过BRepBuilderAPI模块实现从点到线再到面的构建流程;2) 圆和椭圆的创建方法,分别使用GC_MakeCircle和GC_MakeEllipse函数;3) 三种圆弧创建方式:三点画弧、圆上两点画弧和通过起点加扫角画弧。所有示例代码都包含图形显示功能,并提供了可视化效果示意图,展示了不同几何元素的构建过程和结果。

2025-08-20 08:42:54 321

原创 Python_occ学习记录 | 三维模型创建

本文介绍了Python_occ库中OCC.Core.BRepPrimAPI模块的基础使用,涵盖7种基本几何体的创建方法。重点演示了长方体和球体的构建流程,包括几何创建、可视化设置(颜色、透明度)和多视角显示。特别展示了球体切割技术,通过定义剖切平面将球体分为上下两部分,并生成剖面圆盘实现高亮显示。文中提供了完整的代码示例,涉及几何操作、布尔运算和可视化技巧,为Python_occ开发者提供了实用的参考案例。

2025-08-19 08:22:57 734

原创 有限元方法中的数值技术:Jacobi迭代法

本文介绍了求解线性方程组 $\mathbf{Ax}=\mathbf{b}$ 的 Jacobi 迭代法。该方法通过逐项展开推导出迭代公式 $\mathbf{x}^{(k+1)} = \mathbf{Bx}^{(k)} + \mathbf{g}$,并给出了具体的计算流程和收敛条件。文中提供了 Fortran 实现代码,包括初始化、迭代主循环和收敛性判断等步骤。通过一个数值案例展示了迭代过程,并讨论了基于对角占优的收敛性判断方法。在子程序中增加了自动检查对角占优的功能,若矩阵不满足严格对角占优条件会给出警告并终止

2025-08-14 09:26:36 1047

原创 有限元方法中的数值技术:Gauss-Seidel迭代法

Gauss-Seidel迭代法求解线性方程组 摘要:Gauss-Seidel迭代法是一种通过矩阵分解(D,L,U)求解线性方程组Ax=b的迭代算法。其核心特点是每次迭代时即时使用已更新的分量值,比Jacobi方法收敛更快。算法实现步骤包括:1)初始化近似解;2)按分量更新公式迭代计算,其中已计算分量使用新值;3)通过误差范数判断收敛。文中给出了Fortran实现代码,包括对角占优检查、迭代更新和收敛判断。最后通过一个3阶方程组的数值案例验证了算法的有效性。该方法适用于严格对角占优矩阵,能高效求解大规模线性系

2025-08-13 09:47:43 501

原创 有限元方法中的数值技术:行列式、求逆、矩阵方程

摘要: 本文介绍了利用矩阵分解求解行列式、矩阵方程和矩阵逆的数值方法。首先通过$LU$分解(Crout方法)计算行列式,展示了一个5阶矩阵的行列式求解实例。其次,针对矩阵方程$AX=B$,提出了基于列主元高斯消元的统一求解方法,避免了重复计算,并通过4×4矩阵的案例验证了算法有效性。最后,将矩阵求逆问题转化为求解$AX=I$的矩阵方程,使用相同的求解框架实现逆矩阵计算,并以3阶矩阵为例进行了验证。所有算法均采用Fortran实现,并给出了完整的代码示例和数值结果。

2025-08-12 10:22:19 432

原创 有限元方法中的数值技术:病态线性方程组

本文介绍了一种通过迭代改进提高线性方程组求解精度的方法。针对直接法求解过程中产生的数值误差,该方法通过建立残差方程并迭代修正解向量,有效恢复计算精度。作者详细阐述了算法原理,包括误差分析、迭代流程和终止条件,并提供了Fortran实现代码。数值案例表明,即使初始解误差较大,经过1-2次迭代即可显著提高解的精度。该方法特别适用于病态方程组的求解,且与迭代法有本质区别,仍属于直接法的改进范畴。文中还给出了完整的6维线性方程组算例及其迭代过程展示,验证了该方法的有效性。

2025-08-11 09:08:10 378

原创 json-fortran库的使用

本文介绍了如何在Fortran中使用json-fortran库处理JSON配置文件。首先详细说明了库的编译安装方法,包括CMake配置和使用gfortran编译器。接着展示了如何在Makefile中集成该库进行项目构建。最后通过示例代码演示了如何读取JSON文件中的各种数据类型(字符串、数值、布尔值等),包括嵌套对象和数组的访问方式。该库为Fortran程序提供了便捷的JSON解析功能,避免了自行编写解析模块的繁琐工作。

2025-08-10 10:57:20 383

原创 有限元方法中的数值技术:追赶法求解三对角方程

摘要:本文介绍了求解三对角线性方程组的追赶法原理及Fortran实现。通过Doolittle分解将矩阵分解为下三角L和上三角U矩阵,推导出追赶法的递推公式。文中给出了完整的Fortran子程序实现,并通过一个4阶三对角矩阵的数值算例验证了算法的有效性。测试案例显示,该算法能准确求解三对角方程组,结果与理论值一致。该方法适用于具有特定稀疏结构的线性方程组求解问题。

2025-08-10 09:38:55 475

原创 有限元方法中的数值技术:Cholesky矩阵分解

本文介绍了对称正定矩阵的Cholesky分解原理及其Fortran实现。Cholesky分解将矩阵A分解为下三角矩阵L与其转置的乘积(A=LL^T),其中L对角线元素为正时分解唯一。文章详细给出了分解的计算步骤和Fortran子程序,并提供了两个数值案例:一个4×4矩阵的分解实例和利用分解求解线性方程组Ax=b的示例。代码实现了正向和反向替换求解过程,验证了解的正确性。该方法在科学计算中具有重要应用价值,相关实现可参考文献[1]。 (字数:148)

2025-08-09 09:12:56 865

原创 有限元方法中的数值技术:Doolittle矩阵分解

本文介绍了矩阵LU分解的Doolittle算法原理及Fortran实现。算法通过将矩阵A分解为下三角矩阵L和上三角矩阵U,给出了具体的计算公式和计算步骤。Fortran程序实现了Doolittle分解,并通过数值案例验证了算法的正确性。文章还展示了如何利用LU分解求解线性方程组Ax=b,通过先解Ly=b再解Ux=y的两步法得到解向量x。最后提供了一个4×4矩阵的求解实例,给出了具体的Fortran代码和计算结果。该算法在科学计算和工程领域具有重要应用价值。

2025-08-08 08:58:31 667

原创 有限元方法中的数值技术:Crout矩阵分解

摘要:本文介绍了方阵的LU分解方法,重点讨论了Crout分解(U为单位上三角矩阵)的实现过程。通过逐列计算下三角矩阵L和逐行计算上三角矩阵U的算法,给出了Fortran程序实现,并验证了3×3矩阵的分解实例。结果显示,原矩阵A被成功分解为L和U的乘积形式。该分解方法在科学计算中具有重要应用价值,程序实现采用隐式双精度实数声明以提高计算精度。参考文献为宋叶志等人编著的Fortran科学计算教材。

2025-08-07 09:14:29 1111

原创 有限元方法中的数值技术:稀疏方程组直接求解

摘要:针对稀疏矩阵中大量零元素的特点,对列选主元高斯消元法进行优化,通过增加条件判断避免对零元素的运算,从而显著减少计算量。以8阶稀疏矩阵为例,改进后将消元次数从28次降至7次,同时保证计算结果一致。该方法不涉及压缩存储,适用于FORTRAN数值计算环境。参考文献为徐士良编著的《FORTRAN常用算法程序集(第二版)》。

2025-08-06 10:27:52 663

原创 有限元方法中的数值技术:列主元高斯消元法

本文介绍了列主元高斯消元法的计算原理及Fortran实现。针对消去过程中可能出现的0主元或数值不稳定问题,提出通过选取列主元来保证计算精度。文章详细阐述了算法步骤,包括主元选择、行交换和消元过程,并给出了完整的Fortran代码实现。通过一个6阶线性方程组的数值案例验证了方法的有效性,最终求解结果精确到小数点后6位。该方法适用于病态方程组的求解,能有效提高数值稳定性。

2025-08-05 09:45:38 749

原创 有限元方法中的数值技术:高斯消元法

高斯消元法通过初等行变换将增广矩阵转化为上三角矩阵,再回代求解线性方程组。具体步骤包括:1)构建增广矩阵[A|b];2)进行消元操作,第k次变换时计算乘数l_ik,并按公式更新矩阵元素;3)转换为上三角矩阵后运用回代公式求解。数值案例展示了4×4方程组的求解过程,Fortran子程序实现了该算法,输出结果验证了方法的有效性。该方法适用于一般线性方程组的数值求解,但需注意主元选取等数值稳定性问题。

2025-08-04 09:12:35 257

原创 有限元方法中的数值技术:三角矩阵求解

本文介绍了三角方程组(包括上三角和下三角)的数值解法及其Fortran实现。作者分享了上三角方程组的回代求解法和下三角方程组的前代求解法,并提供了完整的Fortran代码示例。文章强调通过编程实践理解数值计算原理的重要性,特别适合研究生阶段学习数值分析的学生。代码示例包含矩阵初始化、求解过程和结果输出,演示了如何用Fortran实现三角方程组的数值求解。参考文献为Fortran科学计算提供了理论基础。

2025-08-03 13:49:07 880

原创 TransferMatrix: 导出Abaqus刚度矩阵

"TransferMatrix"工具可导出Abaqus中的刚度/质量矩阵等数据至Matlab或CSV,支持多种矩阵类型。免费获取。

2025-07-25 12:54:33 2238

原创 有限元基础编程 | “选择性减缩积分”理论推导&数值实现

低阶单元完全积分在分析几乎不可压缩问题(泊松比接近0.5)时,易出现体积自锁,精度是非常差的!为适应此类情况,前辈们拓展了积分方案(减缩积分)以及各种数值技术来适应不可压问题,其中选择性减缩积分和B-BAR技术比较具有代表性。

2024-08-05 09:53:52 1838 2

原创 自研有限元程序的减缩积分单元如何添加沙漏刚度(理论解释+数值实现)

今天分享的是减缩积分单元如何在原有单元刚度矩阵的基础上添加沙漏刚度,以防止虚假沙漏模态的出现。

2024-07-26 09:57:09 1397

原创 有限元分片试验 | 从理论到手搓代码step-by-step数值实现!

在我们自己有限元编程的过程中,数值精度验证方式通常与商软、试验、理论解做对比,在本次分享中给大家分享一个除了上述方法外的精度验证方法—分片试验(patch test)有时也称拼片试验。

2024-07-19 10:11:56 1302

原创 《有限元基础编程百科全书》| 平面等参四边形单元

由于实际问题的复杂性,需要使用一些几何形状不太规整的单元来逼近原问题,特别是在一些复杂的边界上,有时只能采用不规整单元。但直接研究这些不规整单元则比较困难,如何利用几何规整单元(如三角形单元、矩形单元、正六面体单元)的结果来研究(推导)所对应的几何不规整单元(叫做参数单元(parametric element))的表达式?这将涉及到几何形状映射、坐标系变换(等参变换、非等参变换)等问题。

2024-06-27 15:46:36 2337 1

原创 Matlab“稍作修改”Abaqus-odb结果 | 提取三维装配体Mises应力

Matlab同样也是一款强大的商业数值计算软件,其可视化能力强的一批,作为兴趣研究,可多玩玩这些工具联合使用的效果,这次将这两款工具联合使用,介绍Matlab如何读取Abaqus的.inp、.odb文件?

2024-06-12 20:28:39 1712

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除