forked from moebiusband/NuSiF-Solver
		
	Cleanup
This commit is contained in:
		| @@ -1,5 +1,5 @@ | ||||
| /* | ||||
|  * Copyright (C) 2022 NHR@FAU, University Erlangen-Nuremberg. | ||||
|  * Copyright (C)  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. | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| /* | ||||
|  * Copyright (C) 2022 NHR@FAU, University Erlangen-Nuremberg. | ||||
|  * Copyright (C)  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. | ||||
|   | ||||
| @@ -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. | ||||
|  * Use of this source code is governed by a MIT style | ||||
|  * 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. | ||||
|  * 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> | ||||
| @@ -95,7 +93,7 @@ int main(int argc, char** argv) | ||||
|         setSpecialBoundaryCondition(&s); | ||||
|         computeFG(&s); | ||||
|         computeRHS(&s); | ||||
|         solveRB(&s); | ||||
|         solve(&s); | ||||
|         adaptUV(&s); | ||||
|         t += s.dt; | ||||
|  | ||||
| @@ -111,7 +109,7 @@ int main(int argc, char** argv) | ||||
| #endif | ||||
|     printf("Solution took %.2fs\n", timeStop - timeStart); | ||||
|  | ||||
|     timeStart       = getTimeStamp(); | ||||
|     timeStart = getTimeStamp(); | ||||
|     double *pg, *ug, *vg, *wg; | ||||
|  | ||||
|     size_t bytesize = (size_t)(s.grid.imax * s.grid.jmax * s.grid.kmax) * sizeof(double); | ||||
| @@ -127,11 +125,9 @@ int main(int argc, char** argv) | ||||
|     vtkScalar(&opts, "pressure", pg); | ||||
|     vtkVector(&opts, "velocity", (VtkVector) { ug, vg, wg }); | ||||
|     vtkClose(&opts); | ||||
|     timeStop = getTimeStamp(); | ||||
|  | ||||
|     if (commIsMaster(&s.comm)) { | ||||
|         printf("Result output took %.2fs\n", timeStop - timeStart); | ||||
|     } | ||||
|     timeStop = getTimeStamp(); | ||||
|     printf("Result output took %.2fs\n", timeStop - timeStart); | ||||
|  | ||||
|     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. | ||||
|  * Use of this source code is governed by a MIT style | ||||
|  * 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. | ||||
|  * Use of this source code is governed by a MIT style | ||||
|  * 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. | ||||
|  * Use of this source code is governed by a MIT style | ||||
|  * 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. | ||||
|  * Use of this source code is governed by a MIT-style | ||||
|  * 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. | ||||
|  * Use of this source code is governed by a MIT style | ||||
|  * license that can be found in the LICENSE file. | ||||
| @@ -7,7 +7,6 @@ | ||||
| #include <float.h> | ||||
| #include <math.h> | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
|  | ||||
| #include "allocate.h" | ||||
| @@ -41,19 +40,13 @@ static void printConfig(Solver* s) | ||||
|         s->grid.xlength, | ||||
|         s->grid.ylength, | ||||
|         s->grid.zlength); | ||||
|         printf("\tCells (x, y, z): %d, %d, %d\n", | ||||
|             s->grid.imax, | ||||
|             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("\tCells (x, y, z): %d, %d, %d\n", s->grid.imax, 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("\tDefault stepsize: %.2f, Final time %.2f\n", s->dt, s->te); | ||||
|     printf("\tdt bound: %.6f\n", s->dtBound); | ||||
|     printf("\tTau factor: %.2f\n", s->tau); | ||||
|         printf("Iterative parameters:\n"); | ||||
|     printf("Iterative parameters:\n"); | ||||
|     printf("\tMax iterations: %d\n", s->itermax); | ||||
|     printf("\tepsilon (stopping tolerance) : %f\n", s->eps); | ||||
|     printf("\tgamma factor: %f\n", s->gamma); | ||||
| @@ -62,13 +55,13 @@ static void printConfig(Solver* s) | ||||
|  | ||||
| void initSolver(Solver* s, Parameter* params) | ||||
| { | ||||
|     s->problem      = params->name; | ||||
|     s->bcLeft       = params->bcLeft; | ||||
|     s->bcRight      = params->bcRight; | ||||
|     s->bcBottom     = params->bcBottom; | ||||
|     s->bcTop        = params->bcTop; | ||||
|     s->bcFront      = params->bcFront; | ||||
|     s->bcBack       = params->bcBack; | ||||
|     s->problem  = params->name; | ||||
|     s->bcLeft   = params->bcLeft; | ||||
|     s->bcRight  = params->bcRight; | ||||
|     s->bcBottom = params->bcBottom; | ||||
|     s->bcTop    = params->bcTop; | ||||
|     s->bcFront  = params->bcFront; | ||||
|     s->bcBack   = params->bcBack; | ||||
|  | ||||
|     s->grid.imax    = params->imax; | ||||
|     s->grid.jmax    = params->jmax; | ||||
| @@ -80,17 +73,17 @@ void initSolver(Solver* s, Parameter* params) | ||||
|     s->grid.dy      = params->ylength / params->jmax; | ||||
|     s->grid.dz      = params->zlength / params->kmax; | ||||
|  | ||||
|     s->eps          = params->eps; | ||||
|     s->omega        = params->omg; | ||||
|     s->itermax      = params->itermax; | ||||
|     s->re           = params->re; | ||||
|     s->gx           = params->gx; | ||||
|     s->gy           = params->gy; | ||||
|     s->gz           = params->gz; | ||||
|     s->dt           = params->dt; | ||||
|     s->te           = params->te; | ||||
|     s->tau          = params->tau; | ||||
|     s->gamma        = params->gamma; | ||||
|     s->eps     = params->eps; | ||||
|     s->omega   = params->omg; | ||||
|     s->itermax = params->itermax; | ||||
|     s->re      = params->re; | ||||
|     s->gx      = params->gx; | ||||
|     s->gy      = params->gy; | ||||
|     s->gz      = params->gz; | ||||
|     s->dt      = params->dt; | ||||
|     s->te      = params->te; | ||||
|     s->tau     = params->tau; | ||||
|     s->gamma   = params->gamma; | ||||
|  | ||||
|     int imax        = s->grid.imax; | ||||
|     int jmax        = s->grid.jmax; | ||||
| @@ -130,13 +123,13 @@ void initSolver(Solver* s, Parameter* params) | ||||
|  | ||||
| void computeRHS(Solver* s) | ||||
| { | ||||
|     int imax    = s->grid.imax; | ||||
|     int jmax    = s->grid.jmax; | ||||
|     int kmax    = s->grid.kmax; | ||||
|     double idx  = 1.0 / s->grid.dx; | ||||
|     double idy  = 1.0 / s->grid.dy; | ||||
|     double idz  = 1.0 / s->grid.dz; | ||||
|     double idt  = 1.0 / s->dt; | ||||
|     int imax   = s->grid.imax; | ||||
|     int jmax   = s->grid.jmax; | ||||
|     int kmax   = s->grid.kmax; | ||||
|     double idx = 1.0 / s->grid.dx; | ||||
|     double idy = 1.0 / s->grid.dy; | ||||
|     double idz = 1.0 / s->grid.dz; | ||||
|     double idt = 1.0 / s->dt; | ||||
|  | ||||
|     double* rhs = s->rhs; | ||||
|     double* f   = s->f; | ||||
| @@ -156,83 +149,6 @@ void computeRHS(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 jmax      = s->grid.jmax; | ||||
| @@ -347,10 +263,10 @@ void normalizePressure(Solver* s) | ||||
|  | ||||
| void computeTimestep(Solver* s) | ||||
| { | ||||
|     double dt   = s->dtBound; | ||||
|     double dx   = s->grid.dx; | ||||
|     double dy   = s->grid.dy; | ||||
|     double dz   = s->grid.dz; | ||||
|     double dt = s->dtBound; | ||||
|     double dx = s->grid.dx; | ||||
|     double dy = s->grid.dy; | ||||
|     double dz = s->grid.dz; | ||||
|  | ||||
|     double umax = maxElement(s, s->u); | ||||
|     double vmax = maxElement(s, s->v); | ||||
| @@ -613,10 +529,10 @@ void computeFG(Solver* s) | ||||
|     double* g = s->g; | ||||
|     double* h = s->h; | ||||
|  | ||||
|     double gx    = s->gx; | ||||
|     double gy    = s->gy; | ||||
|     double gz    = s->gz; | ||||
|     double dt    = s->dt; | ||||
|     double gx = s->gx; | ||||
|     double gy = s->gy; | ||||
|     double gz = s->gz; | ||||
|     double dt = s->dt; | ||||
|  | ||||
|     double gamma     = s->gamma; | ||||
|     double inverseRe = 1.0 / s->re; | ||||
|   | ||||
| @@ -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. | ||||
|  * Use of this source code is governed by a MIT style | ||||
|  * license that can be found in the LICENSE file. | ||||
| @@ -34,12 +34,10 @@ typedef struct { | ||||
| extern void initSolver(Solver*, Parameter*); | ||||
| extern void computeRHS(Solver*); | ||||
| extern void solve(Solver*); | ||||
| extern void solveRB(Solver*); | ||||
| extern void normalizePressure(Solver*); | ||||
| extern void computeTimestep(Solver*); | ||||
| extern void setBoundaryConditions(Solver*); | ||||
| extern void setSpecialBoundaryCondition(Solver*); | ||||
| extern void computeFG(Solver*); | ||||
| extern void adaptUV(Solver*); | ||||
| extern void writeResult(Solver*); | ||||
| #endif | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| /* | ||||
|  * Copyright (C) 2022 NHR@FAU, University Erlangen-Nuremberg. | ||||
|  * Copyright (C)  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. | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| /* | ||||
|  * Copyright (C) 2022 NHR@FAU, University Erlangen-Nuremberg. | ||||
|  * Copyright (C)  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. | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| /* | ||||
|  * Copyright (C) 2022 NHR@FAU, University Erlangen-Nuremberg. | ||||
|  * Copyright (C)  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. | ||||
|   | ||||
| @@ -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. | ||||
|  * Use of this source code is governed by a MIT style | ||||
|  * 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. | ||||
|  * Use of this source code is governed by a MIT style | ||||
|  * license that can be found in the LICENSE file. | ||||
|   | ||||
		Reference in New Issue
	
	Block a user