首页/文章/ 详情

固体力学中应力辨析:从张量理论到工程应用

4月前浏览1076

摘要

  在固体力学、连续介质力学及有限元分析领域,“应力”概念因观察视角(参考构型)和分析尺度(张量与标量)的不同,衍生出了多种定义。本文旨在系统梳理各类应力的物理意义、数学表达及其适用场景,建立从“连续介质力学理论”到“材料宏观试验”,再到“工程强度评估”的全景式力学框架。

1. 核心概念勘误:工程应力与名义应力

  在进入张量体系前,需对学术界及工程界常混淆的两个术语进行界定:

  在固体力学和材料科学的标准定义中,工程应力(Engineering Stress)和名义应力(Nominal Stress)在物理意义和数学计算上是完全等价的。两者均指代外部瞬时载荷与试件初始(未变形)截面积的比值。其术语差异仅源于不同历史时期或不同子学科的命名习惯,在严谨的学术语境中可互相替代。

2. 连续介质力学中的应力张量体系(大变形/几何非线性视角)

  在处理大变形或几何非线性问题时,材料的面积和体积发生显著变化,内力与面积的映射关系必须通过张量理论严格描述。设变形梯度张量为     ,体积雅可比行列式为     

2.1 柯西应力(Cauchy Stress,     

  • 物理意义:定义在当前构型(变形后状态)上的应力。它衡量的是当前变形状态下,微元体单位当前面积上所受的实际内力。
  • 张量属性:也被称为真实应力张量(True Stress Tensor)。受角动量守恒原理约束,它是一个对称张量(      )。在建立柯西运动方程及描述材料真实的物理屈服面时,柯西应力是核心变量。

2.2 第一类皮奥拉-基尔霍夫应力(1st Piola-Kirchhoff Stress)

  • 物理意义:将当前状态下的受力,映射回参考构型(未变形状态)的初始面积上。它本质上是一维“工程应力/名义应力”在三维空间中的张量化推广。
  • 数学表达:    
  • 张量属性:这是一个非对称张量(通常       )。由于其非对称性,在有限元计算中极少作为未知量直接求解,但它是连接外部名义边界条件与内部真实力学状态的关键纽带。

2.3 第二类皮奥拉-基尔霍夫应力(2nd Piola-Kirchhoff Stress)

  • 物理意义:将当前状态下的受力通过纯变形“拉回(Pull-back)”到参考构型,并作用在初始面积上。它是一个纯粹的力学与数学抽象概念,无直观的宏观物理对应物。
  • 数学表达:    
  • 张量属性:这是一个客观(Objective)且对称的张量(      )。由于其与格林-拉格朗日应变张量(Green-Lagrange Strain)能量共轭,在几何非线性有限元分析(FEA)的本构方程和刚度矩阵推导中被极其广泛地应用。

3. 材料试验中的宏观标量应力(唯象/一维视角)

  在标准单轴拉伸或压缩试验中,复杂的张量系统通常退化为一维标量形式,以建立宏观的应力-应变本构关系。

3.1 工程应力 / 名义应力(    

  • 计算方法:瞬时载荷        除以试样的初始截面积      。    
  • 适用性与局限性:在小变形(线弹性)阶段,初始面积与真实面积差异极小,使用工程应力具有足够的精度。但当材料发生塑性屈服甚至产生颈缩(Necking)时,实际截面积急剧减小,导致工程应力-应变曲线上出现“下降段”。这种下降是未考虑截面面积缩减而产生的物理假象,并不代表材料真实承载(硬化)能力的下降。

3.2 真实应力(    

  • 计算方法:瞬时载荷        除以试样的瞬时真实截面积      。    
  • 理论联系:在均匀塑性变形阶段(即颈缩发生前),在材料体积不可压缩的假设下(      ),真实应力与工程应力的理论转换关系为:    
    (式中        为工程应变)。

4. 工程强度评估中的应力不变量与等效应力

  在三维复杂应力状态下,需将应力张量退化为特定的标量不变量,以便代入相应的强度理论进行屈服或断裂判定。

4.1 主应力(Principal Stress,     

  • 数学定义:应力张量矩阵的三个特征值。物理上表征空间中只存在正应力而无剪应力的特定截面上的正应力值。
  • 工程应用:最大主应力(      )常用于评估脆性材料的解理断裂(基于最大拉应力理论 / 第一强度理论)。

4.2 冯·米塞斯应力(von Mises Stress / Equivalent Stress,     

  • 物理定义:基于形状改变比能(Distortion Energy)密度导出的标量综合指标。
  • 数学表达:    
  • 工程应用:表征材料发生塑性屈服的驱动力(基于形状改变比能理论 / 第四强度理论)。它是评价延性金属材料屈服最准确、最常用的指标,也是商用有限元软件(如 Abaqus, ANSYS)默认输出的应力标量。

5. 基于物理成因与自平衡尺度的分类

  在工程力学实践中,常根据应力的产生原因及作用尺度进行额外分类:

  1. 宏观应力(结构应力):由外部载荷直接引起,在宏观结构整体尺度上满足静力学平衡方程。
  2. 残余应力(Residual Stress):在卸除所有外部力学和热学边界条件后,因不均匀塑性变形、温度梯度冷却(如焊接、热处理)或固态相变,残留在材料内部且自我平衡的内应力。
  3. 热应力(Thermal Stress):物体处于温度场变化中,因热胀冷缩效应受到外部位移约束,或因内部温度梯度导致各部分相互约束而产生的应力。其本构关系显含材料的线膨胀系数        及温差       

结论

  固体力学中的应力体系严格依赖于参考构型与分析目的。在进行理论推导与大变形算法设计时,需准确区分并选用相应的应力张量(如柯西应力或皮奥拉-基尔霍夫应力);在处理材料实验数据时,需厘清工程应力与真实应力的物理边界;而在工程部件的安全性评估中,应根据材料的脆性或延性特征,合理提取主应力或等效应力进行强度校核。


来源:有限元先生
Abaqus静力学断裂非线性焊接理论材料试验ANSYS
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2026-04-13
最近编辑:4月前
外太空土豆儿
博士 我们穷极一生,究竟在追寻什么?
获赞 46粉丝 48文章 117课程 0
点赞
收藏
作者推荐

用BAT批处理文件高效调用Abaqus —— 从入门到Fortran子程序集成

🧑‍💻作者按:你是否还在对着Abaqus的GUI一遍遍地点"SubmitJob"?参数改了又改,任务提交了又提交,一不小心还覆盖了上一次的结果……今天这篇文章,就是专门为你而写的。一、为什么要用BAT文件?先聊聊GUI的"痛"  做有限元仿真的朋友,日常工作大概是这样的:打开CAE→改参数→提交任务→等结果→再改参数→再提交……  当你只有1个工况,这当然没问题。但现实往往是:10组网格密度×5个载荷工况×3种材料参数=150个任务。手动点击就显得耗时费力。BAT批处理文件的核心优势:✅自动化:写好脚本,双击运行,人可以去睡觉✅可复用:换个路径、改个参数名,下次照用✅批量提交:for循环一写,几十个任务排队跑✅减少人为失误:参数固定在脚本里,不怕手滑点错二、BAT基础:从零开始调用INP文件2.1Abaqus命令行的基本结构  Abaqus本质上是一个可以通过命令行驱动的程序。打开Windows的CMD,最基本的调用格式是:abaqusjob=任务名input=inp文件名cpus=核数interactive2.2各参数含义详解参数说明job=任务名指定作业名称,输出的.odb、.dat、.msg等文件都以此命名input=文件名指定输入文件(可不加.inp后缀,Abaqus会自动识别)cpus=核数并行计算使用的CPU核心数,根据机器配置设置interactive关键参数——让命令行窗口等待任务完成再执行下一条指令;不加此参数则任务在后台运行,脚本会立刻继续往下执行ask_delete=OFF若同名.lck文件存在时,不询问直接覆盖(批量运行必备,避免弹窗卡住脚本)memory=90%限制Abaqus使用的内存比例,多任务并行时避免撑爆内存🚨避坑提示:interactive这个参数新手最容易忘。如果你在BAT里提交了多个任务却不加它,所有任务会同时启动,资源争抢会让每个任务都跑得奇慢无比。2.3一个完整的BAT文件示例  新建一个文本文件,将后缀改为.bat,写入以下内容:@echooffREM============================================================REMAbaqus基础调用脚本REM功能:切换到工作目录,提交单个INP任务REM============================================================REM【第一步】设置工作目录(INP文件所在的文件夹路径)cd/d"D:\Simulation\MyProject"REM【第二步】提交任务REMjob=作业名(输出文件前缀)REMinput=INP文件名(无需加.inp后缀)REMcpus=使用核心数,按需调整REMinteractive=等待任务完成后再继续REMask_delete=不询问直接覆盖旧的lock文件abaqusjob=beam_staticinput=beam_staticcpus=4interactiveask_delete=OFFREM【第三步】任务结束后暂停,方便查看命令行输出信息echo.echo==========任务已完成==========pause几点说明:@echooff:关闭命令回显,让输出更整洁cd/d:/d参数允许同时切换盘符和路径,缺了/d跨盘切换会失败REM:注释符,不影响执行💡经验之谈:强烈建议工作目录和文件路径不要包含中文和空格。虽然用引号包裹路径可以处理空格,但Abaqus在某些版本里对含中文的路径还是会报错。养成用英文命名的好习惯,省心!三、进阶:在BAT中调用Fortran子程序3.1为什么需要用户子程序?  标准的Abaqus材料库覆盖不了所有需求。以下场景你就需要自己写子程序:UMAT/VUMAT:自定义本构模型(超弹性、损伤、蠕变……)DLOAD/VDLOAD:施加随空间或时间变化的分布载荷DISP:定义复杂的位移边界条件USDFLD:通过场变量控制材料属性演化  子程序文件通常是一个.for(Fortran77格式)或.f90文件。3.2调用子程序的语法只需在原来的命令里加上user=参数:abaqusjob=任务名input=inp文件名user=子程序文件名cpus=核数interactive例如:abaqusjob=umat_testinput=umat_testuser=UMAT_hyperelasticcpus=4interactive3.3⚠️前提条件:编译环境配置  这是调用子程序最容易踩坑的地方,必须提前说清楚。  调用用户子程序时,Abaqus需要在本地将.for文件编译成可执行代码。这要求你的电脑上必须安装且正确配置以下软件:InteloneAPIHPCToolkit(包含IntelFortran编译器ifort)MicrosoftVisualStudio(提供C++编译环境,IntelFortran依赖它)Abaqus与编译器的版本需匹配(具体对应关系见Abaqus官方DSY兼容性矩阵)🚨避坑提示:版本不匹配是新手最大的噩梦。例如Abaqus2021推荐搭配VS2019+IntelParallelStudioXE2020。装错版本,子程序怎么都跑不起来。建议在Abaqus官网查询对应版本的"SystemRequirements"文档再动手安装。  验证编译环境是否正常,可以在CMD里运行:abaqusverify-user_std  如果输出PASS,说明标准子程序编译链路正常。3.4完整BAT示例(含子程序调用)@echooffREM============================================================REMAbaqus子程序调用脚本REM功能:提交带UMAT子程序的Abaqus任务REM============================================================REM【设置工作目录】INP文件和FOR文件需放在同一目录下cd/d"D:\Simulation\UMAT_Project"REM【提交带子程序的任务】REMuser=Fortran子程序文件名(无需加.for后缀)abaqusjob=umat_test^input=umat_test^user=UMAT_hyperelastic^cpus=4^interactive^ask_delete=OFFecho.echo==========子程序任务已完成==========pause💡说明:^是BAT中的换行续写符,让长命令更易读,实际执行效果等同于写在一行。3.5常见报错及解决方案报错信息原因解决方案ifortisnotrecognizedIntelFortran编译器未加入环境变量重新安装InteloneAPI并勾选"修改环境变量",或手动在系统PATH中添加ifort路径Abaqus/Analysisexitedwitherrors+编译失败VS与IntelFortran版本不兼容查DSY兼容矩阵,换匹配的版本组合路径报错/找不到子程序文件路径含中文或空格将工作目录改为纯英文无空格路径Toomanyerrorsinbatch子程序代码本身有语法错误检查.dat文件末尾的编译日志,定位Fortran语法问题💡排查技巧:任务失败后,第一时间打开与任务同名的.dat文件(纯文本),拉到最底部,报错信息都在那里。比盯着CMD窗口的滚动输出靠谱多了。四、实用技巧补充4.1批量提交多个INP任务(for循环大法)  假设你有case01.inp、case02.inp……case10.inp共10个文件:@echooffcd/d"D:\Simulation\BatchJob"REM用for循环遍历所有INP文件并依次提交for%%iin(case01case02case03case04case05^case06case07case08case09case10)do(echo.echo>>>正在提交任务:%%iabaqusjob=%%iinput=%%icpus=4interactiveask_delete=OFFecho>>>任务%%i完成)echo.echo==========全部任务已完成==========pause或者更简洁地,用通配符遍历当前目录下所有INP文件:for%%fin(*.inp)do(abaqusjob=%%~nfinput=%%~nfcpus=4interactiveask_delete=OFF)💡%%~nf的含义:%%f是完整文件名(含扩展名),%%~nf只取文件名主体(去掉.inp)。4.2任务完成后自动关机  跑大型模型经常需要隔夜计算。加上这行,任务跑完自动关机,第二天来直接看结果:REM所有任务完成后,延迟60秒自动关机(给你反悔的机会)shutdown/s/t60/c"Abaqus任务已完成,60秒后关机"  如果想取消关机:在60秒内打开CMD运行shutdown/a。4.3日志输出建议  在BAT里加入时间戳日志,方便事后追溯:REM将任务开始/结束时间记录到日志文件echo[%date%%time%]开始任务:beam_static>>run_log.txtabaqusjob=beam_staticinput=beam_staticcpus=4interactiveask_delete=OFFecho[%date%%time%]完成任务:beam_static>>run_log.txt  这样run_log.txt里会记录每个任务的实际运行时间,后续分析效率时很有用。五、总结  回顾一下本文的核心内容:🔧基础调用:abaqusjob=input=cpus=interactive是最核心的四个参数,ask_delete=OFF是批量运行的必备选项📁工作目录:用cd/d切换,路径全程用英文无空格⚙️子程序调用:加上user=参数,但前提是配好IntelFortran+VS编译环境🔄批量提交:for循环解放双手,%%~nf取文件名主体😴自动关机:shutdown/s/t60安心睡觉  BAT脚本看似简单,但真正用好了,能把你从大量重复性操作中解放出来,让你把时间花在更有价值的事情上——比如认真分析结果,而不是对着GUI不停地点鼠标。来源:有限元先生

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