Strange result for ion drift velocity in low pressure propane, missing long. diffusion coefficient

Hi,
I would appreciate some hint here.

I am simulating C3H8+ ions drifting in 1 Torr propane at 313 K. I have an ion mobility file and created a GasFile with a field range of 0.1 V/cm to 1800 V/cm, using 30 field points and logarithmic spacing. I used the printTable.C, generate.C, and read.C from the provided GasFile example.

When running read.C and plotting the ion drift velocity using view.PlotIonVelocity();, I see that the curve first shows a reasonable slope, but then drops to zero, then increasing again almost vertically. Is it only due to some extrapolation of the function due to the drop at ~1500 V/cm?

Further, view.PlotIonDiffusion(); only gives me the transverse diffusion coefficient. I can’t retrieve the longitudinal diffusion coefficient.

For electrons, both looks reasonable.

Is there some explanation for that?

Thank you so much.


Hi,

adding @hschindl to the loop.

Cheers,
D

Hi,

  • by default, the table of ion mobilities is interpolated using a second-order polynomial. Can you try to change it to first-order interpolation (gas.SetInterpolationMethodIonMobility(1);)? For the extrapolation towards high fields, the default is linear extrapolation. You might also want to check the mobility values in the text file, to make sure they are sensible.
  • For ions, the diffusion coefficients are calculated based on the Einstein relation; there is no distinction between transverse and longitudinal diffusion coefficients in this case.

Thank you for your quick reply!

Adding the line gas.SetInterpolationMethodIonMobility(1); in the read.C file does not affect the curve for the drift velocity of the ion.
The ion mobility values look good.

What do you expect for the shape of the drift velocity based on the ion mobility values that you are using?

My question is particularly regarding the drop of the drift velocity - for me it appears unrealistic and I was worried that this might have negative impact on my simulations. I would’nt have expected any significant drop in the drift velocity at all.

I am honestly not sure whether the ion mobility interpolation causes this behaviour and how the calculation of the drift velocity is done.
The mobility values range from (40.68 Td, 0.75 cm^2/(Vs)) to (2965.53 Td, 0.30 cm^2/(Vs)).

Hi,
if there is no magnetic field, the drift velocity is simply given by the mobility times the electric field. Could you make a quick plot of mobility * electric field using your mobility values?

Yes, here it is:

Thanks! Hm, strange… Can you attach the mobility .txt file?

Thank you for your efforts…

IonMobility_C3H8+_C3H8.txt (503 Bytes)

Hi,
many thanks for the file and apologies for the delay in getting back to you!

I did a quick check with the following script

import ROOT
import Garfield

gas = ROOT.Garfield.MediumMagboltz()
gas.LoadIonMobility('IonMobility_C3H8+_C3H8.txt')

view = ROOT.Garfield.ViewMedium(gas)
view.PlotIonVelocity()

and I got the attached plot

Do you have any extra lines in the script that you were using to plot the velocity?

Thank you for your reply and the check.

I just additionally load the gas file. The read.C I am using (from the available “GasFile” example) is attached.

When not loading the gas file, I get the same curve as you did. I qill quickly check that…

read.C (900 Bytes)

Hmm, interesting… can you also attach your gas file?

I also attach the generate.C. Maybe I did something wrong here.

GasFile.zip (6.4 KB)

Can you reproduce the error or see something strange in the gas file?

I noticed that the latest update of the code has a differently defined constructor for ViewMedium:
New code: ViewMedium view(&gas);
“Old” code: ViewMedium view;
view.SetMedium(&gas);

I will finish my current simulations and then try again with a fresh clone.

Dear @VictorM
I can reproduce your plots with and without loading the gasfile. When you load your gasfile, you define the pressure and temperature to be 1Torr and 313K, if you do not load your gasfile your pressure and temperature are considered to be standard pressure and temperature: 760Torr and 293K, and this results obviously to a different translation of E/N to E and hence different drift velocity.

In the case where you load the gasfile and determine to work at 1Torr your plot of the ion velocity shows the entire data range [*] up to 1000V/cm (which should correspond with ~3000Td), while in the case where you do not load the gasfile and determine to work at 760 Torr you have only a snapshot of the data range (3000Td should correspond to ~0.76E6 V, while your plot goes only up to 0.1E6 V). I tried to play with viewMedium.SetRangeE to extend the field, but that did not work for me (I ll play a bit more and investigate why it is not working).

@hschindl I think the possibility to plot velocity also vs reduced field would help to debug these cases. I promised in the past I would have a look at it, but so far I did not work on it. I see if I can work on it in the next days.
greets
Piet

[*] What I do not understand is the number of the markers on the curve. In your txt file you have 12 values, so I would expect 12 markers on the curve. Instead I count 30 markers in the curve plotted by Garfield. So these do not correspond. Doing some manual calculation I translate your max 2965Td (at 1 Torr) to 915V/cm and I obtain a drift velocity of 0.27 E-6 cm/ns … while in the garfield-made plot I read 0.25 E-3 cm/ns for 1kV/cm … so I disagree 3 orders of magnitude with Garfield, while performing the calcuation at 760 Torr I do find the value plotted by Garfield. Anyway at 1 Torr, whatever is beyond 915V/cm is extrapolation … so indeed it is strange it bends down…

1 Like

Thank you for your detailed reply, @Piet.

Regaring [*]: When generating the gas file using generate.C, I use 30 field points, and 30 markers are visible in the ion drift velocity plot.
The number of marker is also confusing me, as it does not match with the number of mobility values. If I set 1 Torr in the read.C, then I only see two markers.

Hi @VictorM

That might make sense then … so the markers are taken from the electric field grid you defined when you made your gasfile. I read that you have a range of 0.1 - 1800V/cm in 29 steps (30 markers). Considering the number density of 3E16 cm-3 for 1Torr and 313K, this means you have a range in E/N of 0.3Td to 60Td, while your ion mobility file has only 2 entries in this range, as it goes from 40Td to 2965Td. A hypothesis might be that having only 2 ion velocity entries of your txt file within the grid kind of makes the extrapolation screw up. Could you maybe give it a try by calculating a new gasfile that covers a larger electric field, let’s say up to 9kV/cm or 90kV/cm?

Hi,
sorry for the silence, I’ve been away for two weeks with no proper internet connection. There is indeed something strange going on when mapping the table of ion mobilities to the electric field grid imported from the gas file. I’ll need to do some more debugging…

1 Like

Sorry my late answer - my computer was broken in the meantime.

@Piet, I am still generating the new gas file as you suggested, it takes a long time, but meanwhile I used an old one (in generate.C, I set the field from 10 to 2900 V/cm; pressure 1 mbar).
In my simulation, I then increased the field (I use Elmer) for my setup and observed that the ions are indeed stopped in the region where the ion drift velocity curve shows the zero point, at around 1800 V/cm when using this gas file. Well…
Btw, the simulation shows the ions starting in a drift field and eventually guided into this hole in a dielectric material, where the top plate (at z=0.5cm) is set to ground, and at the bottom of the hole (at z=-0.5cm), there is a cathode set on -2500 V.

I’ll provide the results for the gas file generated for the field going up to 9 kV/cm asap.