MPI_mgparc
header.h
Go to the documentation of this file.
1 // general header for all functions in directory
2 
3 #ifndef HEADER_FILE
4 #define HEADER_FILE
5 
6 #include <string>
7 using namespace std;
8 #include <mpi.h>
9 
10 // ---------- dexx.cpp --------------
19 void Send_ProcD(const int to, const int nin, const double xin[], const MPI::Intracomm& icomm);
20 
29 void Recv_ProcD(const int from, int& nout, double xout[], const int maxbuf,
30  const MPI::Intracomm& icomm);
31 
42 void ExchangeD(const int yourid, const int nin, const double xin[],
43  int& nout, double xout[], const int maxbuf, const MPI::Intracomm& icomm);
44 
45 
46 // ---------- debugd.cpp --------------
52 int ReadIn();
53 
62 void DebugD(const int n, const double x[]);
63 void DebugI(const int n, const int x[]);
64 
72 int CheckI(const int n, const int x[]);
73 
79 void PivotD(const int n, double x[]);
80 
81 
82 // ---------- vdop.cpp --------------
83 
84 void vdcopy(const int n, double xp[], const int ix,
85  const double yp[], const int iy);
86 
87 void vdplus(const int n, double x[], const int ix,
88  const double y[], const int iy,
89  const double z[], const int iz);
90 
91 void vddiv(const int n, double x[], const int ix,
92  const double y[], const int iy,
93  const double z[], const int iz);
94 
95 void vdmult(const int n, double x[], const int ix,
96  const double y[], const int iy,
97  const double z[], const int iz);
98 
99 double dscapr(const int n, const double x[], const double y[]);
100 
101 void vdaxpy(const int n, double x[], const double y[],
102  const double& a, const double z[] );
103 
104 void vicopy(const int n, int xp[], const int ix,
105  const int yp[], const int iy);
106 
107 // ---------- vdop.cpp --------------
119 void IniGeom(const int myid, const int procx, const int procy, int neigh[], int& color);
120 
121 
135 void IniCoord(const int myid, const int procx, const int procy,
136  double& xl, double& xr, double& yb, double& yt);
137 
138 
148 void AddBound(const int ib, const int nx, const int ny, double w[], const double s[]);
149 
150 
151 // ---------- getbound.cpp --------------
162 // GH_NOTE: Absicherung bei s !!
163 void GetBound(const int ib, const int nx, const int ny, const double w[], double s[]);
164 
165 
166 // ---------- vecaccu.cpp --------------
179 void VecAccu(const int nx, const int ny, double w[],
180  const int neigh[], const int color, const MPI::Intracomm& icomm);
185 void FreeVecAccu();
186 
187 // ---------- skalar.cpp --------------
188 /*
189  Compute scalar product of two vectors
190 
191  IN: n length of the vectors
192  x,y vectors
193  OUT: scalar scalar product
194 */
203 double skalar(const int n, const double x[], const double y[], const MPI::Intracomm& icomm);
204 
205 // ---------- userset.cpp --------------
212 void SetU(const int nx, const int ny, double u[]);
213 
220 void SetF(const int nx, const int ny, double f[]);
221 
228 double FunctF(const double& x, const double& y);
229 
236 double FunctU(const double& x, const double& y);
237 
238 // ---------- savevekp.cpp --------------
239 
254 void SaveVectorP(const int myid, const string& name, const double u[],
255  const int nx, const int ny,
256  const double& xl, const double& xr, const double& yb, const double& yt);
257 
258 // ---------- accudiag.cpp --------------
272 void AccuDiag(const int nx, const int ny, const double sk[], const int id[], double d[],
273  const int neigh[], const int color, const MPI::Intracomm& icomm);
274 
275 // ---------- applybc.cpp --------------
288 void ApplyDirichletBC(const int nx, const int ny, const int neigh[],
289  const double u[], double sk[], const int id[], const int* , double f[]);
290 
291 // ---------- crsmult.cpp --------------
305 void CrsMult(const int iza, const int ize, double w[], const double u[],
306  const int id[], const int ik[], const double sk[], const double& alfa);
307 
308 // ---------- jacsolve.cpp --------------
309 
326 void JacobiSolve(const int nx, const int ny,
327  const int neigh[], const int color, const MPI::Intracomm& icomm,
328  const double sk[], const int id[], const int ik[],
329  const double f[], double u[] );
330 
331 
332 // ---------- getmatrix.cpp --------------
345 void GetCoordsInRectangle(const int nx, const int ny,
346  const double& xl, const double& xr, const double& yb, const double& yt,
347  double xc[]);
355 void GetConnectivityInRectangle(const int nx, const int ny, int ia[]);
356 
365 void GetMatrixpointersInRectangle(const int nx, const int ny, int id[], int ik[]);
366 
375 void CalcElem(const int ial[3], const double xc[], double ske[3][3], double fe[3]);
376 
389 void AddElem(const int ial[3], const double ske[3][3], const double fe[3],
390  double sk[], const int id[], const int ik[], double f[]);
391 
399 void DebugMatrix(const int nnode, const double sk[], const int id[], const int ik[]);
400 
417 void GetMatrix(const int nx, const int ny,
418  const double& xl, const double& xr, const double& yb, const double& yt,
419  double sk[], int id[], int ik[], double f[]);
420 
421 #endif
void GetMatrix(const int nx, const int ny, const double &xl, const double &xr, const double &yb, const double &yt, double sk[], int id[], int ik[], double f[])
Definition: getmatrix.cpp:210
double FunctF(const double &x, const double &y)
Definition: userset.cpp:24
void SaveVectorP(const int myid, const string &name, const double u[], const int nx, const int ny, const double &xl, const double &xr, const double &yb, const double &yt)
Definition: savevekp.cpp:7
void CalcElem(const int ial[3], const double xc[], double ske[3][3], double fe[3])
Definition: getmatrix.cpp:122
void AddElem(const int ial[3], const double ske[3][3], const double fe[3], double sk[], const int id[], const int ik[], double f[])
Definition: getmatrix.cpp:151
void ExchangeD(const int yourid, const int nin, const double xin[], int &nout, double xout[], const int maxbuf, const MPI::Intracomm &icomm)
Definition: dexx.cpp:53
void FreeVecAccu()
Definition: vecaccu.cpp:93
void VecAccu(const int nx, const int ny, double w[], const int neigh[], const int color, const MPI::Intracomm &icomm)
Definition: vecaccu.cpp:6
void DebugMatrix(const int nnode, const double sk[], const int id[], const int ik[])
Definition: getmatrix.cpp:184
void DebugD(const int n, const double x[])
Definition: debugd.cpp:24
void GetCoordsInRectangle(const int nx, const int ny, const double &xl, const double &xr, const double &yb, const double &yt, double xc[])
Definition: getmatrix.cpp:23
void CrsMult(const int iza, const int ize, double w[], const double u[], const int id[], const int ik[], const double sk[], const double &alfa)
Definition: crsmult.cpp:16
void vdcopy(const int n, double xp[], const int ix, const double yp[], const int iy)
Definition: vdop.cpp:31
void vdaxpy(const int n, double x[], const double y[], const double &a, const double z[])
Definition: vdop.cpp:214
double skalar(const int n, const double x[], const double y[], const MPI::Intracomm &icomm)
Definition: skalar.cpp:11
void AccuDiag(const int nx, const int ny, const double sk[], const int id[], double d[], const int neigh[], const int color, const MPI::Intracomm &icomm)
Definition: accudiag.cpp:12
void vdmult(const int n, double x[], const int ix, const double y[], const int iy, const double z[], const int iz)
Definition: vdop.cpp:148
void PivotD(const int n, double x[])
void SetF(const int nx, const int ny, double f[])
Definition: userset.cpp:12
void GetMatrixpointersInRectangle(const int nx, const int ny, int id[], int ik[])
Definition: getmatrix.cpp:74
int ReadIn()
Definition: debugd.cpp:7
double FunctU(const double &x, const double &y)
Definition: userset.cpp:31
void AddBound(const int ib, const int nx, const int ny, double w[], const double s[])
Definition: addbound.cpp:13
void SetU(const int nx, const int ny, double u[])
Definition: userset.cpp:1
void GetBound(const int ib, const int nx, const int ny, const double w[], double s[])
Definition: getbound.cpp:13
void ApplyDirichletBC(const int nx, const int ny, const int neigh[], const double u[], double sk[], const int id[], const int *, double f[])
Definition: applybc.cpp:4
double dscapr(const int n, const double x[], const double y[])
Definition: vdop.cpp:197
void IniGeom(const int myid, const int procx, const int procy, int neigh[], int &color)
Definition: geom.cpp:15
void vddiv(const int n, double x[], const int ix, const double y[], const int iy, const double z[], const int iz)
Definition: vdop.cpp:120
void Recv_ProcD(const int from, int &nout, double xout[], const int maxbuf, const MPI::Intracomm &icomm)
Definition: dexx.cpp:26
void Send_ProcD(const int to, const int nin, const double xin[], const MPI::Intracomm &icomm)
Definition: dexx.cpp:9
void vdplus(const int n, double x[], const int ix, const double y[], const int iy, const double z[], const int iz)
Definition: vdop.cpp:92
void IniCoord(const int myid, const int procx, const int procy, double &xl, double &xr, double &yb, double &yt)
Definition: geom.cpp:43
void vicopy(const int n, int xp[], const int ix, const int yp[], const int iy)
Definition: vdop.cpp:236
void GetConnectivityInRectangle(const int nx, const int ny, int ia[])
Definition: getmatrix.cpp:49
void DebugI(const int n, const int x[])
Definition: debugd.cpp:46
int CheckI(const int n, const int x[])
Definition: debugd.cpp:68
void JacobiSolve(const int nx, const int ny, const int neigh[], const int color, const MPI::Intracomm &icomm, const double sk[], const int id[], const int ik[], const double f[], double u[])
Definition: jacsolve.cpp:7