lukingstrong 发表于 2008-10-23 12:16

值得关注的问题:直接生成Trans126和EMTGEN生成得出的结果相差很大的原因

我用126单元做力电耦合分析,结果发现直接生成的TRANS126和用EMTGEN生成得出的结果相差很大,因此发上来和大家讨论下,共同研究研究原因在哪里?到底我的建模和求解的问题,还是这两个方法中某一个有BUG?
先描述下我的问题:就是一个极板面积40*40(um*um)的电容,上板可动(四边有固定的支点),下板固定。
第一次,网格划分好后,我将上板的表面节点选出来,用EMTGEN生成了一系列的TRANS126
第二次,我想用一个126模拟这个平行板电容,于是就将整个板的面积Area*per0(空气介电常数)作为126实常数C0输入
其余的极板间距和最小距离都完全一样,结果同一电压下变形情况相差很大,如图

由图可以看出,直接生成的TRANS126得出的结果比EMTGEN生成得出的结果大得多

我想了两个原因
          一:我看了EMTGEN的说明,它生成的每个126的面积是用ARNODE(即取的是每个点周围的面积)取值的,是不是这样导致取得的面积 比直接算得的面积   小,使得电容变小,从而导致其变形变小,由此说明直接生成的126得出的结果更准确?
         二:极板变形是二次型的,即模拟过程中每个节点的间距是不一样的,这样的话,显然用EMTGEN生成的系列126更符合这种情况,那是不是意味着EMTGEN生成得出的结果更准确?
上面两个想法得出的是相反的结果,正在考虑怎么检验。大家有兴趣的话有参与进来,想想?

lukingstrong 发表于 2008-10-23 12:26

附上 APDL

!!!Single Trans126 element
/prep7
mwidth=40! square membrane
melectrode=40
height=0.85 !
Al_height=0.53
bracelength=10
bracewidth=2
k_sio=3.9
d_sio=1.7
hgap=0.53
vlt=42!Bias voltage
deta=3.9968e-14

et,1,solid45
r,1
et,2,trans126,,2   
c0=8.854e-6*mwidth*mwidth         ! C0/x constant for Capacitance equation
r,2,0,0,(hgap+d_sio/k_sio),0.05,.1
rmore,c0                  ! Real constant C0

mp,ex,1,0.69e5                         !SiO2 Membrane       
mp,nuxy,1,0.17
mp,dens,1,2.2e-15

mp,ex,2,0.7e5                         !Al electrode
mp,nuxy,2,0.36
mp,dens,2,2.7e-15


k,1,mwidth/2-bracewidth,0,mwidth/2
k,2,mwidth/2,0,mwidth/2
k,3,mwidth/2+bracelength,0,mwidth/2+bracelength
k,4,mwidth/2-bracewidth+bracelength,0,mwidth/2+bracelength
k,5,mwidth/2-bracewidth,-(height+Al_height),mwidth/2
k,6,mwidth/2,-(height+Al_height),mwidth/2
k,7,mwidth/2+bracelength,-(height+Al_height),mwidth/2+bracelength
k,8,mwidth/2-bracewidth+bracelength,-(height+Al_height),mwidth/2+bracelength
v,1,2,3,4,5,6,7,8
k,9,mwidth/2,0,mwidth/2-bracewidth
k,10,mwidth/2+bracelength,0,mwidth/2+bracelength-bracewidth
k,11,mwidth/2,-(height+Al_height),mwidth/2-bracewidth
k,12,mwidth/2+bracelength,-(height+Al_height),mwidth/2+bracelength-bracewidth
v,2,9,10,3,6,11,12,7

vsymm,x,all,,1,0,0
vsel,all
vsymm,z,all,,4,0,0
block,-mwidth/2,mwidth/2,0,-(height+Al_height),-mwidth/2,mwidth/2

vsel,all
wprota,,-90
wpoffs,,,-Al_height
rect,-60,60,-60,60   
vsba,all,51!51 is the rectng's number
wpoffs,,,Al_height
wprota,,90
vglue,all

nummrg,all
numcmp,all
vsel,all

vsel,s,loc,y,-height-Al_height,-Al_height
vatt,1,1,1
vsel,s,loc,y,-Al_height,0
vatt,2,1,1

vsel,all
vsel,u,volu,,1
vsel,u,volu,,2
cm,BRACE_VOLU,volu
cmsel,s,BRACE_VOLU
cmplots
lsel,s,loc,y,-height/2-Al_height
lesize,all,,,height
lsel,s,loc,y,-Al_height/2
lesize,all,,,Al_height
asel,s,loc,y,0
asel,a,loc,y,-height-Al_height
asel,a,loc,y,-Al_height
lsla,s
lesize,all,bracewidth/2

mshape,0,3D
mshkey,1
vmesh,BRACE_VOLU

!Must ccat area firstly,then ccat line
asel,s,loc,x,-mwidth/2,-mwidth/2
asel,r,loc,y,-height-Al_height,-Al_height
accat,all
asel,s,loc,x,-mwidth/2,-mwidth/2
asel,r,loc,y,-Al_height,0
accat,all

asel,s,loc,z,-mwidth/2,-mwidth/2
asel,r,loc,y,-height-Al_height,-Al_height
accat,all
asel,s,loc,z,-mwidth/2,-mwidth/2
asel,r,loc,y,-Al_height,0
accat,all

asel,s,loc,x,mwidth/2,mwidth/2
asel,r,loc,y,-height-Al_height,-Al_height
accat,all
asel,s,loc,x,mwidth/2,mwidth/2
asel,r,loc,y,-Al_height,0
accat,all

asel,s,loc,z,mwidth/2,mwidth/2
asel,r,loc,y,-height-Al_height,-Al_height
accat,all
asel,s,loc,z,mwidth/2,mwidth/2
asel,r,loc,y,-Al_height,0
accat,all

lsel,s,loc,y,0,0
lsel,r,loc,x,-mwidth/2,-mwidth/2
lccat,all

lsel,s,loc,y,0,0
lsel,r,loc,z,-mwidth/2,-mwidth/2
lccat,all

lsel,s,loc,y,0,0
lsel,r,loc,x,mwidth/2,mwidth/2
lccat,all

lsel,s,loc,y,0,0
lsel,r,loc,z,mwidth/2,mwidth/2
lccat,all

lsel,s,loc,y,-Al_height,-Al_height
lsel,r,loc,x,-mwidth/2,-mwidth/2
lccat,all

lsel,s,loc,y,-Al_height,-Al_height
lsel,r,loc,z,-mwidth/2,-mwidth/2
lccat,all

lsel,s,loc,y,-Al_height,-Al_height
lsel,r,loc,x,mwidth/2,mwidth/2
lccat,all

lsel,s,loc,y,-Al_height,-Al_height
lsel,r,loc,z,mwidth/2,mwidth/2
lccat,all

lsel,s,loc,y,-height-Al_height,-height-Al_height
lsel,r,loc,x,-mwidth/2,-mwidth/2
lccat,all

lsel,s,loc,y,-height-Al_height,-height-Al_height
lsel,r,loc,z,-mwidth/2,-mwidth/2
lccat,all

lsel,s,loc,y,-height-Al_height,-height-Al_height
lsel,r,loc,x,mwidth/2,mwidth/2
lccat,all

lsel,s,loc,y,-height-Al_height,-height-Al_height
lsel,r,loc,z,mwidth/2,mwidth/2
lccat,all

vsel,s,volu,,1
vsel,a,volu,,2
cm,MEM_VOLU,volu
cmsel,s,MEM_VOLU
cmplot
lsel,s,loc,y,-height/2-Al_height
lesize,all,,,height
lsel,s,loc,y,-Al_height/2
lesize,all,,,Al_height
asel,s,loc,y,0
asel,a,loc,y,-height-Al_height
asel,a,loc,y,-Al_height
lsla,s
lesize,all,bracewidth/2

mshape,0,3D
mshkey,1
vmesh,MEM_VOLU

nummrg,all         
numcmp,all

asel,s,loc,x,-(mwidth/2+bracelength)
asel,a,loc,x,(mwidth/2+bracelength)
asel,a,loc,z,-(mwidth/2+bracelength)
asel,a,loc,z,(mwidth/2+bracelength)
lsla,s,1
nsll,s
d,all,ux
d,all,uy
d,all,uz      !constraintion


n,50000,-deta,-(height+Al_height)-(hgap+d_sio/k_sio),-deta
type,2
real,2
e,50000,5183

nsel,s,NODE,,50000
d,50000,ux
d,50000,uy
d,50000,uz
d,50000,volt,0
nsel,s,NODE,,5183
d,5183,volt,vlt

allsel,all



/solu
antype,static                           ! Static analysis
pstres,on                 ! turn on prestress effects
solve
save
finish

/post1
!===get the average uy of the Membrane nodes
nsel,s,loc,y,-(height+Al_height)
nsel,r,loc,x,-mwidth/2,mwidth/2
nsel,r,loc,z,-mwidth/2,mwidth/2
*GET, nnodemin, NODE, 0, num, min
*GET, nnodecount, NODE, 0, count
*DIM,nuy,,nnodecount
*vget,nuy,node,nnodemin,u,y
ynodesum=0
*do,i,1,nnodecount
        ynodesum=ynodesum+nuy(i)
        !k_y(i)=nsy(i)/nuy(i)
*enddo
ynodeavg=ynodesum/nnodecount
ynodeavgperv=ynodeavg/vlt
yobj=1+ynodeavgperv
!get the max von mise stress
nsel,all
NSORT, S, EQV
*GET, SMAX, SORT,, MAX

PLNSOL,UY
finish

lukingstrong 发表于 2008-10-23 12:30

附上APDL

!!!!EMTGEN generates trans126 elemen
/prep7
et,1,solid45

mp,ex,1,0.69e5                         !SiO2 Membrane       
mp,nuxy,1,0.17
mp,dens,1,2.2e-15

mp,ex,2,0.7e5                         !Al electrode
mp,nuxy,2,0.36
mp,dens,2,2.7e-15

per0=8.854e-6
mwidth=40
melectrode=40
height=0.85
Al_height=0.53
bracelength=10
bracewidth=2
k_sio=3.9
d_sio=1.7

hgap=0.53
vlt=42!Bias voltage
k,1,mwidth/2-bracewidth,0,mwidth/2
k,2,mwidth/2,0,mwidth/2
k,3,mwidth/2+bracelength,0,mwidth/2+bracelength
k,4,mwidth/2-bracewidth+bracelength,0,mwidth/2+bracelength
k,5,mwidth/2-bracewidth,-(height+Al_height),mwidth/2
k,6,mwidth/2,-(height+Al_height),mwidth/2
k,7,mwidth/2+bracelength,-(height+Al_height),mwidth/2+bracelength
k,8,mwidth/2-bracewidth+bracelength,-(height+Al_height),mwidth/2+bracelength
v,1,2,3,4,5,6,7,8
k,9,mwidth/2,0,mwidth/2-bracewidth
k,10,mwidth/2+bracelength,0,mwidth/2+bracelength-bracewidth
k,11,mwidth/2,-(height+Al_height),mwidth/2-bracewidth
k,12,mwidth/2+bracelength,-(height+Al_height),mwidth/2+bracelength-bracewidth
v,2,9,10,3,6,11,12,7

vsymm,x,all,,1,0,0
vsel,all
vsymm,z,all,,4,0,0
block,-mwidth/2,mwidth/2,0,-(height+Al_height),-mwidth/2,mwidth/2

vsel,all
wprota,,-90
wpoffs,,,-Al_height
rect,-60,60,-60,60   
vsba,all,51!51 is the rectng's number
wpoffs,,,Al_height
wprota,,90
vglue,all

nummrg,all
numcmp,all
vsel,all

vsel,s,loc,y,-height-Al_height,-Al_height
vatt,1,,1
vsel,s,loc,y,-Al_height,0
vatt,2,,1

vsel,all
vsel,u,volu,,1
vsel,u,volu,,2
cm,BRACE_VOLU,volu
cmsel,s,BRACE_VOLU
cmplots
lsel,s,loc,y,-height/2-Al_height
lesize,all,,,height
lsel,s,loc,y,-Al_height/2
lesize,all,,,Al_height
asel,s,loc,y,0
asel,a,loc,y,-height-Al_height
asel,a,loc,y,-Al_height
lsla,s
lesize,all,bracewidth/2

mshape,0,3D
mshkey,1
vmesh,BRACE_VOLU

!Must ccat area firstly,then ccat line
asel,s,loc,x,-mwidth/2,-mwidth/2
asel,r,loc,y,-height-Al_height,-Al_height
accat,all
asel,s,loc,x,-mwidth/2,-mwidth/2
asel,r,loc,y,-Al_height,0
accat,all

asel,s,loc,z,-mwidth/2,-mwidth/2
asel,r,loc,y,-height-Al_height,-Al_height
accat,all
asel,s,loc,z,-mwidth/2,-mwidth/2
asel,r,loc,y,-Al_height,0
accat,all

asel,s,loc,x,mwidth/2,mwidth/2
asel,r,loc,y,-height-Al_height,-Al_height
accat,all
asel,s,loc,x,mwidth/2,mwidth/2
asel,r,loc,y,-Al_height,0
accat,all

asel,s,loc,z,mwidth/2,mwidth/2
asel,r,loc,y,-height-Al_height,-Al_height
accat,all
asel,s,loc,z,mwidth/2,mwidth/2
asel,r,loc,y,-Al_height,0
accat,all

lsel,s,loc,y,0,0
lsel,r,loc,x,-mwidth/2,-mwidth/2
lccat,all

lsel,s,loc,y,0,0
lsel,r,loc,z,-mwidth/2,-mwidth/2
lccat,all

lsel,s,loc,y,0,0
lsel,r,loc,x,mwidth/2,mwidth/2
lccat,all

lsel,s,loc,y,0,0
lsel,r,loc,z,mwidth/2,mwidth/2
lccat,all

lsel,s,loc,y,-Al_height,-Al_height
lsel,r,loc,x,-mwidth/2,-mwidth/2
lccat,all

lsel,s,loc,y,-Al_height,-Al_height
lsel,r,loc,z,-mwidth/2,-mwidth/2
lccat,all

lsel,s,loc,y,-Al_height,-Al_height
lsel,r,loc,x,mwidth/2,mwidth/2
lccat,all

lsel,s,loc,y,-Al_height,-Al_height
lsel,r,loc,z,mwidth/2,mwidth/2
lccat,all

lsel,s,loc,y,-height-Al_height,-height-Al_height
lsel,r,loc,x,-mwidth/2,-mwidth/2
lccat,all

lsel,s,loc,y,-height-Al_height,-height-Al_height
lsel,r,loc,z,-mwidth/2,-mwidth/2
lccat,all

lsel,s,loc,y,-height-Al_height,-height-Al_height
lsel,r,loc,x,mwidth/2,mwidth/2
lccat,all

lsel,s,loc,y,-height-Al_height,-height-Al_height
lsel,r,loc,z,mwidth/2,mwidth/2
lccat,all

vsel,s,volu,,1
vsel,a,volu,,2
cm,MEM_VOLU,volu
cmsel,s,MEM_VOLU
cmplot
lsel,s,loc,y,-height/2-Al_height
lesize,all,,,height
lsel,s,loc,y,-Al_height/2
lesize,all,,,Al_height
asel,s,loc,y,0
asel,a,loc,y,-height-Al_height
asel,a,loc,y,-Al_height
lsla,s
lesize,all,bracewidth/2

mshape,0,3D
mshkey,1
vmesh,MEM_VOLU

nummrg,all         
numcmp,all


asel,s,loc,x,-(mwidth/2+bracelength)
asel,a,loc,x,(mwidth/2+bracelength)
asel,a,loc,z,-(mwidth/2+bracelength)
asel,a,loc,z,(mwidth/2+bracelength)
nsla,s,1
d,all,ux
d,all,uy
d,all,uz      !constraintion

allsel,all
asel,s,loc,y,-height-Al_height
nsla,s,1
nsel,r,loc,x,-mwidth/2,mwidth/2
nsel,r,loc,z,-mwidth/2,mwidth/2
CM,CM_Surf,NODE
EMTGEN,'CM_Surf','EMTELM','CM_Plane','UY',-(hgap+d_sio/k_sio),0.0,0.1,per0cmsel,s,CM_Plane
d,all,uy      !generating trans126 element


cmsel,s,CM_Surf
d,CM_Surf,volt,vlt
cmsel,s,CM_Plane
d,CM_Plane,volt,0
allsel,all                        !voltage for capa

/solu
antype,static                           ! Static analysis
pstres,on                 ! turn on prestress effects
solve
save
finish

/post1
!===get the average uy of the Membrane nodes
nsel,s,loc,y,-(height+Al_height)
nsel,r,loc,x,-mwidth/2,mwidth/2
nsel,r,loc,z,-mwidth/2,mwidth/2
*GET, nnodemin, NODE, 0, num, min
*GET, nnodecount, NODE, 0, count
*DIM,nuy,,nnodecount
*vget,nuy,node,nnodemin,u,y
ynodesum=0
*do,i,1,nnodecount
        ynodesum=ynodesum+nuy(i)
*enddo
ynodeavg=ynodesum/nnodecount
ynodeavgperv=ynodeavg/vlt
yobj=1+ynodeavgperv
!get the max von mise stress
nsel,all
NSORT, S, EQV
*GET, SMAX, SORT,, MAX
plnsol,uy
finish

lukingstrong 发表于 2008-11-3 16:15

自问自答吧

根据有限元的思想,它是先把模型或者系统离散成一个一个的小单元,然后再将这些小单元集成在一起进行求解。显然,每个小单元能更好地模拟其附近位置的物理环境。因此,在上述问题中,EMTGEN生成系列126的情况更接近正解。
请各位指正~

达能 发表于 2008-11-6 09:55

有机会还是做实验来验证:@D

qinziqinzi 发表于 2009-7-9 15:47

回复 地板 lukingstrong 的帖子

我现在也要做MEMS机电耦合的分析,能否向你请教一下,加下我QQ278777086,现在在做设计,比较急。。

zhyhao 发表于 2012-3-7 11:30

好贴!学习了!
页: [1]
查看完整版本: 值得关注的问题:直接生成Trans126和EMTGEN生成得出的结果相差很大的原因