create_graph

static ThomasFermi.create_graph(physics, numerics, energy_matrix, approximate_charges, island_charges, p_WKB)

Creates the Markov graph of charge configurations.

Nodes are tuples of integers representing the number of particles on each island. The graph is a directed graph with weights between u and v equal to calc_wieght(physics, islands, p_WKB, u, v). All nodes in the graph differ from the least-energy configuration by a number of particles no more than numerics.create_graph_max_changes.

Parameters:
  • physics (PhysicsParameters) – The physical device parameters.

  • numerics (NumericsParameters) – Options for numeric calculations.

  • energy_matrix (ndarray[float]) – A 2D array with shape (num_islands, num_islands) giving the energy matrix (in meV) of the capacitance model.

  • approximate_charges (ndarray[float]) – An array with length equal to the number of islands, where each entry of the array is the integral of n(x) over the corresponding island.

  • island_charges (ndarray[int]) – The charge configuration array which minimizes the capacitance energy. A 1D array with length equal to the number of islands specifying the integer number of charges on each island.

  • p_WKB (ndarray[float]) – An array with length equal to the number of barriers, where each entry is the transition rate across the corresponding barrier.

Returns:

A graph with tuple[int, …] nodes representing possible charge configurations. This graph is a Markov graph where edges represent the transition rates between possible configurations.

Return type:

networkx.DiGraph