做UHPC构件仿真两年多,我最怕听到的一句话就是:“帮我按C50的本构算了”。不是不能算,是算出来的破坏形态、挠度曲线、裂缝形态跟试验能差出十万八千里。UHPC(超高性能混凝土)和普通混凝土的根本差异,不在强度数字本身,而在于拉区的应变硬化、峰值后软化斜率、以及损伤演化的方式——这三件事直接决定了一个构件仿真能不能“对得上试验”。
这篇文章我从材料行为差异说起,把UHPC在ABAQUS里最常用的CDP本构模型(Concrete Damaged Plasticity,混凝土损伤塑性模型)从理论、参数标定到关键字写入完整过一遍。内容偏实操,适合正在做UHPC梁、柱、桥面板或加固层仿真的人参考,也适合写论文需要“试验标定-数值模拟”一套流程的在校生。我不讲那种“公式摆一排然后让你自己猜”的教科书写法,而是把每一步怎么处理数据、怎么填参数、收敛不了怎么办,全给你摊开讲。
1. UHPC仿真为什么这么难伺候:材料特性与选型逻辑
1.1 UHPC和普通混凝土差在哪
普通混凝土(以C30~C60为例)抗压强度一般30~60MPa,抗拉强度只有2~4MPa,受压峰值应变大概在0.002左右,峰值之后强度迅速衰减,拉区几乎可以视为脆性开裂。这也是为什么普通混凝土构件仿真里,只要拉应力一到抗拉强度,单元很快就进入软化甚至失效。
UHPC完全是另一种材料。抗压强度普遍在120~200MPa,直接拉伸强度可以到8~15MPa,弹性模量通常在45~55GPa之间,受压峰值应变一般在0.0035~0.005。更关键的是拉区行为:由于钢纤维的桥接作用,UHPC在第一条可见裂缝出现后并不会立刻失去承载力,而是会经历一段相当可观的应变硬化过程,极限拉应变可以达到0.003甚至更高。也就是说,UHPC在受拉时是“先硬后软”,而普通混凝土是“一裂就软”。
这个差异直接决定了仿真的建模思路。如果你把普通混凝土本构里的抗压强度改成150MPa就拿来当UHPC用,拉区仍然是脆性软化,那你算出来的梁的承载力会偏低、挠度会偏大、裂缝分布形态也完全不对。我做过的三组UHPC薄板抗弯试验对比仿真,凡是拉区不带硬化段的那组模型,极限荷载比试验低了差不多20%,而带硬化段修正后误差可以控制在5%以内。
1.2 CDP模型能担起UHPC吗
ABAQUS自带混凝土相关的本构有三种:弥散开裂模型(Smeared Cracking)、脆性开裂模型(Brittle Cracking)和损伤塑性模型(Concrete Damaged Plasticity)。其中CDP是最常被拿来算UHPC的,原因很简单——它能同时表达拉区硬化、压区软化和刚度退化这三件UHPC最核心的事。
CDP的底层逻辑是:用修正的Drucker-Prager屈服面描述塑性流动,用两个独立的损伤变量(受拉损伤dt和受压损伤dc)控制卸载刚度。你在ABAQUS里做的所有参数标定工作,最终都是为了让这个屈服面在应力空间里的位置和演化速度,贴合UHPC的真实响应。
但这里有一个必须说明的坑:CDP的原始屈服面参数是基于普通混凝土试验回归出来的。UHPC因为基体更密实、骨料-浆体界面更强,在双轴受压和三轴受压下的强度比会跟普通混凝土不一样。严格来说需要做双轴试验标定,但工程上没必要卡那么死——后面我会给一组实测下来误差可控的参数,先用起来,再根据具体工况微调。
2. UHPC本构理论拆解:从单轴试验到本构方程
2.1 受压本构:峰值应变与下降段
UHPC的受压本构最合适的来源就是你自己的单轴压缩试验数据。把试验机的应力-应变曲线拿过来,均匀化处理之后直接转换成ABAQUS需要的非弹性应变格式就行。
如果没有试验数据,可以按经验公式估算。欧洲UHPC规范建议和ACI 239委员会的报告里都给了经验式。我常用的做法是:先定峰值压应力fcm(比如150MPa)和弹性模量Ec(比如46GPa),然后用简化公式估算峰值应变。拿150MPa、46GPa的例子算下来,峰值应变大概在0.0038左右。相比普通混凝土的0.002,UHPC的峰值应变明显后移了。
峰值之后的下压段也值得注意。普通混凝土C30从峰值60MPa掉到10MPa可能只需要0.001的非弹性应变增量,UHPC从150MPa掉到10MPa可能需要0.004~0.005甚至更多。也就是说UHPC的压区软化段更“长”更“缓”,这跟钢纤维对受压裂缝的约束作用有关。很多人在ABAQUS里把UHPC压缩软化段写得太陡,算出来构件延性明显偏小。
2.2 受拉本构:应变硬化与软化双段
UHPC受拉本构是重点中的重点,我每次讲这部分都会多花时间。一根UHPC轴拉试件的完整应力-伸长曲线可以分为三段:
第一段是线弹性段,此时基体未开裂,应力和应变呈线性关系,斜率就是弹性模量。第二段是应变硬化段,基体出现第一条宏观裂缝后(对应的应力一般叫初裂强度),由于钢纤维桥接作用,裂缝处的应力还能继续增长,表现为试件整体应力“不降反升”,直到达到极限抗拉强度。第三段是应变软化段,过了极限抗拉强度之后,某条主裂缝开始局部化,纤维逐渐被拔出,应力开始下降。
这三段在ABAQUS中的表达方式是:弹性段用弹性模量控制,硬化段和软化段通过*Concrete Tension Stiffening(拉伸硬化)数据表逐点定义。我的习惯是至少取6个点来拟合受拉曲线。拿一个直接拉伸强度10MPa的UHPC举例,数据点大概是这样的:开裂应变0处应力8.5MPa(初裂强度),开裂应变0.002处应力9.8MPa,开裂应变0.0045处应力10MPa(极限强度),然后软化:开裂应变0.006处应力降至7MPa,0.008处降至3MPa,0.01处降至0.5MPa。
这样一条曲线输进去,构件受拉时的承载力、延性和裂缝发展行为才能跟试验对得上。
2.3 损伤演化
CDP里的损伤变量本质上描述的是“刚度退化程度”。d=0表示材料完全无损,卸载刚度为初始弹性模量E0;d=1表示材料完全丧失承载能力,卸载刚度退化到0附近。
损伤变量最常见的标定方法是Sidoroff能量等效法,公式是d = 1 - σ/(E0·ε)。这个公式的前提是假设损伤后的有效应力仍满足线弹性关系,算出来是一个工程近似,但对于大多数结构仿真场景已经足够精确。
需要特别提醒的是受拉损伤的处理。UHPC的应变硬化段本质上是微裂缝的稳定扩展阶段,此时材料刚度已经有所退化,但在ABAQUS里我通常把这段的受拉损伤设得很小甚至设为零。原因有二:第一,硬化段宏观上应力还在增长,损伤过大会导致应力增长异常;第二,硬化段就引入大损伤值,会导致单元刚度退化过快,构件承载力算出来偏低。受拉损伤从软化起始点再开始快速上升,才是比较稳妥的做法。
3. ABAQUS CDP参数标定全流程
3.1 弹性参数
弹性参数就两个:弹性模量和泊松比。UHPC的泊松比一般在0.2~0.22,取0.2问题不大。
弹性模量这个值得多写两句。普通混凝土的经验公式E = 4700√f'c(f'c单位MPa)在UHPC上直接套会高估。比如150MPa的UHPC,按这个公式算出来是57.6GPa,实际UHPC的弹性模量大多在44~52GPa。原因在于UHPC水胶比极低、没有粗骨料,其弹性模量主要受浆体和细骨料控制,不能简单套用普通混凝土的强度-刚度关系。
我一般的处理顺序是:有试验实测模量就用实测值;没有实测值,取46~48GPa是一个比较稳的起点。密度记得用吨单位制下的2.4e-9 t/mm³,这个细节虽然小,但经常有同学因为密度单位写错导致自重荷载差好几个量级。
3.2 五个塑性参数的取值逻辑
CDP的塑性参数一共五个:膨胀角ψ、流动势偏心率ε、双轴/单轴抗压强度比fb0/fc0、拉压子午线第二应力不变量比Kc、黏性系数μ。这五个参数里面,膨胀角和黏性系数对结果影响最大。
膨胀角控制的是塑性流动时体积膨胀的量。UHPC在低围压下的剪胀行为比普通混凝土明显,但也没到夸张的程度。我建议取30°~35°,约束构件(比如钢管UHPC、箍筋很密的柱)可以取35°,无约束的板、梁取30°附近就行。膨胀角取得过大会让约束构件的承载力明显偏高,因为模型认为材料在受压时体积膨胀得厉害,产生的围压效应被放大了。
流动势偏心率ε保持默认0.1,fb0/fc0默认1.16,Kc默认2/3,这三个参数如果没做双轴试验就别乱动。网上有人说UHPC的fb0/fc0应该取1.2~1.25,理论上没错,但如果没有对应的双轴试验验证,调了反而可能引入不可控误差。我实测过1.16和1.25的区别,单轴受力构件结果几乎没差,所以没必要在这个参数上纠结。
黏性系数μ是隐式分析收敛性的救命稻草,也是结果“失真”的万恶之源。它的作用是对损伤塑性模型做粘塑性正则化,让软化段的应力-应变关系带上一定的率依赖性,从而改善收敛。取0表示纯率无关模型,收敛最容易出问题;取0.005以上会让模型表现出明显的“黏性”,强度虚高、损伤滞后。我的建议是隐式分析先取0.0005,不收敛再逐步加到0.001、0.005,加的时候注意对比一下荷载-位移曲线,如果发现峰值明显抬高了,说明黏性系数太大了。
3.3 压缩与拉伸硬化数据的转换方法
这是整个标定流程里最容易出错的一步。ABAQUS的*Concrete Compression Hardening需要的是“压应力-非弹性应变”数据对,*Concrete Tension Stiffening需要的是“拉应力-开裂应变”数据对。
很多人直接把试验测到的总应变输进去,这是个致命错误。非弹性应变和总应变的关系是:εin = εtotal - σ/E0。也就是说,要把总应变减去当前应力水平下的弹性恢复应变,剩下的才是非弹性应变。如果用总应变代替非弹性应变,相当于把软化起点人为提前了,模型会在远低于真实峰值应变的位置就开始软化,构件承载力算出来自然是偏低的。
同样道理,受拉段输入的是开裂应变εck = εtotal - σ/E0。注意这里即使有塑性损伤,也只用初始弹模E0做换算,这是ABAQUS的约定用法。
下面给一组可以直接起步的UHPC CDP参数示例,强度等级约150MPa,单位制mm-N-s-MPa:
| 参数项 | 数值 | 说明 |
|---|---|---|
| 弹性模量 E | 46000 MPa | 实测优先,无实测取46~48GPa |
| 泊松比 ν | 0.2 | — |
| 密度 ρ | 2.4e-9 t/mm³ | 吨单位制 |
| 膨胀角 ψ | 30° | 约束构件可调到35° |
| 偏心率 ε | 0.1 | 默认 |
| fb0/fc0 | 1.16 | 默认 |
| Kc | 0.6667 | 默认 |
| 黏性系数 μ | 0.0005 | 收敛困难时再增加 |
压缩硬化数据表:
| 压应力 (MPa) | 非弹性应变 |
|---|---|
| 150 | 0 |
| 120 | 0.00045 |
| 80 | 0.0012 |
| 40 | 0.0025 |
| 10 | 0.0045 |
拉伸硬化数据表:
| 拉应力 (MPa) | 开裂应变 |
|---|---|
| 8.5 | 0 |
| 9.8 | 0.002 |
| 10 | 0.0045 |
| 7 | 0.006 |
| 3 | 0.008 |
| 0.5 | 0.01 |
3.4 受损参数的标定技巧
受压损伤dc建议从峰值后的第一个软化点开始给。拿上面的压缩数据来说:非弹性应变0处dc=0;0.00045处dc=0.1;0.0012处dc=0.3;0.0025处dc=0.6;0.0045处dc=0.95。这样一个平缓上升的损伤曲线,既能表达刚度退化,又不至于让单元过快失效。
受拉损伤dt要注意我前面说的:硬化段给0,软化段再快速上升。按上面的拉伸数据就是:开裂应变0到0.0045这段dt=0;0.006处dt=0.3;0.008处dt=0.7;0.01处dt=0.95。
提示:如果你用的是显式分析,黏性系数一般取0,但受拉损伤的突变还是会让单元加速失效。可以把软化段再平滑几个点,避免应力跌落太猛引起“冲击式”失效。
4. ABAQUS实操:从INP关键字到求解设置
4.1 单元选择与网格划分
UHPC构件分析我首选C3D8R(三维八节点减缩积分实体单元),计算效率和精度平衡得比较好。减缩积分单元要注意沙漏问题,ABAQUS里默认的沙漏控制一般够用,但如果模型中有大变形或者局部单元扭曲严重,记得在Section Controls里把沙漏刚度稍微提高一点。
C3D20R(二阶二十节点单元)在弹性分析里精度高,但进入损伤软化阶段后容易出现剪切闭锁现象,而且计算量成倍增加,我不太推荐用于UHPC构件的损伤分析。
网格尺寸上,最关键的原则是:损伤区域至少要保证有3~5层单元。做梁受弯分析时,跨中纯弯段受拉损伤区的单元尺寸建议控制在5~10mm,再粗的话软化带的宽度会被网格“锁住”,算出来的延性和裂缝分布都不可靠。有条件的话,对同一模型做一次网格敏感性校验——换两套网格尺寸对比荷载-位移曲线,如果曲线差异小于5%,说明网格尺寸可以接受。
4.2 材料卡片的INP写法
下面这段是上面参数对应的ABAQUS材料关键字,可以直接改数值套用:
*Material, name=UHPC150 *Elastic 46000., 0.2 *Density 2.4e-9, *Concrete Damaged Plasticity 30., 0.1, 1.16, 0.6667, 0.0005 *Concrete Compression Hardening 150., 0. 120., 0.00045 80., 0.0012 40., 0.0025 10., 0.0045 *Concrete Tension Stiffening 8.5, 0. 9.8, 0.002 10., 0.0045 7., 0.006 3., 0.008 0.5, 0.01 *Concrete Compression Damage 0., 0. 0.1, 0.00045 0.3, 0.0012 0.6, 0.0025 0.95, 0.0045 *Concrete Tension Damage 0., 0. 0., 0.0045 0.3, 0.006 0.7, 0.008 0.95, 0.01如果你习惯在CAE界面操作,就直接把Property模块里各个子选项对应填入。注意CAE里Concrete Damaged Plasticity的表格输入顺序和INP是一致的,填的时候别把压缩和拉伸的数据行搞混。
4.3 分析步、求解器与收敛策略
UHPC构件的静态加载分析建议用Static, General分析步。进入Step模块后,把求解器设置为非对称(Unsymmetric solver),因为CDP模型的切向刚度矩阵是非对称的,用非对称求解器能明显改善收敛性,代价只是单步求解时间略微增加。
增量步设置上,初始增量步可以设成总荷载时长的0.01,最小增量步设成1e-5,最大增量步设成0.05。如果模型在前几个增量步就出现收敛问题,先别急着改模型,把最小增量步再调小一个量级试试。
对于动力问题、冲击问题,或者接触非常复杂的装配体,可以考虑改用显式分析(Explicit)。显式分析不涉及迭代,不存在收敛问题,但需要关注两个点:一是时间增量步受稳定极限控制,通常很小;二是质量缩放。做静力或准静态分析时,适当的质量缩放可以大幅节省计算时间,但一定要在后处理里检查伪动能(ALLKE)与内能(ALLIE)的比值,工程经验是伪动能不超过内能的5%~10%,超过的话说明质量缩放过大,结果已经失真。
5. 常见问题与排查技巧实录
5.1 隐式计算死活不收敛,是怎么回事
CDP模型收敛困难是ABAQUS家的祖传话题了。按我的排查顺序走一遍,大概率能解决。
先检查网格质量:有没有负体积单元、过度扭曲单元、特别薄的单元?网格问题往往是第一罪魁。再看材料数据:软化段有没有应力突降?如果两个相邻数据点之间应力掉了50%以上,很容易导致局部刚度突变,求解器在迭代时会在那个点附近反复横跳。解决办法是把软化段过渡写平缓一点,比如中间增加一到两个插值点。
然后调求解策略:把非对称求解器打开,把增量步上限调小一点,再把黏性系数从0.0005往上加。黏性系数每加一个量级,收敛性都会有明显改善,但是要盯住荷载-位移曲线,一旦发现峰值荷载被抬高超过3%~5%,就别再加了。
5.2 拉伸硬化段“看不见”,到底哪里出了问题
很多人在后处理里看到UHPC构件受拉区云图“没有损伤”,就觉得本构参数没生效。这里要区分一个概念:UHPC的应变硬化段本身就是多裂缝稳定扩展的过程,在这个阶段,材料应力还在增长,宏观上确实看不到像普通混凝土那样的明显主裂缝,损伤云图上也不应该有大片红色区域。
如果你用的是受拉损伤dt全为零的硬化段定义,那后处理里看到的是PEEQ(等效塑性应变)在增长,而DAMAGET(拉伸损伤)保持为零,这是完全正常的状态。真正要关注的是:构件达到极限荷载之后,损伤值是否开始快速增长,并且集中在某个截面附近形成局部化。如果直到破坏都没有损伤发展,那才要回头检查数据有没有输错。
还有一个常见的后处理坑:在提取受拉本构验证模型的应力-应变曲线时,直接提取了某个单元的总应变,跟输入的硬化曲线对不上,就开始怀疑参数错了。正确做法是先算一个单轴拉单元模型,让单元只受单轴拉力,然后输出单元的S11和E11(或LE11),再换算成应力-开裂应变曲线去对标试验。
5.3 压缩曲线峰值明显偏低,怎么排查
如果你用单轴压缩单元模型验证,发现峰值压应力明显低于目标值,按下面几个方向排查。第一,确认输入的是非弹性应变而不是总应变。很多人错在把试验的总应变数据直接填进了*Concrete Compression Hardening,这样ABAQUS在应力还没到峰值前就已经认为有非弹性变形,峰值自然上不去。第二,检查单位制。mm-N-s-MPa下,弹性模量要填46000而不是46,密度要填2.4e-9而不是2400,这类低级错误最隐蔽也最致命。第三,检查加载速率:显式分析中如果加载速度太快,惯性力会干扰曲线,导致峰值前就出现锯齿状波动。
5.4 显式分析中的振荡问题怎么压
显式UHPC分析最常见的现象是:应力时间曲线在进入软化段后出现高频振荡,看起来像“噪音”。这通常是因为材料软化导致单元瞬间失去刚度,而质量缩放又放大了局部惯性效应。处理办法有三个:一是降低质量缩放倍数,让伪动能控制在较低水平;二是给材料加一点轻微的刚度比例阻尼,但阻尼系数不要取得太大,否则峰值强度会被压低;三是把损伤软化段的数据点再适当平滑,减少应力阶梯式下跌带来的数值冲击。
我把这几个常见问题汇总成了一张速查表,方便平时调试时对照:
| 现象 | 可能原因 | 快速解法 |
|---|---|---|
| 隐式分析无法收敛 | 网格质量差/软化段过陡/黏性系数太小 | 检查网格、平滑软化段、增大μ |
| 压缩峰值偏低 | 非弹性应变误用总应变/单位制错误 | 重新换算数据、检查单位 |
| 拉伸损伤不发展 | 材料处于硬化段属正常现象 | 对照PEEQ和应力曲线综合判断 |
| 曲线锯齿振荡 | 质量缩放过大/阻尼不足 | 降低质量缩放、适当加阻尼 |
| 承载力虚高 | 黏性系数μ过大/膨胀角过大 | 回退μ至0.0005~0.001、调整ψ |
| 软化段网格敏感 | 网格过粗/没有断裂能正则化 | 细化损伤区网格或不跨网格对比结果 |
写在最后的一些体会
我个人实际做的过程里,感触最深的一点是:UHPC的CDP仿真,最花时间的不是调收敛,而是把本构数据“标得干净”。所谓干净,就是数据来源清晰、换算过程明白、每一个参数都能对应到材料行为的某个物理意义。参数盲调碰运气,今天调出一个能收敛、曲线好看的结果,明天换个构件尺寸可能就不对了。先用一个单元做单轴压缩验证、单轴拉伸验证,再上构件,看起来多花了半天,实际上后面构件级别仿真能少踩无数坑。
最后再分享一个小技巧:做UHPC构件分析时,不要只看最终破坏状态,把荷载-位移曲线上几个关键特征点(初裂点、硬化段转折点、峰值点、残余承载段)的损伤云图单独导出来对比。这几张图一出来,基本上就能判断本构标定是否正确,比对着一个最终的应力云图猜来猜去高效得多。