Fortran 板


LINE

PARAMETER (RC=3.0D-4, RN=2.0D-4) N=0 ! Shower counter. C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C ------------------------ Shower simulation starts here. C 101 CONTINUE N=N+1.0D0 C C ********** Set the initial state of the primary particle. C KPAR=KPARP RY=RC*RAND(1.0D0)**(1.0/3.0) IF(RY.LT.2.0D-4) GO TO 101 PTHETA=ACOS(2*RAND(1.0D0)-1) PPHI=2*PI*RAND(1.0D0) X=RY*SIN(PTHETA)*COS(PPHI) Y=RY*SIN(PTHETA)*SIN(PPHI) Z=RY*COS(PTHETA) 請問我現在假設有一個球的模型,而每一個亂數得到的座標會是空間上的一點 我現在是想點數均勻分布在大球跟小球之間 所以我假設IF(RY.LT.2.0D-4) GO TO 101,若是RY小於小球的半徑就重新跑 但是有個問題是跑完了就會由下一個接下去 例如 1符合但2不符合就從3開始 但是2就沒辦法記錄到就變成只有兩個結果, 有辦法解決這個問題嗎 謝謝大家 --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.114.106.110
1F:→ latinboy: 把N=N+1移到IF下一行... 問問題之前你有沒有想過@@ 12/15 16:32
2F:→ nestea911399:N=N+1不能移到下面,因為下面還有整個迴圈像上ㄧ篇那 12/15 16:37
3F:→ nestea911399:要是移到下面KPAR就沒辦法紀錄粒子數 12/15 16:39
4F:推 meteorology:所以你是想要RY小於小球的半徑也要輸出嗎? 12/15 16:52
5F:→ nestea911399:可以想像只要把點分布在甜甜圈就中間空心的不要 12/15 16:55
6F:→ meteorology:可是就你的例如感覺在空心部份你是要粒子數資料 12/15 16:56
7F:→ nestea911399:就是當RY小於R時我不要執行,RY大於RN才執行 12/15 17:01
8F:→ nestea911399:像我的寫法好像可以達到我的目的但是有些粒就紀錄不 12/15 17:04
9F:→ nestea911399:到,因為若RY<R時,N就會再+1就變成第三顆繼續執行 12/15 17:05
10F:推 meteorology:恩那你就在if下先把你要的粒子write到檔案 再GOTO 12/15 17:12
11F:→ meteorology:到101 12/15 17:12
12F:→ nestea911399:可是那是亂數產生我沒辦法知道哪一次要紀錄,我只能把 12/15 17:14
13F:→ nestea911399:不要的丟掉 12/15 17:14
14F:推 meteorology:那必須看你要的變數是什麼了~ 12/15 17:15
15F:推 meteorology:因為每個人專業不同 所以這些輸出可能跟理論有關 12/15 17:20
16F:→ meteorology:建議你先去翻翻理論~或許就可以知道要的是什麼~ 12/15 17:20
17F:推 latinboy: 你不PO出完整的程式碼 或是完整的do block 很難回答 12/15 18:31
18F:→ latinboy: 感覺就是if處裡一下就能解決的問題 12/15 18:32
19F:→ latinboy: 你還是問實驗室學長姐比較快... 12/15 18:33
20F:→ nestea911399:完整CODE在上ㄧ篇已經有了,不好意思,我只是想問說,如 12/15 18:38
21F:→ nestea911399:何讓每一顆粒子都是在小球以外出現,謝謝 12/15 18:39
22F:→ meteorology:你不是因為沒有辦法看到半徑小於小球的數據? 12/15 23:24
23F:→ meteorology:如果是這樣你原本的程式不是就可以了? 12/15 23:25
24F:→ meteorology:因為你已經做了大於小球的資料輸出 12/15 23:28
25F:→ nestea911399:可是因為是亂數產生有可能會有小於RN的情況發生,所以 12/16 15:31
26F:→ nestea911399:若是用我的方法當小於RN就重新跑那會有沒記錄到的情 12/16 15:32
27F:→ nestea911399:況,謝謝 12/16 15:33
28F:推 meteorology:你亂數產生是產生RY嗎? 12/16 15:37
29F:→ nestea911399:對 12/16 15:49
30F:推 meteorology:你的問題有點亂~因為這樣看下來的確小於RN的半徑就 12/16 16:20
31F:→ meteorology:會不見 如果你要小於RN的也要列出來 有兩個辦法 12/16 16:21
32F:→ meteorology:一個是把IF去掉 讓迴圈跑完 並且輸出RY的值 從中挑 12/16 16:22
33F:→ meteorology:選大於RN的RY的結果 12/16 16:23
34F:→ meteorology:另外就是在程式中小於RN的值做另外的檔案輸出 12/16 16:24
35F:→ irlmpo:code若不是自己寫的,建議你不要看程式碼,再重寫一次 12/18 12:57
36F:→ irlmpo:ps.僅是個人建議,無惡意 12/18 13:06
37F:推 meteorology:幫原po說一下~~這支程式是上萬行~XDD 12/18 18:51
38F:→ nestea911399:謝謝M大幫我說明謝謝大家 12/18 23:18
39F:推 noonee:那我的推荐是 把每個獨立的地方都儘量拆成subroutine 12/18 23:19
40F:→ noonee:或許很蠢 不過釐清問題很方便 12/18 23:19
41F:推 meteorology:樓上 這不蠢阿 這是好方法!y 12/19 13:23







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BuyTogether站內搜尋

TOP