Skip to main content
Version: release 25

"Membrane" border type

Membranes are declared by setting the border type to "membrane". They consist of single-sided separate mesh surfaces which do not belong to a closed 3D object. In that sense, they are virtual surfaces that can be used for sampling the energy distribution function in free-space. Membranes can act as particle sources and can perform all plain reactions. However surface chemistry reactions are excluded for membranes, since virtual surfaces are not supposed to have a deposition material coverage. There are further possible functions for a membrane, which are listed in the following.

For simulations with many species and a membrane which should be fully transparent for all of these, you can use the following command:

reactions: {
Transparent_Membrane;
};

Internally a loop over all used species is applied for which and the transmission is set to 1.

Border Sensor = {

icodec = 2; # Codec number from meshfile
type = "membrane";
T = PAR.T0; # Wall temperature
reactions: {
add_transmission("Ar", 1.0, [], []);
add_transmission("O2", 1.0, [], []);
add_energy_histogram("Ar", 0, 1, 1000);
add_angular_histogram("O2", 9, 36, 1, 0, 0);
};
};
  • Membrane acting as reflector
Border Barrier = {
icodec = 2; # Codec number from meshfile
type = "membrane";
T = PAR.T0; # Wall temperature
reactions: {
# The default behaviour of membranes is 100% diffuse reflection for all species
};
};
  • Transparent membrane which transforms 30% of NH3 into NH3ex

Important note: For membranes it is implicitely assumed that the sum of reaction products masses is the same as the mass of the incoming species. Thus, for maintaining momentum conservation the reaction products are inserted with the same velocity vector as the incoming gas particle. This behaviour is unlike a regular ''"wall"'' where the reaction products get a Maxwellian velocity distribution by default.

Border Activator = {
icodec = 2; # Codec number from meshfile
type = "membrane";
T = PAR.T0; # Wall temperature
reactions: {
# Provide 100% transmission for all other species:
add_transmission("SiH4", 1, [], []);
add_transmission("NH3ex", 1, [], []);
add_transmission("H2", 1, [], []);

# 30% probability for conversion of NH3 to NH3ex
add_plain_reaction("NH3", 1, 0.3, ["NH3ex"], [1]);

# 100% transmission for the non-converted NH3
add_transmission("NH3", 1);
};
};
  • Membrane acting as barrier and absorbing Zn with 100% sticking coefficient
Border Barrier = {
icodec = 2; # Codec number from meshfile
type = "membrane";
T = PAR.T0; # Wall temperature
reactions: {
add_absorption("Zn", 1);
};
};

Two membranes should be separated by a small value, so that the distance between them is not zero. Which means that you can not use the same Line Loop from GMSH only with different signs for two membranes aiming to sample particles from both directions. For the distance a millionth of the cell width should be sufficient.