chiangtp 发表于 2017-8-17 13:42 1、其他编译器我没试过; 2、零大小的数组,用到过,没遇到过问题。 |
蒐了一下: to disables this automatic (re-)allocation /nostandard-realloc-lhs, by Intel -fno-realloc-lhs, by GNU PGI/NAG有嗎? One can always suppress the (re-)allocation checks/actions of an array in modern code by using an array section array(:) = ... array(:,:) = ... In this case, array (if allocatable) must be allocated 這主意 似乎不錯! F90允許zero-sized array, 我疑神疑鬼了好多年 好像沒受害過, 可有經驗? |
chiangtp 发表于 2017-8-16 21:12 从技术层面说"Automatic Reallocation"是很大的进步,但确实容易引起难以发现的错误,需要谨慎使用,我不用该功能。ivf2016以及更低版本中,该功能默认是关闭的,需要手动开启 “enable f2003 semantics”,但ivf2017默认是启用的,需要注意。 |
1、倘若是有限元编程,总刚对应的非零块还担心推导不出来? 不愿翻阅辛克维奇与Bathe的大部头,王勖成老师的有限元书总该瞅瞅吧? 不嫌弃Fortran77古董,同济大学刘永仁老师的《结构程序设计》是不错的入门书籍; 有恒心与毅力的话,完全啃透NASTRAN95版的fortran源代码,这些问题都会迎刃而解,恍然大悟的 |
li913 发表于 2017-8-16 11:29 Hi, li913 看到你 Allocation: Fortran 2003 Enhancements 的"SOURCE"語法 ALLOCATE( na, SOURCE=PACK(ma,ma/=0) ) 巧妙的避開assignment之前, 要先allocate的困擾 ALLOCATE( na(?) ) ! unknown size na = PACK(ma,ma/=0) F2003也支援"Automatic Reallocation"的語法 (F95, for omponents only, deep copy的extension) i.e., 之前的 "ALLOCATE( na(?) )"都可免了 INTEGER, ALLOCATABLE :: a(:) a = [(i,i=1,10)] ! ALLOCATE(a(10)) automatically a = [(i,i=1,100)] ! deallocate-and-then-reallocate automatically ------------------------------------ 跟你請教一下: 我是挺杞人憂天的, 這樣flixible的背後會隱藏多少"人"的logical errors same shape (rank及extent都要相同), 方可進行array assignment, 安全性很高 如今, 對於allocatable array做assignment, extent不同就自動deallocate/reallocate 這有極大的機會非程式員的本意 程式員很可能只是不小心把"extent"coding錯了, 沒有要reallocate的意思 這樣的誤會, 是不容易檢查出來的, 你會這麼擔心嗎? |
"困难户"row-major, ""vvt"column-major |
1、实数不用 相等 或 不等 来判断; 2、代码完全混乱。 |
2.png (108.62 KB, 下载次数: 330)
QQ截图20170816112346.png (134.94 KB, 下载次数: 325)
a = pack( B , B == 0 ) |
捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )
GMT+8, 2024-11-23 19:09