QMCPACK
SkParserASCII Class Reference

Class to handle parsing from ASCII file. More...

+ Inheritance diagram for SkParserASCII:
+ Collaboration diagram for SkParserASCII:

Public Types

enum  data_layout {
  KX, KY, KZ, SK,
  SKERR
}
 
- Public Types inherited from SkParserBase
using Grid_t = LinearGrid< RealType >
 
- Public Types inherited from QMCTraits
enum  { DIM = OHMMS_DIM, DIM_VGL = OHMMS_DIM + 2 }
 
using QTBase = QMCTypes< OHMMS_PRECISION, DIM >
 
using QTFull = QMCTypes< OHMMS_PRECISION_FULL, DIM >
 
using RealType = QTBase::RealType
 
using ComplexType = QTBase::ComplexType
 
using ValueType = QTBase::ValueType
 
using PosType = QTBase::PosType
 
using GradType = QTBase::GradType
 
using TensorType = QTBase::TensorType
 
using IndexType = OHMMS_INDEXTYPE
 define other types More...
 
using FullPrecRealType = QTFull::RealType
 
using FullPrecValueType = QTFull::ValueType
 
using PropertySetType = RecordNamedProperty< FullPrecRealType >
 define PropertyList_t More...
 
using PtclGrpIndexes = std::vector< std::pair< int, int > >
 

Public Member Functions

void parse (const std::string &fname) override
 
- Public Member Functions inherited from SkParserBase
 SkParserBase ()
 
virtual ~SkParserBase ()
 
void get_grid (Grid_t &xgrid, Grid_t &ygrid, Grid_t &zgrid)
 
void get_sk (std::vector< RealType > &sk, std::vector< RealType > &skerr)
 
std::vector< PosTypeget_grid_raw ()
 
std::vector< RealTypeget_sk_raw ()
 
std::vector< RealTypeget_skerr_raw ()
 
void compute_sk ()
 
void set_grid (const std::vector< PosType > &gridpoints)
 
void set_grid (const std::vector< TinyVector< int, OHMMS_DIM >> &gridpoints)
 
void compute_grid ()
 
bool is_normalized ()
 
bool has_grid ()
 
void setName (std::string in_name)
 

Private Member Functions

std::vector< std::vector< RealType > > read_sk_file (const std::string &fname)
 
std::vector< PosTypeget_grid_from_data (std::vector< std::vector< RealType >> &data)
 
std::vector< RealTypeget_sk_from_data (std::vector< std::vector< RealType >> &data)
 
std::vector< RealTypeget_skerr_from_data (std::vector< std::vector< RealType >> &data)
 

Additional Inherited Members

- Protected Attributes inherited from SkParserBase
bool isParseSuccess
 
bool isGridComputed
 
bool isSkComputed
 
bool hasGrid
 
bool isNormalized
 
Grid_t xgrid
 
Grid_t ygrid
 
Grid_t zgrid
 
std::vector< RealTypeskraw
 
std::vector< RealTypeskerr_raw
 
std::vector< PosTypekgridraw
 
std::vector< RealTypesk
 
std::vector< RealTypeskerr
 
std::vector< PosTypekgrid
 
std::string skname
 

Detailed Description

Class to handle parsing from ASCII file.

This assumes you have process your own S(k) file and has file format of

k_x k_y k_z S(k) err

k0x k0y k0z S(k0) err k1x k1y k1z S(k1) err k2x k2y k2z S(k2) err ...

Definition at line 20 of file SkParserASCII.h.

Member Enumeration Documentation

◆ data_layout

Member Function Documentation

◆ get_grid_from_data()

std::vector< PosType > get_grid_from_data ( std::vector< std::vector< RealType >> &  data)
private

Definition at line 37 of file SkParserASCII.cpp.

References SkParserBase::kgrid, SkParserASCII::KX, SkParserASCII::KY, and SkParserASCII::KZ.

Referenced by SkParserASCII::parse().

38 {
39  std::vector<PosType> kgrid(filedata.size());
40 
41  for (int i = 0; i < filedata.size(); i++)
42  {
43  kgrid[i][0] = filedata[i][KX];
44  kgrid[i][1] = filedata[i][KY];
45  kgrid[i][2] = filedata[i][KZ];
46  }
47 
48  return kgrid;
49 }
std::vector< PosType > kgrid
Definition: SkParserBase.h:65

◆ get_sk_from_data()

std::vector< RealType > get_sk_from_data ( std::vector< std::vector< RealType >> &  data)
private

Definition at line 51 of file SkParserASCII.cpp.

References SkParserASCII::SK, and SkParserBase::sk.

Referenced by SkParserASCII::parse().

52 {
53  std::vector<RealType> sk(filedata.size());
54  for (int i = 0; i < filedata.size(); i++)
55  sk[i] = filedata[i][SK];
56 
57  return sk;
58 }
std::vector< RealType > sk
Definition: SkParserBase.h:63

◆ get_skerr_from_data()

std::vector< RealType > get_skerr_from_data ( std::vector< std::vector< RealType >> &  data)
private

Definition at line 60 of file SkParserASCII.cpp.

References SkParserASCII::SKERR, and SkParserBase::skerr.

Referenced by SkParserASCII::parse().

61 {
62  std::vector<RealType> skerr(filedata.size());
63  for (int i = 0; i < filedata.size(); i++)
64  skerr[i] = filedata[i][SKERR];
65 
66  return skerr;
67 }
std::vector< RealType > skerr
Definition: SkParserBase.h:64

◆ parse()

void parse ( const std::string &  fname)
overridevirtual

Implements SkParserBase.

Definition at line 69 of file SkParserASCII.cpp.

References SkParserASCII::get_grid_from_data(), SkParserASCII::get_sk_from_data(), SkParserASCII::get_skerr_from_data(), SkParserBase::hasGrid, SkParserBase::isNormalized, SkParserBase::isParseSuccess, SkParserBase::kgridraw, SkParserASCII::read_sk_file(), SkParserBase::skerr_raw, and SkParserBase::skraw.

70 {
71  std::vector<std::vector<RealType>> rawdata(0);
72  rawdata = read_sk_file(fname);
73  kgridraw = get_grid_from_data(rawdata);
74  skraw = get_sk_from_data(rawdata);
75  skerr_raw = get_skerr_from_data(rawdata);
76 
77 
78  // cout<<"Ok. In SkParserASCII\n";
79  // cout<<" print kgridraw, skraw, skerr\n";
80  // for(int i=0; i<kgridraw.size();i++) cout<<kgridraw[i][0]<<" "<<kgridraw[i][1]<<" "<<kgridraw[i][2]<<" "<<skraw[i]<<" "<<skerr_raw[i]<<endl;
81  hasGrid = false;
82  isNormalized = true;
83  isParseSuccess = true;
84 }
std::vector< RealType > skerr_raw
Definition: SkParserBase.h:60
std::vector< PosType > kgridraw
Definition: SkParserBase.h:61
std::vector< RealType > skraw
Definition: SkParserBase.h:59
std::vector< RealType > get_sk_from_data(std::vector< std::vector< RealType >> &data)
std::vector< RealType > get_skerr_from_data(std::vector< std::vector< RealType >> &data)
std::vector< PosType > get_grid_from_data(std::vector< std::vector< RealType >> &data)
std::vector< std::vector< RealType > > read_sk_file(const std::string &fname)

◆ read_sk_file()

std::vector< std::vector< RealType > > read_sk_file ( const std::string &  fname)
private

Definition at line 13 of file SkParserASCII.cpp.

References SkParserASCII::KX, SkParserASCII::KY, SkParserASCII::KZ, SkParserASCII::SK, and SkParserASCII::SKERR.

Referenced by SkParserASCII::parse().

14 {
15  std::vector<std::vector<RealType>> skdata(0);
16 
17  std::vector<RealType> tmp(5);
18 
19  std::ifstream f;
20  f.open(fname.c_str(), std::ifstream::in);
21 
22  std::string tmpstring; //just a sink for getline.
23  std::getline(f, tmpstring); //skip the first line.
24 
25  while (!f.eof())
26  {
27  RealType x = 0, y = 0;
28  f >> tmp[KX] >> tmp[KY] >> tmp[KZ] >> tmp[SK] >> tmp[SKERR];
29  //corresponds to kx, ky, kz, S(k), err
30  if (!f.eof())
31  skdata.push_back(tmp);
32  }
33 
34  return skdata;
35 }
QMCTraits::RealType RealType

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