Fortran Coder

查看: 7315|回复: 4
打印 上一主题 下一主题

[子程序] 请问这种子程序的参数该怎么设计

[复制链接]

86

帖子

36

主题

0

精华

专家

F 币
353 元
贡献
221 点
跳转到指定楼层
楼主
发表于 2017-12-14 10:08:14 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 shrine 于 2017-12-14 10:30 编辑

主程序里动态分配了几个数组,要向子程序传递这几个数组,每次传的都不一样,这几个数组已经放到一个global-data的模块里,子程序可以直接use

[Fortran] 纯文本查看 复制代码
module global_data
implicit none
Integer , parameter :: QP = Selected_real_kind( 18 )
real(kind=QP),allocatable::h(:),u(:)
Integer , parameter :: ne=100
end module

program main
use global_data
implicit none
integer::NERR
ALLOCATE(h(ne),u(ne),STAT=NERR)
IF(NERR>0)THEN
WRITE(6,*)      'ERROR IN ALLOCATE'
         STOP
ENDIF

call tvdd(h)
call tvdd(u)
DEALLOCATE(h,u)
end

subroutine tvdd(t) !这个参数该怎么设置,现在这样写肯定不行,t无法声明,我想把h和u传进来,每次传一个,每次不一样
use global_data
implicit none
t=t+1
endsubroutine




分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

86

帖子

36

主题

0

精华

专家

F 币
353 元
贡献
221 点
5#
 楼主| 发表于 2017-12-14 12:54:24 | 只看该作者
fcode 发表于 2017-12-14 12:09
[mw_shl_code=fortran,true]module global_data
  implicit none
  Integer , parameter :: QP = Selected_ ...

perfect!!
感谢版大

2022

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1598 元
贡献
689 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

地板
发表于 2017-12-14 12:09:55 | 只看该作者
[Fortran] 纯文本查看 复制代码
module global_data
  implicit none
  Integer , parameter :: QP = Selected_real_kind( 18 )
  real(kind=QP),allocatable::h(:),u(:)
  Integer , parameter :: ne=100
  
contains
  subroutine tvdd(t) !//把 tvdd 包含在module里,方便使用
    real(kind=QP) :: t(:)
    t=t+1
  endsubroutine
end module

program main
  use global_data
  implicit none
  integer::NERR
  ALLOCATE(h(ne),u(ne),STAT=NERR)
  IF(NERR>0)THEN
    WRITE(6,*)      'ERROR IN ALLOCATE'
    STOP
  ENDIF
  call tvdd(h)
  call tvdd(u)
  DEALLOCATE(h,u)
end

86

帖子

36

主题

0

精华

专家

F 币
353 元
贡献
221 点
板凳
 楼主| 发表于 2017-12-14 11:13:00 | 只看该作者
pasuka 发表于 2017-12-14 11:09
已经导入global_data模块的情况下,变量h和u对于函数tvdd就是透明公开的,lz为啥画蛇添足?
选择h和u直接se ...

没明白,能写成代码吗

490

帖子

4

主题

0

精华

大宗师

F 币
3298 元
贡献
1948 点

水王勋章元老勋章热心勋章

沙发
发表于 2017-12-14 11:09:21 | 只看该作者
已经导入global_data模块的情况下,变量h和u对于函数tvdd就是透明公开的,lz为啥画蛇添足?
选择h和u直接select case呗
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-11-24 03:29

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表