Implemented Function pointer for SOR, RB and RBA variants

This commit is contained in:
2023-07-14 21:50:38 +02:00
parent 9f55413efb
commit b50dbe7d4b
30 changed files with 61658 additions and 61142 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -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();

View File

@@ -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