| 查看: 3111 | 回复: 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 ] |
» 猜你喜欢
真诚求助:手里的省社科项目结项要求主持人一篇中文核心,有什么渠道能发核心吗
已经有8人回复
寻求一种能扛住强氧化性腐蚀性的容器密封件
已经有5人回复
论文投稿,期刊推荐
已经有6人回复
请问哪里可以有青B申请的本子可以借鉴一下。
已经有4人回复
孩子确诊有中度注意力缺陷
已经有14人回复
请问下大家为什么这个铃木偶联几乎不反应呢
已经有5人回复
请问有评职称,把科研教学业绩算分排序的高校吗
已经有5人回复
2025冷门绝学什么时候出结果
已经有3人回复
天津工业大学郑柳春团队欢迎化学化工、高分子化学或有机合成方向的博士生和硕士生加入
已经有4人回复
康复大学泰山学者周祺惠团队招收博士研究生
已经有6人回复
» 本主题相关价值贴推荐,对您同样有帮助:

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

6楼2014-03-04 20:27:33
7楼2014-03-05 16:06:38
鸿影惊天下
金虫 (小有名气)
- 应助: 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
9楼2014-03-07 16:14:23
10楼2014-03-07 16:19:56














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