JDFTx  1.2.0
Dump_internal.h
1 /*-------------------------------------------------------------------
2 Copyright 2014 Deniz Gunceler, Ravishankar Sundararaman
3 
4 This file is part of JDFTx.
5 
6 JDFTx is free software: you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation, either version 3 of the License, or
9 (at your option) any later version.
10 
11 JDFTx is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15 
16 You should have received a copy of the GNU General Public License
17 along with JDFTx. If not, see <http://www.gnu.org/licenses/>.
18 -------------------------------------------------------------------*/
19 
20 #ifndef JDFTX_ELECTRONIC_DUMP_INTERNAL_H
21 #define JDFTX_ELECTRONIC_DUMP_INTERNAL_H
22 
23 #include <electronic/common.h>
24 #include <core/ScalarFieldArray.h>
25 #include <vector>
26 
27 //-------------------- Implemented in DumpSIC.cpp ---------------------------
28 
30 {
31 public:
32  DumpSelfInteractionCorrection(const Everything& everything);
34  double operator()(std::vector<diagMatrix>* correctedEigenvalues);
35  double coulombExciton(int q1, int n1, int q2, int n2);
36  void dump(const char* filenamePattern);
37  bool needsTau;
38 private:
39  const Everything* e;
40  double calcSelfInteractionError(int q, int n);
41  std::vector<ColumnBundle> DC;
42 };
43 
44 //---------------- Implemented in DumpExcitationsMoments.cpp -----------------
45 
46 void dumpExcitations(const Everything& e, const char* filename);
47 
48 namespace Moments
49 { void dumpMoment(const Everything& e, const char* filename, int n, vector3<> origin);
50 }
51 
52 namespace XC_Analysis
53 { ScalarFieldArray tauWeizsacker(const Everything& e);
54  ScalarFieldArray spness(const Everything& e);
55  ScalarFieldArray sHartree(const Everything& e);
56 }
57 
58 //---------------- Implemented in DumpChargedDefects.cpp -----------------
59 
61 { string dtotFname;
62  double sigma;
63  vector3<> Efield;
64 
65  void dump(const Everything& e, ScalarField d_tot) const;
66 };
67 
69 { struct Center
70  { vector3<> pos; //defect center in lattice coordinates
71  double q, sigma; //defect electron-count and Gaussian width
72  };
73  std::vector<Center> center; //list of defect positions in unit cell
74 
75  string dtotFname; //electrostatic potential from reference neutral calculation
76 
77  double bulkEps; //bulk dielectric constant (Bulk mode only)
78  string slabEpsFname; //slab dielectric profile (Slab mode only)
79 
80  double rMin, rSigma;
81 
82  void dump(const Everything& e, ScalarField d_tot) const;
83 };
84 
85 
86 #endif // JDFTX_ELECTRONIC_DUMP_INTERNAL_H
std::vector< ScalarField > ScalarFieldArray
dynamic size collection of real space scalar fields
Definition: ScalarFieldArray.h:32
Definition: Dump_internal.h:60
Definition: Dump_internal.h:29
Definition: Everything.h:41
classes ScalarFieldArray, ScalarFieldTildeArray and just enough operators to enable CG w...
Definition: Dump_internal.h:68
Definition: Dump_internal.h:52
double coulombExciton(int q1, int n1, int q2, int n2)
Evaluates the self interaction energy and (optionally) returns the corrected band eigenvalues...
std::shared_ptr< ScalarFieldData > ScalarField
A smart reference-counting pointer to ScalarFieldData.
Definition: ScalarField.h:41
Definition: Dump.h:96
void dump(const char *filenamePattern)
Approximates the coulomb excitonic contribution between two states.
Definition: Dump_internal.h:69