Starfish Tutorial Part 3: Surface Interactions

Posted on November 12th, 2012
Previous Article :: Next Article

Introduction

This is Part 3 of the multi-part Starfish tutorial. In the previous step, we added sources to simulate the flow of ions over an infinitely long cylinder. When the ions collided with the cylinder, they were simply removed from the simulation. This is the default surface interaction that occurs if no other model is defined. It is not physically realistic. In reality, when low energy ions collide with a surface, they tend to pick up an electron from the surface and recombine into a neutral. In many plasma processes, surface recombination is the dominant plasma loss mechanism. Recombination in the gas itself is a three body process that is negligible at densities below 1e19 m^-3. Although significantly lower than atmospheric pressure, this density is still several orders of magnitude higher than densities present in common space plasma applications. For instance, the ambient plasma density at the Low Earth Orbit is around 1e12 m^-3. Plasma thrusters such as ion and Hall thrusters create plumes with densities in the range of 1e15 to 1e17 m^-3.

Modeling Surface Interactions

In this tutorial, we will add a surface recombination to our model. This is done via Starfish’s interactions module. This module handles interactions between all materials, either kinetic (handled by the PIC method), fluid (handled by the CFD/MHD solvers), or solid (making up the surfaces). We first create a new text file in the simulation directory called interactions.xml. The content of this file is

<!-- material interactions file -->
<material_interactions>
 
<surface_hit source="O+" target="SS">
<product>O</product>
<model>cosine</model>
<c_accom>0.5</c_accom>
<c_rest>0.9</c_rest>
</surface_hit>
 
</material_interactions>

and we load this file by adding

<load>interactions.xml</load>

to starfish.xml. We also need to add a new material to the database – remember, Starfish does not contain any built-in materials. We add the following to materials.xml:

<material name="O" type="kinetic">
<molwt>16</molwt>
<charge>0</charge>
<spwt>2e5</spwt>
</material>

That’s it! You have just told the code to model surface recombination. If you run the simulation, you will get results similar to Figure 1 below.

Product Material Type

Let’s look through this step-by-step. The heart of this exercise is the material interaction. Each material interaction involves at least three participants: source, target, and product. The distinction between sources and products becomes blurry when dealing with collisions. However, they are clearly distinct when dealing with surface interactions. In this case, the source is the “flying” component. The target is the material that the source hits – the material from which the surface is made of. The product is the material the source turns into after undergoing the impact. In this case, we have told the code to turn O+ ions into O atoms after colliding with Stainless Steel surfaces.

When you look in the materials file, you will see that the specific weight of the oxygen atoms (O), 2e5, differs from the specific weight of the oxygen ions (O+), 5e5. The code takes this into account, and creates, on average, 2.5 atom particles per each impacting ion. You can test this out yourself by changing the value and seeing the number of particles change. The actual density of oxygen atoms will however stay the same, but the data will become noisier as the number of particles is reduced. This can be seen below in Figure 1.

Density of ions that have recombined at the surface into neutrals
Figure 1. Density of neutrals from surface recombination of impacting ions. Images compare the effect of specific weight on results: 2e5 (left), and 2e7 (right). Instantaneous results.

We can also compare the particle counts from the screen output. With neutral weight of 2e5, we obtain:

it: 495	O+: 155920 O: 162219 
it: 496	O+: 155696 O: 162495 
it: 497	O+: 155976 O: 162739 
it: 498	O+: 155681 O: 162990 
it: 499	O+: 155714 O: 163353
Processing <output>
Processing <output>
Done!

and with 2e7 we get:

it: 495	O+: 155920 O: 1636 
it: 496	O+: 155696 O: 1630 
it: 497	O+: 155976 O: 1629 
it: 498	O+: 155681 O: 1626 
it: 499	O+: 155714 O: 1628 
Processing <output>
Processing <output>
Done!

As expected, the number of neutral simulation particles has dropped by two orders of magnitude.

Material Interaction Model

Getting back to the input file, so far we have only told the code to turn O+ into O. However, we have yet to specify how the new particles will leave the surface. This is done via the model field. Even relatively smooth surface will contain irregularities on the atomic scale. Furthermore, in many cases, incoming molecules do not bounce off the surface like a tennis ball. Instead, they momentarily settle on the surface and then they are re-emitted in a direction that tends to follow Lambert’s cosine law. The cosine model models this behavior. The angle of the emitted particle will scale proportionally to the cosine of angle between the velocity vector and the surface normal. Some additional models that are available include specular and diffuse (random) reflection.

Post-Impact Velocity

OK, so now we have specified the material and the direction, but we still need to specify the speed of the outgoing particles. This is done via the c_rest and c_accom coefficients. These correspond to the coefficient of restitution and the coefficient of thermal accommodation. The first controls the amount of incoming energy that is lost to the surface impact. At present, this energy is simply discarded, perhaps in the future a more advanced thermal model will include this in updating the surface temperature. It is given by
$$ c_{rest} = \dfrac{|v_{final}|}{|v_{initial}|}$$
Note that this assumes the surface is at rest.

The coefficient of thermal accommodation specifies the fraction of incoming particles that will completely forget their incoming velocity and will instead come off with a velocity corresponding to the thermal velocity of the surface. The overall algorithm is as follows:

v2 = v1*c_rest         /*post impact velocity*/
R = random();          /*pick a random number in [0,1)*/
if (R<c_accom)
   v2 = v_th*sampleMaxwellian();

/*create particle with velocity magnitude v2*/

Complex Interaction Types

The results from the above case were shown in Figure 1. We will now consider a more complex surface model. In the above example, all incoming ions turned into neutrals and were re-emitted. However, what if we wanted to model a situation where a fraction of particles stick to the surface, another fraction is reflected specularly, and only the final fraction is emitted according to the cosine law? This is quite easy in Starfish. Starfish allows you to define multiple interaction types with a prescribed probability of occurrence. As an example, let’s consider a more complex interactions file:

<!-- material interactions file -->
<material_interactions>
 
<!-- cosine law, 40% of particles -->
<surface_hit source="O+" target="SS">
<product>O</product>
<model>cosine</model>
<prob>0.4</prob>
<c_accom>0.5</c_accom>
<c_rest>0.9</c_rest>
</surface_hit>
 
<!-- specular reflection, 20$ of particles -->
<surface_hit source="O+" target="SS">
<product>O</product>
<model>specular</model>
<prob>0.2</prob>
<c_accom>0</c_accom>
<c_rest>1.0</c_rest>
</surface_hit>
 
</material_interactions>

This file is similar to the one from above, except that now we have specified two surface_hit fields. In addition, we added a new field called prob. This field gives the probability for this model. As you can see, these two probabilities add up to a value less than 1.0. This is OK, the remaining particles will be handled by default handler, one that absorbs incoming particles. The resulting plot from this simulation is shown below in Figure 2. It is quite similar to the one from above, but the density of neutrals has decreased correspondingly.

Density of ions that have recombined at the surface into neutrals with sticking
Figure 2. Density of neutrals corresponding to the more complex model with partial sticking.

You will find the input files here: part3.zip. Continue onto Part 4.

Subscribe to the newsletter and follow us on Twitter. Send us an email if you have any questions.

2 comments to “Starfish Tutorial Part 3: Surface Interactions”

  1. Johannes Peter
    February 4, 2013 at 6:13 am

    Hey,
    could you please give a reference to the following statement in this article:
    “Recombination in the gas itself is a three body process that is negligible at densities below 1e19 m^-3”.

    Thanks a lot,
    Johannes Peter

    • February 4, 2013 at 11:50 am

      Hi Johannes,

      The first part of the statement arises from the chemical reaction, i.e. \(A + e \to A^+ + e + e \) for impact ionization. Recombination is the reversal of this process and the third body is needed to absorb the additional energy. Jahn goes into a lot of detail on the various chemical processes occurring in plasmas in the electric propulsion devices.

      The second part is coming from my own experience when modeling Xenon ion thruster plumes. I don’t remember right now off the top of my head what recombination relationship I was using back then, but the recombination rate came out to be negligible (below fraction of a percent) at the densities below 1e19 #/m^3. I’ll try to dig up some relationships and get back to you.

Leave a Reply

You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre lang="" line="" escaped="" cssfile=""> In addition, you can use \( ...\) to include equations.