求高手,fortran编程语言,与有限元算法有关,现缺少open中的dat文件,该文件应如何编写
open(1,file='m2d_s.dat',status='old')read(1,*)nn,ne!write(*,*)'numberofnodesandelemen...
open(1,file='m2d_s.dat',status='old')
read(1,*) nn,ne
! write(*,*) 'number of nodes and elements of mesh'
! write(*,*) 'nn,ne=', nn,ne
read(1,*) (xj(i),yj(i),i=1,nn)
read(1,*) ((node(i,j),j=1,4),i=1,ne)
close(1)
! defines the region of needle electrode
xx0=0.003
yy0=0.013
xx1=0.0032
yy1=0.015
! assigns the area of the insulator
xs0=0.
ys0=0.
xs1=0.003
ys1=0.01
!
!
xxm=0.
yym=0.
xxl=1.
yyl=1.
do 1 i=1,nn
! determines the solved region
if(xj(i).gt.xxm) xxm=xj(i)
if(yj(i).gt.yym) yym=yj(i)
if(xj(i).lt.xxl) xxl=xj(i)
if(yj(i).lt.yyl) yyl=yj(i)
1 continue
write(*,*) 'limitation of mesh'
write(*,*) 'xxl,yyl,xxm,yym=',xxl,yyl,xxm,yym
! defines the region that initial particles are assigned
xt0=0.0026
yt0=0.0126
xt1=0.0036
yt1=0.0127
k=0
do 2 j=1,ne
ie=node(j,1)
je=node(j,2)
ke=node(j,3)
me=node(j,4)
if(xj(ie).ge.xt0.and.xj(je).le.xt1.and.yj(ie).ge.yt0.and.yj(me).le.yt1) then
k=k+1
nein(k)=j
goto 2
endif
2 continue
nei=k
do 10 is=1,nsp
nlg=ns(is)/nei
ns(is)=nlg*nei
write(*,*) 'is,ne,ns=',is,nei,ns(is)
! load particles
do 11 i=1,nlg
do 12 k=1,nei
j=nein(k)
ie=node(j,1)
je=node(j,2)
ke=node(j,3)
me=node(j,4)
x0=0.5*(xj(je)-xj(ie))+xj(ie)
y0=0.5*(yj(me)-yj(ie))+yj(ie)
i1=k+nei*(i-1)
x(i1,is)=x0
y(i1,is)=y0
if(is.gt.1) goto 12
vx(i1)=v0
vy(i1)=v0
12 continue
11 continue
10 continue
! apply boundary conditions, collect charge density, etc.
do 100 is=1,nsp
call setrho(is,ns(is),qs(is))
100 continue
return
end 展开
read(1,*) nn,ne
! write(*,*) 'number of nodes and elements of mesh'
! write(*,*) 'nn,ne=', nn,ne
read(1,*) (xj(i),yj(i),i=1,nn)
read(1,*) ((node(i,j),j=1,4),i=1,ne)
close(1)
! defines the region of needle electrode
xx0=0.003
yy0=0.013
xx1=0.0032
yy1=0.015
! assigns the area of the insulator
xs0=0.
ys0=0.
xs1=0.003
ys1=0.01
!
!
xxm=0.
yym=0.
xxl=1.
yyl=1.
do 1 i=1,nn
! determines the solved region
if(xj(i).gt.xxm) xxm=xj(i)
if(yj(i).gt.yym) yym=yj(i)
if(xj(i).lt.xxl) xxl=xj(i)
if(yj(i).lt.yyl) yyl=yj(i)
1 continue
write(*,*) 'limitation of mesh'
write(*,*) 'xxl,yyl,xxm,yym=',xxl,yyl,xxm,yym
! defines the region that initial particles are assigned
xt0=0.0026
yt0=0.0126
xt1=0.0036
yt1=0.0127
k=0
do 2 j=1,ne
ie=node(j,1)
je=node(j,2)
ke=node(j,3)
me=node(j,4)
if(xj(ie).ge.xt0.and.xj(je).le.xt1.and.yj(ie).ge.yt0.and.yj(me).le.yt1) then
k=k+1
nein(k)=j
goto 2
endif
2 continue
nei=k
do 10 is=1,nsp
nlg=ns(is)/nei
ns(is)=nlg*nei
write(*,*) 'is,ne,ns=',is,nei,ns(is)
! load particles
do 11 i=1,nlg
do 12 k=1,nei
j=nein(k)
ie=node(j,1)
je=node(j,2)
ke=node(j,3)
me=node(j,4)
x0=0.5*(xj(je)-xj(ie))+xj(ie)
y0=0.5*(yj(me)-yj(ie))+yj(ie)
i1=k+nei*(i-1)
x(i1,is)=x0
y(i1,is)=y0
if(is.gt.1) goto 12
vx(i1)=v0
vy(i1)=v0
12 continue
11 continue
10 continue
! apply boundary conditions, collect charge density, etc.
do 100 is=1,nsp
call setrho(is,ns(is),qs(is))
100 continue
return
end 展开
展开全部
nn是有限元网格的节点个数,ne为有限元网格的单元个数,(xj(i),yj(i),i=1,nn)表示每个节点的x,y坐标;((node(i,j),j=1,4),i=1,ne)表示每个单元由哪四个节点组成,由此看来对求解域的离散应该采用的是4节点四边形线性单元。根据这个情况,假设你的求解域为矩形区域,你将它离散为4个单元,每个单元有4个节点组成,共有9个节点,
输入文件内容(两虚线间的内容)应该这样写:
——————————————————————
9,4
1,x坐标值,y坐标值
2,x坐标值,y坐标值
。。。
。。。
9,x坐标值,y坐标值
1,1,4,5,2(即1号单元由1,4,5,2这4个节点组成)
2,2,5,6,3
3,4,7,8,5
4,5,8,9,6
——————————————————
当然,我只是简单举例说明,具体多少个单元和节点要看你对求解区域怎么进行有限元网格划分而定,但是格式可以按照上面写
--
2022-12-05 广告
2022-12-05 广告
图形化编程简单理解为用积木块形式编程,scratch和python也是其中的一种,属于入门级编程,以其简单生动的画面获得无数学生的喜爱,深圳市创客火科技有限公司是一家做教育无人机的公司,旗下有编程无人机,积木无人机及室内外编队,每款飞机含有...
点击进入详情页
本回答由--提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询