1雷射電漿物理暑期學校Laser-PlasmaInteractionSummerSchool7/4~7/9,2005中研院原分所浦大邦講堂數值模擬的基本知識呂凌霄國立中央大學太空科學研究所2講義課程大綱什麼是數值模擬?如何選擇電漿數值模擬碼處理微分與積分常用的數值方法處理時間積分的數值方法疊代法與機器誤差估算亂數產生器簡介(補充教材)數值模擬的診斷分析總結與討論3講義課程v.s.演講內容講義課程:循序漸進,說明詳盡,可供自修研讀。要好好用心做習題,才會有成效。估計學習時間:約一個暑假或一學期。4講義課程v.s.演講內容講義課程:循序漸進,說明詳盡,可供自修研讀。要好好用心做習題,才會有成效。估計學習時間:約一個暑假或一學期。演講內容:重點整理數值模擬的基本概念。強調從事數值模擬應該注意的事項。5什麼是數值模擬?數值模擬就是寫個程式,利用電腦來做實驗,模擬非線性現象如何隨著時間演化。6什麼是數值模擬?數值模擬就是寫個程式,利用電腦來做實驗,模擬非線性現象如何隨著時間演化。線性的問題,通常已有解析解,故不必勞師動眾用數值模擬來看它的演化情形。7什麼是數值模擬?數值模擬就是寫個程式,利用電腦來做實驗,模擬非線性現象如何隨著時間演化。線性的問題,通常已有解析解,故不必勞師動眾用數值模擬來看它的演化情形。線性不穩定性的問題,常被用來檢驗數值模擬結果,是否值得信賴。不過,我們的經驗告訴我們:即使模擬結果與線性估算相符,仍不能保證,它在非線性部份的模擬結果一定正確!8什麼是數值模擬?數值模擬就是利用一套精準有效的數值方法,解一組聯立的微分方程式(systemODEsorPDEs),其中,至少有一組方程式是對時間微分的方程式(範例)。用微積分的基本概念來處理積分與微分,是一種以管窺天,以蠡測海,奴役電腦的實驗。誤差的累積:差之毫釐,失之千里。浮點運算的有效位數:機器誤差,使100%準確無法達成。基本方程式,略去了一些【微小項】,不是100%準確。蝴蝶效應:當【主要項】互相抵消達到平衡時,這些被略去的【微小項】,可能變得非常重要,舉足輕重,不可忽視。有限的電腦資源:RAM,HD,CPU,I/O速率有限的研究時間一套精準有效的數值方法,不只要穩,還要快、要準!要快:不要浪費時間9對時間微分的方程式10善用資源、能省則省、錙銖必較DoyourbesttosaveMemory務必重複使用workingArraysCPUtime避免重複計算:指數、對數、三角函數。重複計算部份,務必先建立Table。RealtimeWatchoutyourI/Oscheme11BadandGoodI/OSchemes12GoodI/OSchemesforMassiveDataSet13為什麼要做數值模擬?檢驗理論模式是否正確合理。理論模式通常可以簡化為一組聯立的微分方程式(systemODEsorPDEs)。“Tounderstandistoknowhowtocalculate”-Direc彌補實驗或觀測上之不足。實驗或觀測受到時空條件的限制,往往無法取得足夠精細的時空資訊。藉由高時空解析度的模擬結果,了解非線性過程中的因果關係與主要物理機制。“…themoreIdiscover,themoreIwanttoknow”-MaeveLeakey預測(預報)在不同初始條件與邊界條件下非線性過程的發展情形。14如何選擇電漿數值模擬碼選擇模擬碼,要對症下藥:Choosearightsimulationcodeforyourproblem要隨時保有:宏觀的視野與微觀的警惕。知道自己的模擬碼,適用的底線在哪裡!要先學過電漿物理,才會做正確的選擇!15電漿數值模擬碼的基本類型:FluidSimulationsMHDcodeTwo-FuildcodeKineticSimulationsHybridcode(Fluidionsandkineticelctrons)FullparticlecodeTestparticlecodeVlasovcodeTheparticle-codesimulationisindeedamultiple-fluidsimulation.16Testparticlecode17Fullparticlecode18Vlasovcode19數值模擬要用到的數值方法以下介紹解SystemODEsorPDEs要用到的基本數值方法與電漿物理無關但是KineticPlasmaSimulation所遇到的函數相當不友善,因此模擬時可能遭遇的困境也最大,須要非常謹慎小心!20處理微分與積分常用的數值方法FiniteDifferences(basedonTaylor’sexpansion)FFT(FastFourierTransform)CubicSplineCubicSplinewithCorrections21FiniteDifferences22模擬碼中處理空間的微分與積分,除了用FiniteDifferences還可用FFT(適用於週期函數,非週期函數用FFT求微分與積分時,可能產生巨大誤差。)CubicSplinePiece-wisecontinuouscubicfunctionf(x)=Ax3+Bx2+Cx+D在連接點上,函數值、函數一次微分值、與函數二次微分值,均連續。23CubicSpline24處理時間積分的數值方法ExplicitScheme:(範例)ThefutureinformationaredeterminedbasedonthepresentandthepastinformationEasytoprogram,easytoblowout!ToavoidblowoutÆChooseshortertimestepÆRequiremoreCPUtimeImplicitScheme:(範例)Thefutureinformationaredeterminedbasedonthefuture,thepresent,andthepastinformationDifficulttoprogramand/orRequiremorememoryStableinlargetimestepÆSaveCPUtime25ExamplesofExplicitSchemeEulermethodRunge-KuttamethodAdams'openFormula(Adams-BashforthFormula)Lax-Wendroffscheme(只含奇次空間微分之時空微分方程式)26Eulermethod/Runge-Kuttamethod27Eulermethod/Runge-Kuttamethod28處理只含奇次空間微分之時空微分方程式可用ExplicitScheme:Lax-Wendroffschemen+1n+1/2ni-1ii+129ExamplesofImplicitSchemeEquatonsofmotionwithgyro-typemotionThediffusionequation(含偶次空間微分之時空微分方程式)Adams'closeformula(Adams-Moultonformula)30模擬打轉運動GyroMotion一定要用ImplicitScheme31模擬含偶次空間微分之時空微分方程式一定要用ImplicitScheme:TheDiffusionEquation32TheDiffusionEquation33BasedonRunge-KuttaMethodandAdamsFormulaPredictor-CorrectorMethod34Cannotself-startCannotself-startCannotself-startCannotself-startCannotself-start預測用ExplicitScheme:35校正用ImplicitScheme:36疊代法與機器誤差估算Iterationscheme37疊代法與機器誤差估算Machine-dependentrelativeerrorU當浮點運算時,若電腦認為1+U還等於1時,U就是相對於1的機器相對誤差(下一頁)利用浮點運算的誤差,可用來設計均勻分布之亂數產生器(補充教材)3839數值模擬應注意與檢驗的事項AlwaysusedoubleprecisioninyoursimulationNormalizeyourequations可以幫助你選取模擬相關係數,如系統長度、時間間距、空間間距。檢查系統總能量是否守恆檢查是否滿足Courantcondition:dt*Vmaxdx其他進一步的檢查:MakeSure當系統長度增加一倍,模擬結果沒有重大改變。當時間間距減半,模擬結果沒有重大改變。當空間間距減半,模擬結果沒有重大改變。當粒子數增加一倍,模擬結果沒有重大改變。選用真實離子電子質量比,模擬結果沒有重大改變。40數值模擬的診斷分析Displayyoursimulationresults利用Matlab或IDL或PVWave等軟體,寫一個簡單繪圖檔(指令檔)自動處理大量數值模擬結果。利用Excel或Kaleidagraph等軟體,個別處理總結形式的圖片.(詳見朱旭新:數據製圖)Carefullytracethetimeevolutionofallfluidvariables.Carefullytracethephase-spacetrajectoryofagroupofsimulationparticles.41數值模擬的診斷分析要用心分析你的模擬結果,不要浪費了辛苦算出來的模擬結果!最好不要一邊模擬一邊做診斷繪圖。如果模擬一個Case所花費的時間,超過一天,最好把需要分析的資料存下來,用另外一台電腦慢慢的仔細分析。範例一範例二42總結與討論能省則省,錙銖必較:Doyourbesttosavememory,CPUtime,andrealtime(WatchoutyourI/Oscheme).選擇模擬碼,要對症下藥:Choosearightsimulationcodeforyourproblem要隨時保有:宏觀的視野與微觀的警惕。知道自己的模擬碼,適用的底線在哪裡!好的診斷(gooddiagnostics)可以幫助我們了解模擬現象背後的物理過程。43總結與討論好的模擬研究,需要好的硬體好的軟體,優秀的、有經驗的模擬人才(manpower)。一個真正有經驗的模擬專家,不必用電腦,也可以大致預估模擬的結果。就好像貝多芬失聰後,仍然能作曲。(電漿模擬專家Dawson曾為電漿物理教科書中的非線性課題提供詳盡的定性說明。)44下課了!感謝各位的捧場!45模擬結果範例ㄧ作者:中央大學大氣科學系,大四學生王詠晶,太空電漿數值模擬期末作業題目:全粒子數值模擬碼模擬雙流體不穩定圖一:系統總能、粒子動能、電場能量隨時間變化圖圖二:進入非線性飽和階段時,相空間粒子分布圖(將電子分為四群,離子兩群)46Time*Omega_pe4748模擬結果範例二作者:中央大學太空所研究生蔡宗哲VlasovSimulation模擬靜電激震波non-periodicboundarycondition比較模擬結果phasespaceplotsmi/me=1836:attωpe=0~3000tωpi=0~70mi/me=25:attωpe=300tωpi=6049Electrons’phasespaceplots50Ions’phasespaceplots5152接觸部連續面數值模擬結果(作者:呂)Colorphasespaceplotcanrevealcharacteristiccurvesinphasespace53亂數產生器(補充教材)常用於particle-codesimulationsMonteCarlosimulationsRandomNumberGeneratorsfor:UniformProbabilityFunctionGeneralNon-unif