首页/文章/ 详情

damask 子程序在windows平台直接编译使用

8月前浏览792

前面介绍了damask2.03版本和abaqus配合使用,以及damask3.0版本和marc配合使用的案例介绍,当前推文的主要介绍如何把damask子程序正确移植到windows平台下并被abaqus正确调用,把 DAMASK 跑在 Windows 上这件事,看起来像是在“折腾编译环境”,但它真正的价值并不是让程序“能跑”,而是让晶体塑性与位错密度这类微观机制模型真正进入一个更高效、更可复现、更贴近工程实际的工作流。

很多材料模拟研究者和工程仿真团队的日常平台其实仍然以 Windows 为核心:Abaqus/CAE 的建模、网格与接触边界设置,实验配套软件(EBSD 取向处理、DIC 应变场分析、显微图像工具)、常用的脚本与可视化流程往往都围绕 Windows 生态展开。如果 DAMASK 必须依赖 Linux 才能稳定使用,那么在实际科研中就不可避免地出现“系统割裂”:前处理在 Windows、计算在 Linux、后处理又回到 Windows,过程中伴随文件搬运、路径差异、编码与环境变量问题、版本与库依赖不一致等大量隐性成本,而晶体塑性研究偏偏又是高频迭代的工作——要不断修改材料参数、控制文件、微结构与纹理、加载路径,再反复校准与验证。

把 DAMASK 在 Windows 下稳定编译并能直接接入 Abaqus 的 UMAT/VUMAT,本质上是把“建模—计算—后处理—实验对比—模型迭代”的闭环放进同一套系统里,减少无意义的迁移,让时间回到真正决定论文质量与工程可信度的环节:模型、数据与物理机制。

对科研而言,这种一致性最直接的收益就是迭代速度变快、复现更可靠:同一个工程文件夹里同时管理 Abaqus 输入、DAMASK 的材料与控制文件、纹理与微结构配置、以及 Python 后处理脚本,不再需要为了跑一次材料点或者做一次参数拟合而准备另一套系统环境;对实验对比而言,Windows 上更成熟的 EBSD/DIC/显微分析工具链能与仿真输出更紧密地衔接,纹理导入、局部应变场对比、参数反演与不确定性评估都更顺畅;

对工程落地而言,Abaqus 强大的接触、复杂边界、几何非线性与多物理耦合能力可以与 DAMASK 的微观本构优势直接结合,使微结构机制模型不再停留在“材料点验证”,而是更容易走向复杂构件与真实工况的结构仿真;对团队协作而言,Windows 环境的普及度更高,能显著降低新同学入门门槛与组内维护成本,环境文件、编译命令与目录结构一旦标准化,新成员拿到模板工程就能复现结果,这会把 DAMASK 从“少数人能用的高手工具”变成“团队可复 制的生产力平台”。

因此,做这件事的意义并不是证明 Windows 也能跑 DAMASK,而是让晶体塑性与位错密度模型在主流工程仿真与实验数据生态中更容易被调用、被验证、被迭代,并最终更接近可复现、可交接、可落地的研究与工程实践。

再尝试编译过程中尝试了大量的damask版本,发现2.02和2.01版本最适合作为移植到abaqus的软件版本,原因是2.03虽然作为最后一个支持abaqus求解器的版本,然而当前版本不支持显示求解器,因此为了方便后期的动态求解问题,不适合使用,同时2.0以前的damask版本相应的功能虽然已经满足,但是存在各类不易轻易发现的bug,严重影响移植过程,同时damask移植过程中涉及到并行计算的问题,damask的子程序写法对并行计算支持度一般,且存在大量的数值读取和写出,严重影响多核心并并行计算,因此建议调试时使用单核心进行,移植到windows下支持的编译器和Fortran版本也有显著差异,当前使用vs2017,Fortran2019,abaqus2022发现可以正常使用计算。对damask在windows下编译感兴趣的可以下载相应版本的abaqus尝试编译和运行。

damask在windows下使用的案例效果如下:

在编译过程中测试了下图所示的案例,分别是BCC铁,位错密度模型,FCC铝,HCP镁合金,HCP钛合金,各项同性的粘塑性模型,taylor模型等以及动态显示vumat的实现,发现运行结果良好,计算效率相较于linux平台要稍快一些,指的注意的是,当前采用单核心计算,在后续的过程中会对整体的damask代码进行完整的重构,充分支持多核心并行计算,即运算效率会显著提到,运行效果如下:

同一个目录下包含如下文件

预编译为OBJ格式可以显著较少每次编译所消耗的时间,

使用包含200个晶粒进行拉伸拉伸测试,验证程序的可靠性

运行过程中,会生成包含输出变量含义的三个文件
整体运行结束需要的时间。
单位统一使用m,pa,运行结束后的应力分布
应变分布
晶粒旋转角度分布
使用欧拉角作为输出,变形结束后的极图分布(初始随机取向):
相应结果和linux平台下的进行了详细对比,结果保持一致。


来源:我的博士日记
MarcAbaqus非线性UGpythonUM材料控制
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-12-17
最近编辑:8月前
此生君子意逍遥
博士 签名征集中
获赞 62粉丝 130文章 153课程 0
点赞
收藏
作者推荐

PINN求解一维波动方程,pytorch框架,附代码(二)

pytorch和tensorflow区别以下tensorflow简称TFpytorch具有更加易用的API,目前的TF 2.x + Keras也提供类似的易用的APIpytorch构建动态计算图,方便调试,TF以静态图为主,有利于部署和加速,目前也支持动态图,鼓励用语法糖转化为静态图获得性能提升部署方面,TF有完整的工具链,目前pytorch也增强了部署能力可视化工具,TF集成有TensorBoard,pytorch也支持用TensorBoard总结:但随着版本迭代,两者正在相互借鉴优点,差距逐渐缩小。学习阶段可以采用pytorch,获得成熟可用的项目后可以转用tensorflow部署获得更高的性能。正问题正问题是已知一切条件预测结果,这是一个确定性的计算过程。已知方程形式,且已知 : 初始条件: 边界条件: 解析解: 根据达朗贝尔公式可得: 表达式如下: 损失函数表达式: 网络架构输入层:空间坐标 隐藏层:3层,每层50个神经元输出层:物理场预测值 值得一提的是: PINN本身并不提供解的存在唯一性证明。这个保证来自于应用数学领域的微分方程理论。在将一个问题交给PINN求解之前,我们通常依赖于已知的数学定理来确保问题是一个“适定性问题”,即:存在性:至少有一个解。唯一性:最多有一个解。稳定性:解连续地依赖于初始条件或边界条件。例如将上述波动方程初始条件中的一阶导公式去掉,解就失去了唯一性,PINN就无法按预期工作。原始采样点 损失函数变化 真实结果、预测结果、绝对误差逆问题逆问题是已知一些观测数据,但是不确定方程中的一些系数是多少,目标是利用这些观测数据来反推出方程中的系数。更进一步,有大量的观测数据,但是不知道方程的具体形式,利用已有数据来推出方程的表达式,因此逆问题可能不具备适定性,求解更困难。将上述正问题做两点改动,1.添加一些已知观测数据。2.参数c的数值未知。那么上述正问题就变成了一个逆问题。此时损失函数表达式: 表示的是 和参数 的集 合。 原始采样点 损失函数变化、参数 变化 真实结果、预测结果、绝对误差 来源:我的博士日记

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈