QNANO
Public Member Functions | Public Attributes | List of all members
Eigenvector_Printer_SLEPc Class Reference
Inheritance diagram for Eigenvector_Printer_SLEPc:
Inheritance graph
[legend]
Collaboration diagram for Eigenvector_Printer_SLEPc:
Collaboration graph
[legend]

Public Member Functions

void setup_local_orb_blocks ()
 
void setup (Parameter_Map &param_map)
 
void setup ()
 
 Eigenvector_Printer_SLEPc (Mat *A_, EPS *eps_, Organize_Blocks *org_bl)
 
 Eigenvector_Printer_SLEPc (SLEPc_Solver *solver, Organize_Blocks *org_bl)
 
void check_fully_initialized () const
 
virtual int get_n_converged () const
 
virtual double get_eigenvalue (int i) const
 
virtual void print_eigenvalues () const
 
virtual void print_eigenvector (int i) const
 
virtual void print_eigenvector_Kramers (int i) const
 
bool has_Kramers_partner (int i) const
 Kramers part:
 
virtual void calculate_alpha_beta_Kramers_sz (std::complex< double > &alpha, std::complex< double > &beta, int i) const
 
virtual std::complex< double > calculate_max_phase_factor (std::complex< double > alpha, std::complex< double > beta, int i) const
 
- Public Member Functions inherited from Eigenvector_Printer
bool orbs_are_spinless () const
 
const std::string & get_EV_header (int i) const
 
void print_block (std::string &str, std::complex< double > *ptr, int blocksize, int baseindex) const
 
virtual int get_actual_nr_print () const
 
virtual void print () const
 
 Eigenvector_Printer (Organize_Blocks *org, bool spinless_=true)
 
 Eigenvector_Printer (size_t DIM, bool spinless_=true)
 

Public Attributes

int MPI_rank
 
int MPI_size
 
Mat * A
 
EPS * eps
 
int nrorb
 
Organize_Blocks_By_List local_orb_blocks
 contains blocksizes for the atoms stored on the local node
 
- Public Attributes inherited from Eigenvector_Printer
int round_figure
 
std::string EV_filename_pattern
 
std::string eigenvalue_filename
 
int nr_print
 
bool override_printEV
 
std::string EV_header
 
std::vector< std::string > EV_header_individual
 
bool print_sparse
 
double print_sparse_cutoff
 
bool print_error_cout
 
bool silent
 
bool print_Kramers_sz
 variables dealing with Kramers pairs:
 
double kramers_tolerance
 
Organize_Blocksorb_blocks
 
std::string(* sparse_print_index )(size_t line_counter, void *spi_ctx)
 
void * spi_ctx
 

Additional Inherited Members

- Static Public Member Functions inherited from Eigenvector_Printer
static std::string sparse_print_index_default (size_t line_counter, void *spi_ctx)
 
- Protected Attributes inherited from Eigenvector_Printer
bool delete_orb_blocks_on_destruction
 
bool spinless
 

Member Function Documentation

void Eigenvector_Printer_SLEPc::calculate_alpha_beta_Kramers_sz ( std::complex< double > &  alpha,
std::complex< double > &  beta,
int  i 
) const
virtual

Theory: <s_z> = ( alpha* <0| + beta* <1| ) s_z ( alpha |0> + beta |1> )

<sz> = 1/2 * ( |alpha|^2 ( |f0(up)|^2 - |f0(down)|^2 )

  • |beta|^2 ( |f1(up)|^2 - |f1(down)|^2 )
  • alpha^* beta ( f0^*(up) f1(up) - f0^*(down) f1(down) )
  • alpha beta^* ( f1^*(up) f0(up) - f1^*(down) f0(down) ) ) =: (alpha^*, beta^*) M (alpha, beta)^T with M=1/2*( (|f0(up)|^2-|f0(down)|^2) (f0^*(up)f1(up)-f0^*(down)f1(down) (f1^*(up)f0(up)-f1^*(down)f0(down)) (|f1(up)|^2-|f1(down)|^2) )

=> maximal or minimal when (alpha, beta)^T is an eigenvector of M

Note also: f1(down)= - Re(f0(up)) + i Im(f0(up)) f1(up)= Re(f0(down)) - i Im(f0(down)),

f0(down)= Re(f1(up)) - i Im(f1(up)) f0(up) = - Re(f1(down)) + Im (f1(down))

Reimplemented from Eigenvector_Printer.


The documentation for this class was generated from the following files: