ABAQUS-二次开发-边界条件

合集下载

ABAQUS-二次开发-边界条件

ABAQUS-二次开发-边界条件

这个例子模拟三峡库区的水位涨落时,涉水土质滑坡的渗流场分布情况的,是以前做的,蛮好玩的。

如果大家关心些新闻的话,三峡库区有涨水、蓄水、排水、枯水这个一年一次循环的周期,关键问题就在于怎么在数值模拟中考虑这个时间单位这里用的是“天”,任何问题,只要把单位统一化,就可以实现自己所定义的单位系统下的问题,这个大家应该是很熟悉的了。

t=2天t=4天t=8天t=16天t=20天t=26天图2 浸润线位置随涨水时间t变化图数值模拟中实现这个问题,需要对边界条件上加载孔隙水压力的方式动手脚了,首先把时间定下来,然后把每个时间对应的水位高度定下来,然后就是写对应的程序了,关键就在于,需要在各个位置的节点处定义不同的pp_t幅值曲线。

这个问题使用子程序会很方便,也可以不用,只需要定义一堆关键字吧,但是GUI方式是完全没法实现的。

其实软件关键字的背后也就是他的脚本语言,就好像是FLAC里写一句struct cable,这个命令本身只有给你看懂那么一个傻瓜意义意义。

看看关键字怎么定义的:*AMPLITUDE,name=down1,VALUE=ABSOLUTE0,0,30,-300,180,-300*AMPLITUDE,name=down2,VALUE=ABSOLUTE0,10,1,0,30,-290,180,-290*AMPLITUDE,name=down3,VALUE=ABSOLUTE0,20,2,0,30,-280,180,-280*AMPLITUDE,name=down4,VALUE=ABSOLUTE0,30,3,0,30,-270,180,-270*AMPLITUDE,name=down5,VALUE=ABSOLUTE0,40,4,0,30,-260,180,-260*AMPLITUDE,name=down6,VALUE=ABSOLUTE0,50,5,0,30,-250,180,-250*AMPLITUDE,name=down7,VALUE=ABSOLUTE0,60,6,0,30,-240,180,-240*AMPLITUDE,name=down8,VALUE=ABSOLUTE0,70,7,0,30,-230,180,-230*AMPLITUDE,name=down9,VALUE=ABSOLUTE0,80,8,0,30,-220,180,-220*AMPLITUDE,name=down10,VALUE=ABSOLUTE0,90,9,0,30,-210,180,-210*AMPLITUDE,name=down11,VALUE=ABSOLUTE0,100,10,0,30,-200,180,-200*AMPLITUDE,name=down12,VALUE=ABSOLUTE0,110,11,0,30,-190,180,-190*AMPLITUDE,name=down13,VALUE=ABSOLUTE0,120,12,0,30,-180,180,-180*AMPLITUDE,name=down14,VALUE=ABSOLUTE0,130,13,0,30,-170,180,-170*AMPLITUDE,name=down15,VALUE=ABSOLUTE0,140,14,0,30,-160,180,-160*AMPLITUDE,name=down16,VALUE=ABSOLUTE0,150,15,0,30,-150,180,-150*AMPLITUDE,name=down17,VALUE=ABSOLUTE 0,160,16,0,30,-140,180,-140*AMPLITUDE,name=down18,VALUE=ABSOLUTE 0,170,17,0,30,-130,180,-130*AMPLITUDE,name=down19,VALUE=ABSOLUTE 0,180,18,0,30,-120,180,-120*AMPLITUDE,name=down20,VALUE=ABSOLUTE 0,190,19,0,30,-110,180,-110*AMPLITUDE,name=down21,VALUE=ABSOLUTE 0,200,20,0,30,-100,180,-100*AMPLITUDE,name=down22,VALUE=ABSOLUTE 0,210,21,0,30,-90,180,-90*AMPLITUDE,name=down23,VALUE=ABSOLUTE 0,220,22,0,30,-80,180,-80*AMPLITUDE,name=down24,VALUE=ABSOLUTE 0,230,23,0,30,-70,180,-70*AMPLITUDE,name=down25,VALUE=ABSOLUTE 0,240,24,0,30,-60,180,-60*AMPLITUDE,name=down26,VALUE=ABSOLUTE 0,250,25,0,30,-50,180,-50*AMPLITUDE,name=down27,VALUE=ABSOLUTE 0,260,26,0,30,-40,180,-40*AMPLITUDE,name=down28,VALUE=ABSOLUTE 0,270,27,0,30,-30,180,-30*AMPLITUDE,name=down29,VALUE=ABSOLUTE 0,280,28,0,30,-20,180,-20*AMPLITUDE,name=down30,VALUE=ABSOLUTE 0,290,29,0,30,-10,180,-10*AMPLITUDE,name=down31,VALUE=ABSOLUTE 0,300,29.9,0,180,0*BOUNDARY,AMPLITUDE=down1Part-1-1.nod30,8,,0*BOUNDARY,AMPLITUDE=down2Part-1-1.nod29,8,,10*BOUNDARY,AMPLITUDE=down3Part-1-1.nod28,8,,20*BOUNDARY,AMPLITUDE=down4*BOUNDARY,AMPLITUDE=down5 Part-1-1.nod26,8,,40*BOUNDARY,AMPLITUDE=down6 Part-1-1.nod25,8,,50*BOUNDARY,AMPLITUDE=down7 Part-1-1.nod24,8,,60*BOUNDARY,AMPLITUDE=down8 Part-1-1.nod23,8,,70*BOUNDARY,AMPLITUDE=down9 Part-1-1.nod22,8,,80*BOUNDARY,AMPLITUDE=down10 Part-1-1.nod21,8,,90*BOUNDARY,AMPLITUDE=down11 Part-1-1.nod20,8,,100*BOUNDARY,AMPLITUDE=down12 Part-1-1.nod19,8,,110*BOUNDARY,AMPLITUDE=down13 Part-1-1.nod18,8,,120*BOUNDARY,AMPLITUDE=down14 Part-1-1.nod17,8,,130*BOUNDARY,AMPLITUDE=down15 Part-1-1.nod16,8,,140*BOUNDARY,AMPLITUDE=down16 Part-1-1.nod15,8,,150*BOUNDARY,AMPLITUDE=down17 Part-1-1.nod14,8,,160*BOUNDARY,AMPLITUDE=down18 Part-1-1.nod13,8,,170*BOUNDARY,AMPLITUDE=down19 Part-1-1.nod12,8,,180*BOUNDARY,AMPLITUDE=down20 Part-1-1.nod11,8,,190*BOUNDARY,AMPLITUDE=down21 Part-1-1.nod10,8,,200*BOUNDARY,AMPLITUDE=down22 Part-1-1.nod9,8,,210*BOUNDARY,AMPLITUDE=down23*BOUNDARY,AMPLITUDE=down24Part-1-1.nod7,8,,230*BOUNDARY,AMPLITUDE=down25Part-1-1.nod6,8,,240*BOUNDARY,AMPLITUDE=down26Part-1-1.nod5,8,,250*BOUNDARY,AMPLITUDE=down27Part-1-1.nod4,8,,260*BOUNDARY,AMPLITUDE=down28Part-1-1.nod3,8,,270*BOUNDARY,AMPLITUDE=down29Part-1-1.nod2,8,,280*BOUNDARY,AMPLITUDE=down30Part-1-1.nod1,8,,290*BOUNDARY,AMPLITUDE=down31Part-1-1.nod0,8,,300以上是一部分关键字,其实根本问题就是找到对应节点,对各个节点附上与时间相关的边界。

浅谈ABAQUS数值模拟中的二次开发问题

浅谈ABAQUS数值模拟中的二次开发问题
延性损伤.doc )
例子:一个基于J2理论的针对大变形弹塑性材料 的本构方程 (例:umat\umat.doc)
1.3.4其他(VMAT、URDFIL…)
功能:比如VMAT是指动力学计算中的用户自定 义材料本构,通过URDFIL可以把计算数据写 入指定文件,USDFLD可以定义场变量(一个 场变量对应一个参数值)为状态变量(位移、 应力)的函数等。
浅谈数值模拟中的 二次开发问题
二次开发问题的分类
1 改变软件初始环境变量
2 创建新的图形用户界面 3 子程序开发
1. 1 改变软件初始环境变量
软件差异较大 不具有通用意义
1.2 创建新的图形用户界面
1.2.1 前后处理小插件(例:1\1.2.1.doc) 1.2.2 创建的方式 ① 软件脚本语言(上例) ② 面向对象语言,如C++,java等 ③ bat文件(例:1\1.2.2.3.doc)
例2 边界条件与时间和坐标相关
(例:dload\例2水位 变化\up-down.avi,dload\例2水位变化\边界条件.doc)
例3 非均布载荷 (例:dload\例3非均布载荷\非均布载荷.doc) 例4 载荷随分析步变化 (例:dload\例4不同step不同载荷\
载荷随分析步变化.doc)
2 结语
数值模拟没有以前理解中的那么局限,好 好研究一下,会发现是自.3.1 定义复杂边界条件
1.3.2 用户自定义单元子程序(UEL)
1.3.3 用户自定义材料子程序(UMAT)
1.3.4 其他(VMAT、URDFIL…)
1.3.1定义复杂边界条件
例1 移动载荷 (例:dload\例1移动载荷\dz.avi,dload\例1移

Abaqus二次开发介绍

Abaqus二次开发介绍

Abaqus⼆次开发介绍ABAQUS提供了两种⼆次开发的接⼝,⼀是⼦程序接⼝(user subroutine),⼀种是脚本接⼝(Abaqus scripting interface),Abaqus的脚本语⾔是在python语⾔的基础上进⾏的定制开发,它扩充了python的对象模型和数据类型,使Abaqus脚本接⼝的功能更加强⼤,⼀般来说,Abaqus脚本接⼝可以实现以下功能①创建、修改ABAQUS模型中的属性,如部件、材料、荷载和分析步等②创建、修改和提交分析作业③读取和写⼊ABAQUS输出数据⽂件④查看分析结果Abaqus中python脚本的通信关系如下图所⽰从图中可以看出,ABAQUS可以通过三种⽅式运⾏脚本⽂件(1)GUI。

Abaqus在采⽤GUI进⾏建模的同时,会⽣成⼀个rpy格式的脚本⽂件。

当然,也可以通过macro管理器录制⼀段宏命令(2)命令⾏。

在abaqus CAE界⾯底端的命令⾏键⼊python命令,点击回车后即可⾃动运⾏。

(3)编辑脚本⽂件。

预先编辑好脚本⽂件,在start session 对话框或者file按钮⾥选择run script运⾏脚本。

也可以在ABAQUS command窗⼝中键⼊命令运⾏脚本Abaqus cae script=myscript.pyAbaqus cae startup=myscript.py启动CAE界⾯并运⾏脚本Abaqus viewer script=myscript.pyAbaqus viewer startup=myscript.py启动Viewer并运⾏脚本Abaqus cae noGUI=myscript.pyAbaqus viewer noGUI=myscript.py不启动CAE或者Viewer运⾏脚本此外,ABAQUS也提供了⼀个python编译器,可以通过file→abaqus pde运⾏详细的python命令,⼤家可以通过帮助⽂件中的Abaqus Scripting Reference Guide进⾏查看。

abaqus边界条件位移转角ur 单位

abaqus边界条件位移转角ur 单位

一、abaqus边界条件概述abaqus是一款常用的有限元分析软件,用于模拟各种工程问题。

在进行有限元分析时,边界条件是非常重要的一部分,它可以限制结构的自由度,同时也可以模拟外界加载对结构的影响。

abaqus中的边界条件包括位移、固定、荷载等多种类型。

二、abaqus边界条件中的位移在abaqus中,位移是一种常见的边界条件,它可以模拟结构在外力作用下的变形情况。

在定义位移边界条件时,需要指定位移的大小和方向,同时也可以选择局部坐标系或全局坐标系进行定义。

三、abaqus边界条件中的转角除了位移外,abaqus还可以对结构的旋转进行限制,这就涉及到了转角边界条件。

在进行转角边界条件的定义时,需要指定结构的旋转角度,同时也可以选择局部坐标系或全局坐标系进行定义。

四、abaqus中位移和转角的单位在abaqus中,位移和转角的单位是非常重要的,它们会直接影响分析结果的准确性。

通常情况下,abaqus中位移的单位是毫米(mm),转角的单位是弧度(rad)。

五、abaqus中位移和转角的定义在abaqus中,定义位移和转角边界条件时需要注意单位的使用。

位移边界条件可以是沿x、y、z方向的位移,也可以是旋转角度。

转角边界条件则是指定结构的旋转角度,可以是绕x、y、z轴的旋转。

六、abaqus中位移和转角的实际应用在实际工程中,位移和转角边界条件在模拟各种结构的变形和受力情况时都有着重要的应用。

通过合理定义位移和转角边界条件,可以更加准确地模拟结构在外界加载作用下的变形情况,进而分析结构的受力情况。

七、abaqus中位移和转角的分析方法在abaqus中,对结构的位移和转角进行分析通常会使用有限元分析的方法。

该方法将结构福利成有限数量的单元,通过数值模拟的方式求解结构的变形和受力情况,从而得出位移和转角等相关结果。

八、总结在abaqus中,位移和转角边界条件是模拟结构在外界加载作用下的变形情况的重要手段。

合理定义位移和转角的单位、方向和大小,对于准确分析结构的变形和受力情况至关重要。

abaqus四边简支板的边界条件-概述说明以及解释

abaqus四边简支板的边界条件-概述说明以及解释

abaqus四边简支板的边界条件-概述说明以及解释1.引言1.1 概述概述在工程领域中,边界条件被认为是一项非常重要的参数,它们对结构的稳定性和准确性有着至关重要的影响。

在有限元分析中,正确的边界条件可以保证计算结果的准确性,并且能够帮助工程师更好地理解结构的行为。

本文将着重讨论ABAQUS这一有限元分析软件中四边简支板的边界条件问题。

通过对四边简支板模型的建模和分析,我们将深入探讨不同边界条件对结构的影响,以及如何在ABAQUS中设置这些边界条件。

通过本文的研究,读者将能够更加深入地理解ABAQUS软件的使用方法,并且对于边界条件的选择和设置有着更加清晰的认识。

希望本文能够为工程师在实际工程实践中的有限元分析工作提供一定的参考和帮助。

文章结构部分的内容如下:1.2 文章结构本文主要分为引言、正文和结论三部分。

引言部分将介绍文章的概述、结构和目的,为读者提供整体的了解。

正文部分将首先介绍ABAQUS软件的基本情况,包括其用途、特点和应用领域,然后详细讨论四边简支板模型的建立和分析。

结论部分将强调边界条件在数值分析中的重要性,并总结ABAQUS中四边简支板的有效边界条件设置方法。

整个文章结构严谨合理,逻辑清晰,旨在为读者提供深入了解和学习的方向。

1.3 目的:本文旨在探讨abaqus中四边简支板的边界条件设置方法,并分析不同边界条件对模型结果的影响。

通过深入研究和分析,我们希望能够为工程领域的研究者和工程师们提供一些关于边界条件设置的实用指导,帮助他们更好地理解和应用abaqus软件进行结构分析。

同时,通过本文的研究,也可以为进一步探讨结构边界条件的影响和优化提供一些思路和参考。

2.正文2.1 ABAQUS简介2.2 四边简支板模型在ABAQUS中,我们可以通过建立一个四边简支板模型来探讨边界条件的设置。

四边简支板通常用于工程结构中,其四边都被简支约束,即不能有任何约束条件施加在四边上,这意味着四边上的位移约束为零。

abaqus中边界条件的设置

abaqus中边界条件的设置

abaqus中边界条件的设置
ABAQUS模型中的6个自由度,其中的坐标中编号是1.2.3而不是常用的X.Y.Z。

因为模型的坐标系也可以是主坐标系或球坐标系等。

边界条件的定义方法主要有两种,这两种方法可以混合使用:自由度1(U1):沿坐标轴1方向上的平移自由度。

自由度2(U2):沿坐标轴2方向上的平移自由度。

自由度3(U3):沿坐标轴3方向上的平移自由度。

自由度4(UR1):沿坐标轴1上的旋转自由度。

自由度5(UR1):沿坐标轴2上的旋转自由度。

自由度6(UR1):沿坐标轴3上的旋转自由度。

2、约定的边界条件类型:
XSYMM:对称边界条件,对称面为与坐标轴1垂直的平面,即U1=UR2=UR3=0;YSYMM:对称边界条件,对称面为与坐标轴2垂直的平面,即U2=UR1=UR3=0;ZSYMM:对称边界条件,对称面为与坐标轴3垂直的平面,即U3=UR1=UR2=0;XASYMM:反对称边界条件,对称面为与坐标轴1垂直的平面,即U2=U3=UR1=0;YASYMM:反对称边界条件,对称面为与坐标轴2垂直的平面,即U1=U3=UR2=0;ZASYMM:反对称边界条件,对称面为与坐标轴3垂直的平面,即U1=U2=UR3=0;PINNED:约束所有平移自由度,即U1=U2=U3=0;
ENCASTRE:约束所有自由度(固支边界条件),即
U1=U2=U3=UR1=UR2=UR3=0.
1/ 1。

ABAQUS有限元软件基本操作说明

ABAQUS有限元软件基本操作说明

ABAQUS有限元软件基本操作说明1.软件界面:安装完ABAQUS软件后,打开软件,会出现ABAQUSCAE主界面。

主界面中包括工具栏、菜单栏、导航栏、视图窗口、模型树等。

2.创建模型:在ABAQUS CAE中,创建模型首先需要选择参考平面,常常通过二维或三维的方式来进行。

点击工具栏上的"Create Part"按钮,选择合适的几何形状并设置尺寸,然后在模型树中可见一个新建模型。

3.设置材料属性:4.设置边界条件:边界条件用于模拟结构的约束和载荷。

点击工具栏上的"Create Step"按钮,选择合适的分析步类型,例如静力分析或动力分析。

然后点击工具栏上的"Create Boundary Condition"按钮,选择约束类型和载荷类型,并在模型中指定对应的边界。

5.网格划分:网格划分是有限元分析的关键步骤之一、点击工具栏上的"Mesh"按钮,选择合适的网格划分方法,并设置划分参数。

然后选择要划分的模型或模型的部分,在模型中生成网格。

6.求解和后处理:完成了模型的网格划分后,可以进行求解和后处理。

点击工具栏上的"Job"按钮,选择创建一个新的求解作业。

设置求解过程的参数,并提交作业。

求解完成后,可以进行后处理,可视化结果,进行应力分析、变形分析等。

7.模型修改和优化:在进行有限元分析时,可能需要对模型进行修改和优化。

通过ABAQUSCAE的相关工具可以进行几何和网格的修改,并重新求解。

8.结果输出:完成有限元分析后,可以将计算结果输出为图像、数据文件等,便于进一步分析和报告撰写。

9.脚本编程:以上是ABAQUS有限元软件的基本操作说明,包括创建模型、设置材料属性、边界条件、网格划分、求解和后处理等。

通过熟练掌握这些基本操作,用户可以进行各种类型的有限元分析,从而解决工程问题。

当然,还有更多的高级功能和技巧需要进一步学习和实践,并根据实际情况进行应用。

abaqus 二次开发详解

abaqus 二次开发详解

#开头的为注释行.第一步, 建立建模环境, 这一步中py将从abaqus中导入建模所需的所有程序模块.from part import *接下来定义草图环境mdb.models['Model A'].Sketch(name='__profile__', sheetSize=200.0)mdb.models['ModelA'].sketches['__profile__'].sketchOptions.setValues(constructionGeometry=ON, decimalPlaces=2, dimensionTextHeight=5.0, grid=ON,gridFrequency=2, gridSpacing=5.0, sheetSize=200.0, viewStyle=AXISYM)上面的设定为大小200*200, 格栅间距为5, 文字标注高度为5.mdb.models['Model A'].sketches['__profile__'].ObliqueConstructionLine(point1=(0.0, -100.0), point2=(0.0, 100.0))本句语句设定轴对称模型的对称轴线位置mdb.models['Model A'].sketches['__profile__'].rectangle(point1=(0.0, 0.0),point2=(40.0, -40.0))该语句绘制矩形, 从点0,0 至点40,-40mdb.models['Model A'].Part(dimensionality=AXISYMMETRIC, name='Boden',type=DEFORMABLE_BODY)定义模型为轴对称, 名字为boden,为可变形体mdb.models['Model A'].parts['Boden'].BaseShell(sketch=mdb.models['ModelA'].sketches['__profile__'])del mdb.models['Model A'].sketches['__profile__']绘图完成不要忘记收回建模环境所占的内存第二节: 材料定义 -------------------- 2楼第三节: 装配 -------------------- 3楼第四节: 分析步定义 -------------------- 4楼第五节: 接触定义 -------------------- 5楼第六节: 荷载边界定义 ----------------- 6楼第七节: 网格划分控制 ------------------ 7楼第八节, 任务提交及杂项功能 -------- 8楼关于如何在python中提交多个任务的问题 9楼第二节, 材料定义from material import *from section import *从ABAQUS提供的接口中导入材料库和组件库mdb.models['Model-A'].Material(name='Boden')定义材料名mdb.models['Model A'].materials['Boden'].Density(table=((2000.0, ), ))定义材料密度mdb.models['Model A'].materials['Boden'].Elastic(table=((210546.3, 0.3333), ))定义材料线弹性模量和泊松比, 其它的材料, 如弹塑性, 粘弹性材料均对应不同的对象函数. mdb.models['Model A'].HomogeneousSolidSection(material='Boden',name='boden',thickness=1.0)mdb.models['ModelA'].parts['Boden'].assignSection(region=Region(faces=mdb.models['ModelA'].parts['Boden'].faces[0:1]), sectionName='boden')设定组件为坐标无关性材料,厚度为单位厚度, 并将属性附给所用的组件第三节, 装配from assembly import *首先, 导入装配所用到的对象mdb.models['ModelA'].rootAssembly.DatumCsysByThreePoints(coordSysType=CYLINDRICAL, origin=(0.0, 0.0, 0.0), point1=(1.0, 0.0, 0.0), point2=(0.0,0.0, -1.0))定义坐标类型为柱坐标, 原点0,0,0,另外两个为单位向量, 确定该坐标轴的方向.mdb.models['Model A'].rootAssembly.Instance(name='Boden-1',part=mdb.models['Model A'].parts['Boden'])生成草图对像boden的实体, 名字叫Boden-1. 无偏移插入第四节, 定义分析步from step import *象其它步一样, 先导入分析步要用到的模块mdb.models['Model A'].ImplicitDynamicsStep(initialInc=0.005,maxNumInc=1024,name='Step-1', noStop=OFF, nohaf=OFF,previous='Initial',timeIncrementationMethod=FIXED, timePeriod=5.12)定义对动力隐式分析, 时长为0.005*1024=5.12个时间单位, 前一步为Initialmdb.models['Model A'].fieldOutputRequests['F-Output-1'].setValues(variables=('U',))定义输出到ODB文件的数据, 这里只定义了位移输出mdb.models['Model A'].fieldOutputRequests['F-Output-1'].setValues(frequency=1)定义位移输出的频率为每步都输出mdb.models['Model A'].steps['Step-1'].Restart(frequency=1, overlay=ON)定义重启动析, 每一步记录, 只记录最后一次的正确状态第五节, 定义接触from interaction import *依然是先导入所用的模块mdb.models['Model A'].rootAssembly.PartitionEdgeByParam(edges=(mdb.models['Model A'].rootAssembly.instances['Boden-1'].edges[3], ), parameter=0.975)在上部即第3面的97.5%的地方设定一个点, 用于定义接触mdb.models['Model A'].ContactProperty('IntProp-1')定义接触属性名mdb.models['Model A'].interactionProperties['IntProp-1'].TangentialBehavior(formulation=FRICTIONLESS)mdb.models['Model A'].interactionProperties['IntProp-1'].NormalBehavior(allowSeparation=OFF, augmentedLagrange=OFF, pressureOverclosure=HARD)定义接触特性,为无摩擦硬接触不允许分开mdb.models['Model A'].SurfaceToSurfaceContactStd(adjustMethod=NONE,createStepName='Initial', interactionProperty='IntProp-1', master=Region(side1Edges=mdb.models['Model A'].rootAssembly.instances['fun-1'].edges[0:1]), name='Int-1', slave=Region(side1Edges=mdb.models['Model A'].rootAssembly.instances['Boden-1'].edges[4:5]), sliding=FINITE)这一句是建立接触对, 分别为两个面上的一条边, 这里边的定义由ABAQUS内定, 具体可以查阅参考手册第六节, 荷载边界定义from load import *mdb.models['Model A'].PeriodicAmplitude(a_0=1.0, data=((3.0, 1.1), (3.2, 1.7)), frequency=2.454, name='Fourier',start=0.0, timeSpan=STEP)定义fourier级数表示的荷载mdb.models['Model A'].Pressure(amplitude='Fourier', createStepName='Step-1', distribution=UNIFORM, magnitude=50.0, name='Load-1', region=Region(side1Edges=mdb.models['Model A'].rootAssembly.instances['fun-1'].edges[2:3]))定义压强, 设定加载的分析步,区域及放大系数mdb.models['Model A'].DisplacementBC(amplitude=UNSET,createStepName='Initial',distribution=UNIFORM, localCsys=None, name='BC-1', region=Region(edges=mdb.models['Model A'].rootAssembly.instances['Boden-1'].edges[0:1]+\mdb.models['Model A'].rootAssembly.instances['Boden-1'].edges[2:3]+\mdb.models['Model A'].rootAssembly.instances['fun-1'].edges[3:4]),u1=SET,u2=UNSET, ur3=UNSET)mdb.models['Model A'].DisplacementBC(amplitude=UNSET, createStepName='Initial', distribution=UNIFORM, localCsys=None, name='BC-2', region=Region(edges=mdb.models['Model A'].rootAssembly.instances['Boden-1'].edges[1:2]),u1=UNSET, u2=SET, ur3=UNSET)设定边界位移为0的边界条件, 注意语法中对象相加的方法.第七节, 网格划分控制from mesh import *import mesh导入网格划分模块elemType1 = mesh.ElemType(elemCode=CAX8,elemLibrary=STANDARD,secondOrderAccuracy=OFF, hourglassControl=STIFFNESS, distortionControl=OFF)elemType2 = mesh.ElemType(elemCode=CAX6M, elemLibrary=STANDARD)a1 = mdb.models['Model A'].rootAssemblyf1 = a1.instances['Boden-1'].facesfaces1 = f1[0:1]regions =(faces1, )a1.setElementType(regions=regions, elemTypes=(elemType1, elemType2))定义其中一个物体的网格为二次8结点单元, 如果其中有无法划分成四边形单元的情况, 则用三角形二次6结点单元.elemType1 = mesh.ElemType(elemCode=CAX4, elemLibrary=STANDARD)elemType2 = mesh.ElemType(elemCode=CAX3, elemLibrary=STANDARD)a1 = mdb.models['Model A'].rootAssemblyf1 = a1.instances['fun-1'].facesfaces1 = f1[0:1]regions =(faces1, )a1.setElementType(regions=regions, elemTypes=(elemType1, elemType2))定义其中一个物体的网格为一次4结点单元,如果其中有无法划分成四边形单元的情况, 则用三角形一次3结点单元.mdb.models['Model A'].rootAssembly.seedPartInstance(regions=(mdb.models['Model A'].rootAssembly.instances['fun-1'], ), size=0.5)mdb.models['Model A'].rootAssembly.seedPartInstance(regions=(mdb.models['Model A'].rootAssembly.instances['Boden-1'], ), size=1)定义网格划分全局单元大小.mdb.models['Model A'].rootAssembly.generateMesh(regions=(mdb.models['ModelA'].rootAssembly.instances['Boden-1'],mdb.models['ModelA'].rootAssembly.instances['fun-1']))按照定义划分单元第八节, 任务提交及杂项功能mdb.models.changeKey(fromName='Model A', toName='Fall-Muster')修改模型名称mdb.Model(name='Fall-015', objectToCopy=mdb.models['Fall-Muster'])拷贝模型mdb.models['Fall-015'].materials['Boden'].elastic.setValues(table=((210546.3, 0.15),))修改模型中的材料属性mdb.Job(contactPrint=OFF, description='', echoPrint=OFF, explicitPrecision=SINGLE, historyPrint=OFF, model='Fall-015', modelPrint=OFF,multiprocessingMode=THREADS, name='Job-015', nodalOutputPrecision=SINGLE, numCpus=1, numDomains=1, parallelizationMethodExplicit=LOOP,parallelizationMethodStandard=TREE, preMemory=1024.0, scratch='',standardMemory=2048.0, standardMemoryPolicy=MODERATE, type=ANALYSIS,userSubroutine='')生成任务mdb.saveAs(pathName='D:/temp/FundamentSchwingungStudie')保存模型mdb.jobs['Job-015'].submit()提交任务关于如何在python中提交多个任务的问题:如果您使用下面这样的命令做的提交mdb.jobs['Job-01'].submit()mdb.jobs['Job-02'].submit()mdb.jobs['Job-03'].submit()你就会看到, 所有的任务是一次性提交的, 多个任务在一起运行, 这肯定不是你想看到的结果, 如何完成一个接着一个的提交呢, 其实很简单, 在每个任务后面加上一句mdb.jobs['Job-01'].waitForCompletion()就可以了.那么上面的语句就改为mdb.jobs['Job-01'].submit()mdb.jobs['Job-01'].waitForCompletion()mdb.jobs['Job-02'].submit()mdb.jobs['Job-02'].waitForCompletion()mdb.jobs['Job-03'].submit()mdb.jobs['Job-03'].waitForCompletion()......就一切OK了。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

这个例子模拟三峡库区的水位涨落时,涉水土质滑坡的渗流场分布情况的,是以前做的,蛮好玩的。

如果大家关心些新闻的话,三峡库区有涨水、蓄水、排水、枯水这个一年一次循环的周期,关键问题就在于怎么在数值模拟中考虑这个
时间单位这里用的是“天”,任何问题,只要把单位统一化,就可以实现自己所定义的单位系统下的问题,这个大家应该是很熟悉的了。

t=2天
t=4天
t=8天
t=16天
t=20天t=26天
图2 浸润线位置随涨水时间t变化图
数值模拟中实现这个问题,需要对边界条件上加载孔隙水压力的方式动手脚了,首先把时间定下来,然后把每个时间对应的水位高度定下来,然后就是写对应的程序了,关键就在于,需要在各个位置的节点处定义不同的pp_t幅值曲线。

这个问题使用子程序会很方便,也可以不用,只需要定义一堆关键字吧,但是GUI方式是完全没法实现的。

其实软件关键字的背后也就是他的脚本语言,就好像是FLAC里写一句struct cable,这个命令本身只有给你看懂那么一个傻瓜意义意义。

看看关键字怎么定义的:
*AMPLITUDE,name=down1,VALUE=ABSOLUTE
0,0,30,-300,180,-300
*AMPLITUDE,name=down2,VALUE=ABSOLUTE
0,10,1,0,30,-290,180,-290
*AMPLITUDE,name=down3,VALUE=ABSOLUTE
0,20,2,0,30,-280,180,-280
*AMPLITUDE,name=down4,VALUE=ABSOLUTE
0,30,3,0,30,-270,180,-270
*AMPLITUDE,name=down5,VALUE=ABSOLUTE
0,40,4,0,30,-260,180,-260
*AMPLITUDE,name=down6,VALUE=ABSOLUTE
0,50,5,0,30,-250,180,-250
*AMPLITUDE,name=down7,VALUE=ABSOLUTE
0,60,6,0,30,-240,180,-240
*AMPLITUDE,name=down8,VALUE=ABSOLUTE
0,70,7,0,30,-230,180,-230
*AMPLITUDE,name=down9,VALUE=ABSOLUTE
0,80,8,0,30,-220,180,-220
*AMPLITUDE,name=down10,VALUE=ABSOLUTE
0,90,9,0,30,-210,180,-210
*AMPLITUDE,name=down11,VALUE=ABSOLUTE
0,100,10,0,30,-200,180,-200
*AMPLITUDE,name=down12,VALUE=ABSOLUTE
0,110,11,0,30,-190,180,-190
*AMPLITUDE,name=down13,VALUE=ABSOLUTE
0,120,12,0,30,-180,180,-180
*AMPLITUDE,name=down14,VALUE=ABSOLUTE
0,130,13,0,30,-170,180,-170
*AMPLITUDE,name=down15,VALUE=ABSOLUTE
0,140,14,0,30,-160,180,-160
*AMPLITUDE,name=down16,VALUE=ABSOLUTE
0,150,15,0,30,-150,180,-150
*AMPLITUDE,name=down17,VALUE=ABSOLUTE 0,160,16,0,30,-140,180,-140
*AMPLITUDE,name=down18,VALUE=ABSOLUTE 0,170,17,0,30,-130,180,-130
*AMPLITUDE,name=down19,VALUE=ABSOLUTE 0,180,18,0,30,-120,180,-120
*AMPLITUDE,name=down20,VALUE=ABSOLUTE 0,190,19,0,30,-110,180,-110
*AMPLITUDE,name=down21,VALUE=ABSOLUTE 0,200,20,0,30,-100,180,-100
*AMPLITUDE,name=down22,VALUE=ABSOLUTE 0,210,21,0,30,-90,180,-90
*AMPLITUDE,name=down23,VALUE=ABSOLUTE 0,220,22,0,30,-80,180,-80
*AMPLITUDE,name=down24,VALUE=ABSOLUTE 0,230,23,0,30,-70,180,-70
*AMPLITUDE,name=down25,VALUE=ABSOLUTE 0,240,24,0,30,-60,180,-60
*AMPLITUDE,name=down26,VALUE=ABSOLUTE 0,250,25,0,30,-50,180,-50
*AMPLITUDE,name=down27,VALUE=ABSOLUTE 0,260,26,0,30,-40,180,-40
*AMPLITUDE,name=down28,VALUE=ABSOLUTE 0,270,27,0,30,-30,180,-30
*AMPLITUDE,name=down29,VALUE=ABSOLUTE 0,280,28,0,30,-20,180,-20
*AMPLITUDE,name=down30,VALUE=ABSOLUTE 0,290,29,0,30,-10,180,-10
*AMPLITUDE,name=down31,VALUE=ABSOLUTE 0,300,29.9,0,180,0
*BOUNDARY,AMPLITUDE=down1
Part-1-1.nod30,8,,0
*BOUNDARY,AMPLITUDE=down2
Part-1-1.nod29,8,,10
*BOUNDARY,AMPLITUDE=down3
Part-1-1.nod28,8,,20
*BOUNDARY,AMPLITUDE=down4
*BOUNDARY,AMPLITUDE=down5 Part-1-1.nod26,8,,40
*BOUNDARY,AMPLITUDE=down6 Part-1-1.nod25,8,,50
*BOUNDARY,AMPLITUDE=down7 Part-1-1.nod24,8,,60
*BOUNDARY,AMPLITUDE=down8 Part-1-1.nod23,8,,70
*BOUNDARY,AMPLITUDE=down9 Part-1-1.nod22,8,,80
*BOUNDARY,AMPLITUDE=down10 Part-1-1.nod21,8,,90
*BOUNDARY,AMPLITUDE=down11 Part-1-1.nod20,8,,100
*BOUNDARY,AMPLITUDE=down12 Part-1-1.nod19,8,,110
*BOUNDARY,AMPLITUDE=down13 Part-1-1.nod18,8,,120
*BOUNDARY,AMPLITUDE=down14 Part-1-1.nod17,8,,130
*BOUNDARY,AMPLITUDE=down15 Part-1-1.nod16,8,,140
*BOUNDARY,AMPLITUDE=down16 Part-1-1.nod15,8,,150
*BOUNDARY,AMPLITUDE=down17 Part-1-1.nod14,8,,160
*BOUNDARY,AMPLITUDE=down18 Part-1-1.nod13,8,,170
*BOUNDARY,AMPLITUDE=down19 Part-1-1.nod12,8,,180
*BOUNDARY,AMPLITUDE=down20 Part-1-1.nod11,8,,190
*BOUNDARY,AMPLITUDE=down21 Part-1-1.nod10,8,,200
*BOUNDARY,AMPLITUDE=down22 Part-1-1.nod9,8,,210
*BOUNDARY,AMPLITUDE=down23
*BOUNDARY,AMPLITUDE=down24
Part-1-1.nod7,8,,230
*BOUNDARY,AMPLITUDE=down25
Part-1-1.nod6,8,,240
*BOUNDARY,AMPLITUDE=down26
Part-1-1.nod5,8,,250
*BOUNDARY,AMPLITUDE=down27
Part-1-1.nod4,8,,260
*BOUNDARY,AMPLITUDE=down28
Part-1-1.nod3,8,,270
*BOUNDARY,AMPLITUDE=down29
Part-1-1.nod2,8,,280
*BOUNDARY,AMPLITUDE=down30
Part-1-1.nod1,8,,290
*BOUNDARY,AMPLITUDE=down31
Part-1-1.nod0,8,,300
以上是一部分关键字,其实根本问题就是找到对应节点,对各个节点附上与时间相关的边界。

这个问题,其实只能算是半成品式的二次开发吧。

用过LS-DYNA 可能更清楚我写的这个东西是怎么一回事。

相关文档
最新文档