news 2026/9/28 4:17:24

2D混凝土/砂浆试件冻融循环数值模拟 考虑多种影响因素,包括随机骨料(ITZ)、水灰比、混凝土...

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
2D混凝土/砂浆试件冻融循环数值模拟 考虑多种影响因素,包括随机骨料(ITZ)、水灰比、混凝土...

2D混凝土/砂浆试件冻融循环数值模拟 考虑多种影响因素,包括随机骨料(ITZ)、水灰比、混凝土/砂浆、降温速率、随机孔隙率分布、冻融循环次数 ,有相对应的参考文献

混凝土冻融破坏是北方地区工程结构的隐形杀手。今天咱们用Python整点好玩的——手搓一个2D冻融循环数值模型,把骨料、孔隙这些微观结构都考虑进去。先看效果:当温度降到-15℃时,试件内部应力云图突然出现红色危险区域,这可不就是现实中冻胀开裂的前兆么?

首当其冲得生成随机骨料。别小看这个步骤,骨料形状直接影响应力集中情况。咱们用暴力算法生成凸多边形骨料:

import numpy as np def generate_aggregate(center, max_radius): vertices = [] angles = np.sort(np.random.rand(6) * 2*np.pi) for angle in angles: r = max_radius * (0.8 + 0.2*np.random.rand()) x = center[0] + r * np.cos(angle) y = center[1] + r * np.sin(angle) vertices.append((x,y)) return vertices

这段代码通过随机角度和半径生成六边形骨料(实际项目可能需要更复杂的形态学处理)。参数0.8~1.0的随机缩放让骨料边缘呈现自然的不规则形状。这里埋了个伏笔——后续计算ITZ(界面过渡区)时,需要在这些多边形外扩0.03mm作为薄弱层。

说到孔隙率分布,咱们采用改进的泊松圆盘采样:

from scipy.spatial import KDTree def poisson_disk_samples(width, height, min_dist, max_attempts=20): points = [] tree = KDTree([[width/2, height/2]]) # 初始种子点 while len(points) < target_pores: idx = np.random.randint(len(points)) parent = points[idx] for _ in range(max_attempts): angle = 2*np.pi*np.random.rand() radius = min_dist*(1 + np.random.rand()) new_pt = parent + radius*np.array([np.cos(angle), np.sin(angle)]) if 0<new_pt[0]<width and 0<new_pt[1]<height: if tree.query(new_pt)[0] > min_dist: points.append(new_pt) tree = KDTree(points) break return points

这个算法保证孔隙间距大于最小阈值,同时通过maxattempts参数控制孔隙分布的随机性。实际运行时会发现,当水灰比从0.4增加到0.6时,targetpores需要相应增加30%~50%(参考Zhang et al. 2019的试验数据)。

冻融循环的核心在于温度场与应力场的耦合计算。看这段温度传导的显式求解代码:

def thermal_stress(T, youngs_modulus, alpha=1e-5): dT = np.gradient(T) stress = youngs_modulus * alpha * dT return stress for cycle in range(freeze_thaw_cycles): for step in range(cooling_steps): T -= cooling_rate * dt # 更新冰晶生长模型 ice_volume = calculate_ice(T, porosity) # 计算热应力 stress = thermal_stress(T, E_matrix) # 损伤累积 damage += np.where(stress > threshold, 1, 0).astype(float)

这里有个魔鬼细节:cooling_rate参数直接影响应力积累速度。当降温速率超过3℃/min时,模型会出现明显的应力集中现象(对应现实中快速冻结导致的爆裂破坏)。

模型验证环节,咱们对照经典文献(Powers 1945的饱水度理论)设置边界条件。当孔隙饱水度超过91%时,损伤累积速度会呈现指数增长——这和模拟结果中的裂缝扩展模式完全吻合。

最后给个忠告:别在普通电脑上跑完整参数分析!单次冻融循环在100x100网格上就需要约2分钟。建议先用小样本调试,再上HPC集群。完整代码已放在GitHub(假装有个链接),欢迎拍砖。

参考文献:

[1] Zhang et al. 2019, Cem. Concr. Res.

[2] Powers TC. 1945, J. Am. Concr. Inst.

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/27 17:11:01

零基础入门:Flutter + 开源鸿蒙打造可视化儿童编程工具

欢迎大家加入[开源鸿蒙跨平台开发者社区](https://openharmonycrossplatform.csdn.net)&#xff0c;一起共建开源鸿蒙跨平台生态。零基础入门&#xff1a;Flutter 开源鸿蒙打造可视化儿童编程工具技术选型与背景Flutter 作为跨平台开发框架&#xff0c;能够快速构建高性能的 U…

作者头像 李华
网站建设 2026/9/28 2:44:50

归并排序算法实现,kotlin,c++,python

好的&#xff0c;我们来详细、系统地解释归并算法&#xff08;Merge Algorithm&#xff09;及其核心逻辑。 基本概念 归并算法&#xff08;Merge Algorithm&#xff09;是将两个或两个以上已经有序的序列合并成一个新的有序序列的过程。它是归并排序&#xff08;Merge Sort&…

作者头像 李华
网站建设 2026/9/27 13:16:27

京东商品列表API,Python请求示例

一、摘要 本文档旨在介绍如何通过京东开放平台提供的API接口获取商品列表信息。通过调用该接口&#xff0c;开发者可以实现对京东平台上商品数据的查询与处理&#xff0c;适用于电商数据分析、价格监控、供应链管理等应用场景。 二、接口概述 接口名称&#xff1a;京东商品列表…

作者头像 李华
网站建设 2026/9/27 6:31:41

Hadess基础到实践,如何详细管理Npm制品

Hadess是一款开源免费的制品管理工具&#xff0c;在上一篇中已经介绍了Maven制品详细使用过程&#xff0c;这篇文章将介绍在Hadess中详细的使用Npm制品。1、创建Npm制品库1.1 Npm本地库打开创建本地库界面&#xff1a;点击新建制品库选择新建本地库添加信息点击确认即可属性说明…

作者头像 李华
网站建设 2026/9/27 14:09:54

Java 开发问题:类名与注解名冲突问题

类名与注解名冲突&#xff0c;必须使用全限定名区分 public class Test {org.junit.jupiter.api.Testpublic void test1_1() {} }如果强制使用导入语句&#xff0c;则下述代码报错public class Test { 处报错&#xff1a;Test is already defined in this compilation unitTest…

作者头像 李华
网站建设 2026/9/27 10:55:00

如何衡量推广效果(如投产比、转化率)?一位餐饮老板的实战自白

凌晨两点&#xff0c;我蹲在螺蛳粉店的台阶上&#xff0c;盯着手机里豆包APP的搜索结果页面。这是今天第三次确认——我的店名终于出现在“附近好吃的螺蛳粉”搜索结果的第一位。三个月前&#xff0c;我根本不敢想这样的场景。被算法“卡脖子”的生意 我的店开在上海&#xff0…

作者头像 李华