Message: How to treat rapidly changing MFP due to E-field acceleration? Not Logged In (login)
 Next-in-Thread Next-in-Thread
 Next-in-Forum Next-in-Forum

Question How to treat rapidly changing MFP due to E-field acceleration? 

Forum: Fields: Magnetic and Otherwise
Date: 07 Sep, 2017
From: Michael H. Kelsey <Michael H. Kelsey>

I have a package to treat propagation of conduction electrons and holes in semiconductors at very low energies (including kinematics involving the mass tensor, etc.). An issue we have had in developing this package is that the rates for processes (and hence their MFPs) are either rapidly varying functions of energy, or have energy thresholds where they step up by many orders of magnitude.

If we implement the processes "naively," and launch an electron from near rest (1e-6 eV) in an E-field, the electron takes a single giant step directly to the volume boundary, which is obviously wrong. Why? Because at rest the process cross-sections/rates are zero, so the MFPs are DBL_MAX, and Transportation wins the day.

To work around this, we did two things. First, we introduced a step-limiting process which estimates from the local electric field how far a particle might travel before gaining "too much energy". This is done in a very ad hoc way, without treating E-field variation, boundaries, or anything else complex.

Second, we make all our processes Forced (so that PostStepDoIt() is called for every process on every step). We check at the top of PostStepDoIt() whether "this" was the step-limiting process, and if it was not, we clear the interaction length accumulator and return a no-effect particleChange.

The net result is that we limit steps to a micron or less, and end up taking many thousands of them per track. This (I believe) makes our code extremely slow compared to what it should be.

My question is whether there is any better way to deal with the problem of rapidly changing cross-sections. Is there a way to interact with the field propagator directly to ask it questions like "how long would a step be to get to a new energy E?" I have my MFP functions set up so that I could find the energy at which the rate becomes 50% larger, or doubles, o whatever; if I had a way to convert that information into a path length, then I could use it as a more natural step limiter.

There must be other situations where cross-sections vary strongly with energy, or have turn-on thresholds. Is there a better technique than what I've described, either in the toolkit, or out in the user community?

    -- Michael Kelsey

 Add Message Add Message
to: "How to treat rapidly changing MFP due to E-field acceleration?"

 Subscribe Subscribe

This site runs SLAC HyperNews version 1.11-slac-98, derived from the original HyperNews

[ Geant 4 Home | Geant 4 HyperNews | Search | Request New Forum | Feedback ]