Plasmapy: Create functionality for calculating transport coefficients

Created on 22 May 2017  路  13Comments  路  Source: PlasmaPy/PlasmaPy

At some point we'll need to write the functionality for calculating transport coefficients, including resistivities, viscosities, Braginskii everything (and then some), etc. This is one of the next steps after pull request https://github.com/PlasmaPy/PlasmaPy/pull/34 to calculate plasma parameters. My hope is to have docstrings that describe the meanings of each of these coefficients in terms that are understandable to undergraduates but useful to experienced plasma physicists (which is what I'm trying to do for the plasma parameter functions). The equations would need to be put in SI units for consistency with the rest of the code, but should allow temperature to be in eV and so on. These will also need unit tests. (We'll eventually need a full separate documentation page to introduce/discuss the different plasma parameters, transport coefficients, dimensionless numbers, and so on but this can be a separate issue a few months from now once the API stabilizes a bit.)

Resources include:

I'll assign myself to this for the time being. It will probably take me a couple of weeks to get to this, so someone else could take the lead on this if you'd like!

medium Needs subject matter expert high Transport

Most helpful comment

transport-spokesperson

Spokesperson for _ELITE TRANSPORT TASK FORCE_

And yes, I can help out, particularly with Coulomb logarithm for dense plasmas.
i.e., 馃悎 QUANTUM SUBDIVISION 馃悎 of the 馃 _ELITE TRANSPORT TASK FORCE_ 馃

All 13 comments

Here is a brainstorm of a few functions to include in transport.py:

def Coulomb_logarithm():
def Spitzer_resistivity():
def Bohm_diffusion_coefficient():
def collision_time():
def collision_frequency():
def collision_cross_section():
def collision_rate():

The Coulomb logarithm will need a function de_Broglie_wavelength since that sometimes sets the lower limit on the impact parameter. For the Coulomb logarithm, I am thinking that it would be best to include actual formulae rather than approximations since this would produce the most readable/maintainable code. (For approximations, I often find myself wondering where the numerical coefficients came from, like maybe from the Star Trek mirror universe perhaps.) The Coulomb logarithm also depends on what the test particle is and what the particles are that the test particle is colliding with, so the most general expressions for the inner radius/impact parameter would be helpful.

I am not sure yet about how to structure the functions for the Braginskii coefficients so that they are as intuitive and understandable as possible. Any thoughts on other things to include would be appreciated!

There are a few different ways to calculate the Coulomb logarithm in addition to the ones already listed. Gericke and Murillo's PRE (2002) list 6 different ways to obtain this value for dense plasmas. Might be handy to include these

Thank you! I was just talking with someone at the APS DPP meeting last week about how to generalize the Coulomb logarithm, so I think it would be great if we could add more flexibility for people who study strongly coupled plasmas.

The full reference is: Dense plasma temperature equilibration in the binary collision approximation by Gericke, D. O., Murillo, M. S., and Schlanges, M., Phys. Rev. E, 65, 3, 036418 (2002), doi: 10.1103/PhysRevE.65.036418

No problem! I definitely have a vested interest in seeing this happen as I've worked with warm dense plasmas where classical Coulomb logarithm becomes negative and explodes! 馃ぃ

To follow up on the discussion in #166, I was thinking that it would probably be really important to get experts in plasma transport to provide advice on the best ways to calculate different transport quantities. I personally have been finding it hard to figure out which are the most general and/or reliable ways to calculate all of these things since I'm only somewhat familiar with transport theory.

I'm also wondering about the best way to organize the calculations for transport quantities. Should we create a class instead of having separate functions to calculate everything?

I agree getting as much input as possible from the community would be great!

For my 2 cents, I think Spitzer and Braginskii are as fundamental as we have and make a great starting point. There is a 1986 Epperlein-Haines paper that fixed errors in a couple of the original Braginskii coefficients, and one in 2013 by Ji and Held that may even be another improvement, also some interesting consideration of Ti > Te cases.

The Bohm diffusion coefficient I think is a similar sort of landmark that helps you figure out where you are when throwing the bones of the plasma transport.

It would be good to ask a collisionless magnetic person what their mainstay theories are. I know they are always talking about neoclassical microturbulence gyrokinetic gyroBohm something-or-other. I haven't learned those yet. :) Other areas all probably have their own favorites theories too, I know in inertial fusion plasmas they often use Braginskii or similar but include a 'flux limiter' factor to account for nonlocal effects.

In terms of organizing, it's a lot to keep track of. You could certainly have a bunch of functions that do the actual computations, which I guess seems unavoidable. A class might help organization, but you are already organized somewhat into the transport module. I think you could be okay with just functions. If you can do things like, eta_s = trans.conductivity('Spitzer', T_e, n_e, ion='p') or similar, I think it's pretty sweet.

We decided at the telecon today that we'll be pushing this angle for the 0.1 prerelease. @namurphy said he wanted to assemble an ELITE TRANSPORT TASK FORCE (I'm not kidding, 75% of this is what he said) to make sure this is getting done on time and soon.

I'll help out as time allows. @samurai688, @lemmatum?

馃憤 I feel like I've always wanted to be part of an _ELITE TRANSPORT TASK FORCE_ but never knew the words to explain.

transport-spokesperson

Spokesperson for _ELITE TRANSPORT TASK FORCE_

And yes, I can help out, particularly with Coulomb logarithm for dense plasmas.
i.e., 馃悎 QUANTUM SUBDIVISION 馃悎 of the 馃 _ELITE TRANSPORT TASK FORCE_ 馃

That Borat picture is pure gold, and I'm now angry that I missed the opportunity to call this an ELITE ALPHA/NEUTRAL TRANSPORT TASK FORCE.

Cool, well I can start in on the Braginskii coefficients!

If anyone has any time we will need tau_e and tau_i as well. What we will want are the "average momentum relaxation rate" electron-ion and ion-ion collision times in the form given on page 37 of the 2016 NRL formulary. The only issue with the equations given in the formulary is that they are assuming singly charged ions. A form that includes the effects of ion charge state is given in the original 1965 Braginskii paper, equations (2.5e) and (2.5i), and is also in Callen's online textbook Chapter 2 as inverse of equation 2.17 and inverse of equation 2.36.

I've got some functions written up based on Chen and some papers on Langmuir probes in collisional plasmas. Shall I include these?

Nice! These may prove very useful. I'm thinking we may wind up with many different forms for coulomb logs and mean free paths and so on, which could be healthy in development so that we can figure out all the differences and be prepared to fully document whatever we end up with.

Was this page helpful?
0 / 5 - 0 ratings