current_poisson{ }

Calling sequence

run{ current_poisson{ } }

Properties

  • usage: optional

  • items: maximum 1

Dependencies

Functionality

When this group is defined, the system of coupled current and Poisson equations is solved self-consistently using semiclassical (bulk-material) densities of sates. The major results here are the electrostatic potential and quasi-Fermi levels.

Example

run{
    current_poisson{}
}

poisson{}
currents{}

Nested keywords


fermi_limit

Calling sequence

run{ current_poisson{ fermi_limit } }

Properties

  • usage: optional

  • type: real number

  • values: 0.0r10.0

  • default: r=2.0

  • unit: eV

Example

run{
    current_poisson{
        fermi_limit = 0.5
    }
}

poisson{}
currents{}

Functionality

This keyword defines the energy range within which the quasi-Fermi levels are allowed in the simulation, and during the runtime of related algorithms. The maximum is defined as the highest Fermi level at contacts plus the fermi_limit while the minimum is defined as the lowest Fermi level at contacts minus the fermi_limit.

Note

Except in case of huge band gaps and extreme photogeneration, the default value should not require any change.

At the same time, in the absence of any externally induced photogeneration, this value can be set to zero in order to stabilize the solver.


multi_stage_solve

Calling sequence

run{ current_poisson{ multi_stage_solve } }

Properties

  • usage: optional

  • type: choice

  • values: yes or no

  • default: no

Functionality

When multi_stage_solve = yes, then the current equation is solved in two stages. First, without recombination and generation processes. Second, with the recombination and generation processes included using the solutions from the first run as initial conditions, if any recombination or generation models are turned on.

Hint

This keyword can be used to improve convergence in some cases, but may also increase the simulation runtime.

Example

run{
    current_poisson{
        multi_stage_solve = yes
    }
}

poisson{}
currents{}

fast_poisson

Calling sequence

run{ current_poisson{ fast_poisson } }

Properties

  • usage: optional

  • type: choice

  • values: yes or no

  • default: no

Functionality

If fast_poisson = yes, then Newton iterations of the Poisson solver in the within the classical current-Poisson iteration will be limited to 1. Note that enabling this setting may also influence stability of convergence or change the optimal value for alpha_fermi. Typically, fast_poisson = yes increases the number of iterations but significantly reduces the overall execution time.

Example

run{
    current_poisson{
        fast_poisson = yes
    }
}

poisson{}
currents{}

system_solve

Calling sequence

run{ current_poisson{ system_solve } }

Properties

  • usage: optional

  • type: choice

  • values: yes or no

  • default: no

Dependencies

Functionality

Alternative new iteration method for classical current-Poisson. This Newton method may provide better convergence for some systems (but may require different values of convergence parameters). Setting system_solve = yes results in Fermi levels and potential being simultaneously updated as a system of unknowns during the iteration. Irrespective of its value, system_solve always takes the value of current_repetitions into account.

Example

run{
    current_poisson{
        system_solve = yes
    }
}

poisson{}
currents{}

iterations

Calling sequence

run{ current_poisson{ iterations } }

Properties

  • usage: optional

  • type: integer

  • values: z1

  • default: z=100

  • unit:

Functionality

Maximum number of iterations for current-Poisson solver

Example

run{
    current_poisson{
        iterations = 200
    }
}

poisson{}
currents{}

current_repetitions

Calling sequence

run{ current_poisson{ current_repetitions } }

Properties

  • usage: conditional

  • type: integer

  • values: z1

  • default: z=1

  • unit:

Dependencies

Functionality

Number of current-density iterations. The current equations are repeatedly solved for the quasi-Fermi levels with the densities fixed. The current equation for the electrons and for the holes are solved independently with a common and fixed recombination term. For each iteration, the densities are adjusted according to the new quasi-Fermi levels of the previous iteration. current_repetitions defines number of these repetitions. If generation/recombination is present, using a value > 1 (e.g. 5) may stabilize the iteration and sometimes enable faster convergence (larger alpha_fermi may also be possible then).

Example

run{
    current_poisson{
        current_repetitions = 5
    }
}

poisson{}
currents{}

limit_repetitions

Calling sequence

run{ current_poisson{ limit_repetitions } }

Properties

  • usage: optional

  • type: choice

  • values: yes or no

  • default: no

Dependencies

Functionality

If enabled, the current-density loop is exited early as soon as residual_fermi is reached by the quasi-Fermi levels.

Example

run{
    current_poisson{
        current_repetitions = yes
    }
}

poisson{}
currents{}

residual

Calling sequence

run{ current_poisson{ residual } }

Properties

  • usage: optional

  • type: real number

  • values: [0.0, ...)

  • default: r=105 for 1D; r=103 for 2D; r=103 for 3D

  • unit: cm2 for 1D; cm1 for 2D; none for 3D

Functionality

Residual occupation changes.

Example

run{
    current_poisson{
        residual = 1e4
    }
}

poisson{}
currents{}

residual_fermi

Calling sequence

run{ current_poisson{ residual_fermi } }

Properties

  • usage: optional

  • type: real number

  • values: [0.0, ...)

  • default: r=1e5

  • unit: eV

Functionality

Residual Fermi level changes, see Residuals for more details. This value is also used during quantum_current_poisson{ }

Example

run{
    current_poisson{
        residual_fermi = 1e-6
    }
}

poisson{}
currents{}

alpha_fermi

Calling sequence

run{ current_poisson{ alpha_fermi } }

Properties

  • usage: optional

  • type: real number

  • values: 105r1.0

  • default: r=1.0

  • unit:

Functionality

Dimensionless under-relaxation parameter for Fermi level. The final quasi-Fermi level for electrons after each iteration is calculated as follows:

EF,n = ( EF,n of previous iteration ) * ( 1 - alpha_fermi) + ( EF,n of actual iteration ) * alpha_fermi

This Fermi level is then input to the next iteration. The same holds for the Fermi level EF,p for holes. The value of alpha_fermi will change due to alpha_scale during the iterations. The actually used alpha_fermi is now included in iteration_current_poisson.dat and iteration_quantum_current_poisson_details.dat.

Example

run{
    current_poisson{
        alpha_fermi = 0.5
    }
}

poisson{}
currents{}

alpha_iterations

Calling sequence

run{ current_poisson{ alpha_iterations } }

Properties

  • usage: optional

  • type: integer

  • values: z1

  • default: z=1000

  • unit:

Functionality

Iteration at which alpha_fermi begins to be rescaled by alpha_scale at each following iteration.

Example

run{
    current_poisson{
        alpha_iterations = 200
    }
}

poisson{}
currents{}

alpha_scale

Calling sequence

run{ current_poisson{ alpha_scale } }

Properties

  • usage: optional

  • type: real number

  • values: 0.1r1.0

  • default: r=0.998

  • unit:

Functionality

A factor rescaling alpha_fermi starting at the iteration alpha_iterations, both for classical and quantum stages of simulation. The alpha_fermi is overwritten by: max( alpha_fermi * alpha_scale , 1e-5) at each iteration step once the number of iterations exceeds alpha_iterations.

Use this feature to improve convergence (particularly convergence of Fermi levels) towards the end of the iteration.

Warning

Decreasing alpha_fermi too fast (a problem with older versions) will result in the iteration stalling, (only the residuals of the densities but none of the Fermi levels decrease). The total current equation may then not be properly conserved.

Example

run{
    current_poisson{
        alpha_scale = 0.995
    }
}

poisson{}
currents{}

mindensity_factor_electrons

Calling sequence

run{ current_poisson{ mindensity_factor_electrons } }

Properties

  • usage: optional

  • type: real number

  • values: 1.0r1020

  • default: r=1.0

  • unit:

Functionality

Example

run{
    current_poisson{
        mindensity_factor_electrons = 1e5
    }
}

poisson{}
currents{}

mindensity_factor_holes

Calling sequence

run{ current_poisson{ mindensity_factor_holes } }

Properties

  • usage: optional

  • type: real number

  • values: 1.0r1020

  • default: r=1.0

  • unit:

Functionality

Example

run{
    current_poisson{
        mindensity_factor_holes = 1e5
    }
}

poisson{}
currents{}

output_log

Calling sequence

run{ current_poisson{ output_log } }

Properties

  • usage: optional

  • type: choice

  • values: yes or no

  • default: yes

Functionality

Example

run{
    current_poisson{
        output_log = no
    }
}

poisson{}
currents{}

output_local_residuals

Calling sequence

run{ current_poisson{ output_local_residuals } }

Properties

  • usage: optional

  • type: choice

  • values: yes or no

  • default: no

Functionality

Outputs residuals as functions of position when output_local_residuals = yes. In case the attribute is enabled for both classical and quantum iterations, the quantum iteration overwrites the respective files of the classical iteration.

Attention

Both conditions specified by residual and residual_fermi must hold in order to consider a calculation as converged.

Example

run{
    current_poisson{
        output_local_residuals = yes
    }
}

poisson{}
currents{}


Last update: 02/04/2025