lyn 发表于 2004-6-16 04:49:43

【求助】coef上一迭代的值

请斑竹帮我看一下为什么coef中的上一迭代的值传不到子程序里,非常感谢!!
defi
disp po,pc
coor x,y
coef pon,pcn
mate poro;T;API;pb;zdf;gmw;pd;alfa;beta;sor;elamda;tcvt; \
0.33;68;10;2500;0.95;30;20;3.0;2.0;0.2;10;4.3946E-6;
shap %1 %2
gaus %3
vect x x y
vect pk 10000*tcvt 10000*tcvt

stif
$cv fpo=pon
$cv fpc=pcn
$c6 call calcoef(pg,so,sg,bo,bg,rso,rsopo,
$c0      &   bopo,bgpg,sopc,pkro,pkrg,vsco,vscg,
$c0      &   prmt,fpo,fpc)
$c6 porocf=(poro**3)/(1-poro)**2
$c6 a1=porocf*pkro/(bo*vsco)
$c6 b1=porocf*(rso*pkro/(bo*vsco)+pkrg/(bg*vscg))
$c6 c1=porocf*pkrg/(bg*vscg)
$c6 a2=poro*bopo*so
$c6 b2=poro*sopc/bo
$c6 c2=(rso*bopo+rsopo/bo)*poro*so+poro*sg*bgpg
$c6 d2=poro*(rso/bo-1/bg)*sopc+poro*sg*bgpg
dist=+*pk_i*a1
+*pk_i*b1
+*pk_i*c1

mass
dist=+*a2+*b2+*c2+*d2

load=+*0.0

end

lyn 发表于 2004-6-16 13:45:30

回复: 【求助】coef上一迭代的值

我的nfe 算法就是nparb,里面的coef项是 coef U,我觉得不用改,请斑竹指点,万分感谢!!

lyn 发表于 2004-6-16 14:48:27

回复: 【求助】coef上一迭代的值

以下是第一次执行e元件后的结果,可以看出u1(初时值)是对的,但是u(第一次迭代的值)全为0,这是不是说明coef的值没有传过来?谢谢指点!!

KNODE,KDGOF,KVAR,KCOOR,KELEM =
    606      2   1212      32000000
TMAX,DT,TIME,IT =      3.000000000000000      1.000000000000000
       1.000000000000000         1
K =         8
MMATE =         1 NMATE =          12
EMATE =
0.33E+00 0.68E+02 0.10E+02 0.25E+04 0.95E+00 0.30E+02 0.20E+02 0.30E+01
0.20E+01 0.20E+00 0.10E+02 0.44E-05
SIN_SOLVER .... MAXA =       20262
n       ue             v             u            u1
   1      0.00000E+00      0.00000E+00      0.00000E+00      0.00000E+00
   2 NaN            NaN                   0.00000E+00      0.35000E+04
   3      0.00000E+00      0.00000E+00      0.00000E+00      0.00000E+00
   4 NaN            NaN                   0.00000E+00      0.35000E+04
   5 NaN            NaN                   0.00000E+00      0.35000E+04
   6 NaN            NaN                   0.00000E+00      0.35000E+04
   7 NaN            NaN                   0.00000E+00      0.35000E+04
   8 NaN            NaN                   0.00000E+00      0.35000E+04
   9      0.00000E+00      0.00000E+00      0.00000E+00      0.00000E+00
  10 NaN            NaN                   0.00000E+00      0.35000E+04
  11 NaN            NaN                   0.00000E+00      0.35000E+04
  12 NaN            NaN                   0.00000E+00      0.35000E+04
  13 NaN            NaN                   0.00000E+00      0.35000E+04
  14 NaN            NaN                   0.00000E+00      0.35000E+04
  15 NaN            NaN                   0.00000E+00      0.35000E+04
  16 NaN            NaN                   0.00000E+00      0.35000E+04
  17 NaN            NaN                   0.00000E+00      0.35000E+04

seeksilence 发表于 2004-6-16 17:18:04

回复: 【求助】coef上一迭代的值

在批命令文件开始加上
copy disp1 disp2

lyn 发表于 2004-6-16 17:54:38

回复: 【求助】coef上一迭代的值

能不能光在pde或nfe文件里改?我做了教材中的非稳态热传导例子,没有问题的,其实我的这个问题跟它是一样的,我也按照例子的方法作?为什么就得不到结果?

billget 发表于 2004-6-16 18:21:22

回复: 【求助】coef上一迭代的值

你看看你的PDE文件中,如果pcn,on为0是否会
出错。比如除零,那你加个判断,快是零时
,给他个小数,试试??

lyn 发表于 2004-6-16 20:00:58

回复: 【求助】coef上一迭代的值

问题有所改善,但是还是有点问题,第二次结果显示sqrt错误,(我的子程序里没有用到sqrt),我有点好奇,nfe中显示输出的结果是三个矢量,每个矢量有两个值,为什么实际现实的只有一个(po)?
还有子程序中用到的mate参数,能不能直接用prmt代替?谢谢

非常感谢seeksilence, billget的指点,进步神速!!

lyn 发表于 2004-6-16 20:49:40

回复: 【求助】coef上一迭代的值

找到疑点,第一次迭代后ue(差值)还很大,为什么就推出迭代了?因此才有上面的错误。

n       ue             v             u            u1
   1   -0.35000E+04      0.00000E+00      0.35000E+04      0.35000E+04
   2      0.48227E+05      0.51727E+05      0.35000E+04      0.35000E+04
   3   -0.35000E+04      0.00000E+00      0.35000E+04      0.35000E+04
   4      0.49189E+05      0.52689E+05      0.35000E+04      0.35000E+04
   5      0.46745E+05      0.50245E+05      0.35000E+04      0.35000E+04
   6      0.48667E+05      0.52167E+05      0.35000E+04      0.35000E+04
   7      0.49242E+05      0.52742E+05      0.35000E+04      0.35000E+04
   8      0.48736E+05      0.52236E+05      0.35000E+04      0.35000E+04
   9   -0.35000E+04      0.00000E+00      0.35000E+04      0.35000E+04
。。。。。。。
cc,err =      1.000000000000000   1.408993330699737E+012
ab,rab =   0.000000000000000E+000   0.000000000000000E+000

是不是err太大了,如果双精度,在哪设?好像系统默认就是双精度?

还有请教seeksilence为什么要
“在批命令文件开始加上
copy disp1 disp2 “
不理解?

谢谢!!
页: [1]
查看完整版本: 【求助】coef上一迭代的值