double CollisionD2Q9LPMWang::getPsi(double *fIn, int i, int j) { double ret = 0; for(int d = 0; d < 9; d++) { ret += fIn[d] + 0.5*g_rhs(i, j)*W[d]; } return ret; }
void CollisionD2Q9LPMWang::collide() { cout<<"WANG"<<endl; double dQ; for(int j = 0; j < n.y; j++) { for(int i = 0; i < n.x; i++) { psi[j][i] = getPsi(f[0][j][i], i, j); dQ = (1 - 0.5*w)*g_rhs(i, j); for(int d = 0; d < 9; d++) { f[0][j][i][d] += w*( fEq(d, psi[j][i]) - f[0][j][i][d] ) + W[d]*dQ; } psi[j][i] = getPsi(f[0][j][i], i, j); } } }
void CollisionD2Q9LPMChai::collide() { UnitHandlerLPM *uh = dynamic_cast<UnitHandlerLPM*>(unitHandler); //cout<<"Chai collision"<<endl; for (int j = 0; j < n.y; j++) { for (int i = 0; i < n.x; i++) { psi[j][i] = getPsi(f[0][j][i], i, j); //if(skip != NULL && skip[j][i]) continue; //cout<<"psi: "<<psi[j][i]<<endl; for (int d = 0; d < 9; d++) { f[0][j][i][d] += w * (fEq(d, psi[j][i]) - f[0][j][i][d]) + (0.5 - 1.0 / w) / 3.0 * Wa[d] * g_rhs(i, j) * uh->getTimeStep() * uh->getTimeStep(); } psi[j][i] = getPsi(f[0][j][i], i, j); } } }