通用'dde_solver'

时间:2017-10-15 15:20:38

标签: compiler-errors fortran

我正在尝试使用radford ex4p4p1.f90Fortran90 source使用dde_solver_m_unix.f90的DDE解算器。我相信我应该能够简单地下载和编译零更改,但我收到以下错误:

ex4p4p1.f90:107:8:

    SOL = DDE_SOLVER(NVAR,DDES,DELAYS,HISTORY,TSPAN=(/ 0D0,350D0 /))
         1
Error: There is no specific function for the generic ‘dde_solver’ at (1)

为了完全(并且简单地)重现这一点,我编写了一个小脚本来下载,提取和编译源代码:

#!/usr/bin/env bash

### Download and extract solver
dde_solver_url=http://www.radford.edu/~thompson/ffddes/dde_solver_m.zip
wget $dde_solver_url
unzip dde_solver_m.zip

### Download main routine
example_code_url=http://www.radford.edu/~thompson/ffddes/ex4p4p1.f90
wget $example_code_url

### Compile
gfortran dde_solver_m_unix.f90 ex4p4p1.f90

由于我认为这些文件被编写为“拖放”示例,我相信这可能是我的环境问题或者我编译错误。

我编译的方式有问题吗?如果没有,我可以对(1)驱动程序代码(ex4p4p1.f90)进行哪些最小的更改以使其工作或(不太理想)(2)求解器代码(dde_solver_m_unix.f90)?

1 个答案:

答案 0 :(得分:0)

在定义DKL_ *函数期间使用的INTERFACE块指定DDES的参数2,3和4应该假定为形状数组。但是,ex4p4p1定义的DDES具有参数2,3和4作为在编译时固定的数组。这会导致与英特尔编译器的混淆,也可能是gfortran正在发生的事情。 尝试使用

DOUBLE PRECISION, DIMENSION(:) :: Y,DY
DOUBLE PRECISION, DIMENSION(:,:) :: Z

而不是

DOUBLE PRECISION, DIMENSION(NEQN) :: Y,DY
DOUBLE PRECISION, DIMENSION(NEQN,NLAGS) :: Z

在DDES的接口块中。祝你好运。