修订版 | 1c281a5e6485d165aeb9eff0af17d6e3ee15ecb6 (tree) |
---|---|
时间 | 2011-11-24 22:45:40 |
作者 | Mikiya Fujii <mikiya.fujii@gmai...> |
Commiter | Mikiya Fujii |
CIS analytic force for NDDO series are refactored. #26396 #26626 #26630
git-svn-id: https://svn.sourceforge.jp/svnroot/molds/MolDS/trunk@315 1136aad2-a195-0410-b898-f5ea1d11b9d8
@@ -1712,7 +1712,8 @@ void Mndo::CalcForceExcitedElecCoreAttractionPart(double* force, | ||
1712 | 1712 | for(int mu=firstAOIndexA; mu<firstAOIndexA+numberAOsA; mu++){ |
1713 | 1713 | for(int nu=firstAOIndexA; nu<firstAOIndexA+numberAOsA; nu++){ |
1714 | 1714 | for(int i=0; i<CartesianType_end; i++){ |
1715 | - force[i] += this->zMatrixForce[elecStateIndex][mu][nu] | |
1715 | + force[i] += -1.0 | |
1716 | + *this->zMatrixForce[elecStateIndex][mu][nu] | |
1716 | 1717 | *this->GetElectronCoreAttractionFirstDerivative( |
1717 | 1718 | atomAIndex, |
1718 | 1719 | atomBIndex, |
@@ -1746,7 +1747,8 @@ void Mndo::CalcForceExcitedOverlapPart(double* force, | ||
1746 | 1747 | atomB->GetValence()[nu-firstAOIndexB]); |
1747 | 1748 | bondParameter *= 0.5; |
1748 | 1749 | for(int i=0; i<CartesianType_end; i++){ |
1749 | - force[i] += this->zMatrixForce[elecStateIndex][mu][nu] | |
1750 | + force[i] += -1.0 | |
1751 | + *this->zMatrixForce[elecStateIndex][mu][nu] | |
1750 | 1752 | *bondParameter |
1751 | 1753 | *overlapDer[mu-firstAOIndexA][nu-firstAOIndexB][i]; |
1752 | 1754 | } |
@@ -1770,14 +1772,14 @@ void Mndo::CalcForceExcitedTwoElecPart(double* force, | ||
1770 | 1772 | for(int lambda=firstAOIndexB; lambda<firstAOIndexB+numberAOsB; lambda++){ |
1771 | 1773 | for(int sigma=firstAOIndexB; sigma<firstAOIndexB+numberAOsB; sigma++){ |
1772 | 1774 | for(int i=0; i<CartesianType_end; i++){ |
1773 | - force[i] += this->zMatrixForce[elecStateIndex][mu][nu] | |
1775 | + force[i] -= this->zMatrixForce[elecStateIndex][mu][nu] | |
1774 | 1776 | *this->orbitalElectronPopulation[lambda][sigma] |
1775 | 1777 | *twoElecTwoCoreFirstDeriv[mu-firstAOIndexA] |
1776 | 1778 | [nu-firstAOIndexA] |
1777 | 1779 | [lambda-firstAOIndexB] |
1778 | 1780 | [sigma-firstAOIndexB] |
1779 | 1781 | [i]; |
1780 | - force[i] -= 0.50 | |
1782 | + force[i] += 0.50 | |
1781 | 1783 | *this->zMatrixForce[elecStateIndex][mu][lambda] |
1782 | 1784 | *this->orbitalElectronPopulation[nu][sigma] |
1783 | 1785 | *twoElecTwoCoreFirstDeriv[mu-firstAOIndexA] |
@@ -1909,12 +1911,12 @@ void Mndo::CalcForce(vector<int> elecStates){ | ||
1909 | 1911 | twoElecTwoCoreFirstDeriv); |
1910 | 1912 | // sum up contributions from response part (excited state) |
1911 | 1913 | for(int i=0; i<CartesianType_end; i++){ |
1912 | - this->matrixForce[n][b][i] += forceExcitedElecCoreAttPart[i]; | |
1913 | - this->matrixForce[n][b][i] += forceExcitedOverlapPart[i]; | |
1914 | - this->matrixForce[n][b][i] += forceExcitedTwoElecPart[i]; | |
1915 | - this->matrixForce[n][a][i] -= forceExcitedElecCoreAttPart[i]; | |
1916 | - this->matrixForce[n][a][i] -= forceExcitedOverlapPart[i]; | |
1917 | - this->matrixForce[n][a][i] -= forceExcitedTwoElecPart[i]; | |
1914 | + this->matrixForce[n][a][i] += forceExcitedElecCoreAttPart[i]; | |
1915 | + this->matrixForce[n][a][i] += forceExcitedOverlapPart[i]; | |
1916 | + this->matrixForce[n][a][i] += forceExcitedTwoElecPart[i]; | |
1917 | + this->matrixForce[n][b][i] -= forceExcitedElecCoreAttPart[i]; | |
1918 | + this->matrixForce[n][b][i] -= forceExcitedOverlapPart[i]; | |
1919 | + this->matrixForce[n][b][i] -= forceExcitedTwoElecPart[i]; | |
1918 | 1920 | } |
1919 | 1921 | |
1920 | 1922 | } |