boris correction: exact and approximate · 2017-09-20 · •boris correction for use with direct...

17
Boris correction: exact and approximate K.G. Miller 1 , P.Q. Elias 2 , R.A. Fonseca 3 , B.J. Winjum 1 , F.S. Tsung 1 , V.K. Decyk 1 , W.B. Mori 1 1 UCLA, 2 ONERA, 3 IST

Upload: others

Post on 06-Jul-2020

11 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Boris correction: exact and approximate · 2017-09-20 · •Boris correction for use with direct deposit •Using iterative multigrid, exact spectral, or point-Jacobi •Uses •Less

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

Page 2: Boris correction: exact and approximate · 2017-09-20 · •Boris correction for use with direct deposit •Using iterative multigrid, exact spectral, or point-Jacobi •Uses •Less

KyleMiller,OSIRISWorkshop2017,2

Outline• OSIRIScurrentdeposits

1. Charge-conservingcurrentdeposit• StandardinOSIRIS,satisfiescontinuityequation

2. Directcurrentdeposit• Useparticlepositions/shapefunctions• Lessnoisy,doesnotsatisfycontinuityequation

• Divergencecleaning(Boriscorrection)1. Iterativemultigridsolver2. Exactspectralsolver3. Exactspectralandfinite-differencesolver

Page 3: Boris correction: exact and approximate · 2017-09-20 · •Boris correction for use with direct deposit •Using iterative multigrid, exact spectral, or point-Jacobi •Uses •Less

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

Page 4: Boris correction: exact and approximate · 2017-09-20 · •Boris correction for use with direct deposit •Using iterative multigrid, exact spectral, or point-Jacobi •Uses •Less

KyleMiller,OSIRISWorkshop2017,4

Gauss’slaw• Gauss’slawnotexplicitlysolvedinOSIRIS• Ifinitial𝜌 and𝑬 satisfyGauss’slaw,thencontinuityequationguaranteesGauss’slawatfuturetimes

𝜕𝜌./𝜕𝑡 + 𝛻 ⋅ 𝒋./ ≠ 0

⇓𝛻 ⋅ 𝑬./ ≠

𝜌./𝜖7

Page 5: Boris correction: exact and approximate · 2017-09-20 · •Boris correction for use with direct deposit •Using iterative multigrid, exact spectral, or point-Jacobi •Uses •Less

KyleMiller,OSIRISWorkshop2017,5

Currentdeposits• Charge-conservingcurrentdepositinherentlysatisfiescontinuityequation(andthusGauss’slaw)• J.VillasenorandO.Buneman,Comput.Phys.Commun.69,306-316(1992).

• Directdeposit—usesparticleshapes

Default

Averageparticleshapes

Page 6: Boris correction: exact and approximate · 2017-09-20 · •Boris correction for use with direct deposit •Using iterative multigrid, exact spectral, or point-Jacobi •Uses •Less

KyleMiller,OSIRISWorkshop2017,6

Boriscorrection• SolvePoisson’sequationtocorrectelectricfield

𝛻5𝜓 = 𝛻 ⋅ 𝑬 −𝜌𝜖7≡ 𝜌C

• where𝜌C istheresidualchargeerror.Then

𝑬C = 𝑬 − 𝛻𝜓

𝛻 ⋅ 𝑬C =𝜌𝜖7

Page 7: Boris correction: exact and approximate · 2017-09-20 · •Boris correction for use with direct deposit •Using iterative multigrid, exact spectral, or point-Jacobi •Uses •Less

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

Page 8: Boris correction: exact and approximate · 2017-09-20 · •Boris correction for use with direct deposit •Using iterative multigrid, exact spectral, or point-Jacobi •Uses •Less

KyleMiller,OSIRISWorkshop2017,8

Iterativemultigridsolver

Page 9: Boris correction: exact and approximate · 2017-09-20 · •Boris correction for use with direct deposit •Using iterative multigrid, exact spectral, or point-Jacobi •Uses •Less

KyleMiller,OSIRISWorkshop2017,9

Exactspectralsolver• AssumingFourierbehavior,ODEà algebraicequation

𝛻5𝜓 = 𝜌C → −𝑘5𝜓 = 𝜌C

• However,finite-differencederivativeisapproximate:

ℱ𝜓 𝑥 + ℎ − 2𝜓 𝑥 + 𝜓 𝑥 − ℎ

ℎ5 = −4ℎ5 sin

5 𝜋𝑘𝑁

• Onedimension(𝑥)mustbeentirelylocal

Page 10: Boris correction: exact and approximate · 2017-09-20 · •Boris correction for use with direct deposit •Using iterative multigrid, exact spectral, or point-Jacobi •Uses •Less

KyleMiller,OSIRISWorkshop2017,10

Hybridspectral/finite-difference

• 3Dsolver• Spectralin𝑥 and𝑦• Finite-differencein𝑧

𝜓 𝑧 + ℎ − 2 + 𝑘]5 + 𝑘^5 𝜓 𝑧 + 𝜓 𝑧 − ℎℎ5 = 𝜌 𝑧

• Shouldbemoreconsistentthanfullyspectral

Page 11: Boris correction: exact and approximate · 2017-09-20 · •Boris correction for use with direct deposit •Using iterative multigrid, exact spectral, or point-Jacobi •Uses •Less

KyleMiller,OSIRISWorkshop2017,11

Speedup• Comparedtopoint-Jacobi,multigridismuchfaster• Spectralmethodsshouldbeevenfaster

Page 12: Boris correction: exact and approximate · 2017-09-20 · •Boris correction for use with direct deposit •Using iterative multigrid, exact spectral, or point-Jacobi •Uses •Less

KyleMiller,OSIRISWorkshop2017,12

Test:stimulatedRamanscattering

Page 13: Boris correction: exact and approximate · 2017-09-20 · •Boris correction for use with direct deposit •Using iterative multigrid, exact spectral, or point-Jacobi •Uses •Less

KyleMiller,OSIRISWorkshop2017,13

Test:stimulatedRamanscattering

Page 14: Boris correction: exact and approximate · 2017-09-20 · •Boris correction for use with direct deposit •Using iterative multigrid, exact spectral, or point-Jacobi •Uses •Less

KyleMiller,OSIRISWorkshop2017,14

Usedirectcurrentdeposit• #defineDIRECT_DEPOSIT

• inos-config.h• #defineAVG_SHAPES

• inos-config.h

Page 15: Boris correction: exact and approximate · 2017-09-20 · •Boris correction for use with direct deposit •Using iterative multigrid, exact spectral, or point-Jacobi •Uses •Less

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,

Page 16: Boris correction: exact and approximate · 2017-09-20 · •Boris correction for use with direct deposit •Using iterative multigrid, exact spectral, or point-Jacobi •Uses •Less

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

Page 17: Boris correction: exact and approximate · 2017-09-20 · •Boris correction for use with direct deposit •Using iterative multigrid, exact spectral, or point-Jacobi •Uses •Less

KyleMiller,OSIRISWorkshop2017,17

Conclusions• Implementations:

• Directcurrentdeposit• Usingaveragepositionoraverageparticleshapes

• Boriscorrectionforusewithdirectdeposit• Usingiterativemultigrid,exactspectral,orpoint-Jacobi

• Uses• Lessnoisycurrentdeposit• Solvermaybeusedforotherinitializationpurposes

• Futurework• Finishimplementation,runmorephysicstestcases