Boris correction: exact and approximate · 2017-09-20 · •Boris correction for use with direct...
Transcript of Boris correction: exact and approximate · 2017-09-20 · •Boris correction for use with direct...
Boriscorrection:exactandapproximate
K.G.Miller1,P.Q.Elias2,R.A.Fonseca3,B.J.Winjum1,F.S.Tsung1,V.K.Decyk1,W.B.Mori1
1UCLA,2ONERA,3IST
KyleMiller,OSIRISWorkshop2017,2
Outline• OSIRIScurrentdeposits
1. Charge-conservingcurrentdeposit• StandardinOSIRIS,satisfiescontinuityequation
2. Directcurrentdeposit• Useparticlepositions/shapefunctions• Lessnoisy,doesnotsatisfycontinuityequation
• Divergencecleaning(Boriscorrection)1. Iterativemultigridsolver2. Exactspectralsolver3. Exactspectralandfinite-differencesolver
KyleMiller,OSIRISWorkshop2017,3
Particle push
𝑑𝒙#𝑑𝑡 = 𝒗#
𝑑𝒑#𝑑𝑡 = 𝑞 𝑬# + 𝒗#×𝑩#
Charge/current deposition
Calculate 𝜌./ and 𝒋./from the 𝒙# and 𝒑#.
Field solve
𝜕𝑩./𝜕𝑡 = −𝛻×𝑬./
𝜕𝑬./𝜕𝑡 = 𝑐5𝛻×𝑩./ − 𝜇7𝑐5𝒋./
Field interpolation
Interpolate 𝑬./ and 𝑩./ onto the 𝒙#.
Δ𝑡
𝑘: continuous (particles)𝑖𝑗: gridded (fields)
PICmethod
KyleMiller,OSIRISWorkshop2017,4
Gauss’slaw• Gauss’slawnotexplicitlysolvedinOSIRIS• Ifinitial𝜌 and𝑬 satisfyGauss’slaw,thencontinuityequationguaranteesGauss’slawatfuturetimes
𝜕𝜌./𝜕𝑡 + 𝛻 ⋅ 𝒋./ ≠ 0
⇓𝛻 ⋅ 𝑬./ ≠
𝜌./𝜖7
KyleMiller,OSIRISWorkshop2017,5
Currentdeposits• Charge-conservingcurrentdepositinherentlysatisfiescontinuityequation(andthusGauss’slaw)• J.VillasenorandO.Buneman,Comput.Phys.Commun.69,306-316(1992).
• Directdeposit—usesparticleshapes
Default
Averageparticleshapes
KyleMiller,OSIRISWorkshop2017,6
Boriscorrection• SolvePoisson’sequationtocorrectelectricfield
𝛻5𝜓 = 𝛻 ⋅ 𝑬 −𝜌𝜖7≡ 𝜌C
• where𝜌C istheresidualchargeerror.Then
𝑬C = 𝑬 − 𝛻𝜓
𝛻 ⋅ 𝑬C =𝜌𝜖7
KyleMiller,OSIRISWorkshop2017,7
Iterativemultigridsolver:V-cycle
• Solvethematrixequation𝐴𝒙 = 𝒃 i. e. , 𝛻5𝜓 = 𝜌C ,
• Startwithaguessof𝜓 = 0 𝒙 = 0• Computeresidual 𝒓 = 𝐴𝒙 − 𝒃• Restrict ontocoarsergrid 𝒓 → 𝒓M• Smooth solutionusingpoint-Jacobi 𝐴M𝒆M = 𝒓M• Direct matrixsolveofsmallproblem 𝐴O𝒆O = 𝒓O• Interpolate ontofinergrid 𝒆O → 𝒆OPM∗
• Correct thesolution 𝒆OPM = 𝒆OPM − 𝒆OPM∗ , 𝒙 = 𝒙 − 𝒆7∗
• Iterate
KyleMiller,OSIRISWorkshop2017,8
Iterativemultigridsolver
KyleMiller,OSIRISWorkshop2017,9
Exactspectralsolver• AssumingFourierbehavior,ODEà algebraicequation
𝛻5𝜓 = 𝜌C → −𝑘5𝜓 = 𝜌C
• However,finite-differencederivativeisapproximate:
ℱ𝜓 𝑥 + ℎ − 2𝜓 𝑥 + 𝜓 𝑥 − ℎ
ℎ5 = −4ℎ5 sin
5 𝜋𝑘𝑁
• Onedimension(𝑥)mustbeentirelylocal
KyleMiller,OSIRISWorkshop2017,10
Hybridspectral/finite-difference
• 3Dsolver• Spectralin𝑥 and𝑦• Finite-differencein𝑧
𝜓 𝑧 + ℎ − 2 + 𝑘]5 + 𝑘^5 𝜓 𝑧 + 𝜓 𝑧 − ℎℎ5 = 𝜌 𝑧
• Shouldbemoreconsistentthanfullyspectral
KyleMiller,OSIRISWorkshop2017,11
Speedup• Comparedtopoint-Jacobi,multigridismuchfaster• Spectralmethodsshouldbeevenfaster
KyleMiller,OSIRISWorkshop2017,12
Test:stimulatedRamanscattering
KyleMiller,OSIRISWorkshop2017,13
Test:stimulatedRamanscattering
KyleMiller,OSIRISWorkshop2017,14
Usedirectcurrentdeposit• #defineDIRECT_DEPOSIT
• inos-config.h• #defineAVG_SHAPES
• inos-config.h
KyleMiller,OSIRISWorkshop2017,15
UseBoriscorrection• if_boris =.true.,• boris_solver =’multigrid’,‘fft’,‘hybrid’,or’point-Jacobi’,
• inel_mag_fld ofinputfile
• Otheroptions:• boris_tol =1.e-14,• boris_n =4,
KyleMiller,OSIRISWorkshop2017,16
Importantfiles• Multigrid:
• pmg/*(esp m_parallel_multigrid_solver.f90)• os-emf-es-solver-pmg.f03• os-emf-marder.f90• os-emf-math.f03• os-vdf-math.f90
• ExactBoris• boris/*
• Branchparallel-multigridonGithub
KyleMiller,OSIRISWorkshop2017,17
Conclusions• Implementations:
• Directcurrentdeposit• Usingaveragepositionoraverageparticleshapes
• Boriscorrectionforusewithdirectdeposit• Usingiterativemultigrid,exactspectral,orpoint-Jacobi
• Uses• Lessnoisycurrentdeposit• Solvermaybeusedforotherinitializationpurposes
• Futurework• Finishimplementation,runmorephysicstestcases