QMCPACK
SkParserASCII.cpp
Go to the documentation of this file.
1 #include "SkParserASCII.h"
3 #include "Configuration.h"
4 #include <fstream>
5 #include <iostream>
6 
7 
8 namespace qmcplusplus
9 {
12 
13 std::vector<std::vector<RealType>> SkParserASCII::read_sk_file(const std::string& fname)
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 }
36 
37 std::vector<PosType> SkParserASCII::get_grid_from_data(std::vector<std::vector<RealType>>& filedata)
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 }
50 
51 std::vector<RealType> SkParserASCII::get_sk_from_data(std::vector<std::vector<RealType>>& filedata)
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 }
59 
60 std::vector<RealType> SkParserASCII::get_skerr_from_data(std::vector<std::vector<RealType>>& filedata)
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 }
68 
69 void SkParserASCII::parse(const std::string& fname)
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 }
85 } // namespace qmcplusplus
std::vector< RealType > skerr_raw
Definition: SkParserBase.h:60
helper functions for EinsplineSetBuilder
Definition: Configuration.h:43
QTBase::RealType RealType
Definition: Configuration.h:58
std::vector< PosType > kgridraw
Definition: SkParserBase.h:61
std::vector< RealType > skraw
Definition: SkParserBase.h:59
void parse(const std::string &fname) override
std::vector< RealType > get_sk_from_data(std::vector< std::vector< RealType >> &data)
std::vector< PosType > kgrid
Definition: SkParserBase.h:65
QMCTraits::PosType PosType
std::vector< RealType > get_skerr_from_data(std::vector< std::vector< RealType >> &data)
QTBase::PosType PosType
Definition: Configuration.h:61
QMCTraits::RealType RealType
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)
std::vector< RealType > sk
Definition: SkParserBase.h:63
std::vector< RealType > skerr
Definition: SkParserBase.h:64