What does "Fixed" and Flux" mean?

From Flooxs
Jump to navigation Jump to search

Fixed

The "Fixed" Boolean in FLOOXS allows the user to specify a Dirichlet boundary condition (Fixed = 1), or not (Fixed = 0). For example, choose from one of the below:

    pdbSetBoolean $Contact $var Fixed 1
    pdbSetBoolean $Contact $var Fixed 0

Fixed 1:

Sometimes, at a boundary or interface, you want to say that a solution variable is "fixed" or held to a constant there. In this case, use Fixed 1. For example, you might want to specify that the Fermi-level is pinned at a contact:

pdbSetBoolean Gate nQFL Fixed 1;#pin the n-quasi fermi level
pdbSetString  Gate nQFL Equation "nQFL-Gate";#pin the value according to this equation

Or, in the case of constant-source diffusion, you may want to say that, for example, right on the surface of your wafer, the hydrogen concentration is "fixed" at a concentration of 1.0e18 /cm^3:

   pdbSetBoolean Gas_Oxide H2 Fixed 1
   pdbSetString  Gas_Oxide H2 Equation_Oxide "1.0e18 - H2_Oxide"

Another common example is the ohmic contact.

In general, to specify Fixed 1 at FLOOXS boundaries (contacts or interfaces), set the "Fixed" boolean to 1, then specify an "Equation" string to govern what you want that fixed value to be:

pdbSetBoolean <contact or interface name> <solution variable> Fixed 1;#turn on "Fixed"
pdbSetString <contact or interface name> <solution variable> Equation "<equation string (set =0 by FLOOXS)>"

Fixed 0:

When Fixed is zero, the equation specified is the flux at the boundary. For example, in the case of a non-ideal contact, the electron flux can be specified with a surface recombination rate.

 pdbSetBoolean <contact or interface name> <solution variable> Fixed 0;#turn off "Fixed"
 pdbSetString <contact or interface name> <solution variable> Equation "1.0e-3 * (Elec - ElecEquilibrium)"

The above would specify a 1.0e-3 cm/s surface recombination at the contact. This is then balanced with bulk electron flow and represents the particle loss at the interface.

Flux

The "Flux" boolean controls whether or not FLOOXS computes the flux through a certain boundary (contact or interface), and is specified as follows:

pdbSetBoolean <contact or interface name> <solution variable> Flux 1;#turn on "Flux"
pdbSetBoolean <contact or interface name> <solution variable> Flux 0;#turn off "Flux"

Flux 1:

In many cases, the user wants to know the flux leaving a boundary. For example, the total electron and hole flux at a contact are used to compute current. When Flux is 1, the code sums the boundary fluxes over the contact. The computed flux has units that depend on the mesh and contact command parameters. For example, see the ohmic contact example.

Flux 0:

Setting Flux 1 creates a dense row in the matrix that FLOOXS must solve. If the user does not care what the flux is through a certain boundary, he may set Flux 0, saving time during computation. If Flux is zero or not specified, the total particle flux is not summed. An example of when there is no interest in the flux quantity is interstitials recombining at the oxide / silicon interface.