calc_V

qdflow.physics.simulation.calc_V(gate_param_list, x, y, z, effective_peak_matrix=None)

Calculates the potential due to a set of gates.

Parameters:
  • gate_param_list (list[GateParameters]) – The parameters defining each of the gates.

  • x (float or ndarray[float]) – The x-values (in nm) of the point(s) for which to calculate the potential.

  • y (float or ndarray[float]) – The y-values (in nm) of the point(s) for which to calculate the potential.

  • z (float or ndarray[float]) – The z-values (in nm) of the point(s) for which to calculate the potential.

  • effective_peak_matrix (ndarray[float], optional) – A matrix with shape (num_gates, num_gates) used to calculate the effective peak of each gate after correcting for the induced charge from the other gates. If absent, it will be calculated automatically.

Returns:

The potential (in meV) at the specified point(s) due to the gate.

Return type:

float or ndarray[float]

Notes

gate_param_list contains the physical parameters defining each of the gates, including for each gate, the value of the potential peak that would be measured at the nanowire in the absense of all other gates.

However, when more than one gate are brought close together, the electric field from one gate induces charge on the other gates. The effect of the induced charge on each gate is approximated by defining an “effective peak” as a linear combination of each of the original gate peaks.

Specifically, the effective peak of each gate is given as np.dot(effective_peak_matrix, gate_peaks).

By default, effective_peak_matrix is calculated automatically, via calc_effective_peak_matrix(gate_param_list).

If you plan to call calc_V() multiple times for the same set of gates at different voltages (as is done when calculating a CSD), you can calculate effective_peak_matrix once at the start and supply it to this function to avoid repeating the calculation every time calc_V() is called.

Alternatively, if you wish to ignore the effects of induced charges, instead treating gates as a uniform line charge, call calc_V() with the effective_peak_matrix option set to np.identity(len(gate_param_list)).