Files
NuSiF-Solver/BasicSolver/2D-mpi-v2/src/solver.h
Jan Eitzinger 213e633a4d Initial checkin
2023-02-05 07:34:23 +01:00

57 lines
1.4 KiB
C

/*
* 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 <mpi.h>
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