自定义本构模型
2024flac3d入门指南

flac3d入门指南•软件介绍与安装•界面操作与基本功能•初级实例分析:简单模型模拟•中级实例分析:复杂模型模拟目•高级功能应用与技巧•工程案例分析与实战演练录01软件介绍与安装FLAC3D概述FLAC3D(Fast Lagrangian Analysis ofContinua in3Dimensions)是一款用于模拟三维连续介质力学行为的有限差分软件。
它基于显式拉格朗日算法和混合离散化技术,适用于分析复杂地质和岩土工程问题。
FLAC3D广泛应用于边坡稳定、地下工程、隧道开挖、地震工程等领域。
A BC D软件特点与优势显式算法采用显式有限差分法,无需迭代求解,计算效率高。
强大的后处理提供丰富的后处理功能,如等值线、矢量图、动画等,方便用户分析和展示模拟结果。
真实模拟能够模拟复杂的材料本构关系、节理、断层等地质结构,实现真实世界的准确模拟。
开放性支持用户自定义本构模型、边界条件等,方便用户进行二次开发和扩展。
1 2 3安装步骤1. 下载FLAC3D安装包,并解压到指定目录。
2. 运行安装程序,按照提示完成安装过程。
3. 配置环境变量,将FLAC3D的安装路径添加到系统环境变量中。
4. 启动FLAC3D软件,进行初步设置和配置。
01注意事项02确保计算机满足FLAC3D的系统要求,如操作系统、内存、硬盘空间等。
03在安装过程中,选择合适的安装选项和配置,以满足个人或团队的需求。
04在使用FLAC3D前,建议仔细阅读用户手册和相关教程,以充分了解软件的功能和操作方法。
02界面操作与基本功能启动界面及工具栏介绍启动界面展示软件LOGO、版本信息以及最近打开的文件列表。
工具栏包含文件操作、模型操作、视图操作、分析设置等常用工具按钮。
菜单栏提供详细的软件功能选项,包括模型、网格、材料、边界条件、分析等。
通过绘制点、线、面等基本元素构建三维模型。
模型建立网格划分几何体素导入对模型进行离散化,生成有限元网格,可设置网格密度和类型。
本构模型

2 应力-应变曲线
应力-应变反应与变形率无关的材料称为率无关;否则, 称为率相关。名义应变率定义为
x L0
因为
L 和
x x
L0 L L0 x
即名义应变率等于伸长率,例如 可以看出,对于 率无关材料的应力- 应变曲线是应变率独 立的,而对于率相关 材料的应力-应变曲 线,当应变率提高时 是上升的;而当温度 升高时是下降的。
4 非线性弹性
对于一个由三个彼此正交的对称平面组成的正交材料(如木 材或纤维增强的复合材料),仅有9个独立弹性常数,Kirchhoff 应力-应变关系为材料对称坐标平面,为正交各向异性体
对于各向同性材料,仅有3个常数
C11 C22 C33 C1 C21 C23 C31 C2 C44 C55 C66 C3
4 非线性弹性
小应变和大转动
许多工程应用包括小应变和大转动。在这些问题中,大变形 的效果主要来自于大转动,如直升机旋翼、船上升降器或者钓鱼 杆的弯曲。由线弹性定律的简单扩展即可以模拟材料的反应,但 要以PK2应力代替其中的应力和以Green应变代替线性应变,这称 为Saint-Venant- Kirchhoff材料,或者简称为Kirchhoff材料。 最一般的Kirchhoff模型为
3 一维弹性
2 2 应变能一般是应变的凸函数,例如, (w( 1 ) w( x ))( 1 x ) 0 x x
当
2 1 x x
公式的等号成立。
凸应变能函数的一个例子如图所示。在这种情况下,函数 是单调递增的,如果w 是非凸函数,则 s 先增后减,材料应变 软化,这是非稳定的材料反应, ds d x 0 如右下图。
[知识]在ansys中导入自定义本构模型---邓肯-张模型(转载)
![[知识]在ansys中导入自定义本构模型---邓肯-张模型(转载)](https://img.taocdn.com/s3/m/5a08b2f4534de518964bcf84b9d528ea81c72fb8.png)
在ansys中导入自定义本构模型---邓肯-张模型(转载)邓肯-张模型的关键点是材料的弹性模量随大小主应力差及小主应力(围压)的变化而变化,用APDL实现之的基本思路是:给每个单元定义一个材料号,分级施加荷载,在每个荷载步结束时提取出各单元的大小主应力,据此计算出下个荷载步的弹性模量Et,修改各单元之MP,用于下一步计算。
以下是一个简单算例,copy出去可直接运行。
常规三轴试验模拟by taomingxing,NWPU2003.7.16FINISH/CLEAR/TITLE,Numerical Simulation of three axes testing of soils /PREP7*dim,SUy,array,50 !Settlement records*dim,MaxPs,array,120 !Max history p1-p3*dim,MaxDs,array,120 !Max history Ds!*dim,EEt,array,50 !Et of elememtDuncan-Chang ModelSymbols:c-粘滞力,Fai-内摩擦角,Sf-破坏强度(p1-p3)f,Ds-应力水平,Pa-大气压,P3-围压*CREATE,Duncan-Chang !Creat Macro file*afun,deg !Unit of angle*set,Pa,1e5*set,P1,-ArrS3(i) !注意:岩土工程中应力为拉负压正*set,P3,-ArrS1(i)*if,P3,LT,0.1*Pa,thenP3=0.1*Pa !围压最小取值*endifSf=2*(c*cos(Fai)+P3*sin(Fai))/(1-sin(Fai)) !Mohr-Coulomb破坏强度(p1-p3)fDs=(P1-P3)/Sf !应力水平,*if,Ds,GT,0.95,thenDs=0.95 !应力水平最大取值*endif!判断加卸荷,如果(P1-P3)小于历史最大值视为卸荷-再加荷过程 *if,MaxPs(i),LT,P1-P3,thenEi=k*Pa*(P3/Pa)**nEt=Ei*(1-Rf*Ds)**2 !加荷情况的切线模量MaxPs(i)=P1-P3 !保存历史最大应力*elseif,MaxPs(i),GE,P1-P3Et=Kur*Pa*(P3/Pa)**n !卸荷模量*endifmp,ex,i,Et !修改单元i的Etmp,nuxy,i,Mu*END单元类型et,1,42 !平面四节点单元KEYOPT,1,3,2 !平面应变以下定义材料初始模量mp,ex,1,3.728e7 !砂土的弹性模量mp,nuxy,1,0.33mp,dens,1,1800建立几何模型blc4,0,0,0.08,0.15 !8cm X 15cm /PNUM,AREA,1/REPLOT网格划分aesize,all,0.01mat,1amesh,all边界条件nsel,s,loc,y,0d,all,Uy !底边界竖向约束nsel,s,loc,x,0d,all,Ux !左侧边界水平向约束nsel,all/replotfini/SOLUtime,0.01 !施加围压sfl,all,pres,2e5 !200kPasolve分级施加荷载,实现非线性计算荷载增量10kPa,共50级*DO,ti,1,50取出计算结果,修改弹性模量 /POST1*get,SUy(ti),node,29,u,y !Settlement record of time ti ETABLE,EtabS1,S,1 !取各单元第一主应力ETABLE,EtabS3,S,3 !取各单元第三主应力*dim,ArrS1,array,120*dim,ArrS3,array,120*do,Num,1,120 !Num为单元编号*get,ArrS1(Num),elem,Num,etab,EtabS1 !将单元结果存入数组*get,ArrS3(Num),elem,Num,etab,EtabS3*enddo/PREP7!^^修改砂土单元的Et,单元号1-120c=0 $Fai=35 $Rf=0.7 $k=400 $n=0.6 $Mu=0.33 $Kur=326.7 *do,i,1,120 !各单元循环计算*use,Duncan-Chang,c,Fai,Rf,k,n,Mu,Kur !调用Duncan-Chang宏文件*enddo!EEt(ti)=ET !保存第120单元之ET/SOLUtime,tisfl,3,pres,2e5+1e4*ti !施加荷载,增量1e4solve !对ti级荷载情况求解*ENDDO。
邓肯张本构模型在FLAC3D中的开发与实现

邓肯张本构模型在FLAC3D中的开发与实现一、本文概述随着计算机技术的不断发展和数值模拟方法的日益成熟,岩土工程领域的数值模拟分析已成为研究岩土工程问题的重要手段。
邓肯张本构模型(Duncan-Chang Constitutive Model)作为一种能够描述岩土材料非线性、弹塑性行为的本构模型,在岩土工程领域具有广泛的应用。
然而,在岩土工程数值模拟软件FLAC3D中,邓肯张本构模型并未直接内置,因此需要对其进行开发与实现。
本文旨在探讨邓肯张本构模型在FLAC3D中的开发与实现过程。
将介绍邓肯张本构模型的基本原理和特点,包括其应力-应变关系、屈服准则、硬化法则等。
然后,将详细阐述如何在FLAC3D中通过用户自定义本构模型(User-Defined Constitutive Model)接口实现邓肯张本构模型,包括模型的初始化、应力更新、应变更新等关键步骤。
还将讨论邓肯张本构模型在FLAC3D中的数值实现方法,如如何设置模型参数、如何处理模型的非线性问题等。
通过本文的研究,旨在为FLAC3D用户提供一种在岩土工程数值模拟中应用邓肯张本构模型的有效方法,也为其他岩土工程数值模拟软件的本构模型开发与实现提供借鉴和参考。
本文的研究成果将有助于提高岩土工程数值模拟的准确性和可靠性,推动岩土工程领域的数值模拟研究向更高水平发展。
二、邓肯张本构模型基本理论邓肯张本构模型(Duncan-Chang Model)是一种广泛使用的岩土工程材料本构模型,主要用于描述土的应力-应变关系。
该模型基于土的弹塑性理论,能够模拟土的非线性、弹塑性和剪胀性等行为。
邓肯张本构模型的基本假设包括土的应力-应变关系是非线性的,土的应力路径对其后续行为有影响,以及土的体积变化与其应力状态有关。
模型的核心在于其应力-应变关系的数学描述,其中包括弹性部分和塑性部分。
在弹性部分,邓肯张模型采用了切线弹性模量来描述土的弹性行为,这个模量随着应力的变化而变化,体现了土的非线性弹性特性。
本构模型的主要类型

本构模型的主要类型
本构模型的主要类型包括:
1. 定性模型:定性模型用于描述非数值性质的对象或概念之间的关系。
例如,社会网络模型用于描述人与人之间的关系,组织架构模型用于描述组织内部各个职位之间的关系。
2. 定量模型:定量模型用于描述数值性质的对象或概念之间的关系。
例如,经济模型用于描述经济变量之间的关系,物理模型用于描述物理系统的运动和相互作用。
3. 静态模型:静态模型用于描述对象或概念在一个特定时刻的状态或属性。
例如,静态市场模型用于描述市场中商品的供需关系在某一时间点上的平衡情况。
4. 动态模型:动态模型用于描述对象或概念在一段时间内的变化和发展过程。
例如,经济增长模型用于描述经济系统在一段时间内的增长趋势和变化规律。
5. 离散模型:离散模型用于描述具有离散状态和离散时间的对象或概念之间的关系。
例如,排队模型用于描述顾客在银行排队等待的过程。
6. 连续模型:连续模型用于描述具有连续状态和连续时间的对象或概念之间的关系。
例如,物理运动模型用于描述物体在空间中的连续运动轨迹。
7. 确定性模型:确定性模型假设系统的行为是完全可预测和确定的,不存在随机因素。
例如,数学线性规划模型用于求解一个确定的最优解。
8. 随机模型:随机模型假设系统的行为存在不确定性和随机性,通常使用概率论和统计学方法进行建模和分析。
例如,蒙特卡洛模拟用于模拟金融市场中的随机波动和风险。
这些不同类型的本构模型可以根据具体问题的需求和特点选择合适的模型进行建立和分析。
ansys用户自定义材料本构功能

ansys用户自定义材料本构功能首先,打开ansys,这里以静力学分析为例子,选择Static Structural,导入模型。
接着在工程A中双击工程数据,Engineering Data,进去后可看到系统默认的材料属性为结构钢。
接着在结构钢材料的下方,点击Click here to add a new meterial,输入材料名称,进入材料编辑栏。
然后从左侧属性栏选择密度和材料各项系数,输入相应的数值,即可生成新的材料。
输入正确的数值后材料名称前的问号就会消失,表示材料生成完成,如果数值有明显错误,问号就不会消失。
使得注意的是,在这里编辑的材料只会在工程A中出现,一旦退出软件,进入另一个工程的编辑,之前编辑的材料就会消失,因为材料并没有被编辑进材料库里,无法用于其他工程的使用。
所以,对于常用的材料,一般都会先编辑进材料库,以方便后续工程可调用。
flac3d自定义本构模型

3-1
3 WRITIΒιβλιοθήκη G NEW CONSTITUTIVE MODELS
3.1 Introduction The user may create constitutive model behavior for use in FLAC 3D. The model must be written in C++, and compiled as a DLL file (dynamic link library) that can be loaded whenever it is needed. The main function of the model is to return new stresses, given strain increments. However, the model must also provide other information (such as names) and describe certain details about how the model interacts with the code. In the C++ language, the emphasis is on an object-oriented approach to program structure, using classes to represent objects. The data associated with an object is encapsulated by the object and is invisible outside of the object. Communication with the object is by member functions that operate on the encapsulated data. In addition, there is strong support for a hierarchy of objects: new object types may be derived from a base object, and the base-object’s member functions may be superseded by similar functions provided by the derived objects. This arrangement confers a distinct benefit in terms of program modularity. For example, the main program may need access to many different varieties of derived objects in many different parts of the code, but it is only necessary to make reference to base objects, not to the derived objects. The runtime system automatically calls the member functions of the appropriate derived objects. A good introduction to programming in C++ is provided by Stevens (1994); it is assumed that the reader has a working knowledge of the language. The methodology of writing a constitutive model in C++ for operation in FLAC 3D is described in Section 3.1.1. This includes descriptions of the base class, member functions, registration of models, information passed between the model and FLAC 3D, and the model state indicators. The implementation of a DLL model is described and illustrated in Section 3.1.2. This includes descriptions of the support functions used by the model, the source code for an example model, FISH support for user-written models, and the mechanism for creating and loading a DLL. All of the files referenced in this section are contained in the “\ITASCA\FLAC3D400\Models” directory. Note that a DLL must be compiled using Microsoft Visual Studio 2005 (or later) for operation in FLAC 3D.
有限元仿真自定义材料本构曲线

Radioss中破坏模型/FAIL/TAB1详细介绍陆淑君王琮翔在Radioss的破坏模型中,/FAIL/TAB1是一个用于描述延性破坏并且功能强大的破坏模型。
相对于Radioss中的另两种破坏模型FAIL/JOHNSON 和 /FAIL/BIQUAD的参数输入方式,/FAIL/TAB1能支持完整曲线的输入,全面地描述破坏信息,并且它还可以考虑材料破坏受不同应变率,网格单元大小,甚至不同温度的影响。
塑性破坏应变和应力三轴度(stress triaxiality)的破坏曲线通过/FAIL/TAB1输入弹塑性材料破坏模型/FAIL/JOHNSON、/FAIL/BIQUAD和/FAIL/TAB1均需要定义材料塑性破坏应变εf和应力三轴度σ*的关系。
通过/FAIL/TAB1能将εf -σ*破坏曲线完整地输入,这样就能将某些材料的εf -σ*曲线局部最大值轻松地体现出来,且能保证精度。
破坏曲线是使用/FAIL/TBA1模型中的table1_ID定义。
实例:使用/TABLE 一维(即dimension=1)设置εf -σ * 破坏曲线支持应变率有时材料的破坏曲线与应变率有关,/FAIL/TAB1可以针对应变率的影响在/TABLE中进行定义。
下图是一个设置/TABLE考虑应变率的实例。
实例:使用/TABLE 二维(即dimension=2)设置不同应变率下的破坏曲线实例中,同时输入三条不同的破坏曲线,可以在后方填写相对应的应变率数值。
考虑罗德角的材料破坏面使用/FAIL/TAB1用于模拟3D(实体单元)的破坏曲线时可以设置和罗德角的关系,在/FAIL/TAB1中table1_ID卡片加入关于罗德角的曲线关系。
如此,关于三轴应力和罗德角构成的完备的材料破坏面就可以描述出来。
*关于罗德角(Lode Angle)的介绍,请参考上一篇公众号文章《Radioss破坏模型/FAIL/JOHNSON和/FAIL/TAB1》。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4 自定义新的本构模型
介绍
FLAC3D自定义本构模型跟FLAC手册中讲到的用FISH来自定义本构模型一样。
然而在FLAC3D中不支撑FISH语言来自定义本构模型,自定义本构模型开发必须用C++语言,且编译成DLL文件(动态链接库),动态链接库文件能在需要的时候随时加载上去。
本构模型的主函数主要是返回新的应力,给出应变增量。
然而自定义本构模型也必须给出一些其他的信息:比如模型名称和读入、写出保存文件等操作。
C++语言是一种面向对象的程序设计语言,使用类(classes)来代表对象(objects)。
对象的数据被对象封装起来,在对象的外面数据是不可见的。
通过成员函数来访问对象,而成员函数可以对封装的数据进行操作。
另外C++语言强烈支持对象的等级结构,新的对象性质可以从一个基本对象产生,基本对象的成员函数可以被派生出来的对象的成员函数替代。
这些特点使程序更加模块化。
举个例子:主程序需要在程序代码的不同地方建立与派生类的不同变量之间的接口关系,但是这些仅仅只关系到基类,与派生类无关。
运行时间系统自动的调用适当的派生类的成员函数。
对C++比较好的介绍来自Stevens (1994);它假象读者有一定得编程语言知识,特别是对C语言的了解。
在部分将介绍怎么用C++语言开发自定义本构模型。
这节主要包括基类、成员函数、本构模型编号、自定义本构模型与FLAC3D之间的传递信息,本构模型状态指示器。
在节中将介绍怎样生成DLL本构模型。
这一节主要包括自定义本构模型的支持函数,实例本构的源代码,FISH支持的用户自定义本构,和怎样生成和加载一个DLL文件。
在这一节中所有的参考文件被包含在“\ITASCA\Models\UDM”文件夹下面的“”这个压缩包文件里面。
注意:FLAC3D 版本是用Microsoft Visual C++(VC++)版本编译的。
用户自定义的DLL文件最好采用与其相当的编译器来编译,以使用户自定义的DLL文件能与FLAC3D兼容。
自定义本构的方法
自定义本构的基类
以上介绍的方法是FLAC3D自定义本构支持的方法。
基类为从基类派生出来的实际的本构模型提供框架。
这个基类叫ConstitutiveModel类,被称为“绝对”的类,因为他声明了许多完全虚有的成员函数(通过=0语法附加到函数原型)。
这意味着这个基类不能产生任何对象,以及从这个基类派生出来的任何对象都必须提供真实的成员函数,以替代ConstitutiveModel类中的虚有成员函数。
例子,提供了ConstitutiveModel(包含在文件“”中)这个类的部分代码,ConstitutiveModel类中的一些成员函数,像公共函数在例子中省略掉了。
公有函数的使用(像YoungPoissonFromBulkShear)是不用证明的,有关他们使用的例子可以在提供的本构模型源程序中找到,FLAC3D使用其它的函数来操作和访问本构模型,用户可以毫无理由的使用和重新定义这些。
class ConstitutiveModel {
public:
EXPORT ConstitutiveModel(unsigned uTypeIn,bool bRegister=false);
EXPORT virtual ?ConstitutiveModel(void);
double ConfinedModulus(void)这个对象返回一个值,这个值可以更好的估计最大的受压模量。
它应用在FLAC3D计算稳定时间步中,对于一个线性的弹性模型来说,这个受压模量是K + 4G/3。
double ShearModulus(void)这个对象返回一值,这个值可以更好的估计当前的正切剪切模量。
这个使用在FLAC3D动力本构模型中粘滞静态边界系数。
double BulkModulus(void) FLAC3D目前还没有使用这个对象,但是这个对象可以很好的返
回对当前的正切体积模量的估计。
double SafetyFactor(void)这个对象目前也还没有使用,它必须返回一些值,像。
unsigned Version(void)这个对象返回本构模型版本号。
这个用来处理早期本构模型版本保存的结果文件,而这早期的本构模型可能忽略了一些变量。
ConstitutiveModel *Clone(void)创建一个新的对象,必须与当前类相同,返回一个ConstitutiveModel类指针。
不管FLAC3D什么时候在一个单元中调用本构,它都被调用。
const char *SaveRestore(ModelSaveObject *mso)当SAVE或是RESTORE命令给出时,这个被函数调用。
本构模型必须首先调用基类的SaveRestore()这个函数。
SaveRestore()允许本构模型保存或是恢复每个对象的数据。
仅仅允许保存整数类型或是浮点数类型,其他的数据类型必须要转换成这两种类型。
派生类函数必须首先调用mso->Initialize(nd,ni),这里nd表示双精度存取(或是恢复)数据字节数,ni表示整型存取(或是恢复)数据字节数。
变量通过mso->Save(ns,var)这个函数识别,这里ns是变量的序号(从0到nd-1或是从0到
ni-1),而这主要取决于实际整型或是浮点型数据存取或恢复的位数,var是需要保存的变量。
有单独的Save()去处理整型或是实型变量。
这个结构体类ModelSaveObject是不怎么重要的,除了以上提到的函数。
它被定义在“”这个头文件中。
重新定义的类也必须包含构造函数,而这个构造函数调用基类的构造函数。
如果这个bRegister变量的值为true,基类的构造函数就被调用,然后派生出来的本构模型就被FLAC3D 注册登记过。
一个与模型相关的数(uTypeIn)也必须通过;这使得当从一个文件中恢复出来的单元能够重新设置正确的本构模型。
一般取一个比较的值来表示这个(比如100或是更大),以避免与从1开始的模型内置变量产生冲突。
在其他的所有情况中,派生类构造函数在被调用时,应当不含任何参数,就像Clone这个成员函数一样。
通过构造函数可以初始化成员数据,就像例所示。
在这个例子中本构模型的特别号是整型变量mnUserMohrModel(具体看例),这些符号“dBulk”、“dShear”等等是派生类的数据成员。
Example Typical model constructor
UserMohrModel::UserMohrModel(bool bRegister)
:ConstitutiveModel(mnUserMohrModel,bRegister), dBulk,
dShear, dCohesion, dFriction, dDilation,
dTension, dYoung, dPoisson, dE1, dE2,
dG2, dNPH, dCSN, dSC1, dSC3,
dBISC, dE21 { }
本构模型的编号
每个用户自定义本构模型都包含它自己的名称,它的材料参数的名称,以及单元应力状态指示器。
FLAC3D通过调用合适的成员函数来实现以上这些,就像在节中介绍的一样。
FLAC3D通过一个静态的、全局的本构模型例子来调用构造函数,以识别用户自定义的本构模型(参见例子)。
当FLAC3D被加载(主要是内置本构模型),或是当一个DLL文件被加载上(外置本构模型),这时这个构造函数被创建。
这个参数的值为true时导致了基类构造函数对新本构模型的注册,然后把它加在本构模型列表中。
只有一个静态的、注册的、特别的本构模型被定义,它是为了方便插入到C++本构模型源代码中,以至于当这个模型相关的DLL文件被加载时,它能够被注册。
当FLAC3D需要本构模型的任何信息,或是需要去实例化一个模型时(使用Clone 函数)时,这个静态的实例化模型被调用。
Example Global instantiation of a model object
static ElasticModel modelInstance(true);
. forces a constructor call to the model registry
计算中本构模型和FLAC3D软件之间的交流。