| 查看: 3175 | 回复: 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 ] |
» 猜你喜欢
不自信的我
已经有11人回复
北核录用
已经有3人回复
要不要辞职读博?
已经有6人回复
实验室接单子
已经有3人回复
磺酰氟产物,毕不了业了!
已经有8人回复
求助:我三月中下旬出站,青基依托单位怎么办?
已经有10人回复
26申博(荧光探针方向,有机合成)
已经有4人回复
论文终于录用啦!满足毕业条件了
已经有26人回复
2026年机械制造与材料应用国际会议 (ICMMMA 2026)
已经有4人回复
Cas 72-43-5需要30g,定制合成,能接单的留言
已经有8人回复
» 本主题相关价值贴推荐,对您同样有帮助:

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

6楼2014-03-04 20:27:33
2楼2014-03-04 16:07:33
鸿影惊天下
金虫 (小有名气)
- 应助: 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楼2014-03-04 18:03:06













回复此楼
就行了,确定大小用allocate(vcl(2,npt))