24小时热门版块排行榜    

查看: 3270  |  回复: 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 ]
回复此楼
你所能经历的最大冒险,就是过你梦想的生活
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

鸿影惊天下

金虫 (小有名气)

引用回帖:
7楼: Originally posted by btx97 at 2014-03-05 16:06:38
错误信息已经写的很清楚了。
子程序里的 dummy argument 的属性是allocatable的,你引用子程序时的参数(actual argument)的属性也得是allocatable的。...

谢谢!这一段已经调通了,但是新的问题又产生了。我之前已经调通的子程序段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
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 10 个回答

btx97

金虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
鸿影惊天下: 金币+10, ★★★很有帮助, 谢谢! 2014-03-05 14:25:43
double precision,allocatable :: vcl(2,npt)

这里不用allocatable,因为你后面已经给定数组大小了,不需要申请可变数组了。
2楼2014-03-04 16:07:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

鸿影惊天下

金虫 (小有名气)

引用回帖:
2楼: Originally posted by btx97 at 2014-03-04 16:07:33
double precision,allocatable :: vcl(2,npt)

这里不用allocatable,因为你后面已经给定数组大小了,不需要申请可变数组了。

对不起我不是很明白,你的意思是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
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

btx97

金虫 (小有名气)

引用回帖:
3楼: Originally posted by 鸿影惊天下 at 2014-03-04 10:02:28
对不起我不是很明白,你的意思是vcl这个数组定义成(2,: )是已经给定了大小吗?我把interface块改成这样:
interface
    subroutine new_node(NP,ele_n,NE,NNE,ele_concentrate,ele_c,vcl,npt,num)
    imp ...

double precision,allocatable :: vcl(:,就行了,确定大小用allocate(vcl(2,npt))
4楼2014-03-04 18:03:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 085600材料与化工 求调剂 +14 enenenhui 2026-03-13 15/750 2026-03-19 21:53 by allen-yin
[考研] 0703化学调剂 ,六级已过,有科研经历 +12 曦熙兮 2026-03-15 12/600 2026-03-19 19:42 by maocaozhuxi
[考研] 0703化学调剂 +4 18889395102 2026-03-18 4/200 2026-03-19 16:13 by 30660438
[考研] 一志愿天津大学化学工艺专业(081702)315分求调剂 +11 yangfz 2026-03-17 11/550 2026-03-19 15:06 by houyaoxu
[考研] 324分 085600材料化工求调剂 +3 llllkkkhh 2026-03-18 3/150 2026-03-19 14:22 by houyaoxu
[考研] 0703化学调剂 +5 pupcoco 2026-03-17 8/400 2026-03-19 13:58 by houyaoxu
[考研] 材料专硕英一数二306 +5 z1z2z3879 2026-03-18 5/250 2026-03-19 07:43 by BruceLiu320
[考研] 一志愿华中科技大学,080502,354分求调剂 +4 守候夕阳CF 2026-03-18 4/200 2026-03-18 22:16 by li123456789.
[考研] 085410人工智能专硕317求调剂(0854都可以) +3 xbxudjdn 2026-03-18 3/150 2026-03-18 22:14 by zhq0425
[考研] 0854可跨调剂,一作一项核心论文五项专利,省、国级证书40+数一英一287 +8 小李0854 2026-03-16 8/400 2026-03-18 14:35 by 搏击518
[考研] 材料专硕306英一数二 +10 z1z2z3879 2026-03-16 13/650 2026-03-18 14:20 by 007_lilei
[考研] 293求调剂 +11 zjl的号 2026-03-16 16/800 2026-03-18 08:10 by zhukairuo
[基金申请] 被我言中:新模板不强调格式了,假专家开始管格式了 +4 beefly 2026-03-14 4/200 2026-03-17 22:04 by 黄鸟于飞Chao
[考研] 考研求调剂 +3 橘颂. 2026-03-17 4/200 2026-03-17 21:43 by 有只狸奴
[考研] 277调剂 +5 自由煎饼果子 2026-03-16 6/300 2026-03-17 19:26 by 李leezz
[考研] 一志愿苏州大学材料工程(085601)专硕有科研经历三项国奖两个实用型专利一项省级立项 +6 大火山小火山 2026-03-16 8/400 2026-03-17 15:05 by 无懈可击111
[考研] 22408总分284求调剂 +3 InAspic 2026-03-13 3/150 2026-03-15 11:10 by zhq0425
[考研] 288求调剂 +4 奇点0314 2026-03-14 4/200 2026-03-14 23:04 by JourneyLucky
[考研] 一志愿哈工大材料324分求调剂 +5 闫旭东 2026-03-14 5/250 2026-03-14 14:53 by 木瓜膏
[硕博家园] 085600 260分求调剂 +3 天空还下雨么 2026-03-13 5/250 2026-03-13 18:46 by 天空还下雨么
信息提示
请填处理意见