1#ifndef __CCEX_HAMILTONIAN_H_
2#define __CCEX_HAMILTONIAN_H_
6MatrixXcd Pauli_matrix_I(
int size);
7MatrixXcd Pauli_matrix_X(
int size);
8MatrixXcd Pauli_matrix_Y(
int size);
9MatrixXcd Pauli_matrix_Z(
int size);
10MatrixXcd* getGeneralPauliOperators(MatrixXcd alpha, MatrixXcd beta);
11MatrixXcd* getPauliOperators(
int size);
12MatrixXcd projOperators(MatrixXcd* sigma, MatrixXcd psia, MatrixXcd psib);
14MatrixXcd calZeemanVector(
double gamma,
float* bfield);
15MatrixXcd calDetuningVector(
double detuning);
16MatrixXcd calOverhauserVector(
double overhauser);
17MatrixXcd calPointDipoleTensor(
double xyz1[3],
double xyz2[3],
double gamma1,
double gamma2);
19MatrixXcd calHamiltonianHeteroInt(MatrixXcd** pmats, MatrixXcd tensor,
int nspin,
int ispin,
int jspin);
20MatrixXcd* calHamiltonianHeteroInt_o2(MatrixXcd Sab, MatrixXcd Sba, MatrixXcd** Pmats, MatrixXcd tensor_ib, MatrixXcd tensor_jb,
int nSpin,
int iSpin,
int jSpin);
21MatrixXcd calHamiltonianSelfInt(MatrixXcd* pmat, MatrixXcd tensor);
22MatrixXcd calHamiltonianSingleInt(MatrixXcd Vector, MatrixXcd* pmat1);
23MatrixXcd expandHamiltonian(MatrixXcd** pmats, MatrixXcd Hi,
int nspin,
int ispin);
25MatrixXcd ZeemanInt(
double gamma,
float* B0, MatrixXcd* pmat,
int m);
27int* getIndexInOrder(VectorXcd eigenValues);
28VectorXcd sortEigenValues(VectorXcd eigenValues,
int* idx);
29MatrixXcd sortEigenVectors(MatrixXcd eigenVectors,
int* idx);
31bool isInvolutory(MatrixXcd a);
32bool isSame(MatrixXcd a, MatrixXcd b);