WIP: Pull Request for a complete Solver package #2
73
BasicSolver/2D-mpi-v3/data_dcavity.csv
Normal file
73
BasicSolver/2D-mpi-v3/data_dcavity.csv
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
Rank, SOR, RB
|
||||||
|
1, 86.28, 46.72
|
||||||
|
2, 41.61, 32.01
|
||||||
|
3, 30.54, 29.39
|
||||||
|
4, 25.42, 21.58
|
||||||
|
5, 22.41, 24.34
|
||||||
|
6, 19.24, 18.86
|
||||||
|
7, 17.98, 22.45
|
||||||
|
8, 17.08, 18.98
|
||||||
|
9, 16.59, 19.84
|
||||||
|
10, 15.30, 18.60
|
||||||
|
11, 15.49, 21.93
|
||||||
|
12, 15.05, 19.61
|
||||||
|
13, 15.78, 21.57
|
||||||
|
14, 14.44, 16.53
|
||||||
|
15, 13.94, 17.54
|
||||||
|
16, 13.14, 18.97
|
||||||
|
17, 17.31, 19.64
|
||||||
|
18, 13.59, 18.33
|
||||||
|
19, 22.20, 34.39
|
||||||
|
20, 12.55, 16.40
|
||||||
|
21, 12.75, 18.14
|
||||||
|
22, 12.61, 17.22
|
||||||
|
23, 3.30, 30.04
|
||||||
|
24, 12.25, 18.27
|
||||||
|
25, 12.42, 16.13
|
||||||
|
26, 12.74, 17.17
|
||||||
|
27, 12.08, 19.87
|
||||||
|
28, 12.31, 17.62
|
||||||
|
29, 2.95, 3.37
|
||||||
|
30, 12.14, 16.16
|
||||||
|
31, 2.78, 3.53
|
||||||
|
32, 11.80, 19.34
|
||||||
|
33, 12.52, 21.27
|
||||||
|
34, 13.06, 15.24
|
||||||
|
35, 12.13, 15.23
|
||||||
|
36, 12.13, 18.15
|
||||||
|
37, 3.11, 3.67
|
||||||
|
38, 26.77, 26.82
|
||||||
|
39, 12.39, 21.69
|
||||||
|
40, 11.34, 15.61
|
||||||
|
41, 2.89, 3.34
|
||||||
|
42, 11.92, 18.12
|
||||||
|
43, 2.79, 3.40
|
||||||
|
44, 14.22, 37.07
|
||||||
|
45, 12.12, 15.90
|
||||||
|
46, 2.29, 23.39
|
||||||
|
47, 2.91, 3.55
|
||||||
|
48, 12.27, 21.39
|
||||||
|
49, 12.71, 19.82
|
||||||
|
50, 13.01, 16.37
|
||||||
|
51, 2.91, 17.26
|
||||||
|
52, 2.39, 5.00
|
||||||
|
53, 2.95, 3.47
|
||||||
|
54, 15.58, 65.25
|
||||||
|
55, 2.59, 15.84
|
||||||
|
56, 11.78, 21.47
|
||||||
|
57, 2.36, 3.88
|
||||||
|
58, 2.18, 2.34
|
||||||
|
59, 2.95, 3.33
|
||||||
|
60, 16.75, 14.88
|
||||||
|
61, 2.73, 3.20
|
||||||
|
62, 2.32, 2.73
|
||||||
|
63, 2.60, 25.96
|
||||||
|
64, 19.61, 36.29
|
||||||
|
65, 2.08, 17.16
|
||||||
|
66, 1.93, 2.32
|
||||||
|
67, 2.72, 3.44
|
||||||
|
68, 2.06, 17.25
|
||||||
|
69, 2.13, 129.62
|
||||||
|
70, 2.05, 15.92
|
||||||
|
71, 2.66, 3.21
|
||||||
|
72, 2.16, 2.54
|
|
File diff suppressed because it is too large
Load Diff
17
BasicSolver/2D-mpi-v3/sample.sh
Executable file
17
BasicSolver/2D-mpi-v3/sample.sh
Executable file
@ -0,0 +1,17 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
rm data.csv
|
||||||
|
echo "Rank, SOR, RB" >> data.csv
|
||||||
|
|
||||||
|
for i in {1..72}
|
||||||
|
do
|
||||||
|
|
||||||
|
res=$(mpirun -n $i ./exe-ICC dcavity.par 1 | grep "Solution took" | cut -c 14- )
|
||||||
|
res2=$(mpirun -n $i ./exe-ICC dcavity.par 2 | grep "Solution took" | cut -c 14- )
|
||||||
|
|
||||||
|
s="$i, $res, $res2"
|
||||||
|
s=${s//"s"/}
|
||||||
|
|
||||||
|
echo $s >> data.csv
|
||||||
|
|
||||||
|
done
|
@ -80,7 +80,7 @@ int main (int argc, char** argv)
|
|||||||
solver_generic[variant - 1](&solver);
|
solver_generic[variant - 1](&solver);
|
||||||
adaptUV(&solver);
|
adaptUV(&solver);
|
||||||
|
|
||||||
trace(&particletracer, solver.u, solver.v, t);
|
//trace(&particletracer, solver.u, solver.v, t);
|
||||||
|
|
||||||
t += solver.dt;
|
t += solver.dt;
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@ -17,6 +17,6 @@ jmax 200 # number of interior cells in y-direction
|
|||||||
itermax 10000 # maximal number of pressure iteration in one time step
|
itermax 10000 # maximal number of pressure iteration in one time step
|
||||||
eps 0.000001 # stopping tolerance for pressure iteration
|
eps 0.000001 # stopping tolerance for pressure iteration
|
||||||
rho 0.99999
|
rho 0.99999
|
||||||
omg 1.9 # relaxation parameter for SOR iteration
|
omg 1.991 # relaxation parameter for SOR iteration
|
||||||
|
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
|
@ -19,7 +19,7 @@ enum VARIANT { SOR = 1, RB, RBA };
|
|||||||
int main (int argc, char** argv)
|
int main (int argc, char** argv)
|
||||||
{
|
{
|
||||||
int rank;
|
int rank;
|
||||||
int variant = SOR;
|
int variant = RB;
|
||||||
|
|
||||||
Parameter params;
|
Parameter params;
|
||||||
Solver solver;
|
Solver solver;
|
||||||
@ -60,7 +60,7 @@ int main (int argc, char** argv)
|
|||||||
solveRBA(&solver);
|
solveRBA(&solver);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
getResult(&solver);
|
//getResult(&solver);
|
||||||
|
|
||||||
MPI_Finalize();
|
MPI_Finalize();
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
|
@ -102,7 +102,7 @@ void initSolver(Solver *solver, Parameter *params, int problem)
|
|||||||
solver->imax = params->imax;
|
solver->imax = params->imax;
|
||||||
solver->jmax = params->jmax;
|
solver->jmax = params->jmax;
|
||||||
solver->jmaxLocal = sizeOfRank(solver->rank, solver->size, solver->jmax);
|
solver->jmaxLocal = sizeOfRank(solver->rank, solver->size, solver->jmax);
|
||||||
printf("RANK %d: %d\n", solver->rank, solver->jmaxLocal);
|
printf("RANK %d: imaxLocal : %d, jmaxLocal : %d\n", solver->rank, solver->imax, solver->jmaxLocal);
|
||||||
|
|
||||||
solver->dx = params->xlength/params->imax;
|
solver->dx = params->xlength/params->imax;
|
||||||
solver->dy = params->ylength/params->jmax;
|
solver->dy = params->ylength/params->jmax;
|
||||||
@ -182,7 +182,7 @@ int solve(Solver *solver)
|
|||||||
{
|
{
|
||||||
double r;
|
double r;
|
||||||
int it = 0;
|
int it = 0;
|
||||||
double res;
|
double res, res1;
|
||||||
|
|
||||||
int imax = solver->imax;
|
int imax = solver->imax;
|
||||||
int jmax = solver->jmax;
|
int jmax = solver->jmax;
|
||||||
@ -234,11 +234,12 @@ int solve(Solver *solver)
|
|||||||
P(imax+1, j) = P(imax, j);
|
P(imax+1, j) = P(imax, j);
|
||||||
}
|
}
|
||||||
|
|
||||||
MPI_Allreduce(&res, &res, 1, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD);
|
MPI_Allreduce(&res, &res1, 1, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD);
|
||||||
|
res = res1;
|
||||||
res = sqrt(res / (imax*jmax));
|
res = sqrt(res / (imax*jmax));
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
if ( solver->rank == 0 ) {
|
if ( solver->rank == 0 ) {
|
||||||
printf("%d Residuum: %e\n",it, res);
|
printf("%d Residuum: %e\n",it, res1);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
it++;
|
it++;
|
||||||
@ -258,7 +259,7 @@ int solveRB(Solver* solver)
|
|||||||
{
|
{
|
||||||
double r;
|
double r;
|
||||||
int it = 0;
|
int it = 0;
|
||||||
double res;
|
double res, res1;
|
||||||
|
|
||||||
int imax = solver->imax;
|
int imax = solver->imax;
|
||||||
int jmax = solver->jmax;
|
int jmax = solver->jmax;
|
||||||
@ -311,7 +312,8 @@ int solveRB(Solver* solver)
|
|||||||
P(0, j) = P(1, j);
|
P(0, j) = P(1, j);
|
||||||
P(imax + 1, j) = P(imax, j);
|
P(imax + 1, j) = P(imax, j);
|
||||||
}
|
}
|
||||||
|
MPI_Allreduce(&res, &res1, 1, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD);
|
||||||
|
res = res1;
|
||||||
res = res / (double)(imax * jmax);
|
res = res / (double)(imax * jmax);
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
printf("%d Residuum: %e\n", it, res);
|
printf("%d Residuum: %e\n", it, res);
|
||||||
|
Loading…
Reference in New Issue
Block a user