Implemented Function pointer for SOR, RB and RBA variants
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -20,7 +20,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;
|
||||
@@ -49,76 +49,29 @@ int main (int argc, char** argv)
|
||||
double t = 0.0;
|
||||
int nt = 0;
|
||||
|
||||
void (*solver_generic[])(solver) = {solve, solveRB, solveRBA};
|
||||
|
||||
S = getTimeStamp();
|
||||
|
||||
|
||||
switch (variant) {
|
||||
case SOR:
|
||||
printf("Plain SOR\n");
|
||||
while (t <= te)
|
||||
{
|
||||
if (tau > 0.0) computeTimestep(&solver);
|
||||
setBoundaryConditions(&solver);
|
||||
setSpecialBoundaryCondition(&solver);
|
||||
computeFG(&solver);
|
||||
computeRHS(&solver);
|
||||
if (nt % 100 == 0) normalizePressure(&solver);
|
||||
solve(&solver);
|
||||
adaptUV(&solver);
|
||||
t += solver.dt;
|
||||
nt++;
|
||||
|
||||
#ifdef VERBOSE
|
||||
printf("TIME %f , TIMESTEP %f\n", t, solver.dt);
|
||||
#else
|
||||
printProgress(t);
|
||||
#endif
|
||||
}
|
||||
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);
|
||||
if (nt % 100 == 0) normalizePressure(&solver);
|
||||
solveRB(&solver);
|
||||
adaptUV(&solver);
|
||||
t += solver.dt;
|
||||
nt++;
|
||||
|
||||
#ifdef VERBOSE
|
||||
printf("TIME %f , TIMESTEP %f\n", t, solver.dt);
|
||||
#else
|
||||
printProgress(t);
|
||||
#endif
|
||||
}
|
||||
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);
|
||||
if (nt % 100 == 0) normalizePressure(&solver);
|
||||
solveRBA(&solver);
|
||||
adaptUV(&solver);
|
||||
t += solver.dt;
|
||||
nt++;
|
||||
|
||||
#ifdef VERBOSE
|
||||
printf("TIME %f , TIMESTEP %f\n", t, solver.dt);
|
||||
#else
|
||||
printProgress(t);
|
||||
#endif
|
||||
}
|
||||
break;
|
||||
while (t <= te)
|
||||
{
|
||||
if (tau > 0.0) computeTimestep(&solver);
|
||||
setBoundaryConditions(&solver);
|
||||
setSpecialBoundaryCondition(&solver);
|
||||
computeFG(&solver);
|
||||
computeRHS(&solver);
|
||||
if (nt % 100 == 0) normalizePressure(&solver);
|
||||
(*solver_generic[variant - 1])(&solver);
|
||||
adaptUV(&solver);
|
||||
t += solver.dt;
|
||||
nt++;
|
||||
|
||||
#ifdef VERBOSE
|
||||
printf("TIME %f , TIMESTEP %f\n", t, solver.dt);
|
||||
#else
|
||||
printProgress(t);
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
E = getTimeStamp();
|
||||
|
@@ -24,7 +24,7 @@
|
||||
0.59 0.01 -0.008094 -0.000200 0.008096
|
||||
0.61 0.01 -0.007642 -0.000251 0.007647
|
||||
0.64 0.01 -0.007095 -0.000297 0.007101
|
||||
0.66 0.01 -0.006463 -0.000335 0.006471
|
||||
0.66 0.01 -0.006463 -0.000335 0.006472
|
||||
0.69 0.01 -0.005762 -0.000365 0.005774
|
||||
0.71 0.01 -0.005011 -0.000386 0.005026
|
||||
0.74 0.01 -0.004229 -0.000396 0.004248
|
||||
@@ -76,7 +76,7 @@
|
||||
0.89 0.04 -0.001666 -0.000909 0.001898
|
||||
0.91 0.04 -0.000758 -0.000580 0.000954
|
||||
0.94 0.04 -0.000202 -0.000248 0.000320
|
||||
0.96 0.04 0.000029 0.000027 0.000039
|
||||
0.96 0.04 0.000029 0.000026 0.000039
|
||||
0.99 0.04 0.000035 0.000132 0.000136
|
||||
0.01 0.06 -0.000034 -0.000123 0.000127
|
||||
0.04 0.06 -0.000273 0.000256 0.000374
|
||||
@@ -268,7 +268,7 @@
|
||||
0.69 0.16 -0.061532 -0.022524 0.065525
|
||||
0.71 0.16 -0.055295 -0.023898 0.060238
|
||||
0.74 0.16 -0.048728 -0.024670 0.054617
|
||||
0.76 0.16 -0.041987 -0.024793 0.048760
|
||||
0.76 0.16 -0.041986 -0.024793 0.048760
|
||||
0.79 0.16 -0.035235 -0.024238 0.042766
|
||||
0.81 0.16 -0.028644 -0.022992 0.036731
|
||||
0.84 0.16 -0.022386 -0.021072 0.030744
|
||||
@@ -294,7 +294,7 @@
|
||||
0.34 0.19 -0.075708 0.026077 0.080073
|
||||
0.36 0.19 -0.081370 0.023110 0.084588
|
||||
0.39 0.19 -0.086279 0.019648 0.088488
|
||||
0.41 0.19 -0.090340 0.015772 0.091707
|
||||
0.41 0.19 -0.090340 0.015773 0.091707
|
||||
0.44 0.19 -0.093475 0.011565 0.094187
|
||||
0.46 0.19 -0.095621 0.007112 0.095885
|
||||
0.49 0.19 -0.096736 0.002500 0.096768
|
||||
@@ -389,7 +389,7 @@
|
||||
0.71 0.24 -0.077691 -0.046320 0.090451
|
||||
0.74 0.24 -0.068991 -0.048114 0.084111
|
||||
0.76 0.24 -0.059958 -0.048721 0.077257
|
||||
0.79 0.24 -0.050796 -0.048075 0.069939
|
||||
0.79 0.24 -0.050796 -0.048075 0.069938
|
||||
0.81 0.24 -0.041727 -0.046141 0.062210
|
||||
0.84 0.24 -0.032981 -0.042925 0.054132
|
||||
0.86 0.24 -0.024797 -0.038478 0.045776
|
||||
@@ -408,7 +408,7 @@
|
||||
0.19 0.26 -0.045674 0.054903 0.071418
|
||||
0.21 0.26 -0.055333 0.056832 0.079320
|
||||
0.24 0.26 -0.065054 0.057332 0.086712
|
||||
0.26 0.26 -0.074620 0.056461 0.093574
|
||||
0.26 0.26 -0.074621 0.056461 0.093574
|
||||
0.29 0.26 -0.083835 0.054302 0.099885
|
||||
0.31 0.26 -0.092517 0.050954 0.105620
|
||||
0.34 0.26 -0.100504 0.046530 0.110752
|
||||
@@ -606,7 +606,7 @@
|
||||
0.14 0.39 -0.040517 0.098443 0.106455
|
||||
0.16 0.39 -0.053081 0.106833 0.119293
|
||||
0.19 0.39 -0.066194 0.112215 0.130284
|
||||
0.21 0.39 -0.079501 0.114706 0.139563
|
||||
0.21 0.39 -0.079502 0.114706 0.139563
|
||||
0.24 0.39 -0.092687 0.114466 0.147287
|
||||
0.26 0.39 -0.105476 0.111690 0.153623
|
||||
0.29 0.39 -0.117633 0.106594 0.158744
|
||||
@@ -630,7 +630,7 @@
|
||||
0.74 0.39 -0.111319 -0.114027 0.159355
|
||||
0.76 0.39 -0.098068 -0.117318 0.152908
|
||||
0.79 0.39 -0.084249 -0.117805 0.144830
|
||||
0.81 0.39 -0.070186 -0.115275 0.134960
|
||||
0.81 0.39 -0.070185 -0.115275 0.134960
|
||||
0.84 0.39 -0.056251 -0.109576 0.123171
|
||||
0.86 0.39 -0.042866 -0.100636 0.109385
|
||||
0.89 0.39 -0.030488 -0.088477 0.093583
|
||||
@@ -696,7 +696,7 @@
|
||||
0.39 0.44 -0.170816 0.082592 0.189735
|
||||
0.41 0.44 -0.177729 0.066561 0.189784
|
||||
0.44 0.44 -0.183191 0.049483 0.189756
|
||||
0.46 0.44 -0.187155 0.031606 0.189805
|
||||
0.46 0.44 -0.187155 0.031605 0.189805
|
||||
0.49 0.44 -0.189584 0.013174 0.190041
|
||||
0.51 0.44 -0.190442 -0.005565 0.190523
|
||||
0.54 0.44 -0.189701 -0.024360 0.191258
|
||||
@@ -763,7 +763,7 @@
|
||||
0.06 0.49 -0.013496 0.088857 0.089876
|
||||
0.09 0.49 -0.024333 0.115469 0.118005
|
||||
0.11 0.49 -0.037314 0.136818 0.141815
|
||||
0.14 0.49 -0.051761 0.152957 0.161477
|
||||
0.14 0.49 -0.051761 0.152956 0.161477
|
||||
0.16 0.49 -0.067064 0.164072 0.177249
|
||||
0.19 0.49 -0.082692 0.170453 0.189452
|
||||
0.21 0.49 -0.098201 0.172458 0.198457
|
||||
@@ -797,7 +797,7 @@
|
||||
0.91 0.49 -0.027263 -0.120196 0.123249
|
||||
0.94 0.49 -0.015090 -0.091937 0.093167
|
||||
0.96 0.49 -0.006161 -0.058588 0.058911
|
||||
0.99 0.49 -0.001306 -0.020753 0.020794
|
||||
0.99 0.49 -0.001307 -0.020753 0.020794
|
||||
0.01 0.51 -0.001267 0.022927 0.022962
|
||||
0.04 0.51 -0.005931 0.063665 0.063941
|
||||
0.06 0.51 -0.014434 0.098757 0.099806
|
||||
@@ -818,7 +818,7 @@
|
||||
0.44 0.51 -0.197267 0.063695 0.207295
|
||||
0.46 0.51 -0.201225 0.041450 0.205450
|
||||
0.49 0.51 -0.203822 0.018572 0.204666
|
||||
0.51 0.51 -0.205038 -0.004702 0.205092
|
||||
0.51 0.51 -0.205038 -0.004703 0.205092
|
||||
0.54 0.51 -0.204841 -0.028133 0.206764
|
||||
0.56 0.51 -0.203186 -0.051464 0.209603
|
||||
0.59 0.51 -0.200018 -0.074415 0.213412
|
||||
@@ -930,7 +930,7 @@
|
||||
0.24 0.59 -0.127806 0.228465 0.261784
|
||||
0.26 0.59 -0.140687 0.218257 0.259671
|
||||
0.29 0.59 -0.152059 0.204463 0.254808
|
||||
0.31 0.59 -0.161946 0.187726 0.247927
|
||||
0.31 0.59 -0.161947 0.187726 0.247927
|
||||
0.34 0.59 -0.170423 0.168596 0.239726
|
||||
0.36 0.59 -0.177595 0.147530 0.230879
|
||||
0.39 0.59 -0.183579 0.124907 0.222043
|
||||
@@ -1022,7 +1022,7 @@
|
||||
0.54 0.64 -0.176772 -0.028584 0.179068
|
||||
0.56 0.64 -0.177447 -0.056962 0.186366
|
||||
0.59 0.64 -0.177740 -0.085477 0.197226
|
||||
0.61 0.64 -0.177485 -0.113961 0.210922
|
||||
0.61 0.64 -0.177485 -0.113961 0.210921
|
||||
0.64 0.64 -0.176458 -0.142170 0.226604
|
||||
0.66 0.64 -0.174383 -0.169764 0.243370
|
||||
0.69 0.64 -0.170939 -0.196274 0.260276
|
||||
@@ -1058,7 +1058,7 @@
|
||||
0.44 0.66 -0.153866 0.082763 0.174713
|
||||
0.46 0.66 -0.154549 0.055784 0.164308
|
||||
0.49 0.66 -0.155334 0.028385 0.157906
|
||||
0.51 0.66 -0.156288 0.000597 0.156290
|
||||
0.51 0.66 -0.156288 0.000597 0.156289
|
||||
0.54 0.66 -0.157423 -0.027557 0.159817
|
||||
0.56 0.66 -0.158690 -0.056046 0.168296
|
||||
0.59 0.66 -0.159981 -0.084810 0.181071
|
||||
@@ -1125,7 +1125,7 @@
|
||||
0.11 0.71 -0.064931 0.286424 0.293692
|
||||
0.14 0.71 -0.081730 0.303029 0.313857
|
||||
0.16 0.71 -0.095581 0.307708 0.322211
|
||||
0.19 0.71 -0.106003 0.303115 0.321115
|
||||
0.19 0.71 -0.106002 0.303115 0.321115
|
||||
0.21 0.71 -0.113003 0.291579 0.312711
|
||||
0.24 0.71 -0.116908 0.275028 0.298844
|
||||
0.26 0.71 -0.118215 0.254982 0.281053
|
||||
@@ -1186,7 +1186,7 @@
|
||||
0.64 0.74 -0.077679 -0.130864 0.152182
|
||||
0.66 0.74 -0.085621 -0.160050 0.181513
|
||||
0.69 0.74 -0.093957 -0.189964 0.211930
|
||||
0.71 0.74 -0.102094 -0.220307 0.242814
|
||||
0.71 0.74 -0.102095 -0.220307 0.242814
|
||||
0.74 0.74 -0.109290 -0.250517 0.273319
|
||||
0.76 0.74 -0.114650 -0.279666 0.302255
|
||||
0.79 0.74 -0.117166 -0.306352 0.327993
|
||||
@@ -1486,7 +1486,7 @@
|
||||
0.14 0.94 0.236018 0.149848 0.279569
|
||||
0.16 0.94 0.308503 0.117843 0.330244
|
||||
0.19 0.94 0.370556 0.093841 0.382253
|
||||
0.21 0.94 0.422981 0.075644 0.429691
|
||||
0.21 0.94 0.422980 0.075644 0.429691
|
||||
0.24 0.94 0.467064 0.061599 0.471109
|
||||
0.26 0.94 0.504083 0.050535 0.506610
|
||||
0.29 0.94 0.535145 0.041634 0.536762
|
||||
|
Reference in New Issue
Block a user