24小时热门版块排行榜    

Znn3bq.jpeg
查看: 2766  |  回复: 12

qingkonggzc

银虫 (小有名气)

引用回帖:
10楼: Originally posted by 浔荆 at 2015-05-28 11:49:08
在哪行断掉的?报错信息是什么?...

是不是必须要先定义一个大的数组,这样才能
sta_info(0)=sta_info(0)+1
     sta_info(sta_info(0))=....     !在这里写入新数据
这样用呢?能不能就让它占多大就定义多大的大小?
我出错的地方时第二个循环的时候allocate(sta_info(sta_array_size))触发断点,我是没有先定义一个大数组,就直接先定义一个满足第一个循环的,然后再sta_array_size = sta_array_size + day_sol_sum%sta
allocate(sta_info(sta_array_size))把第二个循环的加上去,相当于加大数组大小,这样会报错。
11楼2015-05-28 20:56:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

浔荆

木虫 (正式写手)


小木虫: 金币+0.5, 给个红包,谢谢回帖
引用回帖:
11楼: Originally posted by qingkonggzc at 2015-05-28 20:56:39
是不是必须要先定义一个大的数组,这样才能
sta_info(0)=sta_info(0)+1
     sta_info(sta_info(0))=....     !在这里写入新数据
这样用呢?能不能就让它占多大就定义多大的大小?
我出错的地方时第二个循环的 ...

显然不能啊。。。
fortran语法是比较严格的,要么定义成固定大小的数组,要么定义成动态数组。但不管是哪个,数组在用的时候都有一个确定的长度。
你可以随时deallocate然后再allocate,但这样的计算效率是比较低的。
定义一个0:1000的数组只是多占用一些内存而已,由于sta_info(0)已经标明了数组大小,实际排序的时候也只排序1:sta_info(0)个元素,效率上并没有降低。
如果实在是内存不够,需要控制内存开销的话,可以选择性的deallocate再allocate数组。例如一开始定义为0:100,添加新元素时先判断数组是否已经满了,不够用时,再重新定义成0:200,还不够用就0:400,以此类推。
以下是示意性代码
subroutine extend_array()
allocatable,integer*4::sta_info_dummy(:)

if(sta_info(0)>=sizeof(sta_info))then
   allocate(sta_info_dummy(sta_info_size)) !定义中间数组保存数据
   sta_info_dummy=sta_info
   deallocate(sta_info)                         !扩张数组大小
   allocate(sta_info(sta_info_dummy(0)*2))     
   sta_info(1:sta_info_size)=sta_info_dummy   !恢复数据
endif
end subroutine extend_array

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

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

qingkonggzc

银虫 (小有名气)

送红花一朵
引用回帖:
12楼: Originally posted by 浔荆 at 2015-05-29 14:16:12
显然不能啊。。。
fortran语法是比较严格的,要么定义成固定大小的数组,要么定义成动态数组。但不管是哪个,数组在用的时候都有一个确定的长度。
你可以随时deallocate然后再allocate,但这样的计算效率是 ...

恩,好的 ,谢谢,我先研究一下,有问题再向您请教
13楼2015-05-29 20:43:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 qingkonggzc 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 评审有感 +3 popular289 2026-05-18 6/300 2026-05-18 15:17 by gy116024
[基金申请] 今年审到国自然15份,谈谈感受 +16 国自然国社科中 2026-05-17 16/800 2026-05-18 14:58 by gy116024
[硕博家园] 考博自荐 +5 科研狗111 2026-05-13 6/300 2026-05-18 11:22 by 糊糊涂涂好
[基金申请] 青C资助名额大幅增加! +12 西葫芦炒鸡蛋 2026-05-13 16/800 2026-05-18 10:02 by Equinoxhua
[文学芳草园] 半夜喝咖啡 +3 myrtle 2026-05-15 5/250 2026-05-18 01:03 by 小沈2018
[找工作] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +4 ky2p12rrjj 2026-05-15 4/200 2026-05-17 19:47 by Equinoxhua
[找工作] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +5 l7k6xnh0yc 2026-05-14 5/250 2026-05-17 19:39 by Equinoxhua
[考博] 找博士生导师 +4 小代想上岸 2026-05-15 5/250 2026-05-17 17:44 by 脱颖而出
[考博] 2026博士还有哪些学校有名额 +6 小王求读研 2026-05-15 7/350 2026-05-17 16:54 by 知音湖畔
[考博] 光量子物理方向 博士招生 1人(2026.09) +3 sandyworld 2026-05-15 4/200 2026-05-17 14:38 by sandyworld
[考研] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +4 v9tggjlwd0 2026-05-15 4/200 2026-05-17 08:11 by 11n4dfd8yn
[考博] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +3 7hlccowb3h 2026-05-15 4/200 2026-05-17 07:46 by 11n4dfd8yn
[考研] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +4 l7k6xnh0yc 2026-05-14 8/400 2026-05-17 07:26 by 11n4dfd8yn
[公派出国] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +6 l7k6xnh0yc 2026-05-14 6/300 2026-05-17 07:16 by 11n4dfd8yn
[找工作] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +3 k37jurhrau 2026-05-16 3/150 2026-05-17 01:37 by ue3ir18jc3
[考博] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +3 ky2p12rrjj 2026-05-15 4/200 2026-05-17 00:57 by ue3ir18jc3
[高分子] 本人最近太闲了,谁有问题可以提,每天会统一回复 +9 一切都是空工 2026-05-12 20/1000 2026-05-16 19:52 by Equinoxhua
[考研] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +4 l7k6xnh0yc 2026-05-14 6/300 2026-05-16 11:29 by h3oerqvkv9
[硕博家园] 申请博士 +3 呃?呃 2026-05-15 3/150 2026-05-16 11:01 by a4742549
[考博] 材料类只有一篇综述能申博么 +4 乐逍遥谷 2026-05-13 4/200 2026-05-14 12:05 by zhyzzh
信息提示
请填处理意见