首页/文章/ 详情

岩土本构模型 (Constitutive Models in FLAC3D and 3DEC

1月前浏览1150

1. 引言

本文以<Constitutive Models in FLAC3D and 3DEC>测试了5个大语言模型,包括:
  • deepseek-v2 (16b, 8.9G)
  • glm4 (9b, 5.5G)
  • qwen2.5:32b (32b, 20G)
  • Athene-V2 (72b, 47G)

  • llama3.2 (3b, 2.0G)

测试结果显示Athene-V2的效果最好,glm4的效果最差,另外3个不相上下。

2. 解释的岩土本构模型

该文件概述了FLAC3D和3DEC软件中支持的多种岩土工程材料模型,包括用于模拟不同土和岩石行为的模型,这些模型涵盖了从经典的Cam-Clay和Hoek-Brown到更复杂的CYSoil、Swell、Soft-Soil和NorSand等模型,每个模型都有其特定的应用场景和特性,如考虑体积变化、塑性流动规则、弹性模量函数以及张拉应变裂缝跟踪等。此外,文件还提到了一些可选的力学材料模型,这些模型提供了更广泛的模拟选项以适应不同的工程需求。
(1) Modified Cam-Clay模型:这种模型用于表示那些需要考虑体积变化对总体材料性质以及剪切抵抗力的影响的情况,如软粘土。
(2) Hoek-Brown模型 :这是一种替代Hoek-Brown-PAC模型的方法,它提供了一个随应力变化的塑性流动规则,该模型可以根据用户指定的膨胀角来描述破坏后的塑性流动,并且包含与Mohr-Coulomb模型相同的拉伸强度限制,它还支持基于强度折减方法的安全系数计算。
(3) Hoek-Brown-PAC模型 :这种模型用于描述完整岩石和岩体中导致破坏的应力条件,它包括一个塑性流动性规则,该规则随围压水平变化而变化。
(4) Cap-Yield (CYSoil)模型 :这是一种仅适用于FLAC3D的土模型,提供了对土非线性行为的全面表示。它包括摩擦硬化和软化剪切行为、椭圆体积帽、弹性模量函数以及随着塑性体积应变增加而增加的特性。
(5) Simplified CYSoil (CHSoil)模型 :这是一种简化版本的CYSoil模型,仅限FLAC3D,提供内置功能,包括使用双曲模型参数直接输入的摩擦硬化法则和Mohr-Coulomb破坏包络中的两种内置膨胀法则。
(6) Swell模型 :这是一种考虑湿润诱导变形的Mohr-Coulomb弹塑性模型,仅限FLAC3D,适用于模拟水分对土性质的影响。
(7) Mohr-Coulomb-Tension (MohrT)模型 :这是一种Mohr-Coulomb弹塑性模型,仅限FLAC3D,具有跟踪张拉应变裂缝的功能。
(8) Soft-Soil模型:仅限FLAC3D,这是一种适用于软土的弹塑性模型,具有高压缩特性。
(9) NorSand模型:仅限FLAC3D,这是种临界状态模型,适用于颗粒间相互作用由接触力及其滑动控制的岩土工程模型。
(10) 其他力学材料模型 :这些是FLAC3D的可选功能,提供了其他类型的模拟能力。

3. 补充的岩土本构模型

(1) Null model group  

Null model --- 空材料模型用于表示被移除或开挖的材料。

(2) Elastic Model Group

(1) Isotropic Elastic Model --- 弹性各向同性模型是材料行为最简单的表示方法(block zone cmodel assign elastic),该模型适用于均质、各向同性的连续材料,这些材料在卸载时表现出线性应力-应变行为,没有滞回现象

(2) Anisotropic (Transversely) Elastic Model --- 横观各向同性弹性模型能够模拟层状弹性介质,在这种介质中,法线方向和平行于层的方向上的弹性模量截然不同(block zone cmodel anisotropic)。

(3) Orthotropic Elastic Model --- 弹性正交模型表示具有三个相互垂直的弹性对称平面的材料,该模型可模拟强度低于极限的柱状玄武岩 (Modelling the anisotropic response of an orthotropic rock),这个模型不能用于FLAC2D。


4. 结束语

本文比较了5种大语言模型的文本解释功能,其中最主要的意图是测试刚刚发布的Athene-V2模型,相对来说,这个模型比其它几个模型的效果好,但总体来说,这些模型都不太可靠。在实际应用中,我们仍然选择付费的闭源模型。

来源:计算岩土力学
非线性岩土FLAC3D3DEC材料控制
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-11-21
最近编辑:1月前
计算岩土力学
传播岩土工程教育理念、工程分析...
获赞 150粉丝 1101文章 1782课程 0
点赞
收藏
作者推荐

FLAC3D与Python的集成 (2)---数据交换至Numpy

本文摘要(由AI生成):本文介绍了itasca库中与FLAC3D和Numpy数据交换相关的函数。文中首先列举了与动态时间、流体时间、热传导时间等相关的`itasca.zone`模块函数,接着详细介绍了`itasca.zonearray`模块的函数,这些函数允许与Numpy直接交互,包括获取和设置单元属性、坐标、应力、应变等。最后,作者通过一个示例展示了FLAC3D和Numpy之间数据交换的过程,并鼓励读者点赞和转发以分享这一有用的材料。1. 引言《FLAC3D与Python的集成 (1)---简述》一文简要描述了如何在FLAC3D环境中使用Python获取模型单元的属性值,在此基础上,本文描述FLAC3D与Python的数据交换过程,具体来说就是如何把FLAC3D的数据传输到Numpy的应用中。此外也将描述如何在FLAC3D中使用py文件以及使用Numpy的数据在matplotlib作图的流程。应当意识到,Python和Numpy并没有增强FLAC3D自身的计算功能,只是通过数据交换扩展了FLAC3D的计算能力,这表现在两方面:一方面Python和Numpy的数据处理能力比FISH语言要快得多,另一方面通过与Pyhton的数据交换,可以在FLAC3D环境下直接进行一些以前我们可能需要使用Tecplot或者Mtalab来作的数据处理。2. 使用py文件 如同FLAC3D,FLAC,UDEC,3DEC,PFC等软件,既可以使用交互式命令来运行,也可以把一系列命令保存成一个文件批处理运行,IPython也可以交互式使用命令(IPython术语称之为cell)。不过这样做效率太低,使用文件运行更方便一些。首先在工作目录下建一个空的py文件,比如在这个例子中命名为fitting.py,然后在FLAC3D中新建一个项目(File-&gt;New Project), 然后把fitting.py导入到新建的项目(File-&gt;Open into Project)中, 如下图所示。 接下来便可以往这个文件中填写代码了。在IPython中运行py代码需要使用 %run命令,例如%run fitting.py, 按回车即开始运行代码。3. 试验例子 在fitting.py文件中,首先需要输入关键模块,代码如下图所示。在这个例子中,我们输入Itasca模块,这是FLAC3D的核心模块;numpy和matplotlib模块是为了作图用的,而random模块为了产生随机数。it.command函数用来封装FLAC3D命令。it.zone.count()函数用来返回整个模型所有的单元数目。如本文开头所说, 这个例子没有什么实际意义,其目的是演示FLAC3D与Python的数据交换过程。首先我想随机从FLAC3D生成的1000个单元中获取id前101个之中的10个单元,然后对每个单元取出它的(x,y)坐标值。然后把这10对坐标保存在一个列表zone_position中。这个过程使用下面的代码实现。这段代码的运行结果如下:此时,我们可以检验一下这段代码运行的结果是否正确,比如想检查一下第72个单元的坐标,使用如下代码zone_specific = it.zone.find(72)print(zone_specific.pos())得出的结果是 vec3(( 1.500000e 00, 7.500000e 00, 5.000000e-01 ), 比较上面第72个单元的坐标是(1.5,7.5), 二者的结果一样,由此可以说明上面的代码编写正确。下面这步就是把FLAC3D的数据传输到Numpy。通过Numpy把zone_position列表中坐标值转化为np的数组, 使用下面的代码points = np.array(zone_position)至此,我们实现了FLAC3D与Numpy的数据交换,也就是说已经把单元坐标输入到Numpy中进行处理的。接下来的代码与FLAC3D已经没有关系了,纯粹是Python的操作。把这10个点画出来,然后用多项式拟合,超出了FLAC3D范围,在此不再唠叨了。画出的图形如下所示。4. itasca.zone模块的函数在这个例子中,我们仅用到了itasca.zone.count()这个函数,其它的函数调用方式与之一样。下面列出itasca.zone模块所有可使用的函数。这些函数分为两种类型,一种是取值的(get),另一种是赋值的(set),赋值的函数中都有set的字样,很好区别。itasca.zone.containing()itasca.zone.count() itasca.zone.create_ratio()itasca.zone.creep_time_total() itasca.zone.creep_timestep() itasca.zone.dynamic_time_total() itasca.zone.dynamic_timestep() itasca.zone.find()itasca.zone.fluid_ratio() itasca.zone.fluid_stress_normal() itasca.zone.fluid_time_total() itasca.zone.fluid_timestep() itasca.zone.fluid_unbal_avg() itasca.zone.fluid_unbal_max() itasca.zone.force_update() itasca.zone.list() itasca.zone.maxid() itasca.zone.mech_convergence() itasca.zone.mech_ratio() itasca.zone.mech_ratio_avg() itasca.zone.mech_ratio_local() itasca.zone.mech_ratio_max() itasca.zone.near(point: vec)itasca.zone.set_creep_time_total(value: float)itasca.zone.set_creep_timestep(value: float)itasca.zone.set_dynamic_time_total(value: float)itasca.zone.set_dynamic_timestep(value: float)itasca.zone.set_fluid_timestep(value: float)itasca.zone.set_thermal_time_total(value: float)itasca.zone.set_thermal_timestep(value: float)itasca.zone.thermal_ratio() itasca.zone.thermal_time_total() itasca.zone.thermal_timestep() itasca.zone.unbal()5. itasca.zonearray模块的函数itasca.zonearray模块的函数直接与Numpy交互,其使用方法与itasca.zone的使用方法一样。它是通过导入zonearray模块实现的。from itasca import zonearray as za下面列出所有zonearray模块的函数:itasca.zonearray.extra(slot: int)itasca.zonearray.faces() itasca.zonearray.fill_pos(data: array float{zone, 3}) itasca.zonearray.flow() itasca.zonearray.fluid_prop(prop_name: str)itasca.zonearray.gridpoints()itasca.zonearray.ids() itasca.zonearray.in_group(group_name: str, slot=&quot;default&quot;) itasca.zonearray.live_mechanical() itasca.zonearray.neighbors() itasca.zonearray.overlay_stresses() itasca.zonearray.pos() itasca.zonearray.prop_scalar(prop_name: str, fill_value=0.0)itasca.zonearray.set_extra(slot: int, data: array float{zone} or float{zone, 3})itasca.zonearray.set_fluid_prop(prop_name:str,data:array double{nzone})itasca.zonearray.set_group(membership: array bool{nzone}, group_name: str, slot=&quot;default&quot;) itasca.zonearray.set_prop_scalar(prop_name: str, array) itasca.zonearray.set_stress(array double{nzone, 3, 3}) itasca.zonearray.set_stress_flat(array double{nzone, 6}) itasca.zonearray.strain() itasca.zonearray.strain_flat() itasca.zonearray.stress() itasca.zonearray.stress_flat() itasca.zonearray.stress_max() itasca.zonearray.stress_min() itasca.zonearray.temperature()6. 结束语这个笔记借助一个没有实际意义的例子演示了FLAC3D和Numpy的数据交换过程,尽管只演示了单元坐标的交换,事实上其它属性的交换过程是相同的,以后我们将逐渐深入剖析其它知识点的使用方法。Last but not least, 如果感觉这个材料对你有帮助,不妨点个赞,转发一下。来源:计算岩土力学

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