Fortran Coder

标题: fortran项目中DCOPY和DSCAL函数 [打印本页]

作者: xk6891    时间: 2021-6-15 21:27
标题: fortran项目中DCOPY和DSCAL函数
前人编写的科学计算程序包,用它做计算的时候感觉其中有些错误,遂一一查看源程序,想查找其中原因。读程序时,现有一不明白处,想请教:譬如“adjmu.F”中子程序SUBROUTINE CONVFRIE的第431和432行为:
431     CALL DCOPY(NSTATE,WE(1),1,WEINT(1),1)
432     CALL DSCAL(NSTATE,-1.D0,WEINT(1),1)
遂去找这两个被调用的子程序DCOPY和DSCAL,adjmu.F文件中无此子程序任何信息,而子程序SUBROUTINE CONVFRIE的头文件system.h,nlps.inc,fint.inc中也无信息。有些迷茫了,在这些相关的地方就没有这两个被调用的子程序,那这两个子程序在哪里呢,这个调用是如何做到的呢?
对于大型的Fortran项目,做出修补,从何处下手较为合适?

adjmu.zip

12.45 KB, 下载次数: 0


作者: 风平老涡    时间: 2021-6-15 22:17
DCOPY, DSCAL是Lahey Fortan专属子程序。


DCOPY
SUBROUTINE DCOPY (N, DX, INCX, DY, INCY)
Purpose

            Copy a vector.

GAMS Category

D1A5

Author(s)

           Lawson, C. L., (JPL)
           Hanson, R. J., (SNLA)
           Kincaid, D. R., (U. of Texas)
           Krogh, F. T., (JPL)

Description


                B L A S  Subprogram
    Description of Parameters

     --Input--
        N  number of elements in input vector(s)
       DX  double precision vector with N elements
     INCX  storage spacing between elements of DX
       DY  double precision vector with N elements
     INCY  storage spacing between elements of DY

     --Output--
       DY  copy of vector DX (unchanged if N .LE. 0)

     Copy double precision DX to double precision DY.
     For I = 0 to N-1, copy DX(LX+I*INCX) to DY(LY+I*INCY),
     where LX = 1 if INCX .GE. 0, else LX = 1+(1-N)*INCX, and LY is
     defined in a similar way using INCY.


DSCAL
SUBROUTINE DSCAL (N, DA, DX, INCX)
Purpose

            Multiply a vector by a constant.

GAMS Category

D1A6

Author(s)

           Lawson, C. L., (JPL)
           Hanson, R. J., (SNLA)
           Kincaid, D. R., (U. of Texas)
           Krogh, F. T., (JPL)

Description


                B L A S  Subprogram
    Description of Parameters

     --Input--
        N  number of elements in input vector(s)
       DA  double precision scale factor
       DX  double precision vector with N elements
     INCX  storage spacing between elements of DX

     --Output--
       DX  double precision result (unchanged if N.LE.0)

     Replace double precision DX by double precision DA*DX.
     For I = 0 to N-1, replace DX(IX+I*INCX) with  DA * DX(IX+I*INCX),
     where IX = 1 if INCX .GE. 0, else IX = 1+(1-N)*INCX.


作者: xk6891    时间: 2021-6-16 09:12
风平老涡 发表于 2021-6-15 22:17
DCOPY, DSCAL是Lahey Fortan专属子程序。

谢谢大神指导。之前朝着这个方向想了想,百度没有丝毫线索,还是应该采用google




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