-
一、建立模型笔记
1
键盘上的键的功能
:X,Y,Z
分别控制所建立的模型围绕
p>
X,Y,Z
三个轴做逆时针旋转
.
如果打开大小写锁定键
,
分边按
XYZ
时建立的模型会做顺时针旋转
.+
号的功能是加大模型旋转的角度,
-
号的功能是减小
模型旋转
的角度。
2
键盘上的上下左右四个键可以实现图形的向上向下
,
向
左和向右的移动
.
3
当在一个区域建
立多个模型的时候
,
有时候为了镜像单个模块儿
,
需要预先编组
,
编组的方法
如下
:
gen zon tunint p0 0 0 0
p1 0 10 0 p2 5 5 0 p3 0 0 -5 p4 5 10 0 &
p5 5 5 -5 p6 0 10 -5 p7 5 10 -5 dim sq2
sq2 1 sq2 1 1 1
group(
编组
)
z1(
组名为
:z1)
&
fill group tunnel
4
镜像
整个
模型的方法
:
首先判断即将镜像的模型在原模型的哪个方向
(
即
三个轴的方向
)
,
然后在轴所在的方<
/p>
向上去两个点
.
其中一个是
原点
(origin(xyz)
).
5
镜像
部分
模型的方法
p>
: gen zone reflect normal (x,y,z) origin
(x,y,z)
range group
z1
就可以了
.
6
< br>特别要注意的一点
:
交叉巷道的巷道充填和巷道的网格是
两个组
,
所以在镜像的时候不要忘了给充填部分
镜像
.
7 group radcyl range
group cylint not
(
编组的时候不包括
cylint)
7
快捷键总结
Ctrl+Z
局部缩放的功能。
Ct
rl+R
的功能是恢复到初始状态。
8
模型建立的方法
:
方法
1:
利用默认值生成网格
,
各个默认值
:(1)p0
的默认值
是
(0,0,0),
网格的每边的单元格数
size
默认值是
10,
网格每边
的长度默认值为
size
的值
.
p>
方法
2:
利用
4<
/p>
个点的坐标来生成矩形网格
.p0~p3
size
方法
3:
利用
edge
来确定边长生成
矩形网格
.
方法
4:
利用参数
ratio
来确定单元体几何边画边生成矩形
网格
.
方法
5:
利用参数
add(
相对坐标
)
p>
来生成矩形网格
.
方法
< br>6:
利用八个点的左边来生成矩形网格
.
9
、用户自定义模型的方法
我来贡献一点自己的成果:
FLAC
3D
的二次开发环境提供了开放的用户接口,在软件安装文件中包含了软件自带所有本构
模型的源代
码,且给出了
Mohr-Coulomb
模型和应变软化模型的编译示例,因此可以方便地进行本构模型的修改与开
发。为了方便起见,下面的说明以建立
UserModel
模型
为例。
(1)
在模型头文件
(usermodel.h)
中进行新的本构模型派生类的声明,
p>
修改模型的
ID(
为避免与已有模型冲突,
一般要求大于
100)
、名称和版本,
修改派生类的私有成员,主要包括模型的基本参数及程序执行过程中主
要的中间变量。<
/p>
( ? p6 u' J5 Q3 y( a
(2)
在程序
C++
文件
()
中修改模型结构
(UserModel::UserModel
(bool
bRegister):
Constit
-utive
Model)
的定义,
这是一个空函数,主要功能是给
(1)
中定义的所有私有成员赋
初值,一般均赋值为
0.0
。
(3)
修改
const char
**UserModel: roperties()
函数,该函数包含了给定模型的参
数名称字符串,在
FLAC3D
的
计算
命令中需要用到这些字符串进行模型参数赋值。
(4)
const char **UserModel::States()
函数是单元在计
算过程中的状态指示器,可以按照需要进行修改指示器的
内容。
(5)
按照派生类中定义的模型参数变量修改
double
UserModel::GetProperty()
和
void
UserModel::
SetProp
erty()
函数,这两个函数共同完成模型参数的赋值功能。
' U; e G' W
(6) const char * UserModel::
Initialize()
函数在执行
CYCLE
命令或大应变模式下对于每个模型单元
(zone)
调用一
次,主要执行参数和状态指示器的初始化,并对派生类声明中定义的私有变量进行
赋值。值得注意的是,
Initialize()
函数调用时没
有定义应变分量,但可以调用应力分量,但不能对应力进行修改。
9 n# e8 |'
c- B/ q,
B B5 m
(7) const
char * UserModel::Run()
是整个模型编制过程中最主要的函数
,
它对每一个字单元
(sub-zone)
在每次循
环时均进行调用,由应变增量计算得到应力增量,从而获得新的应力。在计
算过程中,要根据单元应力情
况对单元状态指示器进行赋值。当进行塑性模型编制时,需
对达到塑性的应力状态进行修正。
2 [/ ~. U(
A
G. b3 @6 ]. `
(8)
修改
const char * UserModel::Sa
veRestore()
中的变量,修改方法同
(2)
和
(5)
,该函数的主要功能是对计算结
果进行保存。
(9)
程序的调试有两种方法。
①在
VC++
的工程设置中将
FLAC3D
软件中的
EXE
文件路径加入到程序的调
试范围中,并将
FLAC3D
自带的
DLL
文件加入到附加动态链接库
(Additional DLLs)
中,然后在
Initialize()
或
< br>Run()
函数中设置断点,进行调试;②在程序文件中加入
return()
语句,这样可以将希望得到的变量值以错
误提示的形式在
FLAC3D
窗口中得到。
10
、网格剖面的画法
方法:首先在命令行里输入
edit
11
、想知道有多少单元体和节点?
方法:用命令
print
info
12
、绘制塑形区域命令是什么?
方法:
Plot block
state shear
获得剪切屈服的单元,包括
she
ar-n
和
shear-p
Plot
block state tension-p
;
获得过去拉伸屈服的单元
Plot
block state now
;
获得当前处于塑性状态的单元,包括
shear-n
和
tension-n
Plot
block state past
;
获得过去处于塑性状态的单元,包括
shear-p
和
tension-p
13
、
step
后面的数字是怎么确定的?
答:
14
、开挖模型的命令
Model null range group
组名
Model null
range group x
x
1,
x
2
画圈的正负号是啥意思?
答
:
正号表示
10
的正的
几次方
.
而负号表示负的几次方
.
11
、关于
ratio
ratio
代表单元体尺寸变化率,关于只需要记住一点:不同模型的两个尺
寸相等的面,采用相同的集合变化
率,网格才会重合,
rati
o
对于减少单元的数目有很好的效果。
12
、地震波的模拟命令流
set dyn on
set dyn multi on
set large
free x y z range z
-35.1 -34.9
去掉模型底部原有的静力条件
apply nquiet squiet dquiet ran z -35.1
-34.9
静态边界条件
table 1 read
apply szz
-1.524293e7 hist table 1 ran z -35.1 -34.9
;
加动力载荷
apply syz
-1.26984e7 hist table 1 ran z -35.1 -34.9
apply ff
;
设置阻尼
set dyn damp rayleigh 0.05 7.14
set dyn time=0
/
/
参考资料
二、材料参数、边界条件,初始条件
1
要特别注意
fix x y z
range z <
范围
>
与
fix z range z <
范围
>
之间的差别,前者是
x
、
y
、
z
三方向的位移全被
限制,后者只限制了
z
方向的位移。
[fix
x
range (
范围
)
命令的功能是保
持网格节点在
x
轴方向制定的参数
(<
/p>
速度、压力和温度
)
不变,
range
为指
定的范围
]
Fix x y z range x -0.1 0.1
表示
x=0
是一个平面,且是固定的<
/p>
Fix x range
x -0.1 0.1
表示
x=0
是一个平面,只是
< br>x
的方向不能发生运动。
2
、
plot hist m vs
n
其中
m
代表
y
轴,
n
代表
x
轴。
3
、
sxx sxy
syy
这都是指那个方向
:
SXX<
/p>
是
x
方向的正应力,
SYY
是
y
方向的正应力
, SXY
是指法向指向
x
轴方向平面(也就是
yz
面)上的
y
方向剪应力。
4
< br>、
history
命令
Hist unbal
监测不平衡力
,
并保留记录
Hist gp zdisp
4,4,8
监测网
格坐标点
(4,4,8)
在
z
轴方向的记录
,
并保留记录
.
Plot his -2 -3 vs 1
其中的符号表示图形的方向及位置的不同
,1
代表
hist
代码中的第一条
记录
,2
代
表
hist
代码中的第二条记录
,3
代表
hist
代码中的第三条记录
.
一次类推
.
补充:
在记录历史记录的时候可以自己定义记录的编号:如
his
id 12 gp zdisp 4,4,4
绘制图形
:
如
plot his 12
5
、在
fish
函数中
如:
(1)p_gp=gp_head
(
意思是指向节点表
)
那么后面肯定有一个:
p_gp=gp_next(p_gp) (
意思是查找下一个
节点的
ID
号
)
(2)
pnt=zone_head
;zone_head
指向单元体表
pnt=z_next(pnt)
;
查找下一个单元体表
6
、
sel del link
range id 23
sel link id=23 23 target
node
tgt_num
(
代表目标
节点的
ID
号
)
1,
7
、想知道一个节点的
x y z
三个分量则用它
:
;
已知
ID
def getgpxyz
gp1=find_gp(1)
gp1x=gp_xpos(gp1)
gp1y=gp_ypos(gp1)
gp1z=gp_zpos(gp1)
end
getgpxyz
print gp1x gp1y gp1z
8
、
交集就
是
range group a group b
指的是
a
和
b
的公共部分;
并集就是
range group a any group b any
指的是
a
和
b
两个部分;
Not
指的是出了什么什么之外。
-
-
-
-
-
-
-
-
-
上一篇:叶绍翁《游园不值》原文、译文、赏析
下一篇:Ansys自己搜集的入门建议及问题答案