//------------------------------------------------------------------------------ void OrbitalEquation::computeUMatrix(const cx_mat &C) { cx_vec Ui(nGrid); cx_vec rho_iqrs_Cs(nGrid); for(int j=0; j<nOrbitals; j++){ U.col(j) = hC->col(j); for(int i=0; i<nOrbitals; i++){ Ui.zeros(); for(int q=0; q<nOrbitals; q++){ for(int r=0; r<nOrbitals; r++){ rho_iqrs_Cs.zeros(); for(int s=0; s<nOrbitals; s++){ rho_iqrs_Cs += findRho2(i,q,r,s) * C.col(s); } Ui += V->meanField(q,r)%rho_iqrs_Cs; } } U.col(j) += invRho(j,i)*Ui; } } #ifdef DEBUG cout << "OrbitalEquation::computeUMatrix()" << endl; // cout << "U = " << endl << U << endl; // exit(0); // Hardcoded the case for 2 electrons, 1 slater determinant, one spatial orbital. // rightHandSide = (I - C.col(0)*C.col(0).t())*(hC->col(0) + diagmat(V->meanField(0,0))*C.col(0)); #endif }
void Cube::RotateRight() { Ui(); SaveState(); subCubes[0][1][0] = ROTATE_RIGHT(oldSubCubes[2][1][0]); subCubes[1][1][0] = ROTATE_RIGHT(oldSubCubes[2][1][1]); subCubes[2][1][0] = ROTATE_RIGHT(oldSubCubes[2][1][2]); subCubes[0][1][1] = ROTATE_RIGHT(oldSubCubes[1][1][0]); subCubes[1][1][1] = ROTATE_RIGHT(oldSubCubes[1][1][1]); subCubes[2][1][1] = ROTATE_RIGHT(oldSubCubes[1][1][2]); subCubes[0][1][2] = ROTATE_RIGHT(oldSubCubes[0][1][0]); subCubes[1][1][2] = ROTATE_RIGHT(oldSubCubes[0][1][1]); subCubes[2][1][2] = ROTATE_RIGHT(oldSubCubes[0][1][2]); D(); }
void Cube::DoMethod(CubeRotateMethod method) { switch (method) { case ROTATE_NONE: case ROTATE_NONEi: break; case ROTATE_FRONT: F(); break; case ROTATE_BACK: B(); break; case ROTATE_LEFT: L(); break; case ROTATE_RIGHT: R(); break; case ROTATE_UP: U(); break; case ROTATE_DOWN: D(); break; case ROTATE_FRONTi: Fi(); break; case ROTATE_BACKi: Bi(); break; case ROTATE_LEFTi: Li(); break; case ROTATE_RIGHTi: Ri(); break; case ROTATE_UPi: Ui(); break; case ROTATE_DOWNi: Di(); break; case ROTATE_WHOLEX: RotateUp(); break; case ROTATE_WHOLEY: RotateLeft(); break; case ROTATE_WHOLEZ: RotateClockwise(); break; case ROTATE_WHOLEXi: RotateDown(); break; case ROTATE_WHOLEYi: RotateRight(); break; case ROTATE_WHOLEZi: RotateCounterClockwise(); break; default: break; } }