Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Fortran 双精度功能wp(S、wmav、ip)_Fortran_Simulation_Spectrum - Fatal编程技术网

Fortran 双精度功能wp(S、wmav、ip)

Fortran 双精度功能wp(S、wmav、ip),fortran,simulation,spectrum,Fortran,Simulation,Spectrum,此时,我正在使用Plato为Fortran编译免费IDE 我的问题是如何正确编译这段代码。它总是给出一个错误代码,但每当我在谷歌上搜索时,我什么也找不到 这段代码来自于使用Charles W Strike的wp和相关函数了解亮度光谱和效率 如果有人想讨论亮度光谱或这本书的理论问题,我是开放的 options/g_float double precision function wp(S,wmav,ip) C C C finds one particular wp

此时,我正在使用Plato为Fortran编译免费IDE

我的问题是如何正确编译这段代码。它总是给出一个错误代码,但每当我在谷歌上搜索时,我什么也找不到

这段代码来自于使用Charles W Strike的wp和相关函数了解亮度光谱和效率

如果有人想讨论亮度光谱或这本书的理论问题,我是开放的

      options/g_float
      double precision function wp(S,wmav,ip)
C
C
C       finds one particular wp function, knowing its fundamental
C       arguments S,wmav, ip.
C
C
C       largest allowed ip is 70
C
C       eq. (4.45)
C
C
      IMPLICIT REAL*8(A-H, O-P, R-Z), LOGICAL*4(Q)
      dimension pfact1(47),pfact2(24),pfact(71)
      equivalence (pfact(1),pfact1(1)),(pfact(48),pfact2(1))
      data pfactl/l.d000,1.d000,2.d000,6.d000,24.d000,l20.d000,720.d000,
     15040.d000,40320.d000,362880.d000,3.6288d006,3.99168d007,
     24.790016d008,6.2270208d009,8.71782912d010,1.307674368d012,
     32.0922789888d013,3.55687428096d014,6.402373705728000d+015,
     41.216451004088320d+017,2.432902008176640d+018,
     55.109094217170944d+019,1.124000727777608d+021,
     62.585201673888498d+022,6.204484017332395d+023,
     71.551121004333099d+025,4.032914611266057d+026,
     81.088886945041835d+028,3.048883446117139d+029,
     98.841761993739703d+030,2.652528598121911d+032,
     a8.222838654177925d+033,2.631308369336936d+035,
     b8.683317618811888d+036,2.952327990396042d+038,
     c1.033314796638615d+040,3.719933267899013d+041,
     d1.376375309122635d+043,5.230226174666011d+044,
     e2.039788208119744d+046,8.159152832478978d+047,
     f3.345252661316381d+049,1.405006117752880d+051,
     g6.041526306337384d+052,2.658271574788449d+054,
     h1.196222208654802d+056,5.502622159812090d+057/
      data pfact2/
     12.586232415111682d+059,1.241391559253608d+061,
     26.082818640342677d+062,3.041409320171339d+064,
     31.551118753287383d+066,8.065817517094390d+067,
     44.274883284060027d+069,2.308436973392415d+071,
     51.269640335365828d+073,7.109985878048638d+074,
     64.052691950487723d+076,
     72.350561331282880d+078,1.386831185456899d+080,
     88.320987112741393d+081,5.075802138772249d+083,
     93.146997326038795d+085,1.982608315404441d+087,
     a1.268869321858842d+089,8.247650592082473d+090,
     b5.443449390774432d+092,3.647111091818869d+094,
     c2.480035542436831d+096,1.711224524281413d+098,
     d1.197857166996989d+100/
      pr=dfloat(ip)
      ipr=ip
      if(ip.lt.0)then
        pr=-pr
        ipr=-ip
      end if
      boltz=wmav/(1.d000+wmav)
      boltzl=dlog(boltz)
      smav=S*wmav
      smplav=smav+S
      s2mp1=smav+smp1av
      if(s2mp1.le.235.d000)then
        bp=dexp(-s2mp1)*smplav**pr/pfact(ipr+1)
      else
        bp=dexp(dlog(s2mp1)+pr*dlog(smplav)-dlog(pfact(ipr+1)))
      end if
      bsum=1.d000
      blsum=0.d000
      blterm=1.d000
      wnum=smav*smp1av
      wdnom1=0.d000
      wdnom2=pr
      do 1 j=1,150
        wdnom1=wdnom1+1.d000
        wdnom2=wdnom2+1.d000
        bterm=wnum*blterm/(wdnom1*wdnom2)
        bsum=bsum+bterm
        if(bsum.eq.blsum)then
          wp=bsum*bp
          if(ip.lt.0)then
            if(pr*boltzl.le.200.d000)then
              wp=wp*(boltz**pr)
            else
              wp=0.d000
            end if
          end if
          return
        else
          blsum=bsum
          blterm=bterm
        end if
1     continue
      END
错误说明:

F95(1) : error 201 - '(' expected after OPTIONS
F95(7) : error 609 - Expected '/' at end of DATA list
F95(8) : error 699 - Invalid character '.' at start of line
F95(8) : error 32 - Statement not recognised
F95(33) : warning 21 - Label 88 is declared, but not used
F95(7) : error 52 - Compilation abandoned

欢迎,请阅读,首先,向我们展示您的完整错误消息和您使用的确切编译命令。请注意,第一行
options/g_float
不属于Fortran。还要注意的是,它是一个函数,不是一个完整的程序。这是我的错误说明:F95(1):错误201-'(选项F95(7)后应为'):错误609-数据列表F95(8)末尾应为'/':错误699-无效字符'。'行F95(8)开头:错误32-语句无法识别F95(33):警告21-声明标签88,但未使用F95(7) :错误52-编译已放弃数据中的值不正确。有些值包含字母(
l
vs
1
)示例:
l.d000
而不是
1.d000
l20.d000
而不是
120.d000
@kvantour这是很有可能的,但编译器肯定不理解数据块。在这里评估列号通常非常困难。关于标签88的消息是可疑的。