@@ -75,38 +75,35 @@ void MD_func::kinetic_stress(
7575// This function calculates the classical kinetic energy of atoms
7676// and its contribution to stress.
7777// ----------------------------------------------------------------------------
78- if (GlobalV::MY_RANK==0 ) // only first rank do md
78+ kinetic = MD_func::GetAtomKE (unit_in.nat , vel, allmass);
79+
80+ if (GlobalV::CAL_STRESS)
7981 {
80- kinetic = MD_func::GetAtomKE (unit_in.nat , vel, allmass);
82+ ModuleBase::matrix temp;
83+ temp.create (3 ,3 ); // initialize
8184
82- if (GlobalV::CAL_STRESS )
85+ for ( int ion= 0 ; ion<unit_in. nat ; ++ion )
8386 {
84- ModuleBase::matrix temp;
85- temp.create (3 ,3 ); // initialize
86-
87- for (int ion=0 ; ion<unit_in.nat ; ++ion)
87+ for (int i=0 ; i<3 ; ++i)
8888 {
89- for (int i= 0 ; i <3 ; ++i )
89+ for (int j=i; j <3 ; ++j )
9090 {
91- for (int j=i; j<3 ; ++j)
92- {
93- temp (i, j) += allmass[ion] * vel[ion][i] * vel[ion][j];
94- }
91+ temp (i, j) += allmass[ion] * vel[ion][i] * vel[ion][j];
9592 }
9693 }
94+ }
9795
98- for (int i=0 ; i<3 ; ++i)
96+ for (int i=0 ; i<3 ; ++i)
97+ {
98+ for (int j=0 ; j<3 ; ++j)
9999 {
100- for (int j=0 ; j<3 ; ++j)
100+ if (j<i)
101+ {
102+ stress (i, j) = stress (j, i);
103+ }
104+ else
101105 {
102- if (j<i)
103- {
104- stress (i, j) = stress (j, i);
105- }
106- else
107- {
108- stress (i, j) = temp (i, j)/unit_in.omega ;
109- }
106+ stress (i, j) = temp (i, j)/unit_in.omega ;
110107 }
111108 }
112109 }
0 commit comments