Cleanup
This commit is contained in:
		| @@ -1,90 +0,0 @@ | |||||||
| /* |  | ||||||
|  * Copyright (C) 2024 NHR@FAU, University Erlangen-Nuremberg. |  | ||||||
|  * All rights reserved. |  | ||||||
|  * Use of this source code is governed by a MIT-style |  | ||||||
|  * license that can be found in the LICENSE file. |  | ||||||
|  */ |  | ||||||
| #include <float.h> |  | ||||||
| #include <limits.h> |  | ||||||
| #include <stdio.h> |  | ||||||
| #include <stdlib.h> |  | ||||||
| #include <unistd.h> |  | ||||||
|  |  | ||||||
| #include "allocate.h" |  | ||||||
| #include "comm.h" |  | ||||||
| #include "parameter.h" |  | ||||||
| #include "progress.h" |  | ||||||
| #include "solver.h" |  | ||||||
| #include "timing.h" |  | ||||||
| #include "vtkWriter.h" |  | ||||||
|  |  | ||||||
| int main(int argc, char** argv) |  | ||||||
| { |  | ||||||
|     double timeStart, timeStop; |  | ||||||
|     Parameter p; |  | ||||||
|     Solver s; |  | ||||||
|  |  | ||||||
|     commInit(&s.comm, argc, argv); |  | ||||||
|     initParameter(&p); |  | ||||||
|  |  | ||||||
|     if (argc != 2) { |  | ||||||
|         printf("Usage: %s <configFile>\n", argv[0]); |  | ||||||
|         exit(EXIT_SUCCESS); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     readParameter(&p, argv[1]); |  | ||||||
|     commPartition(&s.comm, p.kmax, p.jmax, p.imax); |  | ||||||
|     if (commIsMaster(&s.comm)) { |  | ||||||
|         printParameter(&p); |  | ||||||
|     } |  | ||||||
|     initSolver(&s, &p); |  | ||||||
| #ifndef VERBOSE |  | ||||||
|     initProgress(s.te); |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|     double tau = s.tau; |  | ||||||
|     double te  = s.te; |  | ||||||
|     double t   = 0.0; |  | ||||||
|  |  | ||||||
|     timeStart = getTimeStamp(); |  | ||||||
|     while (t <= te) { |  | ||||||
|         if (tau > 0.0) computeTimestep(&s); |  | ||||||
|         setBoundaryConditions(&s); |  | ||||||
|         setSpecialBoundaryCondition(&s); |  | ||||||
|         computeFG(&s); |  | ||||||
|         computeRHS(&s); |  | ||||||
|         solve(&s); |  | ||||||
|         adaptUV(&s); |  | ||||||
|         t += s.dt; |  | ||||||
|  |  | ||||||
| #ifdef VERBOSE |  | ||||||
|         if (commIsMaster(&s.comm)) { |  | ||||||
|             printf("TIME %f , TIMESTEP %f\n", t, s.dt); |  | ||||||
|         } |  | ||||||
| #else |  | ||||||
|         printProgress(t); |  | ||||||
| #endif |  | ||||||
|     } |  | ||||||
|     timeStop = getTimeStamp(); |  | ||||||
| #ifndef VERBOSE |  | ||||||
|     stopProgress(); |  | ||||||
| #endif |  | ||||||
|     if (commIsMaster(&s.comm)) { |  | ||||||
|         printf("Solution took %.2fs\n", timeStop - timeStart); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     timeStart       = getTimeStamp(); |  | ||||||
|     VtkOptions opts = { .grid = s.grid, .comm = s.comm }; |  | ||||||
|     vtkOpen(&opts, s.problem); |  | ||||||
|     vtkScalar(&opts, "pressure", s.p); |  | ||||||
|     vtkVector(&opts, "velocity", (VtkVector) { s.u, s.v, s.w }); |  | ||||||
|     vtkClose(&opts); |  | ||||||
|     timeStop = getTimeStamp(); |  | ||||||
|  |  | ||||||
|     if (commIsMaster(&s.comm)) { |  | ||||||
|         printf("Result output took %.2fs\n", timeStop - timeStart); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     commFinalize(&s.comm); |  | ||||||
|     return EXIT_SUCCESS; |  | ||||||
| } |  | ||||||
| @@ -1,5 +1,5 @@ | |||||||
| #======================================================================================= | #======================================================================================= | ||||||
| # Copyright (C) 2022 NHR@FAU, University Erlangen-Nuremberg. | # Copyright (C)  NHR@FAU, University Erlangen-Nuremberg. | ||||||
| # All rights reserved. | # All rights reserved. | ||||||
| # Use of this source code is governed by a MIT-style | # Use of this source code is governed by a MIT-style | ||||||
| # license that can be found in the LICENSE file. | # license that can be found in the LICENSE file. | ||||||
|   | |||||||
| @@ -10,7 +10,7 @@ endif | |||||||
|  |  | ||||||
| VERSION  = --version | VERSION  = --version | ||||||
| # CFLAGS   = -O3 -std=c17 $(OPENMP) | # CFLAGS   = -O3 -std=c17 $(OPENMP) | ||||||
| CFLAGS   = -Ofast -std=c17 -Weverything | CFLAGS   = -Ofast -std=c17 #-Weverything | ||||||
| #CFLAGS   = -Ofast -fnt-store=aggressive  -std=c99 $(OPENMP) #AMD CLANG | #CFLAGS   = -Ofast -fnt-store=aggressive  -std=c99 $(OPENMP) #AMD CLANG | ||||||
| LFLAGS   = $(OPENMP) -lm | LFLAGS   = $(OPENMP) -lm | ||||||
| DEFINES  = -D_GNU_SOURCE# -DDEBUG | DEFINES  = -D_GNU_SOURCE# -DDEBUG | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| /* | /* | ||||||
|  * Copyright (C) 2022 NHR@FAU, University Erlangen-Nuremberg. |  * Copyright (C)  NHR@FAU, University Erlangen-Nuremberg. | ||||||
|  * All rights reserved. |  * All rights reserved. | ||||||
|  * Use of this source code is governed by a MIT-style |  * Use of this source code is governed by a MIT-style | ||||||
|  * license that can be found in the LICENSE file. |  * license that can be found in the LICENSE file. | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| /* | /* | ||||||
|  * Copyright (C) 2022 NHR@FAU, University Erlangen-Nuremberg. |  * Copyright (C)  NHR@FAU, University Erlangen-Nuremberg. | ||||||
|  * All rights reserved. |  * All rights reserved. | ||||||
|  * Use of this source code is governed by a MIT-style |  * Use of this source code is governed by a MIT-style | ||||||
|  * license that can be found in the LICENSE file. |  * license that can be found in the LICENSE file. | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| /* | /* | ||||||
|  * Copyright (C) 2022 NHR@FAU, University Erlangen-Nuremberg. |  * Copyright (C)  NHR@FAU, University Erlangen-Nuremberg. | ||||||
|  * All rights reserved. This file is part of nusif-solver. |  * All rights reserved. This file is part of nusif-solver. | ||||||
|  * Use of this source code is governed by a MIT style |  * Use of this source code is governed by a MIT style | ||||||
|  * license that can be found in the LICENSE file. |  * license that can be found in the LICENSE file. | ||||||
|   | |||||||
| @@ -1,11 +1,9 @@ | |||||||
| /* | /* | ||||||
|  * Copyright (C) 2022 NHR@FAU, University Erlangen-Nuremberg. |  * Copyright (C) NHR@FAU, University Erlangen-Nuremberg. | ||||||
|  * All rights reserved. |  * All rights reserved. | ||||||
|  * Use of this source code is governed by a MIT-style |  * Use of this source code is governed by a MIT-style | ||||||
|  * license that can be found in the LICENSE file. |  * license that can be found in the LICENSE file. | ||||||
|  */ |  */ | ||||||
| #include <float.h> |  | ||||||
| #include <limits.h> |  | ||||||
| #include <stdio.h> | #include <stdio.h> | ||||||
| #include <stdlib.h> | #include <stdlib.h> | ||||||
| #include <unistd.h> | #include <unistd.h> | ||||||
| @@ -95,7 +93,7 @@ int main(int argc, char** argv) | |||||||
|         setSpecialBoundaryCondition(&s); |         setSpecialBoundaryCondition(&s); | ||||||
|         computeFG(&s); |         computeFG(&s); | ||||||
|         computeRHS(&s); |         computeRHS(&s); | ||||||
|         solveRB(&s); |         solve(&s); | ||||||
|         adaptUV(&s); |         adaptUV(&s); | ||||||
|         t += s.dt; |         t += s.dt; | ||||||
|  |  | ||||||
| @@ -127,11 +125,9 @@ int main(int argc, char** argv) | |||||||
|     vtkScalar(&opts, "pressure", pg); |     vtkScalar(&opts, "pressure", pg); | ||||||
|     vtkVector(&opts, "velocity", (VtkVector) { ug, vg, wg }); |     vtkVector(&opts, "velocity", (VtkVector) { ug, vg, wg }); | ||||||
|     vtkClose(&opts); |     vtkClose(&opts); | ||||||
|     timeStop = getTimeStamp(); |  | ||||||
|  |  | ||||||
|     if (commIsMaster(&s.comm)) { |     timeStop = getTimeStamp(); | ||||||
|     printf("Result output took %.2fs\n", timeStop - timeStart); |     printf("Result output took %.2fs\n", timeStop - timeStart); | ||||||
|     } |  | ||||||
|  |  | ||||||
|     return EXIT_SUCCESS; |     return EXIT_SUCCESS; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| /* | /* | ||||||
|  * Copyright (C) 2022 NHR@FAU, University Erlangen-Nuremberg. |  * Copyright (C)  NHR@FAU, University Erlangen-Nuremberg. | ||||||
|  * All rights reserved. This file is part of nusif-solver. |  * All rights reserved. This file is part of nusif-solver. | ||||||
|  * Use of this source code is governed by a MIT style |  * Use of this source code is governed by a MIT style | ||||||
|  * license that can be found in the LICENSE file. |  * license that can be found in the LICENSE file. | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| /* | /* | ||||||
|  * Copyright (C) 2022 NHR@FAU, University Erlangen-Nuremberg. |  * Copyright (C)  NHR@FAU, University Erlangen-Nuremberg. | ||||||
|  * All rights reserved. This file is part of nusif-solver. |  * All rights reserved. This file is part of nusif-solver. | ||||||
|  * Use of this source code is governed by a MIT style |  * Use of this source code is governed by a MIT style | ||||||
|  * license that can be found in the LICENSE file. |  * license that can be found in the LICENSE file. | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| /* | /* | ||||||
|  * Copyright (C) 2022 NHR@FAU, University Erlangen-Nuremberg. |  * Copyright (C)  NHR@FAU, University Erlangen-Nuremberg. | ||||||
|  * All rights reserved. This file is part of nusif-solver. |  * All rights reserved. This file is part of nusif-solver. | ||||||
|  * Use of this source code is governed by a MIT style |  * Use of this source code is governed by a MIT style | ||||||
|  * license that can be found in the LICENSE file. |  * license that can be found in the LICENSE file. | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| /* | /* | ||||||
|  * Copyright (C) 2022 NHR@FAU, University Erlangen-Nuremberg. |  * Copyright (C)  NHR@FAU, University Erlangen-Nuremberg. | ||||||
|  * All rights reserved. |  * All rights reserved. | ||||||
|  * Use of this source code is governed by a MIT-style |  * Use of this source code is governed by a MIT-style | ||||||
|  * license that can be found in the LICENSE file. |  * license that can be found in the LICENSE file. | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| /* | /* | ||||||
|  * Copyright (C) 2022 NHR@FAU, University Erlangen-Nuremberg. |  * Copyright (C)  NHR@FAU, University Erlangen-Nuremberg. | ||||||
|  * All rights reserved. This file is part of nusif-solver. |  * All rights reserved. This file is part of nusif-solver. | ||||||
|  * Use of this source code is governed by a MIT style |  * Use of this source code is governed by a MIT style | ||||||
|  * license that can be found in the LICENSE file. |  * license that can be found in the LICENSE file. | ||||||
| @@ -7,7 +7,6 @@ | |||||||
| #include <float.h> | #include <float.h> | ||||||
| #include <math.h> | #include <math.h> | ||||||
| #include <stdio.h> | #include <stdio.h> | ||||||
| #include <stdlib.h> |  | ||||||
| #include <string.h> | #include <string.h> | ||||||
|  |  | ||||||
| #include "allocate.h" | #include "allocate.h" | ||||||
| @@ -41,14 +40,8 @@ static void printConfig(Solver* s) | |||||||
|         s->grid.xlength, |         s->grid.xlength, | ||||||
|         s->grid.ylength, |         s->grid.ylength, | ||||||
|         s->grid.zlength); |         s->grid.zlength); | ||||||
|         printf("\tCells (x, y, z): %d, %d, %d\n", |     printf("\tCells (x, y, z): %d, %d, %d\n", s->grid.imax, s->grid.jmax, s->grid.kmax); | ||||||
|             s->grid.imax, |     printf("\tCell size (dx, dy, dz): %f, %f, %f\n", s->grid.dx, s->grid.dy, s->grid.dz); | ||||||
|             s->grid.jmax, |  | ||||||
|             s->grid.kmax); |  | ||||||
|         printf("\tCell size (dx, dy, dz): %f, %f, %f\n", |  | ||||||
|             s->grid.dx, |  | ||||||
|             s->grid.dy, |  | ||||||
|             s->grid.dz); |  | ||||||
|     printf("Timestep parameters:\n"); |     printf("Timestep parameters:\n"); | ||||||
|     printf("\tDefault stepsize: %.2f, Final time %.2f\n", s->dt, s->te); |     printf("\tDefault stepsize: %.2f, Final time %.2f\n", s->dt, s->te); | ||||||
|     printf("\tdt bound: %.6f\n", s->dtBound); |     printf("\tdt bound: %.6f\n", s->dtBound); | ||||||
| @@ -156,83 +149,6 @@ void computeRHS(Solver* s) | |||||||
| } | } | ||||||
|  |  | ||||||
| void solve(Solver* s) | void solve(Solver* s) | ||||||
| { |  | ||||||
|     int imax      = s->grid.imax; |  | ||||||
|     int jmax      = s->grid.jmax; |  | ||||||
|     int kmax      = s->grid.kmax; |  | ||||||
|  |  | ||||||
|     double eps    = s->eps; |  | ||||||
|     int itermax   = s->itermax; |  | ||||||
|     double dx2    = s->grid.dx * s->grid.dx; |  | ||||||
|     double dy2    = s->grid.dy * s->grid.dy; |  | ||||||
|     double dz2    = s->grid.dz * s->grid.dz; |  | ||||||
|     double idx2   = 1.0 / dx2; |  | ||||||
|     double idy2   = 1.0 / dy2; |  | ||||||
|     double idz2   = 1.0 / dz2; |  | ||||||
|  |  | ||||||
|     double factor = s->omega * 0.5 * (dx2 * dy2 * dz2) / |  | ||||||
|                     (dy2 * dz2 + dx2 * dz2 + dx2 * dy2); |  | ||||||
|     double* p    = s->p; |  | ||||||
|     double* rhs  = s->rhs; |  | ||||||
|     double epssq = eps * eps; |  | ||||||
|     int it       = 0; |  | ||||||
|     double res   = 1.0; |  | ||||||
|  |  | ||||||
|     while ((res >= epssq) && (it < itermax)) { |  | ||||||
|         res = 0.0; |  | ||||||
|  |  | ||||||
|         for (int k = 1; k < kmax + 1; k++) { |  | ||||||
|             for (int j = 1; j < jmax + 1; j++) { |  | ||||||
|                 for (int i = 1; i < imax + 1; i++) { |  | ||||||
|  |  | ||||||
|                     double r = RHS(i, j, k) - |  | ||||||
|                                ((P(i + 1, j, k) - 2.0 * P(i, j, k) + P(i - 1, j, k)) * |  | ||||||
|                                        idx2 + |  | ||||||
|                                    (P(i, j + 1, k) - 2.0 * P(i, j, k) + P(i, j - 1, k)) * |  | ||||||
|                                        idy2 + |  | ||||||
|                                    (P(i, j, k + 1) - 2.0 * P(i, j, k) + P(i, j, k - 1)) * |  | ||||||
|                                        idz2); |  | ||||||
|  |  | ||||||
|                     P(i, j, k) -= (factor * r); |  | ||||||
|                     res += (r * r); |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         for (int j = 1; j < jmax + 1; j++) { |  | ||||||
|             for (int i = 1; i < imax + 1; i++) { |  | ||||||
|                 P(i, j, 0)        = P(i, j, 1); |  | ||||||
|                 P(i, j, kmax + 1) = P(i, j, kmax); |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         for (int k = 1; k < kmax + 1; k++) { |  | ||||||
|             for (int i = 1; i < imax + 1; i++) { |  | ||||||
|                 P(i, 0, k)        = P(i, 1, k); |  | ||||||
|                 P(i, jmax + 1, k) = P(i, jmax, k); |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         for (int k = 1; k < kmax + 1; k++) { |  | ||||||
|             for (int j = 1; j < jmax + 1; j++) { |  | ||||||
|                 P(0, j, k)        = P(1, j, k); |  | ||||||
|                 P(imax + 1, j, k) = P(imax, j, k); |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         res = res / (double)(imax * jmax * kmax); |  | ||||||
| #ifdef DEBUG |  | ||||||
|         printf("%d Residuum: %e\n", it, res); |  | ||||||
| #endif |  | ||||||
|         it++; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
| #ifdef VERBOSE |  | ||||||
|     printf("Solver took %d iterations to reach %f\n", it, sqrt(res)); |  | ||||||
| #endif |  | ||||||
| } |  | ||||||
|  |  | ||||||
| void solveRB(Solver* s) |  | ||||||
| { | { | ||||||
|     int imax      = s->grid.imax; |     int imax      = s->grid.imax; | ||||||
|     int jmax      = s->grid.jmax; |     int jmax      = s->grid.jmax; | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| /* | /* | ||||||
|  * Copyright (C) 2022 NHR@FAU, University Erlangen-Nuremberg. |  * Copyright (C)  NHR@FAU, University Erlangen-Nuremberg. | ||||||
|  * All rights reserved. This file is part of nusif-solver. |  * All rights reserved. This file is part of nusif-solver. | ||||||
|  * Use of this source code is governed by a MIT style |  * Use of this source code is governed by a MIT style | ||||||
|  * license that can be found in the LICENSE file. |  * license that can be found in the LICENSE file. | ||||||
| @@ -34,12 +34,10 @@ typedef struct { | |||||||
| extern void initSolver(Solver*, Parameter*); | extern void initSolver(Solver*, Parameter*); | ||||||
| extern void computeRHS(Solver*); | extern void computeRHS(Solver*); | ||||||
| extern void solve(Solver*); | extern void solve(Solver*); | ||||||
| extern void solveRB(Solver*); |  | ||||||
| extern void normalizePressure(Solver*); | extern void normalizePressure(Solver*); | ||||||
| extern void computeTimestep(Solver*); | extern void computeTimestep(Solver*); | ||||||
| extern void setBoundaryConditions(Solver*); | extern void setBoundaryConditions(Solver*); | ||||||
| extern void setSpecialBoundaryCondition(Solver*); | extern void setSpecialBoundaryCondition(Solver*); | ||||||
| extern void computeFG(Solver*); | extern void computeFG(Solver*); | ||||||
| extern void adaptUV(Solver*); | extern void adaptUV(Solver*); | ||||||
| extern void writeResult(Solver*); |  | ||||||
| #endif | #endif | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| /* | /* | ||||||
|  * Copyright (C) 2022 NHR@FAU, University Erlangen-Nuremberg. |  * Copyright (C)  NHR@FAU, University Erlangen-Nuremberg. | ||||||
|  * All rights reserved. |  * All rights reserved. | ||||||
|  * Use of this source code is governed by a MIT-style |  * Use of this source code is governed by a MIT-style | ||||||
|  * license that can be found in the LICENSE file. |  * license that can be found in the LICENSE file. | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| /* | /* | ||||||
|  * Copyright (C) 2022 NHR@FAU, University Erlangen-Nuremberg. |  * Copyright (C)  NHR@FAU, University Erlangen-Nuremberg. | ||||||
|  * All rights reserved. |  * All rights reserved. | ||||||
|  * Use of this source code is governed by a MIT-style |  * Use of this source code is governed by a MIT-style | ||||||
|  * license that can be found in the LICENSE file. |  * license that can be found in the LICENSE file. | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| /* | /* | ||||||
|  * Copyright (C) 2022 NHR@FAU, University Erlangen-Nuremberg. |  * Copyright (C)  NHR@FAU, University Erlangen-Nuremberg. | ||||||
|  * All rights reserved. |  * All rights reserved. | ||||||
|  * Use of this source code is governed by a MIT-style |  * Use of this source code is governed by a MIT-style | ||||||
|  * license that can be found in the LICENSE file. |  * license that can be found in the LICENSE file. | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| /* | /* | ||||||
|  * Copyright (C) 2022 NHR@FAU, University Erlangen-Nuremberg. |  * Copyright (C)  NHR@FAU, University Erlangen-Nuremberg. | ||||||
|  * All rights reserved. This file is part of nusif-solver. |  * All rights reserved. This file is part of nusif-solver. | ||||||
|  * Use of this source code is governed by a MIT style |  * Use of this source code is governed by a MIT style | ||||||
|  * license that can be found in the LICENSE file. |  * license that can be found in the LICENSE file. | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| /* | /* | ||||||
|  * Copyright (C) 2022 NHR@FAU, University Erlangen-Nuremberg. |  * Copyright (C)  NHR@FAU, University Erlangen-Nuremberg. | ||||||
|  * All rights reserved. This file is part of nusif-solver. |  * All rights reserved. This file is part of nusif-solver. | ||||||
|  * Use of this source code is governed by a MIT style |  * Use of this source code is governed by a MIT style | ||||||
|  * license that can be found in the LICENSE file. |  * license that can be found in the LICENSE file. | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user