Fortran Coder

楼主: 依旧是则徐
打印 上一主题 下一主题

[数学库] IMSL编译错误,This name has already been used as an external function name.

[复制链接]

11

帖子

2

主题

0

精华

入门

F 币
52 元
贡献
26 点
9#
 楼主| 发表于 2015-4-7 12:54:10 | 只看该作者
楚香饭 发表于 2015-4-7 12:32
VARIABLE 模块中,
real*8  sk3(3,0:2,0:22)
而在  shouli.f90 第 50 行:

是的,我改过来了!谢谢!然后我再请教一个问题,我在运行时出现error M6201: MATH     ——sqrt: DOMAIN error。我看了下 shouli.f90中的sqrt公式,没发现错误,帮我检查一下吧!

716

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
624 元
贡献
319 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

8#
发表于 2015-4-7 12:32:10 | 只看该作者
VARIABLE 模块中,
real*8  sk3(3,0:2,0:22)
而在  shouli.f90 第 50 行:
do i=1,20
do j=0,4
    sk3(1,i,j)=sXYZ(1,i,j+1)-sXYZ(1,i,j)  !// 此处 sk3 越界,i 从1 到 20,但第二维是 0:2
    sk3(2,i,j)=sXYZ(2,i,j+1)-sXYZ(2,i,j)

11

帖子

2

主题

0

精华

入门

F 币
52 元
贡献
26 点
7#
 楼主| 发表于 2015-4-7 12:15:39 | 只看该作者
楚香饭 发表于 2015-4-7 11:09
参数类型不一致。ivprk 用于处理单精度,而 T 是双精度。
尝试使用 DIVPRK 函数 ...

非常感谢!编译没问题了.我在运行时又出错了, 提示我的问题是数组fz超出。可是我不太理解,我设定的FUFSUM(3,0:22)没有问题吧?请楼主如果有空暇时,帮我看看下面的文件(链接是文件所在位置),http://pan.baidu.com/s/1o6tA04M

716

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
624 元
贡献
319 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

6#
发表于 2015-4-7 11:09:09 | 只看该作者
参数类型不一致。ivprk 用于处理单精度,而 T 是双精度。
尝试使用 DIVPRK 函数

11

帖子

2

主题

0

精华

入门

F 币
52 元
贡献
26 点
5#
 楼主| 发表于 2015-4-7 11:00:53 | 只看该作者
楚香饭 发表于 2015-4-7 10:28
试试
use IMSL
改为

谢谢,确实有帮助,这个问题解决了!然后又出现了这个问题,请帮忙看下d:\files\ipv\130.f90(634) : Error: The type of the actual argument differs from the type of the dummy argument.   [T]
call IVPRK(IDO, N, FCN, T, TEND, TOL, PARAM, Y)
------------------------^
d:\files\ipv\130.f90(634) : Error: The type of the actual argument differs from the type of the dummy argument.   [TEND]
call IVPRK(IDO, N, FCN, T, TEND, TOL, PARAM, Y)
我看了下我的主程序和子程序里面都定义这个量了(下面贴出来了),为啥还出现这样的问题?

!主程序
program MAIN
use     NUMERICAL
use     CONSTANT
USE     VARIABLE
use     IMSL,sxyz_1=>sxyz

IMPLICIT NONE
external FCN
                                      !!!主程序出现的变量       
real :: a=20.0                          !牛顿迭代求波数时的初始值       
INTEGER IDO ,ISTEP,NOUT,PSTEP2
real*8  TOL,PARAM(MXPARM),Y(N),TEND,T
INTEGER  I,J, K

!子程序
SUBROUTINE FCN(NN,T1,Y,YPRIME)
use CONSTANT
USE VARIABLE
IMPLICIT NONE
INTEGER NN
REAL*8 T1,Y(N),YPRIME(N)

716

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
624 元
贡献
319 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

地板
发表于 2015-4-7 10:28:14 | 只看该作者
本帖最后由 楚香饭 于 2015-4-7 10:31 编辑

试试
use IMSL
改为
use IMSL , sxyz_1 => sxyz

可能 IMSL 里面有一个叫 sxyz 的函数,用来算三维向量的内积。所以给他改个名字。

11

帖子

2

主题

0

精华

入门

F 币
52 元
贡献
26 点
板凳
 楼主| 发表于 2015-4-7 10:08:23 | 只看该作者
楚香饭 发表于 2015-4-7 09:26
use     NUMERICAL
use     CONSTANT
USE     VARIABLE

对啊,我就是在variable 里面定义了sxyz  其他的都没有定义。而且对于imsl 我不太懂,当我把IMSL去掉之后时,上述error就没有了 ,反倒出现了这个错误error LNK2001: unresolved external symbol _IVPRK@32
Debug/130.exe : fatal error LNK1120: 1 unresolved externals

716

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
624 元
贡献
319 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

沙发
发表于 2015-4-7 09:26:38 | 只看该作者
use     NUMERICAL
use     CONSTANT
USE     VARIABLE
USE     IMSL
这些模块里,已经有定义过 Sxyz 了,可能冲突
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-6-28 18:02

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表