Program Listing for File Green_function_set.hpp

Return to documentation for file (src_ed/Green_function_set.hpp)

#ifndef Green_function_set_h
#define Green_function_set_h

#include <memory>

#include "block_matrix.hpp"
#include "symmetry_group.hpp"
#include "Q_matrix.hpp"
#include "hdf5_io.hpp"

enum GF_FORMAT {GF_format_BL, GF_format_CF, GF_format_MCF, GF_format_Q_to_MCF};

struct Green_function_set
{
  shared_ptr<symmetry_group> group;
  size_t L;
  int n_mixed;

  Green_function_set(shared_ptr<symmetry_group> _group, int mixing) : group(_group)
  {
    L = group->n_sites;
    if(mixing & HS_mixing::anomalous) L *= 2;
    if(mixing & HS_mixing::spin_flip) L *= 2;
    n_mixed = L/group->n_sites;
  }


  // fills the block_matrix G with the GF at frequency z
  virtual void  Green_function(const Complex &z, block_matrix<Complex> &G) = 0;
  virtual void  integrated_Green_function(block_matrix<Complex> &M) = 0;

  // HDF5 serialization (write into / read from an already-opened group)
  virtual void write_hdf5(H5::Group& grp) = 0;
  virtual void read_hdf5(H5::Group& grp)  = 0;
};

#endif /* Green_function_set_h */