- 积分
- 36
- 注册时间
- 2004-2-6
- 仿真币
-
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2008-10-27 14:43:59
|
显示全部楼层
来自 大连理工大学
11. 如何使用两个bft?我的计算流程要求在正式开始计算之前 先初始化应力,为此要使用弹塑性的,因此 需要 一个bft来控制,最后开始 时间计算,因此 还要一个 bft控制程序,同时内部还可能 用弹塑性计算,比较复杂, 使用两个bft会有冲突,有做过类似的么?
答:可以增加一个程序,这个程序摘自bft.for,把不需要的部分去掉就行。
12. 渗流问题,当压强和饱和度分开求解,以饱和度的收敛为非线性收敛准则。可是分开求解和压强与饱和度和起来求解结果还总不一样,而且是一个有震荡,一个没有震荡,不知道为什么?
答:一步一步对结果,发现收敛时,压强的值总对不上。于是,想到可能是分开算时,饱和度收敛后,压强并没有重新算的原因,因为我a场是压强,b场是饱和度,b场收敛了,就算非线性收敛。于是改为先算b场,再算a场.结果就和一起计算一样啦。所以,调试程序实在是非常费劲的.只有深入地分析数据、算法,才能发现问题。
13. 请问求解的位移场都是正确的,但是相应的求解出的应力全为0,可能的原因是什么?
答:求解应力场时出错,建议察看应力场计算时是否有除零现象和打印pde文件中的coef系数值,是否正确。
14. 像disp0 id0 nv 等自动生成的无格式输入或输出文件,用记事本打开和FEPG打开都是乱码,里面的数据能看吗?怎样打开呢?
答:*.0这些文件是无格式文件。如果需要看文件里面的内容,需要在dos窗口下执行prt命令( 工作目录的路径下)。然后用记事本打开工作路径下的out文件,就可以看到了。所以可以查看prt.for文件,看怎么读取和打印这些*.0的。nv文件是程序执行过程中产生的,可以在程序写nv文件时,用有格式方式写出nv文件。
15. 由gid做前处理后生成的两个.dat文件各代表什么意思?比如我生成的两个文件名为les.dat ,les-1.dat。请斑竹说明一下les-1.dat文件的作用和意义?
答:两个dat文件存放gid导出来的有限元模型数据。这两个文件通过fepg元件程序fgidpre转化后得到fepg程序可识别的计算数据文件coor0、elem0、id0、diap0等。其中,les.dat存4部分信息:节点坐标、节点自由度规格数、节点自由度初值、单元编码和材料号信息les-1.dat存节点自由度边值。基本上就是这样,详细可读fepg系统目录下gid目录下的fepg.bas和fepg1.bas文件。
16. fepg通过批处理命令实现计算流程,这样对于多次迭代的问题需要多次重启.exe计算模块,这样一些下一步需要的数值需要保存成文件,供下一步调用。迭代计算过程中pde文件中coef引用的值是不是只通过nfe读得?这种对下一步计算有用的数值必须要以文件得方式保存,是不是也可以直接在pde文件中打开并读取上一步的计算值(比如unod 写成read(s,unod) u du)?或者在pde文件中写write(s,aaa) ff?
答:不可以的。NFE文件读结果文件,然后计算单刚的时候会根据程序找到单元上几个节点在上一步的值。如果pde文件中读结果,需要自己判断,当前单元是哪个单元,包含哪几个整体节点号,然后取结果文件在这几个整体节点号上的值。而且这样不能用上一步结果的一阶导数。
17. *.gcn 文件中的 &, 和 %1 是什么意思?
----------------
defi
a ell &
b str a &
START%1 a
SOLV%1 a
stress b
----------------
答:%1是求解器参数。比如你可以生成程序时用 gio sin 或gio nin 或gio sor等,如果直接用gio 则默认为 gio c,&其实没有什么作用。
18. 有时候我们希望用其他名字的文件作为时间步控制文件,fepg默认的是time
理论上应该可以改成其他名字,比如在批处理中出现time的地方换成 step,当然,相应地准备一个初始文件step0,但是,实际计算结果表明,每换成一个新名字,计算结果都和原来用time作时间控制文件时不一样,其他地方一点都没有修改!我测试的是弹塑性程序。对于fepg其他的瞬态问题程序,我也测试了一个,没有这样的问题。
答:求应力的场中有这么一句话,
inquire(file='time',exist=filflg)
if (filflg) then
open(6,file='time',form='unformatted',status='old')
read(6) tmax,dt,time,it
close(6)
write(*,*) 'tmax,time,dt,it =',tmax,time,dt,it
endif
所以,这个time也要改。因为会影响应力的计算。(弹塑性特别,因为PDE里面求应力与时间有关)。
19. 我生成的start文件,很奇怪!
implicit real*8 (a-h,o-z)
character*40 fname,filename(20)
common /aa/ ia(63750000)
common /bb/ ib(31870000)
common /cc/ ic(15930000)
numarg = 0
numarg = numarg+1
call getarg(numarg,fname)
| open(1,file=fname,form='unformatted',status='old')
read(1) knode,kdgof
close(1)
kvar=knode*kdgof
write(*,*) 'knode,kdgof,kvar ='
write(*,'(1x,4i7)') knode,kdgof,kvar
KCOOR=3
KELEM=500000
所有的文件打开前的文件名都是由“getarg"命令得到的? 什么原因?
getarg的源程序哪里有?
答:系统的函数,获取可执行程序带的参数。starta.exe disp0,获取的第一个字符串就是disp0,g77编译器下的语法。
20. 请教流体场的自由滑动边界怎么给(边界是曲线)?平行边界x,y时,我通常是将垂直方向的速度设为0,平行的为自由,边界是斜的应该怎么给?
答:用fbc,fy设置为很大的一个数。滑动边界条件也就是说在滑动边界的法线上速度的梯度为很大。于是写fbc文件,使得u对y的导数为很大的一个数,也就是说fy取很大的一个数即可。
21. FEPG产生的Fortran程序能独立运行吗?产生的.for的程序什么关系?哪个是主程序,哪个是子程序呀?
答:可以独立运行!
FEPG生成的程序包含几个独立的子程序,也就是常说的元件程序。
包括start.for,E%1.for.(这里所有的%1代表gcn文件的名称)如果gcn写的是solvc的话,包括start.for,E%1.for,solv%1.for,U%1.for.
有几个场,一般就有几个对应的starta.for,startb.for, E%1a.for,E%1b.for等等。
左边浏览器窗口里面E%1.for下面的*.for文件,是E%1.for需要调用的子程序。
按照生成的%1.bat里面写的顺序,执行这些.for文件编译成的exe程序。
所以,当生成程序后,拷贝fegen.bat(这个文件是编译所有这些生成的*.for命令)
到新文件(因为当执行其他操作时这个文件会被其他内容冲掉)。
然后拷贝所有的*.for文件,拷贝所有的*0文件和time0文件,*.io文件,*.lin文件到新文件夹。当然还要把%1.bat考备出来。
拷贝安装目录下\nfe\fepg.lib文件到该文件夹。
这时,
fegen.bat里面的编译命令里面的fepg.lib现在已经不在系统的lib路径里面,可以把fepg.lib存放的绝对路径写在fegen.bat中fepg.lib前。
然后就可以执行刚拷贝的fegen.bat执行编译,完了之后执行*.bat就可以了
其实很简单的思路是,
从%1.bat里面找,第一列对应的.for是需要的。其实也就是文件夹下所有的.for
*.0是前处理形成的数据文件,time0和*.io是需要的数据文件。
fepg.lib是一些基本子函数封装成的库文件,*.for中调用但在文件中找不到的子函数
都被编译在fepg.lib文件里面。这些子函数的源代码文件为安装文件夹下的\nfe.r8下的*.for。
22. IO文件有什么用处?
答:IO文件是告诉系统生成e程序的时候需要调用哪些pde,fbc模块。
[ 本帖最后由 zhoulon 于 2008-10-27 16:46 编辑 ] |
评分
-
1
查看全部评分
-
|