精華區beta Cad_Cae 關於我們 聯絡資訊
※ 引述《smilelarry (幸福相隨...)》之銘言: : 跑程式中由於需大量數值,因此以迴圈方式較佳。 : 但此方面經驗不足,所以懇請有經驗大大能夠提點。 : 簡單敘述一下問題: : 現在必須不斷改變外力施加在物體上,得到此物體被壓陷之y方向之位移。 : 希望能以迴圈方式,假設當施力1時得一位移,施力2時又得另一位移。 : 最後再以文字檔方式將所有力量對應y位移輸出。 : 現今只知道可以利用*DO和*ENDDO作編寫,還有*GET可以得到輸出文字檔。 : 但*DO指令從何處執行,這是首先困擾。 : *GET指令需如何使用,才能將每次結果都放在同一文字檔中。 : 感謝熱心大大回應,謝謝! 我不清楚*GET可不可以得到輸出文字檔 我認為是*VWRITE啦,不過我個人沒用過這指令 不過依你的要求,你每改變一次施力,就必須進行一次solve動作 迴圈的寫法大致如下: *DIM,ff,ARRAY,n ff(1)=1,2,3,..............,n ! 視loading而定 *DOi,1,n /SOLU TIME,n F,node編號,FY,ff(i) ! loading setting SOLVE SAVE /POST1 *GET,result_f,NODE,node編號,RF,FY result_d=UY(node編號) *GET,xxxxxxxxxxxxxxxxxxxxxxxx ! 將result_f,result_d輸出至文件檔(這我不會) *ENDDO 如果你的施力是線性的,且收歛性不錯,建議用一個load step固定substep求解 使用Loads are linearly interpolated(KBC,0) 然後在後處理時用DO迴圈,以*GET抓各sbustep的答案存入一個array中 最後將array以*VWRITE輸出 我覺得比較容易,且有可能達成你的要求 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.56.201 ※ 編輯: GameQ 來自: 140.114.56.201 (03/07 04:25)
quaintness:不需要用*VWRITE作輸出,*GET存入ARRAY後,PARSAV即可 03/07 07:22
GameQ:PARSAV怎麼選擇欲輸出的ARRAY?? 03/07 14:38
quaintness:PARSAV會輸出所有參數包含ARRAY, *VWRITE再輸出時間與 03/07 17:15
quaintness:必要性?!...VM都有範例可以參照,以*LIST輸出 03/07 17:16
GameQ:*VWRITE的好處在於控制輸出格式與可以選擇ARRAY 我想原po需 03/09 22:43
GameQ:要的是得到施力與位移的數據而不是所有的ARRAY DATA 03/09 22:44
GameQ:再說用*LIST和使用GUI介面下的list有什麼不同? 03/09 22:45
GameQ:不知道q大有沒有使用fortran之經驗 其實*VWRITE就是fortran 03/09 22:47
GameQ:中的WRITE指令 對於需要自訂輸出文件而言 有強而有力的工具 03/09 22:48
quaintness:G大建議沒錯,我知道*VWRITE就是FORTRAN FORMAT,F是基 03/10 01:36
quaintness:本常用的.但原原PO的問題似乎,對程式語言是不熟悉的 03/10 01:39
quaintness:PARSAV非常容易得到數據,要繪圖或列表其他軟體可勝任 03/10 01:40
quaintness:如果還要懂*VWRITE,雖然也容易了解,但是似乎不是分析 03/10 01:42
quaintness:的重點.要的是力量與位移的關係,不是花些時間要怎麼 03/10 01:43
quaintness:輸出,即使只是(1X,A8,' ',F10.3,' ',F10.3,' ',1 03/10 01:44
quaintness:要了解這些FORMAT的格式對初學者而言,也是要花點精神 03/10 01:44
quaintness:這是我的本意,但要朝正確踏實的方向學習也是沒有錯的 03/10 01:46
hender:想一個偷吃步的方法, 把要輸出的矩陣名稱開頭用數字 03/14 00:07
hender:再用parsav輸出 這樣要的東西會在上面檔案一開始的地方 03/14 00:08
hender:就不用搞vwrite了 不知是否可行 03/14 00:09