Mander约束混凝土本构模型参数计算与OpenSees纤维截面应用指南
2026/9/19 14:25:23 网站建设 项目流程

简介:《mander约束混凝土本构模型[归纳].pdf》是一份面向结构工程与有限元分析学习者的专题资料,系统整理了Mander约束混凝土本构模型的核心原理、公式推导与工程应用。内容涵盖横向配筋的作用机制、体积配箍率与箍筋形式对约束效果的影响,以及约束混凝土强度与受压区应力-应变关系的确定步骤;同时以一C40柱、双向复合箍筋算例对比规范模型与Mander模型,直观展示箍筋对承载力与延性的提升。资源为PDF格式,共1个文件,压缩包大小955KB,轻量便于阅读与传播。已有202人学习参考,适合土木工程、结构抗震与有限元仿真方向的学生、工程师作为概念梳理与快速查阅工具。

1. 先搞清楚 Mander 约束混凝土本构在解决什么

同样是 C40 混凝土,素混凝土柱受压到峰值就崩裂,而一个箍筋间距 80mm 的圆形墩柱核心,峰值强度能高出三成,极限压应变能放大 5~10 倍。Mander 约束混凝土本构模型(Mander et al., 1988)要解决的就是这件事:把箍筋间距、直径、屈服强度和核心截面几何折算成一个等效约束压力 f'l,再统一生成整条应力-应变包络曲线。OpenSees 的 Concrete04 材料、桥梁墩柱 pushover 以及绝大多数 IDA 研究的纤维截面,都直接建立在这个模型上。写分析脚本也好,校准 ABAQUS CDP 的受压硬化段参数也好,绕不开上面的输入参数和边界条件。下面从图纸上的原始数据出发,把完整计算链路走一遍。

2. 从图纸参数到有效约束压力:Mander 模型的输入怎么算

2.1 体积配箍率 ρs 与净间距 s':两个最容易抄错的输入

Mander 模型里没有"箍筋配多少"这种笼统概念,第一个输入是体积配箍率 ρs。圆形截面配圆形箍筋或螺旋筋时,ρs = 4·Asp / (s·dc),其中 Asp 是单肢箍筋截面积,s 是箍筋中心距,dc 是核心混凝土直径。注意 dc 要取箍筋中心线围成的直径,不是柱子外径减去保护层就算完,更不是箍筋内表面直径。图纸上如果标的是"保护层厚度到箍筋外表面",dc 应按 外径 − 2×保护层 − 箍筋直径来取。差一个箍筋直径,在小直径柱里 ρs 能差 5% 以上。

第二个容易抄错的是净间距 s'。后面 ke 公式里用的是相邻箍筋之间的净距,即 s 减去箍筋直径。有人直接拿中心距 s 代入,ke 被算小,约束压力偏低,f'cc 跟着保守,延性评估反而失真。这两个值先算对,后面所有公式才有意义。

2.2 有效约束系数 ke:箍筋之间的抛物线拱怎么折减

约束压力不是直接等于 ρs·fyh/2。箍筋之间的混凝土靠箍筋"兜住",但箍筋间距内会形成抛物线形拱效应:拱与拱之间的区域约束有效,靠近保护层一侧约束明显减弱。Mander 用有效约束系数 ke 统一处理,圆形截面表达式为:

ke = (1 − s'/(2·dc))² / (1 − ρcc)

其中 ρcc 是纵筋面积与核心混凝土面积的比值。分母 (1−ρcc) 的含义是:核心面积里有一部分被纵筋占据,这部分面积无法靠混凝土接触传递约束应力,要在有效面积里剔除。分子里的 (1 − s'/(2·dc))² 描述相邻箍筋之间抛物线拱最窄处与箍筋截面处面积之比。间距越小,这个比值越接近 1,约束越充分;间距一大,ke 迅速下降,靠一味加大箍筋直径去补偿间距过大的损失,效率很低。

下面这段 Python 把 ρs、ke、有效约束压力 f'l 以及后续强度、应变全部算出来。参数按直径 350mm 的圆形核心、D16@80 箍筋、HRB400、C40 设置:

import math def mander_circular(fc, ec, fyh, dh, s, dc, rho_cc=0.0, esu=0.1): """ Mander 模型参数计算(圆形箍筋 / 螺旋筋) fc : 无约束混凝土圆柱体抗压强度, MPa ec : 无约束峰值应变, 通常取 0.002 fyh : 箍筋屈服强度, MPa dh : 箍筋直径, mm s : 箍筋间距(中心距), mm dc : 核心直径(箍筋中心线), mm rho_cc: 纵筋面积 / 核心混凝土面积 esu : 箍筋极限拉应变, 默认 0.1 """ asp = math.pi * dh * dh / 4.0 # 箍筋单肢截面积 mm^2 sp = s - dh # 箍筋净间距 mm rhos = 4.0 * asp / (s * dc) # 体积配箍率 ke = (1.0 - sp / (2.0 * dc)) ** 2 / (1.0 - rho_cc) fl = rhos * fyh / 2.0 # 名义侧向约束压力 flp = ke * fl # 有效侧向约束压力 fcc = fc * (-1.254 + 2.254 * math.sqrt(1.0 + 7.94 * flp / fc) - 2.0 * flp / fc) # 约束混凝土强度 ecc = ec * (1.0 + 5.0 * (fcc / fc - 1.0)) # 约束峰值应变 ecu = 0.004 + 1.4 * rhos * fyh * esu / fcc # 首根箍筋拉断时压应变 return rhos, ke, flp, fcc, ecc, ecu rho_s, ke, flp, fcc, ecc, ecu = mander_circular( fc=32.0, ec=0.002, fyh=400.0, dh=16.0, s=80.0, dc=350.0, rho_cc=0.02) print(f"rho_s={rho_s:.4f} ke={ke:.3f} f'l={flp:.2f} MPa") print(f"f'cc={fcc:.1f} MPa eps_cc={ecc:.4f} eps_cu={ecu:.4f}")

输出结果是 ρs=0.0287、ke=0.842、f'l=4.84MPa、f'cc=57.2MPa、εcc=0.0099、εcu=0.0321。和无约束的 32MPa 相比,强度提升约 79%,峰值应变放大了近 5 倍。这个例子里 f'l/fc≈0.15,属于中等约束,恰好落在 Mander 公式与试验数据拟合得最好的区间。

2.3 强度、峰值应变与极限应变:三个公式的使用边界

f'cc 的公式是从大量圆截面和螺旋筋约束试验回归出来的,适用区间大致是 f'l/fc 在 0.05~0.5 之间。低于 0.05 时约束太弱,公式给出的 f'cc 仍高于 fc,但实际构件在加载后期保护层剥落、箍筋锚固滑移会削弱约束效果,结果偏乐观;高于 0.5 的强约束(高强箍筋密配)受骨料压碎和箍筋屈曲影响,公式没有覆盖,需要配合试验验证。

εcc 的表达式只依赖 f'cc/fc 的比值,说明 Mander 认为约束对强度的提升和对峰值应变的放大是同一个机制在驱动。εcu = 0.004 + 1.4·ρs·fyh·εsu/f'cc 中 εsu 是箍筋最大拉力对应的应变,HRB400 一般取 0.08~0.10。这个公式给出的是第一根箍筋拉断时刻的混凝土压应变,不是混凝土彻底失去承载力的应变。纤维截面分析里,超过 εcu 后应将纤维应力清零,而不是继续沿 Popovics 下降段无限制外推。下表汇总了全部输入输出,做标定文档时直接对着填:

符号含义常见取值/来源单位
fc无约束混凝土圆柱体抗压强度试验或规范换算,C40 取 32MPa
ec无约束峰值应变0.002-
ρs体积配箍率4·Asp/(s·dc)-
ke有效约束系数0.7~0.95,按截面算-
f'l有效侧向约束压力ke·ρs·fyh/2MPa
f'cc约束混凝土峰值强度公式计算MPa
εcc约束峰值应变公式计算-
εcu极限压应变公式计算-

3. 用 Python 复现 Mander 本构曲线并生成 OpenSees 材料卡

3.1 Popovics 曲线:一条式子同时画上升段和下降段

有了 f'cc 和 εcc 还不够,纤维截面需要的是每个应变对应的应力。Mander 采用 Popovics(1973)表达式:

fc = f'cc · x · r / (r − 1 + x^r),其中 x = εc / εcc

r = Ec / (Ec − Esec),Ec 是初始切线模量,Esec = f'cc / εcc 是割线模量。r 决定整条曲线的形态:约束越强,f'cc/εcc 越大,Esec 越接近 Ec,r 越小,下降段越平缓;约束弱时 r 偏大,过峰值后应力快速跌落。上面例子里 r≈1.26,属于约束良好的情形;而无约束混凝土的 r 通常在 2.0~2.5。用同一表达式处理上升段和下降段,省掉了分段函数的衔接判断,这是 Mander 曲线在各语言里都容易忠实移植的原因。

Ec 的取值要单独确认。Mander 原文献建议 Ec = 5000·√fc(fc 用 MPa),ACI 和我国规范习惯用 4700·√fc,二者对 r 的影响只有几个百分点,但必须和整条曲线的单位体系保持一致。如果 fc 使用 ksi,Ec 常数需要换成对应形式,混用会让初始刚度差一倍以上。

3.2 最小脚本:生成包络曲线并落盘

import csv import math def popovics_curve(fp, ep, strains, ec_mod): """Mander 约束混凝土包络曲线, fp 为 f'cc, ep 为 eps_cc""" esec = fp / ep # 割线模量 r = ec_mod / (ec_mod - esec) # 形状参数 out = [] for eps in strains: x = eps / ep if abs(x - 1.0) < 1e-12: # 峰值点单独处理 stress = fp else: stress = fp * x * r / (r - 1.0 + x ** r) out.append((eps, stress)) return out ec_mod = 5000.0 * math.sqrt(32.0) # 28284 MPa strains = [i * 0.0005 for i in range(0, 71)] # 0 ~ 0.035 points = popovics_curve(57.2, 0.0099, strains, ec_mod) with open("mander_core.csv", "w", newline="") as f: writer = csv.writer(f) writer.writerow(["strain", "stress_MPa"]) writer.writerows(points)

脚本用上一章算出的 f'cc=57.2、εcc=0.0099,在 0~0.035 区间取 71 个应变点。常规级配的约束混凝土下降段很平缓,0.0005 的采样步长足够描述;如果约束弱、下降段陡,要把步长加密到 0.0002。峰值点 x=1 处公式分子分母同时趋近于零,用相邻点插值或直接赋 f'cc 都可以,落盘成 CSV 后既能画包络图,也能导入 ABAQUS 定义 CDP 的受压硬化段。

3.3 从曲线到 OpenSees:Concrete04 材料卡的参数对照

OpenSees 里最接近 Mander 原模型的单轴材料是 Concrete04,它直接接收 fpc、epsc0、fpcu、epscu 四个受压参数,内部用同形式 Popovics 曲线生成包络。用上一节的 350mm 核心算例,材料卡长这样:

# opensees 材料卡: 核心(约束)混凝土 # 参数: tag fpc epsc0 fpcu epscu lambda ft Et uniaxialMaterial Concrete04 1 57.2 0.0099 55.0 0.0321 0.1 1.7 170.0

对照关系:fpc 填 f'cc=57.2,epsc0 填 εcc=0.0099,fpcu 是 εcu 处包络上的应力,从曲线上读约为 55.7MPa,填 55.0 是留一点保守余量;epscu 填 εcu=0.0321。注意约束良好的曲线到 εcu 时应力仍然接近峰值,这正是延性的来源——箍筋在峰值后仍然兜得住核心,分析时不要把 fpcu 想当然地压得很低。lambda 控制卸载刚度退化,常规取 0.1;ft 用 0.33·√fc 估算后微调;Et 是受拉软化刚度,取一个小正数即可。

注意:Concrete04 在 OpenSees 不同版本和编译分支里对正负号约定并不统一,多数官方版本压缩按正值输入,但也有分支与 Concrete02 一样要求负值。提交前用一个单纤维单元做单调压缩试算,确认峰值应变位置正确,比翻源码快得多。

保护层混凝土不能共用这份参数。保护层是无约束混凝土,fpc 填 fc、epsc0 填 0.002,并在 0.004~0.005 的剥落应变后把应力降到 0;如果收敛困难,改用带显式下降段的 Concrete02 更直观。核心和保护层在纤维截面里各算各的,这一点第 4 章会具体说。

4. 实战:圆截面墩柱的 Mander 参数标定与敏感性验证

4.1 一个实际桥墩:从图纸到纤维截面需要的两套参数

以直径 1200mm 的圆形桥墩为例:保护层 50mm,箍筋 D16@80,纵筋 24 根 D28,混凝土 C40(圆柱体强度取 32MPa),箍筋 HRB400(fyh=400MPa)。按第 2 章代码,dc = 1200 − 2×50 − 16 = 1084mm,ρcc = 24×615.8 / (π/4×1084²) ≈ 0.016。计算结果是 f'cc=42.9MPa、εcc=0.0054、εcu=0.0161。

对比第 2 章直径 350mm 核心在相同箍筋配置下的 f'cc=57.2MPa,可以清楚看到体积配箍率随核心直径增大而被稀释:大直径墩柱即便箍筋直径、间距都不变,约束效率也明显下降,Mander 模型把这个尺度效应天然地体现出来。实际工程里大直径墩柱要获得有效约束,加密间距的效果远好于单纯加大箍筋直径,这个结论从公式里就能直接读出来。

4.2 敏感性验证:间距、直径、屈服强度哪个说了算

对同一个墩柱只改变箍筋间距,看 f'cc 和 εcc 的反应:

变化项配置ρsf'l (MPa)f'cc (MPa)εcc
箍筋加密D16@600.01242.4146.20.0065
基准配置D16@800.00931.7842.90.0054
箍筋放宽D16@1200.00621.1439.30.0043

间距从 80 加密到 60,f'cc 提升约 7.8%;从 80 放宽到 120,f'cc 下降约 8.4%。f'l 的变化幅度比 f'cc 大得多,说明强度提升公式对 f'l 有压缩效应:约束压力中等偏弱时,f'cc 对约束压力不敏感。这给标定工作一个实用提示:如果墩柱约束水平落在这个区间,箍筋间距的小误差对极限承载力影响有限,不必纠结施工误差级别的偏差;但 εcc 对 f'cc/fc 的比值同样敏感,间距误差会直接传导到延性评估结论上。

敏感性验证的实施方式很简单:把间距、箍筋直径、fyh、fc 各设一个取值数组,两层循环批量跑 mander_circular 函数,最后按 f'cc 与 εcc 两个输出维度排序。这种网格扫描能快速判断哪些参数值得在图纸上反复核对,哪些参数只影响曲线末段的形态。

4.3 把两套材料装进纤维截面:约束核心与保护层的分工

纤维截面里约束核心和保护层是两组独立纤维,不能共用一个材料号。核心混凝土用第 3 节算出的 Mander 曲线,保护层用无约束参数(fc、εc=0.002、剥落应变 0.004),纵筋用 Steel02。openseespy 建模骨架:

import openseespy.opensees as ops ops.model('basic', '-ndm', 2, '-ndf', 3) # 1: 约束核心 2: 保护层 3: 纵筋 ops.uniaxialMaterial('Concrete04', 1, 42.9, 0.0054, 33.0, 0.0161, 0.1, 1.7, 170.0) ops.uniaxialMaterial('Concrete04', 2, 32.0, 0.0020, 0.0, 0.0040, 0.1, 1.2, 120.0) ops.uniaxialMaterial('Steel02', 3, 420.0, 200000.0, 0.01) ops.section('Fiber', 1) # 核心半径 (1084-16)/2=534mm, 保护层外半径 600mm ops.patch('circ', 1, 30, 30, 0.0, 0.0, 0.0, 0.534, 0.0, 360.0) ops.patch('circ', 2, 10, 10, 0.0, 0.0, 0.534, 0.600, 0.0, 360.0) # 24 根 D28, 布置半径取 0.515m ops.layer('circ', 3, 24, 420.0, 0.0, 0.0, 0.515, 0.0, 360.0)

这里的长度单位统一成米,面积 m²,应力 MPa,力的单位就是 MN,和 OpenSees 的 N-m 或 N-mm 体系都能衔接。核心半径取 (dc−dh)/2=534mm,对应箍筋内表面以内的区域;保护层是 534mm 到 600mm 的圆环。纵筋布置半径 515mm 的推导是箍筋内表面 534mm 减去半根纵筋直径 14mm 再留约 5mm 净距,截面划分 30×30 是精度与速度的折中,圆弧纤维会按面积自动加权,不需要手工调整纤维面积。

之后做 pushover 或弯矩-曲率分析时,截面曲率由纤维应变积分得到,等效屈服曲率和极限曲率都从这条骨架曲线上直接读取。要验证标定结果,最直接的方法是把计算得到的弯矩-曲率曲线与同参数试验柱的骨架对齐:屈服弯矩误差在 5% 以内、极限曲率误差在 15% 以内,Mander 参数可以认为标定完成。

5. Mander 模型收敛失败与曲线异常的排查技巧

5.1 退化性自检:无约束时曲线必须回到 f'c

实现完代码第一件事是跑退化测试:令 f'l=0,f'cc 应该恰好等于 fc,εcc 等于 εc,整个公式退化为无约束 Popovics 曲线。这个断言一行就能写:

r0 = mander_circular(32, 0.002, 400, 16, 80, 350, 0.0) assert abs(r0[3] - 32.0) < 1e-9 # f'cc 回到 f'c assert abs(r0[4] - 0.002) < 1e-12 # εcc 回到 εc

如果这步过不了,通常是 f'l 或 ke 公式里某个系数抄错,而不是曲线本身的问题,先查再往下走。

5.2 纤维截面不收敛先看 epscu 和残余应力

纤维分析在极限曲率附近频繁不收敛,最常见原因有两个:epscu 填得大于实际有效范围,或 fpcu 填得过高导致下降段过早出现负刚度。εcu 是首根箍筋拉断的应变,普通配箍构件在 0.02~0.035 区间,超过 0.04 的输入多半是重复计入了纵筋屈曲或箍筋滑移的影响。可以把 epscu 按计算值的 0.8 倍收紧,同时把 fpcu 降到 f'cc 的 70%~80%,再配合提升迭代最大次数和采用带线搜索的 Newton 算法,收敛率会明显改善。

5.3 单位的三种错法:MPa、mm 与 m 的混用现场

Mander 公式本身无量纲,但单位体系混乱是曲线异常的重灾区。fc 用 MPa 时 Ec=5000·√fc 成立;如果 fc 用了 kN/mm²,Ec 要做对应换算。应变的错误更隐蔽,不少脚本把 0.002 写成 2 或 0.2%,曲线形状完全走样。长度单位 mm 与 m 混用时,纤维截面面积差 10⁶ 倍,承载力结果一眼就能看出不对,但弯矩-曲率曲线往往要到整体模型阶段才暴露。排查顺序建议是:单材料单元出曲线 → 单纤维截面出弯矩-曲率 → 再进整体模型,每一步都打印关键值核对,不要跳过中间层直接跑整体。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询