... | ... | @@ -137,13 +137,11 @@ Write this |
|
|
#### Recursive Greens Function
|
|
|
Write this
|
|
|
|
|
|
|
|
|
---------------------
|
|
|
##### Footnotes
|
|
|
|
|
|
[3]: Should we actually define everything as arrays straight away to make it easier to
|
|
|
conform to the C system API?
|
|
|
|
|
|
[3]: We should probably define everything as arrays straight away to make it easier to
|
|
|
conform to the C system API.
|
|
|
|
|
|
|
|
|
|
... | ... | @@ -243,11 +241,31 @@ struct CSystem_t { |
|
|
uint_t *blocks ; // shape: (n_blocks, 5)
|
|
|
uint_t n_blocks ;
|
|
|
|
|
|
void (*hamiltonian_block_t)(
|
|
|
// Calculate a single Hamiltonian block
|
|
|
void (*hamiltonian_block)(
|
|
|
const void *system, // the system
|
|
|
gint_t block_index, // the index of the block to calculate
|
|
|
const void *args, // the arguments to the Hamiltonian
|
|
|
complex_t *out // the array to hold the calculated Hamiltonian block
|
|
|
) ;
|
|
|
|
|
|
// Calculate the Hamiltonian and return in dense format
|
|
|
void (*hamiltonian_dense)(
|
|
|
const void *system, // the system
|
|
|
gint_t sym_index, // the index of the symmetry element to calculate
|
|
|
const void *args, // the arguments to the Hamiltonian
|
|
|
complex_t *out // the array to hold the calculated Hamiltonian block
|
|
|
) ;
|
|
|
|
|
|
// Calculate the Hamiltonian and return in sparse COO format
|
|
|
void (*hamiltonian_sparse)(
|
|
|
const void *system, // the system
|
|
|
gint_t sym_index, // the index of the symmetry element to calculate
|
|
|
const void *args, // the arguments to the Hamiltonian
|
|
|
gint_t *out_row_idx, // row indices of Hamiltonian elements
|
|
|
gint_t *out_col_idx, // column indices of Hamiltonian elements
|
|
|
complex_t *out_values // Hamiltonian values
|
|
|
) ;
|
|
|
} ;
|
|
|
```
|
|
|
|
... | ... | |