|
楼主 |
发表于 2006-4-26 16:10
|
显示全部楼层
3.如何在计算中修改材料特性
If you like to use USDFLD, in the subroutine, you can get step number and just use a if to
determine the field variable value due to the step number. Say, step 1 is 1 and step 2 field
variable become 2. In the material definition, just define material properties as a function of
your field variables. Here I use elastic as example. I'm not sure about the grammar since I do
not have manual at hand. You need to check them. something like this:
*elastic, dependencies
2e5,0.3,,1
1e5,0.3,,2
Here I assume your material does not have any temperature dependency and you need to make
sure field variable is the 4th value. Then, in step 1, you have 2e5 as Young's modulus and in step
you have 1e5.
yogayoga,我还是有问题,我修改材料特性后,计算不收敛。请您帮我看看。
在inp文件中,按你讲的使用了下面语句定义材料特性:
*elastic, dependencies=1
15e7,0.3,,1
2e10,0.2,,2
然后采用usdfld子程序,现将子程序附在下面请您帮我检查检查,并提出宝贵意见,谢谢。
SUBROUTINE USDFLD(FIELD,STATEV,PNEWDT,DIRECT,T,CELENT,
1 TIME,DTIME,CMNAME,ORNAME,NFIELD,NSTATV,NOEL,NPT,LAYER,
2 KSPT,KSTEP,KINC,NDI,NSHR,COORD,JMAC,JMATYP,MATLAYO,LACCFLA)
C
INCLUDE 'ABA_PARAM.INC'
C
CHARACTER*80 CMNAME,ORNAME
CHARACTER*3 FLGRAY(15)
DIMENSION FIELD(NFIELD),STATEV(NSTATV),DIRECT(3,3),
1 T(3,3),TIME(2)
DIMENSION ARRAY(15),JARRAY(15),JMAC(*),JMATYP(*),COORD(*)
c
c
FIELD(1)=time(2)
c print*,field(1)
c
c
RETURN
END
First, if you want a sudden change, you can not use total time. Abaqus will linearly interpolate
all the value. If that's what you want, OK. If you want a sudden change at step two, use kstep
instead.
Second, consider the real physical situation: you got equilibrium before you changed material
properties. After you changed material properties, you naturally lose it. Stress need to be
redistributed and changed to get force balance. This is the reason for non convergence.
You have several way to deal with it: if you have static problem and rate effect is minimal, you
can keep the bc and let the model balance itself. The other way is to decrease the increment
length. You can also try damping (you can just apply stabilize directly) or adding some viscoplastic
or plastic effect. Dynamic analysis will also help to do the trick. Basicly, the method normally you
deal with unstable problem.
改变材料的参数甚至模型,可以通过以下的办法:
(1)在不同的分析之间传递结果
细节请见:ABAQUS Analysis User's Manual /7.7.1 Transferring results between ABAQUS
analysis products: overview
该方法的主要缺点就是建立模型时不能使用多个parts或assembly。
但在某些情况下非常方便,如想在第一步变形的基础上做后续分析。
(2)使用场变量,然后定义材料时指明参数依赖于该变量
如果场变量(不一定要有物理意义)很明确,比如目前讨论的问题,可以定义一个变量,在
step1的时候为1.,step2为2.(可以随便定义了):
*STEP,name=step1
*STATIC......
*FIELD, VARIABLE=1
NALL, 1.
*END STEP
*STEP,name=step2
*STATIC......
*FIELD, VARIABLE=1
NALL, 2.
*END STEP
NALL是包含所有节点的集合,可以根据需要改变成欲改变参数的节点集。
然后再定义材料时,指明某个参数依赖于该场变量:
*MATERIAL
*ELASTIC, DEPENDENCIES=1
200.E9, 0.3, , 1.
180.E9, 0.3, , 2.
这样计算到step1时,所有节点的场变量1为1.0,abaqus由此查表确定模量为200.E9,到step2,
因为场变量变为2.,所以模量为180.E9。
如果场变量连续变化或依赖于其他计算结果,如温度,应变等,可以使用USDFLD子程序(25.2.38
USDFLD
User subroutine to redefine field variables at a material point.
)来连续改变该变量。在定义材料时同样只需要指定一个参数随该变量变化的表,ABAQUS在计算
时自动插值计算材料参数。
对你的情况,不需要使用该子程序。
If you like to use USDFLD, in the subroutine, you can get step number and just use a if
to determine the field variable value due to the step number. Say, step 1 is 1 and step
2 field variable become 2. In the material definition, just define material properties
as a function of your field variables. Here I use elastic as example. I'm not sure about
the grammar since I do not have manual at hand. You need to check them. something like
this:
*elastic, dependencies
2e5,0.3,,1
1e5,0.3,,2
Here I assume your material does not have any temperature dependency and you need to make
sure field variable is the 4th value. Then, in step 1, you have 2e5 as Young's modulus
and in step you have 1e5. |
|