• R/O
  • SSH
  • HTTPS

molds: Commit


Commit MetaInfo

Revision1824 (tree)
Time2016-07-20 12:55:59
Authormikiya_fujii

Log Message

Reduce memory usage for excited states mulliken #36466

Change Summary

Incremental Difference

--- trunk/src/zindo/ZindoS.cpp (revision 1823)
+++ trunk/src/zindo/ZindoS.cpp (revision 1824)
@@ -123,9 +123,8 @@
123123 this->molecule->GetTotalNumberAOs());
124124 if(Parameters::GetInstance()->RequiresMullikenCIS()){
125125 vector<int>* elecStates = Parameters::GetInstance()->GetElectronicStateIndecesMullikenCIS();
126- MallocerFreer::GetInstance()->Free<double>(&this->orbitalElectronPopulationCIS,
126+ MallocerFreer::GetInstance()->Free<double>(&this->orbitalElectronPopulationDiagCIS,
127127 elecStates->size(),
128- this->molecule->GetTotalNumberAOs(),
129128 this->molecule->GetTotalNumberAOs());
130129 MallocerFreer::GetInstance()->Free<double>(&this->atomicElectronPopulationCIS,
131130 elecStates->size(),
@@ -1166,7 +1165,7 @@
11661165 this->matrixCISdimension);
11671166
11681167 // orbital electron population
1169- this->CalcOrbitalElectronPopulationCIS(&this->orbitalElectronPopulationCIS,
1168+ this->CalcOrbitalElectronPopulationCIS(&this->orbitalElectronPopulationDiagCIS,
11701169 this->orbitalElectronPopulation,
11711170 *this->molecule,
11721171 this->fockMatrix,
@@ -1174,12 +1173,15 @@
11741173
11751174 // atomic electron population
11761175 this->CalcAtomicElectronPopulationCIS(&this->atomicElectronPopulationCIS,
1177- this->orbitalElectronPopulationCIS,
1176+ this->orbitalElectronPopulationDiagCIS,
11781177 *this->molecule);
11791178 // atomic unpaired electron population
11801179 this->CalcAtomicUnpairedPopulationCIS(&this->atomicUnpairedPopulationCIS,
1181- this->orbitalElectronPopulationCIS,
1182- *this->molecule);
1180+ this->orbitalElectronPopulationDiagCIS,
1181+ this->orbitalElectronPopulation,
1182+ *this->molecule,
1183+ this->fockMatrix,
1184+ this->matrixCIS);
11831185 }
11841186
11851187 void ZindoS::CalcElectronicTransitionDipoleMomentMatrix(double*** electronicTransitionDipoleMoments,
@@ -1713,7 +1715,7 @@
17131715 }
17141716 }
17151717
1716-void ZindoS::CalcOrbitalElectronPopulationCIS(double**** orbitalElectronPopulationCIS,
1718+void ZindoS::CalcOrbitalElectronPopulationCIS(double*** orbitalElectronPopulationDiagCIS,
17171719 double const* const* orbitalElectronPopulation,
17181720 const MolDS_base::Molecule& molecule,
17191721 double const* const* fockMatrix,
@@ -1723,16 +1725,14 @@
17231725 }
17241726 vector<int>* elecStates = Parameters::GetInstance()->GetElectronicStateIndecesMullikenCIS();
17251727 // malloc or initialize free exciton energies
1726- if(*orbitalElectronPopulationCIS == NULL){
1727- MallocerFreer::GetInstance()->Malloc<double>(orbitalElectronPopulationCIS,
1728+ if(*orbitalElectronPopulationDiagCIS == NULL){
1729+ MallocerFreer::GetInstance()->Malloc<double>(orbitalElectronPopulationDiagCIS,
17281730 elecStates->size(),
1729- molecule.GetTotalNumberAOs(),
17301731 molecule.GetTotalNumberAOs());
17311732 }
17321733 else{
1733- MallocerFreer::GetInstance()->Initialize<double>(*orbitalElectronPopulationCIS,
1734+ MallocerFreer::GetInstance()->Initialize<double>(*orbitalElectronPopulationDiagCIS,
17341735 elecStates->size(),
1735- molecule.GetTotalNumberAOs(),
17361736 molecule.GetTotalNumberAOs());
17371737 }
17381738 // MPI setting of each rank
@@ -1754,39 +1754,37 @@
17541754 #pragma omp parallel for schedule(dynamic, MOLDS_OMP_DYNAMIC_CHUNK_SIZE)
17551755 for(int mu=0; mu<numberAOs; mu++){
17561756 try{
1757- for(int nu=0; nu<numberAOs; nu++){
1758- double value = orbitalElectronPopulation[mu][nu];
1759- for(int i=0; i<numberActiveOcc; i++){
1760- int moI = numberOcc - (i+1);
1761- for(int a=0; a<numberActiveVir; a++){
1762- int moA = numberOcc + a;
1763- int slaterDeterminantIndex = this->GetSlaterDeterminantIndex(i,a);
1764- value += pow(matrixCIS[excitedStateIndex][slaterDeterminantIndex],2.0)
1765- *(-fockMatrix[moI][mu]*fockMatrix[moI][nu]
1766- +fockMatrix[moA][mu]*fockMatrix[moA][nu]);
1767- double tmpVal1=0.0;
1768- for(int b=0; b<numberActiveVir; b++){
1769- int moB = numberOcc + b;
1770- if(moB==moA) continue;
1771- int tmpSDIndex = this->GetSlaterDeterminantIndex(i,b);
1772- tmpVal1 += matrixCIS[excitedStateIndex][tmpSDIndex]*fockMatrix[moB][nu];
1773- }
1774- double tmpVal2=0.0;
1775- for(int j=0; j<numberActiveOcc; j++){
1776- int moJ = numberOcc - (j+1);
1777- if(moJ==moI) continue;
1778- int tmpSDIndex = this->GetSlaterDeterminantIndex(j,a);
1779- tmpVal2 += matrixCIS[excitedStateIndex][tmpSDIndex]*fockMatrix[moJ][mu];
1780- }
1781- value += matrixCIS[excitedStateIndex][slaterDeterminantIndex]
1782- *(fockMatrix[moA][mu]*tmpVal1 + fockMatrix[moI][nu]*tmpVal2);
1757+ double value = orbitalElectronPopulation[mu][mu];
1758+ for(int i=0; i<numberActiveOcc; i++){
1759+ int moI = numberOcc - (i+1);
1760+ for(int a=0; a<numberActiveVir; a++){
1761+ int moA = numberOcc + a;
1762+ int slaterDeterminantIndex = this->GetSlaterDeterminantIndex(i,a);
1763+ value += pow(matrixCIS[excitedStateIndex][slaterDeterminantIndex],2.0)
1764+ *(-fockMatrix[moI][mu]*fockMatrix[moI][mu]
1765+ +fockMatrix[moA][mu]*fockMatrix[moA][mu]);
1766+ double tmpVal1=0.0;
1767+ for(int b=0; b<numberActiveVir; b++){
1768+ int moB = numberOcc + b;
1769+ if(moB==moA) continue;
1770+ int tmpSDIndex = this->GetSlaterDeterminantIndex(i,b);
1771+ tmpVal1 += matrixCIS[excitedStateIndex][tmpSDIndex]*fockMatrix[moB][mu];
17831772 }
1773+ double tmpVal2=0.0;
1774+ for(int j=0; j<numberActiveOcc; j++){
1775+ int moJ = numberOcc - (j+1);
1776+ if(moJ==moI) continue;
1777+ int tmpSDIndex = this->GetSlaterDeterminantIndex(j,a);
1778+ tmpVal2 += matrixCIS[excitedStateIndex][tmpSDIndex]*fockMatrix[moJ][mu];
1779+ }
1780+ value += matrixCIS[excitedStateIndex][slaterDeterminantIndex]
1781+ *(fockMatrix[moA][mu]*tmpVal1 + fockMatrix[moI][mu]*tmpVal2);
17841782 }
1785- (*orbitalElectronPopulationCIS)[k][mu][nu] = value;
17861783 }
1784+ (*orbitalElectronPopulationDiagCIS)[k][mu] = value;
17871785 } //end of try-loop
17881786 catch(MolDSException ex){
1789- #pragma omp critical
1787+#pragma omp critical
17901788 ex.Serialize(errorStream);
17911789 }
17921790 } // end of mu-loop
@@ -1795,8 +1793,8 @@
17951793 int tag = k;
17961794 int source = calcRank;
17971795 int dest = mpiHeadRank;
1798- int num = numberAOs*numberAOs;
1799- double* buff = &(*orbitalElectronPopulationCIS)[k][0][0];
1796+ int num = numberAOs;
1797+ double* buff = &(*orbitalElectronPopulationDiagCIS)[k][0];
18001798 if(mpiRank == mpiHeadRank && mpiRank != calcRank){
18011799 asyncCommunicator.SetRecvedMessage(buff, num, source, tag);
18021800 }
@@ -1815,15 +1813,15 @@
18151813 throw MolDSException::Deserialize(errorStream);
18161814 }
18171815 for(int k=0; k<elecStates->size(); k++){
1818- int num = numberAOs*numberAOs;
1819- double* buff = &(*orbitalElectronPopulationCIS)[k][0][0];
1816+ int num = numberAOs;
1817+ double* buff = &(*orbitalElectronPopulationDiagCIS)[k][0];
18201818 MolDS_mpi::MpiProcess::GetInstance()->Broadcast(buff, num, mpiHeadRank);
18211819 }
18221820 }
18231821
18241822 void ZindoS::CalcAtomicElectronPopulationCIS(double*** atomicElectronPopulationCIS,
1825- double const* const* const* orbitalElectronPopulationCIS,
1826- const Molecule& molecule) const{
1823+ double const* const* orbitalElectronPopulationDiagCIS,
1824+ const Molecule& molecule) const{
18271825 if(!Parameters::GetInstance()->RequiresMullikenCIS()){
18281826 return;
18291827 }
@@ -1832,13 +1830,13 @@
18321830 // malloc or initialize free exciton energies
18331831 if(*atomicElectronPopulationCIS == NULL){
18341832 MallocerFreer::GetInstance()->Malloc<double>(atomicElectronPopulationCIS,
1835- elecStates->size(),
1836- totalNumberAtoms);
1833+ elecStates->size(),
1834+ totalNumberAtoms);
18371835 }
18381836 else{
18391837 MallocerFreer::GetInstance()->Initialize<double>(*atomicElectronPopulationCIS,
1840- elecStates->size(),
1841- totalNumberAtoms);
1838+ elecStates->size(),
1839+ totalNumberAtoms);
18421840 }
18431841
18441842 // MPI setting of each rank
@@ -1854,13 +1852,13 @@
18541852 int excitedStateIndex = (*elecStates)[k]-1;
18551853 int calcRank = k%mpiSize;
18561854 if(calcRank == mpiRank){
1857- #pragma omp parallel for schedule(dynamic, MOLDS_OMP_DYNAMIC_CHUNK_SIZE)
1855+#pragma omp parallel for schedule(dynamic, MOLDS_OMP_DYNAMIC_CHUNK_SIZE)
18581856 for(int a=0; a<totalNumberAtoms; a++){
18591857 try{
18601858 int firstAOIndex = molecule.GetAtomVect()[a]->GetFirstAOIndex();
18611859 int numberAOs = molecule.GetAtomVect()[a]->GetValenceSize();
18621860 for(int i=firstAOIndex; i<firstAOIndex+numberAOs; i++){
1863- (*atomicElectronPopulationCIS)[k][a] += orbitalElectronPopulationCIS[k][i][i];
1861+ (*atomicElectronPopulationCIS)[k][a] += orbitalElectronPopulationDiagCIS[k][i];
18641862 }
18651863 }// end of try-region
18661864 catch(MolDSException ex){
@@ -1898,8 +1896,11 @@
18981896 }
18991897
19001898 void ZindoS::CalcAtomicUnpairedPopulationCIS(double*** atomicUnpairedPopulationCIS,
1901- double const* const* const* orbitalElectronPopulationCIS,
1902- const Molecule& molecule) const{
1899+ double const* const* orbitalElectronPopulationDiagCIS,
1900+ double const* const* orbitalElectronPopulation,
1901+ const MolDS_base::Molecule& molecule,
1902+ double const* const* fockMatrix,
1903+ double const* const* matrixCIS) const{
19031904 if(!Parameters::GetInstance()->RequiresMullikenCIS()){
19041905 return;
19051906 }
@@ -1907,6 +1908,10 @@
19071908 return;
19081909 }
19091910 int totalNumberAtoms = molecule.GetAtomVect().size();
1911+ int numberAOs = molecule.GetTotalNumberAOs();
1912+ int numberOcc = molecule.GetTotalNumberValenceElectrons()/2;
1913+ int numberActiveOcc = Parameters::GetInstance()->GetActiveOccCIS();
1914+ int numberActiveVir = Parameters::GetInstance()->GetActiveVirCIS();
19101915 vector<int>* elecStates = Parameters::GetInstance()->GetElectronicStateIndecesMullikenCIS();
19111916 // malloc or initialize free exciton energies
19121917 if(*atomicUnpairedPopulationCIS == NULL){
@@ -1934,22 +1939,65 @@
19341939 int calcRank = k%mpiSize;
19351940 if(calcRank == mpiRank){
19361941 #pragma omp parallel for schedule(dynamic, MOLDS_OMP_DYNAMIC_CHUNK_SIZE)
1937- for(int a=0; a<totalNumberAtoms; a++){
1942+ for(int atom=0; atom<totalNumberAtoms; atom++){
19381943 try{
1939- int firstAOIndex = molecule.GetAtomVect()[a]->GetFirstAOIndex();
1940- int numberAOs = molecule.GetAtomVect()[a]->GetValenceSize();
1941- (*atomicUnpairedPopulationCIS)[k][a] = 0.0;
1942- for(int i=firstAOIndex; i<firstAOIndex+numberAOs; i++){
1944+ int firstAOIndex = molecule.GetAtomVect()[atom]->GetFirstAOIndex();
1945+ int numberAOs = molecule.GetAtomVect()[atom]->GetValenceSize();
1946+ (*atomicUnpairedPopulationCIS)[k][atom] = 0.0;
1947+ for(int mu=firstAOIndex; mu<firstAOIndex+numberAOs; mu++){
19431948 double orbitalSquarePopulation = 0.0;
19441949 int totalNumberAOs = molecule.GetTotalNumberAOs();
1945- for(int j=0; j<totalNumberAOs; j++) {
1946- orbitalSquarePopulation += orbitalElectronPopulationCIS[k][i][j] * orbitalElectronPopulationCIS[k][j][i];
1950+ for(int nu=0; nu<totalNumberAOs; nu++) {
1951+
1952+ // calculation of off-diag of orbitalElectronPopulationCIS
1953+ double oepMuNu=0.0;
1954+ double oepNuMu=0.0;
1955+ oepMuNu = orbitalElectronPopulation[mu][nu];
1956+ oepNuMu = orbitalElectronPopulation[nu][mu];
1957+ for(int i=0; i<numberActiveOcc; i++){
1958+ int moI = numberOcc - (i+1);
1959+ for(int a=0; a<numberActiveVir; a++){
1960+ int moA = numberOcc + a;
1961+ int slaterDeterminantIndex = this->GetSlaterDeterminantIndex(i,a);
1962+ double tmp = 0.0;
1963+ tmp = pow(matrixCIS[excitedStateIndex][slaterDeterminantIndex],2.0)
1964+ *(-fockMatrix[moI][mu]*fockMatrix[moI][nu]
1965+ +fockMatrix[moA][mu]*fockMatrix[moA][nu]);
1966+ oepMuNu += tmp;
1967+ oepNuMu += tmp;
1968+ double tmpVal1MuNu=0.0;
1969+ double tmpVal1NuMu=0.0;
1970+ for(int b=0; b<numberActiveVir; b++){
1971+ int moB = numberOcc + b;
1972+ if(moB==moA) continue;
1973+ int tmpSDIndex = this->GetSlaterDeterminantIndex(i,b);
1974+ tmpVal1MuNu += matrixCIS[excitedStateIndex][tmpSDIndex]*fockMatrix[moB][nu];
1975+ tmpVal1NuMu += matrixCIS[excitedStateIndex][tmpSDIndex]*fockMatrix[moB][mu];
1976+ }
1977+ double tmpVal2MuNu=0.0;
1978+ double tmpVal2NuMu=0.0;
1979+ for(int j=0; j<numberActiveOcc; j++){
1980+ int moJ = numberOcc - (j+1);
1981+ if(moJ==moI) continue;
1982+ int tmpSDIndex = this->GetSlaterDeterminantIndex(j,a);
1983+ tmpVal2MuNu += matrixCIS[excitedStateIndex][tmpSDIndex]*fockMatrix[moJ][mu];
1984+ tmpVal2NuMu += matrixCIS[excitedStateIndex][tmpSDIndex]*fockMatrix[moJ][nu];
1985+ }
1986+ oepMuNu += matrixCIS[excitedStateIndex][slaterDeterminantIndex]
1987+ *(fockMatrix[moA][mu]*tmpVal1MuNu + fockMatrix[moI][nu]*tmpVal2MuNu);
1988+ oepNuMu += matrixCIS[excitedStateIndex][slaterDeterminantIndex]
1989+ *(fockMatrix[moA][nu]*tmpVal1NuMu + fockMatrix[moI][mu]*tmpVal2NuMu);
1990+ }
1991+ }
1992+ orbitalSquarePopulation += oepNuMu * oepNuMu;
1993+
19471994 }
1948- (*atomicUnpairedPopulationCIS)[k][a] += 2.0 * orbitalElectronPopulationCIS[k][i][i] - orbitalSquarePopulation;
1995+ (*atomicUnpairedPopulationCIS)[k][atom] += 2.0 * orbitalElectronPopulationDiagCIS[k][mu]
1996+ - orbitalSquarePopulation;
19491997 }
19501998 } // end of try-region
19511999 catch(MolDSException ex){
1952- #pragma omp critical
2000+#pragma omp critical
19532001 ex.Serialize(errorStream);
19542002 }
19552003 } // end of a-loop
@@ -1995,11 +2043,11 @@
19952043 double eneEv = this->excitedEnergies[k]/eV2AU;
19962044 double eneNm = 1.0/(this->excitedEnergies[k]/nmin2AU);
19972045 this->OutputLog(boost::format("%s\t%d\t%e\t%e\t%e\t")
1998- % this->messageExcitedStatesEnergies
1999- % (k+1)
2000- % this->excitedEnergies[k]
2001- % eneEv
2002- % eneNm);
2046+ % this->messageExcitedStatesEnergies
2047+ % (k+1)
2048+ % this->excitedEnergies[k]
2049+ % eneEv
2050+ % eneNm);
20032051
20042052 // sort eigen vector coefficeits of CIS and output
20052053 vector<CISEigenVectorCoefficient> cisEigenVectorCoefficients;
@@ -2006,8 +2054,8 @@
20062054 this->SortCISEigenVectorCoefficients(&cisEigenVectorCoefficients, this->matrixCIS[k]);
20072055 for(int l=0; l<Parameters::GetInstance()->GetNumberPrintCoefficientsCIS(); l++){
20082056 this->OutputLog(boost::format("%e (%d -> %d)\t") % cisEigenVectorCoefficients[l].coefficient
2009- % cisEigenVectorCoefficients[l].occIndex
2010- % cisEigenVectorCoefficients[l].virIndex);
2057+ % cisEigenVectorCoefficients[l].occIndex
2058+ % cisEigenVectorCoefficients[l].virIndex);
20112059 }
20122060 this->OutputLog("\n");
20132061 }
@@ -2031,12 +2079,12 @@
20312079 this->OutputLog(this->messageExcitonEnergiesCISTitle);
20322080 for(int k=0; k<Parameters::GetInstance()->GetNumberExcitedStatesCIS(); k++){
20332081 this->OutputLog(boost::format("%s\t%d\t%e\t%e\t%e\t%e\n")
2034- % this->messageExcitonEnergiesShortCIS
2035- % (k+1)
2036- % this->freeExcitonEnergiesCIS[k]
2037- % (this->freeExcitonEnergiesCIS[k]/eV2AU)
2038- % (this->excitedEnergies[k]-this->freeExcitonEnergiesCIS[k])
2039- %((this->excitedEnergies[k]-this->freeExcitonEnergiesCIS[k])/eV2AU));
2082+ % this->messageExcitonEnergiesShortCIS
2083+ % (k+1)
2084+ % this->freeExcitonEnergiesCIS[k]
2085+ % (this->freeExcitonEnergiesCIS[k]/eV2AU)
2086+ % (this->excitedEnergies[k]-this->freeExcitonEnergiesCIS[k])
2087+ %((this->excitedEnergies[k]-this->freeExcitonEnergiesCIS[k])/eV2AU));
20402088 }
20412089 }
20422090 this->OutputLog("\n");
@@ -2044,10 +2092,10 @@
20442092 // output Hole density
20452093 if(Parameters::GetInstance()->RequiresHolePlot()){
20462094 MolDS_base_loggers::DensityLogger* holeDensityLogger = new MolDS_base_loggers::HoleDensityLogger(
2047- *this->molecule,
2048- this->fockMatrix,
2049- this->matrixCIS,
2050- this->theory);
2095+ *this->molecule,
2096+ this->fockMatrix,
2097+ this->matrixCIS,
2098+ this->theory);
20512099 holeDensityLogger->DrawDensity(*(Parameters::GetInstance()->GetElecIndecesHolePlot()));
20522100 delete holeDensityLogger;
20532101 }
@@ -2055,10 +2103,10 @@
20552103 // output particle density
20562104 if(Parameters::GetInstance()->RequiresParticlePlot()){
20572105 MolDS_base_loggers::DensityLogger* particleDensityLogger = new MolDS_base_loggers::ParticleDensityLogger(
2058- *this->molecule,
2059- this->fockMatrix,
2060- this->matrixCIS,
2061- this->theory);
2106+ *this->molecule,
2107+ this->fockMatrix,
2108+ this->matrixCIS,
2109+ this->theory);
20622110 particleDensityLogger->DrawDensity(*(Parameters::GetInstance()->GetElecIndecesParticlePlot()));
20632111 delete particleDensityLogger;
20642112 }
@@ -2078,16 +2126,16 @@
20782126 temp += pow(this->electronicTransitionDipoleMoments[k][k][ZAxis]+this->coreDipoleMoment[ZAxis],2.0);
20792127 magnitude = sqrt(temp);
20802128 this->OutputLog(boost::format("\t%s\t%d\t%e\t%e\t%e\t%e\t\t%e\t%e\t%e\t%e\n")
2081- % this->messageTotalDipoleMoment
2082- % k
2083- % (this->electronicTransitionDipoleMoments[k][k][XAxis]+this->coreDipoleMoment[XAxis])
2084- % (this->electronicTransitionDipoleMoments[k][k][YAxis]+this->coreDipoleMoment[YAxis])
2085- % (this->electronicTransitionDipoleMoments[k][k][ZAxis]+this->coreDipoleMoment[ZAxis])
2086- % magnitude
2087- % ((this->electronicTransitionDipoleMoments[k][k][XAxis]+this->coreDipoleMoment[XAxis])/debye2AU)
2088- % ((this->electronicTransitionDipoleMoments[k][k][YAxis]+this->coreDipoleMoment[YAxis])/debye2AU)
2089- % ((this->electronicTransitionDipoleMoments[k][k][ZAxis]+this->coreDipoleMoment[ZAxis])/debye2AU)
2090- % (magnitude/debye2AU));
2129+ % this->messageTotalDipoleMoment
2130+ % k
2131+ % (this->electronicTransitionDipoleMoments[k][k][XAxis]+this->coreDipoleMoment[XAxis])
2132+ % (this->electronicTransitionDipoleMoments[k][k][YAxis]+this->coreDipoleMoment[YAxis])
2133+ % (this->electronicTransitionDipoleMoments[k][k][ZAxis]+this->coreDipoleMoment[ZAxis])
2134+ % magnitude
2135+ % ((this->electronicTransitionDipoleMoments[k][k][XAxis]+this->coreDipoleMoment[XAxis])/debye2AU)
2136+ % ((this->electronicTransitionDipoleMoments[k][k][YAxis]+this->coreDipoleMoment[YAxis])/debye2AU)
2137+ % ((this->electronicTransitionDipoleMoments[k][k][ZAxis]+this->coreDipoleMoment[ZAxis])/debye2AU)
2138+ % (magnitude/debye2AU));
20912139 }
20922140 this->OutputLog("\n");
20932141
--- trunk/src/zindo/ZindoS.h (revision 1823)
+++ trunk/src/zindo/ZindoS.h (revision 1824)
@@ -199,17 +199,20 @@
199199 double const* energiesMO,
200200 double const* const* matrixCIS,
201201 int matrixCISdimension) const;
202- void CalcOrbitalElectronPopulationCIS(double**** orbitalElectronPopulationCIS,
202+ void CalcOrbitalElectronPopulationCIS(double*** orbitalElectronPopulationDiagCIS,
203203 double const* const* orbitalElectronPopulation,
204204 const MolDS_base::Molecule& molecule,
205205 double const* const* fockMatrix,
206206 double const* const* matrixCIS) const;
207207 void CalcAtomicElectronPopulationCIS(double*** atomicElectronPopulationCIS,
208- double const* const* const* orbitalElectronPopulationCIS,
208+ double const* const* orbitalElectronPopulationDiagCIS,
209209 const MolDS_base::Molecule& molecule) const;
210210 void CalcAtomicUnpairedPopulationCIS(double*** atomicUnpairedPopulationCIS,
211- double const* const* const* orbitalElectronPopulationCIS,
212- const MolDS_base::Molecule& molecule) const;
211+ double const* const* orbitalElectronPopulationDiagCIS,
212+ double const* const* orbitalElectronPopulation,
213+ const MolDS_base::Molecule& molecule,
214+ double const* const* fockMatrix,
215+ double const* const* matrixCIS) const;
213216 void CalcElectronicTransitionDipoleMomentMatrix(double*** electronicTransitionDipoleMoments,
214217 double const* const* fockMatrix,
215218 double const* const* matrixCIS,
--- trunk/src/cndo/Cndo2.cpp (revision 1823)
+++ trunk/src/cndo/Cndo2.cpp (revision 1824)
@@ -82,15 +82,15 @@
8282 this->matrixCISdimension = 0;
8383 this->fockMatrix = NULL;
8484 this->energiesMO = NULL;
85- this->orbitalElectronPopulation = NULL;
86- this->orbitalElectronPopulationCIS = NULL;
87- this->atomicElectronPopulation = NULL;
88- this->atomicElectronPopulationCIS = NULL;
89- this->atomicUnpairedPopulationCIS = NULL;
90- this->overlapAOs = NULL;
91- this->twoElecsTwoAtomCores = NULL;
92- this->twoElecsAtomEpcCores = NULL;
93- this->cartesianMatrix = NULL;
85+ this->orbitalElectronPopulation = NULL;
86+ this->orbitalElectronPopulationDiagCIS = NULL;
87+ this->atomicElectronPopulation = NULL;
88+ this->atomicElectronPopulationCIS = NULL;
89+ this->atomicUnpairedPopulationCIS = NULL;
90+ this->overlapAOs = NULL;
91+ this->twoElecsTwoAtomCores = NULL;
92+ this->twoElecsAtomEpcCores = NULL;
93+ this->cartesianMatrix = NULL;
9494 this->electronicTransitionDipoleMoments = NULL;
9595 this->coreDipoleMoment = NULL;
9696 this->normalForceConstants = NULL;
--- trunk/src/cndo/Cndo2.h (revision 1823)
+++ trunk/src/cndo/Cndo2.h (revision 1824)
@@ -112,7 +112,7 @@
112112 double** fockMatrix;
113113 double* energiesMO;
114114 double** orbitalElectronPopulation; //P_{\mu\nu} of (2.50) in J. A. Pople book.
115- double*** orbitalElectronPopulationCIS;
115+ double** orbitalElectronPopulationDiagCIS;
116116 double* atomicElectronPopulation; //P_{AB} of (3.21) in J. A. Pople book.
117117 double** atomicElectronPopulationCIS;
118118 double** atomicUnpairedPopulationCIS;
Show on old repository browser