/* * Copyright (C) 2022 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. */ #ifndef __SOLVER_H_ #define __SOLVER_H_ #include "parameter.h" #include enum BC { NOSLIP = 1, SLIP, OUTFLOW, PERIODIC }; typedef struct { /* geometry and grid information */ double dx, dy; int imax, jmax; double xlength, ylength; /* arrays */ double *p, *rhs; double *f, *g; double *u, *v; /* parameters */ double eps, omega; double re, tau, gamma; double gx, gy; /* time stepping */ int itermax; double dt, te; double dtBound; char* problem; int bcN, bcS, bcW, bcE; /* mpi */ int rank; int size; MPI_Comm comm; MPI_Datatype iBufferType, jBufferType; int iNeighbours[2], jNeighbours[2]; int coords[2], dims[2]; int imaxLocal, jmaxLocal; } Solver; void initSolver(Solver*, Parameter*); void computeRHS(Solver*); int solve(Solver*); void computeTimestep(Solver*); void setBoundaryConditions(Solver*); void setSpecialBoundaryCondition(Solver*); void computeFG(Solver*); void adaptUV(Solver*); void collectResult(Solver*); void writeResult(Solver*, double*, double*, double*); void debugExchange(Solver*); void debugBC(Solver*); void print(Solver*, double*); #endif