Fortran Coder

标题: 参数未赋值 [打印本页]

作者: 小鸡儿    时间: 2020-9-27 16:31
标题: 参数未赋值
最近看一篇文献,里面有很老的一个程序,想着实现一下,但有个地方卡住了,想请教大佬,是他写错了,还是我没看懂
subroutine SCATTER(RESPONSE,DIAMETER,STEPNUM)
      PARAMETER ( ndim = 15 )  
      PARAMETER ( MSTEP = 200 )  
      INTEGER STEPNUM  
      DOUBLE PRECISION AUX(ndim),THETALO, THETAHI, REFMED  
      DOUBLE PRECISION REFREAL, REFIMAG  
      DOUBLE PRECISION PI,WAVELEN,DIALOW,DIASTEP,TOL,X  
      DOUBLE PRECISION RADIUS,R,ETA,BETA,CHI,SUM  
      DOUBLE PRECISION F,DIAMETER(MSTEP),FACT  
      DOUBLE PRECISION BETADEG, RESPONSE(MSTEP),RES(2,MSTEP)  
      INTEGER OPTION  
      COMPLEX REFREL  
      CHARACTER *80 FILENAME  
      LOGICAL THERE  
      COMMON /SCATPI/ PI  
      COMMON/MIE/X,REFREL,BETA,ETA,CHI,OPTION  
      DOUBLE PRECISION MIEFUN  
      EXTERNAL MIEFUN   
      PI=ACOS(-1.0)
C     Inputs  
      REFMED=1.00028  
      WAVELEN=0.633  
      TOL=1E-4  
      WRITE (6,*) 'Refractive index of the particle, real part? '  
      READ (5,*) REFREAL  
      WRITE (6,*) 'Imaginary part? '  
      READ (5,*) REFIMAG  
      REFIMAG=0
      OPTION=1  
      ETADEG=90  
      CHIDEG=90  
      ETA=ETADEG*PI/180.  
      CHI=CHIDEG*PI/180.
      BETADEG=53.0  
      I=1
3333  BETA=BETADEG*PI/180.0  
      THETALO=ETA-BETA  
      THETAHI=ETA+BETA  
      REFREL=CMPLX(REFREAL,REFIMAG)/REFMED
      F=(DIAHIGH-DIALOW)/(STEPNUM-1.D0)  
      FACT = WAVELEN * WAVELEN * 1.E-8 / ( 2. * PI * PI )  
      DO 6000 J=1,STEPNUM
c     DIAMETER(J)=DIALOW+(J-1)*F  
      X=PI*DIAMETER(J)*REFMED/WAVELEN

这个子程序还没完,但我到这里就觉得不对了,这个STEPNUM完全没有给出任何值啊,如果是默认值0的话,怎么可以带入循环呢


作者: 七星彩    时间: 2020-9-27 18:54
这是参数啊,调用的时候对应的实参就有值了。
作者: 小鸡儿    时间: 2020-9-27 19:06
七星彩 发表于 2020-9-27 18:54
这是参数啊,调用的时候对应的实参就有值了。

懂了,一点就通,多谢大佬




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2