SolidStateDetectors.jl icon indicating copy to clipboard operation
SolidStateDetectors.jl copied to clipboard

Charge cloud effects: Diffusion & self-repulsion

Open lmh91 opened this issue 4 years ago • 6 comments

lmh91 avatar Oct 09 '20 13:10 lmh91

#43 is related

lmh91 avatar Nov 02 '20 10:11 lmh91

To implement charge cloud effects in SSD, I am thinking about implementing new scalar fields for the electron and hole densities that evolve in time in Event rather than having point-like charges drifting along a drift path.

Find a short proposal on my approach on implementing it here.

fhagemann avatar Nov 13 '20 08:11 fhagemann

Diffusion and self-repulsion can also be implemented by extending our current implementation with point-like charges. Then, charge clusters would be simulated as some distribution of point-like charges with weighted charge values.

Find a second proposal for implementing diffusion and self-repulsion here.

fhagemann avatar Nov 24 '20 13:11 fhagemann

Diffusion and self-repulsion can also be implemented by extending our current implementation with point-like charges. Then, charge clusters would be simulated as some distribution of point-like charges with weighted charge values.

I have something in the making. However, it is still not (yet) performant and needs some cross-check with analytic solutions to find the corresponding parameters for the diffusion.

Diffusion is implemented by a random walk with the same step length for each point charge. Self-repulsion is right now accounted for by calculated the electric field between pairs of charges and adding that to the external field. This requires to calculate the drift velocities for each time step rather than using the interpolated precalculated drift fields.

Platon

Using the platonic bodies twice around the charge cloud centre as initial point charge distributions results in some promising GIFs:

Tetraeder2_dr Oktaeder2_dr Hexaeder2_dr Ikosaeder2_dr Dodekaeder2_dr

I will work on some speed-up that I have in mind and then push everything to the branch refactor_drift_code of my fork.

fhagemann avatar Jan 12 '21 20:01 fhagemann

The runtime of an N-body problem classically scales with O(N²). However, faster runtimes of O(N log N) can be achieved with a good choice of algorithms, e.g. Barnes-Hut simulations.

fhagemann avatar Aug 05 '21 15:08 fhagemann

What is still to be done for v0.7:

  • [x] Put the diffusion length to MaterialProperties (only for HPGe for now, Si can be added later)
  • [x] Handle charge clouds close initially close to the surface to avoid initial points being outside of the detector
  • [x] Write documentation for the manual such that people can use this experimental feature

fhagemann avatar Sep 17 '21 05:09 fhagemann