File tree Expand file tree Collapse file tree 2 files changed +26
-7
lines changed
Expand file tree Collapse file tree 2 files changed +26
-7
lines changed Original file line number Diff line number Diff line change @@ -638,6 +638,7 @@ void RunGFCalc(std::vector<std::vector<std::complex<double>>> &GF,
638638 for (int iw = 0 ; iw < ws.size (); iw++) GF[iw][i * nvecs + i] = tGF[iw];
639639 for (int j = i + 1 ; j < nvecs; j++) {
640640 // OFF DIAGONAL ELEMENTS
641+ // NOTE: WORKS ONLY FOR REAL-VALUED WAVE FUNCTIONS.
641642 std::cout << " DOING ELEMENT (" << i << " , " << j << " )" << std::endl;
642643 for (size_t iii = 0 ; iii < nterms; iii++)
643644 twfn (iii) = wfns[i * nterms + iii] + wfns[j * nterms + iii];
Original file line number Diff line number Diff line change @@ -325,14 +325,32 @@ void BandResolvent(
325325 ofile.close ();
326326 }
327327 std::cout << " DONE! COMPUTING RESOLVENT ..." ;
328+ if ( ispart )
329+ {
328330#pragma omp parallel for
329- for (int iw = 0 ; iw < ws.size (); iw++) {
330- for (int k = 0 ; k < nvecs; k++) {
331- for (int l = 0 ; l < nvecs; l++) {
332- for (int i_lan = 0 ; i_lan < nLanIts; i_lan++) {
333- res[iw][k * nvecs + l] += S[i_lan * nvecs + k] * 1 . /
334- (ws[iw] + eigvals[i_lan]) *
335- S[i_lan * nvecs + l];
331+ for (int iw = 0 ; iw < ws.size (); iw++) {
332+ for (int k = 0 ; k < nvecs; k++) {
333+ for (int l = 0 ; l < nvecs; l++) {
334+ for (int i_lan = 0 ; i_lan < nLanIts; i_lan++) {
335+ res[iw][k * nvecs + l] += S[i_lan * nvecs + k] * 1 . /
336+ (ws[iw] + eigvals[i_lan]) *
337+ S[i_lan * nvecs + l];
338+ }
339+ }
340+ }
341+ }
342+ }
343+ else
344+ {
345+ #pragma omp parallel for
346+ for (int iw = 0 ; iw < ws.size (); iw++) {
347+ for (int k = 0 ; k < nvecs; k++) {
348+ for (int l = 0 ; l < nvecs; l++) {
349+ for (int i_lan = 0 ; i_lan < nLanIts; i_lan++) {
350+ res[iw][l * nvecs + k] += S[i_lan * nvecs + k] * 1 . /
351+ (ws[iw] + eigvals[i_lan]) *
352+ S[i_lan * nvecs + l];
353+ }
336354 }
337355 }
338356 }
You can’t perform that action at this time.
0 commit comments