| 查看: 3172 | 回复: 9 | ||
| 当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖 | ||
鸿影惊天下金虫 (小有名气)
|
[求助]
主程序中未分配的可变数组,如何在子程序中调用?
|
|
|
请前辈们帮忙,自己编的一段程序: Program test_main implicit none integer NP,ele_n,NE,NNE,npt,num integer,pointer :: ele_concentrate( : ),ele_c( : ) double precision,pointer::vcl( : , : ) interface subroutine new_node(NP,ele_n,NE,NNE,ele_concentrate,ele_c,vcl,npt,num) implicit none integer NP,ele_n,NE,NNE,npt,num integer,allocatable :: ele_concentrate(NE),ele_c(NNE) double precision,allocatable :: vcl(2,npt) end subroutine new_node subroutine zhaobian_gj01(NP,ele_n,NE,NNE,ele_concentrate,ele_c,vcl,npt,num) implicit none integer NP,ele_n,NE,NNE,npt,num integer :: ele_concentrate(NE),ele_c(NNE) double precision ::vcl(2,npt) end subroutine zhaobian_gj01 end interface call zhaobian_gj01(NP,ele_n,NE,NNE,ele_concentrate,ele_c,vcl,npt,num) call new_node(NP,ele_n,NE,NNE,ele_concentrate,ele_c,vcl,npt,num) end 后面的zhaobian_gj01, new_node是子程序经调试没有错误,但是主程序在调试过程中总报错。 ![]() 一个错误是可变数组ele_concentrate,ele_c,vcl:ALLOCATABLE or POINTER attribute dictates a deferred-shape-array 另外一个错误是An allocatable dummy argument may only be argument associated with an allocatable actual argument. 同样也是可变数组出错。 两个错误都出在interface块。 求有经验的前辈帮忙指点一二!谢谢 [ Last edited by 鸿影惊天下 on 2014-3-4 at 15:06 ] |
» 猜你喜欢
论文终于录用啦!满足毕业条件了
已经有17人回复
不自信的我
已经有5人回复
磺酰氟产物,毕不了业了!
已经有4人回复
投稿Elsevier的杂志(返修),总是在选择OA和subscription界面被踢皮球
已经有8人回复
» 本主题相关价值贴推荐,对您同样有帮助:

鸿影惊天下
金虫 (小有名气)
- 应助: 4 (幼儿园)
- 金币: 1011.8
- 散金: 840
- 红花: 1
- 帖子: 140
- 在线: 36.4小时
- 虫号: 2359442
- 注册: 2013-03-19
- 性别: MM
- 专业: 力学中的基本问题和方法
|
对不起我不是很明白,你的意思是vcl这个数组定义成(2,: )是已经给定了大小吗?我把interface块改成这样: interface subroutine new_node(NP,ele_n,NE,NNE,ele_concentrate,ele_c,vcl,npt,num) implicit none integer NP,ele_n,NE,NNE,npt,num integer,allocatable :: ele_concentrate(NE),ele_c(NNE) double precision :: vcl(2,npt) end subroutine new_node end interface interface subroutine zhaobian_gj01(NP,ele_n,NE,NNE,ele_concentrate,ele_c,vcl,npt,num) implicit none integer NP,ele_n,NE,NNE,npt,num integer,allocatable :: ele_concentrate(NE),ele_c(NNE) double precision ::vcl(2,npt) end subroutine zhaobian_gj01 end interface 之后,vcl数组不再提示错误,但是其他两个数组还是会报原来的错误。但是如果把interface里申请可变数组的allocatable都去掉,错误提示就会变成:error #8000: There is a conflict between local interface block and external interface block. [ELE_CONCENTRATE] 位置是在interface里zhaobian_gj01(NP,ele_n,NE,NNE,ele_concentrate,ele_c,vcl,npt,num)这一句。 这是为什么呢? |

3楼2014-03-04 17:02:28
鸿影惊天下
金虫 (小有名气)
- 应助: 4 (幼儿园)
- 金币: 1011.8
- 散金: 840
- 红花: 1
- 帖子: 140
- 在线: 36.4小时
- 虫号: 2359442
- 注册: 2013-03-19
- 性别: MM
- 专业: 力学中的基本问题和方法

6楼2014-03-04 20:27:33
鸿影惊天下
金虫 (小有名气)
- 应助: 4 (幼儿园)
- 金币: 1011.8
- 散金: 840
- 红花: 1
- 帖子: 140
- 在线: 36.4小时
- 虫号: 2359442
- 注册: 2013-03-19
- 性别: MM
- 专业: 力学中的基本问题和方法
|
谢谢!这一段已经调通了,但是新的问题又产生了 。我之前已经调通的子程序段new_node在整个程序调用时出现断点,我检查了以后发现是zhaobian_gj01这个子程序里生成的,ele_concentrate,ele_c这两个数组的值没有正确传入new_node里。zhaobian_gj01里定义的interface块是这样的: interface subroutine new_node(NP,ele_n,NE,NNE,ele_concentrate,ele_c,vcl,npt,num) implicit none integer NP,ele_n,NE,NNE,npt,num integer ele_concentrate(NE),ele_c(NNE) double precision vcl(2,npt) end subroutine new_node end interface 是这里有什么问题吗? |

8楼2014-03-07 10:45:53








回复此楼