24小时热门版块排行榜    

查看: 1854  |  回复: 14

superhugo

木虫 (正式写手)

【答案】应助回帖

引用回帖:
8楼: Originally posted by huruiusst at 2012-05-15 14:02:37:
请问动态数组怎么定义为全局变量?

试试将数组定义修改为如下格式看看。我曾经也遇到过和你一样的情况。
real,allocatable:: TE(:,

allocate(TE(100,5000))
11楼2012-05-15 15:37:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

huruiusst

木虫 (小有名气)

引用回帖:
11楼: Originally posted by superhugo at 2012-05-15 15:37:56:
试试将数组定义修改为如下格式看看。我曾经也遇到过和你一样的情况。
real,allocatable:: TE(:,

allocate(TE(100,5000))

但是将动态数组放入全局变量commn当中,编译就出错了?
SLS,MD,HRSG
12楼2012-05-15 15:51:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

huruiusst

木虫 (小有名气)

引用回帖:
10楼: Originally posted by Carpathia at 2012-05-15 15:04:19:
编译选项用/heep-arrays

你说的不是很清楚,能否具体点,我用的是CVF 6
SLS,MD,HRSG
13楼2012-05-15 15:53:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

superhugo

木虫 (正式写手)

【答案】应助回帖

引用回帖:
12楼: Originally posted by huruiusst at 2012-05-15 15:51:42:
但是将动态数组放入全局变量commn当中,编译就出错了?

要使用全局变量,在FORTRAN90和VF6.5中只需在MODULE中定义好,在使用到这些变量的主/子程序中只需USE 该MODULE名即可,在任何一个程序中改变了变量的值,那么在任何一处该变量的值就发生了改变,程序调用中无需传递参数或返回参数值。而局部变量则只在子程序中定义,子程序结束该变量也就无效了。  
要定义动态数组的话,只需在MODULE中定义迟型数组(只知道数组维数不知道大小),而后在程序中USE 该MODULE名,再给该数组分配空间,实现动态数组的定义。在传统有限元编程中,使用两个预先定义好的整型数组和实型数组,确定实际内存空间需要后还要去检查内存需要是否大于预定义数组大小,没有使用动态分配数组方便。  
示例程序(有限元网格信息的获取部分)如下:  
MODULE DATA_MODULE  
  
INTEGER, POINTER :: EL_NODE(:, ! 单元组成节点  
REAL, POINTER :: ND_XY(:, ) ! 节点坐标  
  
   ......  
  
END MODULE  
  
PROGRAM MAIN  
  
  USE DATA_MODULE  
        
  CALL INFO_MESH()  ! 获取有限元网格信息  
  
   ......  
  
END   
  
SUBROUTINE INFO_MESH()  
  
    USE DATA_MODULE  
  
   ! 确定节点、单元总数  
    CALL NUM_ND_EL()   
    ! 分配单元组成节点、节点坐标数组空间  
    ALLOCATE (EL_NODE(3, NELEM), ND_XY(2, NNODE))   
    ! 获得节点坐标、单元组成节点信息  
    CALL INFO_ND_EL()   
   
END  
  
SUBROUTINE NUM_ND_EL()  
  
   USE DATA_MODULE  
  
   ! 顺序读取节点坐标文件,确定总节点数NNODE  
   OPEN (10, DEFAULTFILE='D:/TEST DATA', FILE='NODE1.DAT', ACCESS='SEQUENTIAL', STATUS='OLD', IOSTAT=IV)  
   NNODE=0  
   1 READ (10, FMT=*, END=2, IOSTAT=IV)  
   ! 在此没有读入数据,每执行READ语句一次,文件指针下移一条记录位置,直至文件结束  
   NNODE=NNODE+1  
   GOTO 1  
   2 CLOSE(10)  
  
   ! 顺序读取单元节点文件,确定总单元数NELEM  
   100 OPEN (12, DEFAULTFILE='D:/TEST DATA', FILE='ELEMENT1.DAT', ACCESS='SEQUENTIAL', STATUS='OLD', IOSTAT=IV)  
    NELEM=0  
   3 READ (12, FMT=*, END=4, IOSTAT=IV)  
    NELEM=NELEM+1  
    GOTO 3  
    4 CLOSE(12)  
  
END  
  
SUBROUTINE INFO_ND_EL()  
  
  USE DATA_MODULE  
  
  OPEN (10, DEFAULTFILE='D:/TEST DATA', FILE='NODE1.DAT', ACCESS='SEQUENTIAL', STATUS='OLD', IOSTAT=IV)  
  READ (10, FMT="(I12, 2F12.5)", IOSTAT=IV) (K, (ND_XY(I, J), I=1, 2), J=1, NNODE) ! NNODE为总节点数  
  
  OPEN (12, DEFAULTFILE='D:/TEST DATA', FILE='ELEMENT1.DAT', ACCESS='SEQUENTIAL', STATUS='OLD', IOSTAT=IV)  
  READ (12, FMT="(4I8)", IOSTAT=IV) (K, (EL_NODE(I, J), I=1, 3), J=1, NELEM) ! NELEM为总单元数  
  
END

参考:http://www.baisi.net/thread-767035-1-1.html

» 本帖已获得的红花(最新10朵)

14楼2012-05-15 17:16:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

huruiusst

木虫 (小有名气)

送鲜花一朵
引用回帖:
14楼: Originally posted by superhugo at 2012-05-15 17:16:29:
要使用全局变量,在FORTRAN90和VF6.5中只需在MODULE中定义好,在使用到这些变量的主/子程序中只需USE 该MODULE名即可,在任何一个程序中改变了变量的值,那么在任何一处该变量的值就发生了改变,程序调用中无需传 ...

感谢
SLS,MD,HRSG
15楼2012-05-17 13:55:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 huruiusst 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[教师之家] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +3 j5mmowWXNWxv 2026-09-05 3/150 2026-09-06 13:09 by eObJPa4gWmp6
[考博] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +3 j5mmowWXNWxv 2026-09-05 4/200 2026-09-06 12:49 by eObJPa4gWmp6
[基金申请] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +3 j5mmowWXNWxv 2026-09-05 3/150 2026-09-06 12:49 by eObJPa4gWmp6
[考博] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +3 j5mmowWXNWxv 2026-09-05 4/200 2026-09-06 12:29 by eObJPa4gWmp6
[找工作] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +3 jPDp0sc2B7zQ 2026-09-05 7/350 2026-09-06 11:40 by eObJPa4gWmp6
[硕博家园] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +3 jPDp0sc2B7zQ 2026-09-05 7/350 2026-09-06 11:20 by eObJPa4gWmp6
[基金申请] 科研人应该花精力去思考如何解决问题,而不是去凝练问题 +10 瞬息宇宙 2026-09-01 19/950 2026-09-06 11:15 by jiangxuan2004
[教师之家] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +3 jPDp0sc2B7zQ 2026-09-05 8/400 2026-09-06 11:00 by eObJPa4gWmp6
[考研] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +3 jPDp0sc2B7zQ 2026-09-04 7/350 2026-09-06 11:00 by eObJPa4gWmp6
[论文投稿] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +3 jPDp0sc2B7zQ 2026-09-04 8/400 2026-09-06 11:00 by eObJPa4gWmp6
[考研] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +3 jPDp0sc2B7zQ 2026-09-05 4/200 2026-09-06 07:20 by E1iiBLMU2XnD
[论文投稿] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +6 7ZYIEW2YWn72 2026-09-04 9/450 2026-09-06 06:00 by E1iiBLMU2XnD
[教师之家] 售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急 +8 CRJ0Aq2FtVH0 2026-09-03 15/750 2026-09-06 05:48 by E1iiBLMU2XnD
[硕博家园] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +3 jPDp0sc2B7zQ 2026-09-05 5/250 2026-09-06 02:39 by E1iiBLMU2XnD
[论文投稿] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +3 jPDp0sc2B7zQ 2026-09-05 5/250 2026-09-06 02:19 by E1iiBLMU2XnD
[基金申请] 面上没中,邀请各位路过的虫友分析一下分数 +12 jackleilei 2026-09-03 13/650 2026-09-05 18:10 by fireguard
[文学芳草园] 两块石头 +6 阿美_Lml888 2026-09-03 8/400 2026-09-05 13:52 by 阿美_Lml888
[文学芳草园] 初秋的晨风 +4 阿美_Lml888 2026-09-04 6/300 2026-09-05 13:51 by 阿美_Lml888
[基金申请] 学科评审组评审是指会评吗? +6 瞬息宇宙 2026-08-31 9/450 2026-09-05 13:11 by haizai99
[硕博家园] Ei源刊怎么投 +4 Fengshun9711 2026-09-04 4/200 2026-09-04 19:30 by 研途知予
信息提示
请填处理意见