00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #ifndef QMCFWPROPERTIES_H
00014 #define QMCFWPROPERTIES_H
00015
00016 #include <iostream>
00017 #include <string>
00018 #include <math.h>
00019
00020 #include "QMCProperty.h"
00021 #include "QMCInput.h"
00022 #include "Array1D.h"
00023
00024 using namespace std;
00025
00026
00027 enum labels { FW_TE = 0,
00028 FW_KE = 2,
00029 FW_KEg = 4,
00030 FW_PE = 6,
00031 FW_R12 = 8,
00032 FW_R2 = 10,
00033 FW_iR = 12,
00034 FW_iR12 = 14,
00035 FW_TE_2 = 1,
00036 FW_KE_2 = 3,
00037 FW_KEg_2 = 5,
00038 FW_PE_2 = 7,
00039 FW_R12_2 = 9,
00040 FW_R2_2 = 11,
00041 FW_iR_2 = 13,
00042 FW_iR12_2 = 15,
00043 FW_It = 16};
00044
00045 static const int NUM_PROPS = FW_It+1;
00046
00057 class QMCPropertyArrays
00058 {
00059 public:
00060
00065 static int numFutureWalking;
00066
00067 Array1D< Array1D<QMCProperty> > props;
00068 Array1D<string> names;
00069
00073 bool calc_forces;
00074
00078 Array1D< Array2D<QMCProperty> > nuclearForces;
00079
00086 int numDerHessSamples;
00087 Array2D<double> der;
00088
00089
00090
00091 bool hessIsSymmetric;
00092 Array1D< Array2D<double> > hess;
00093
00094 Array1D< QMCProperty > cs_Energies;
00095
00099 bool calc_density;
00100
00104 int nBasisFunc;
00105
00109 Array1D<QMCProperty> chiDensity;
00110
00114 QMCPropertyArrays();
00115 ~QMCPropertyArrays();
00116
00120 void zeroOut();
00121
00122 void matchParametersTo( const QMCPropertyArrays &rhs );
00123
00127 void operator = ( const QMCPropertyArrays &rhs );
00128
00133 QMCPropertyArrays operator + ( QMCPropertyArrays &rhs );
00134
00143 void newSample(QMCPropertyArrays* newProperties, double weight, int nwalkers);
00144
00151 void setCalcForces(bool calcForces, int dim1, int dim2);
00152
00159 void setCalcDensity(bool calcDensity, int nbasisfunctions);
00160
00165 void toXML(ostream& strm);
00166
00172 bool readXML(istream& strm);
00173
00177 friend ostream& operator <<(ostream& strm, QMCPropertyArrays &rhs);
00178 };
00179
00180 #endif
00181
00182
00183
00184
00185
00186
00187
00188
00189