Implemented Function pointer for SOR, RB and RBA variants
This commit is contained in:
@@ -21,7 +21,7 @@ enum VARIANT { SOR = 1, RB, RBA };
|
||||
int main (int argc, char** argv)
|
||||
{
|
||||
int rank;
|
||||
int variant = SOR;
|
||||
int variant = RB;
|
||||
double S, E;
|
||||
Parameter params;
|
||||
Solver solver;
|
||||
@@ -52,12 +52,12 @@ int main (int argc, char** argv)
|
||||
double tau = solver.tau;
|
||||
double te = solver.te;
|
||||
double t = 0.0;
|
||||
|
||||
int (*solver_generic[])(solver) = {solve, solveRB, solveRBA};
|
||||
|
||||
S = getTimeStamp();
|
||||
switch (variant) {
|
||||
case SOR:
|
||||
printf("Plain SOR\n");
|
||||
while (t <= te) {
|
||||
|
||||
while (t <= te) {
|
||||
if (tau > 0.0) {
|
||||
computeTimestep(&solver);
|
||||
}
|
||||
@@ -66,48 +66,9 @@ int main (int argc, char** argv)
|
||||
setSpecialBoundaryCondition(&solver);
|
||||
computeFG(&solver);
|
||||
computeRHS(&solver);
|
||||
solve(&solver);
|
||||
(*solver_generic[variant - 1])(&solver);
|
||||
adaptUV(&solver);
|
||||
t += solver.dt;
|
||||
}
|
||||
|
||||
break;
|
||||
case RB:
|
||||
printf("Red-black SOR\n");
|
||||
while (t <= te) {
|
||||
if (tau > 0.0) {
|
||||
computeTimestep(&solver);
|
||||
}
|
||||
|
||||
setBoundaryConditions(&solver);
|
||||
setSpecialBoundaryCondition(&solver);
|
||||
computeFG(&solver);
|
||||
computeRHS(&solver);
|
||||
solveRB(&solver);
|
||||
adaptUV(&solver);
|
||||
t += solver.dt;
|
||||
}
|
||||
|
||||
break;
|
||||
case RBA:
|
||||
printf("Red-black SOR with acceleration\n");
|
||||
while (t <= te) {
|
||||
if (tau > 0.0) {
|
||||
computeTimestep(&solver);
|
||||
}
|
||||
|
||||
setBoundaryConditions(&solver);
|
||||
setSpecialBoundaryCondition(&solver);
|
||||
computeFG(&solver);
|
||||
computeRHS(&solver);
|
||||
solveRBA(&solver);
|
||||
adaptUV(&solver);
|
||||
t += solver.dt;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
#ifdef VERBOSE
|
||||
if (rank == 0) {
|
||||
printf("TIME %f , TIMESTEP %f\n", t, solver.dt);
|
||||
@@ -115,6 +76,8 @@ int main (int argc, char** argv)
|
||||
#else
|
||||
printProgress(t);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
E = getTimeStamp();
|
||||
stopProgress();
|
||||
|
Reference in New Issue
Block a user