[問題] 科學計算--把結果建成資料庫的實用性及可行性?
我看ptt好像沒有科學計算版, 所以再度借此處一問囉. :P
各位做計算的朋友會不會常常遇到這種問題, 那就是通常我們
會用同一個code跑很多組不同的parameter, 然後想去觀察結果
怎麼隨parameter改變.
舉個最簡單的例子, 假設我想觀察行星繞恆星的運動, 怎麼隨
能量(E), 角動量(l)和恆星質量(M)改變. 也就是說程式的
input有E, L, M. Output可能是一個包含了x(t), y(t), z(t)
的文字檔.
我們為了想看output隨不同input的變化, 每次換了參數得了結果
之後, 應該會想存起來留著以後看, 是吧? 很合理的狀況(我目前
的作法)就是把output依照input來取檔名存起來.
所以就有了一堆叫做E0.003_L0.2_M2.txt 之類的檔案.
E1e-5_L2e-1_M0.5.txt
這種辦法當然是可行的, 但是跑過的model一多, 實在是看不大順眼.
小的問題是當parameter的範圍一大, 檔名很難consistently命名.
大的問題是比方說我想要觀察定角動量定恆星質量下, 軌道外型對
能量的變化, 我能做的只有慢慢的
plot E0.003_L0.2_M2.txt
plot E0.001_L0.2_M2.txt
plot E1e-6_L0.2_M2.txt
一個一個來.
會遇到這種問題的癥結其實在, 檔名中的0.003, 0.2等等, 都只是
字串而已, 不是數字, 所以當我想觀察E=0.002時, 沒有辦法叫電腦告訴我
"可以參考一下E=0.001和E=0.003"
也沒有辦法叫電腦慢慢展示E<0.001的解.
我想問的是, 有沒有辦法真的用"數字", 可以比較大小加減乘除的數字, 替
output做標籤? 也就是說建立一個標籤是double E, double L, double M的
database, 但是data是一個一個不同的檔案. 像這樣, 我可以要求電腦:
list file E<=0.001
然後電腦就列出
E0.001_L0.2_M2.txt
E1e-6_L0.2_M2.txt
我如果要求:
for name in $(list file E<=0.001); plot $name; done
電腦就照順序幫我作圖.
這樣的想法(夢想) 各位大大認為算是個合理的要求嗎? 是不是已經有
implementation了?
(檔名裡的1e-6是我故意弄的, 這樣就不能用ASCII碼來sort了:P 但我不是找碴,
實際上真的會遇到這類情形)
希望這篇文符合本版討論範圍.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 76.170.235.113
推
10/06 16:31, , 1F
10/06 16:31, 1F
推
10/24 10:40, , 2F
10/24 10:40, 2F
→
10/24 10:41, , 3F
10/24 10:41, 3F
→
10/24 10:42, , 4F
10/24 10:42, 4F
→
10/24 10:43, , 5F
10/24 10:43, 5F
→
10/24 10:43, , 6F
10/24 10:43, 6F
Fortran 近期熱門文章
PTT數位生活區 即時熱門文章