-
Notifications
You must be signed in to change notification settings - Fork 0
/
iim.h
95 lines (82 loc) · 4.38 KB
/
iim.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#ifndef IIM_H
#define IIM_H
#include "grid.h"
#include "input.h"
#include "sparse.h"
struct ZLHeapElt
{
int index[3];
ZLHeapElt* child[2];
ZLHeapElt* parent;
int num;
double val;
};
struct ZLHeapStruct
{
ZLHeapElt *head;
ZLHeapElt *tail;
char ***mark;
int dim;
};
void getiimjumps(double &up0, double &upum, double *uxp0, double **uxpuxm,
double **uxxp0, double ***uxxpuxm, double ****uxxpuxxm,
int *index, int rstar, int sk, double alpha, int thesign,
double *normal, double ***S, PBData &pb, GridData &grid);
void getiimjumps(double &up0, double &upum, double *uxp0, double **uxpuxm,
double **uxxp0, double ***uxxpuxm, double ****uxxpuxxm,
double *x, int thesign, double ***S, PBData &pb, GridData &grid);
void getiimstencilmx(double **A, int M, int N, double *x, int thesign, int **index,
double up0, double upum, double *uxp0, double **uxpuxm,
double **uxxp0, double ***uxxpuxm, double ****uxxpuxxm,
double ***S, PBData &pb, GridData &grid);
void getiimstencilmx(double **A, int M, int N, double *x, int thesign, int **index,
char yesC, double up0, double upum, double *uxp0,
double **uxpuxm, double **uxxp0, double ***uxxpuxm,
double ****uxxpuxxm, double ***S, PBData &pb, GridData &grid);
void getiimCstencilmx(double **A, int M, int N, double *x, int thesign, int **index,
double up0, double upum, double *uxp0, double **uxpuxm,
double **uxxp0, double ***uxxpuxm, double ****uxxpuxxm,
double ***S, PBData &pb, GridData &grid);
void getiimgridstencilmx(double **A, int M, int N, double *x, int *gindex, int thesign,
int **index, char yesC, double up0, double upum, double *uxp0,
double **uxpuxm, double **uxxp0, double ***uxxpuxm,
double ****uxxpuxxm, double ***S, PBData &pb, GridData &grid);
void iim(SparseElt2**** &A, double ***b, int *index, int gamma[][2], double ***S,
PBData &pb, GridData &grid);
void iim(SparseElt2**** &A, double ***b, int *index, int add, double ***S,
char ***tube, PBData &pb, GridData &grid);
void iim(SparseElt2**** &A, double ***b, int *index, char yesC, int add, double ***S,
char ***tube, PBData &pb, GridData &grid);
void iimghost(SparseElt2**** &A, double ***b, int *index, char yesC, int add,
double ***S, char ***tube, PBData &pb, GridData &grid);
void iimC(SparseElt2**** &A, double ***b, int *index, int gamma[][2], double ***S,
PBData &pb, GridData &grid);
void iimC(SparseElt2**** &A, double ***b, int *index, int add, double ***S,
char ***tube, PBData &pb, GridData &grid);
void addtoheap(ZLHeapStruct &heap, int *index, double val);
void fixheapeltup(ZLHeapStruct &heap, ZLHeapElt *fix);
ZLHeapElt* fixheapeltempty(ZLHeapStruct &heap, ZLHeapElt *fix);
void fixheapeltdelete(ZLHeapStruct &heap, ZLHeapElt *del);
ZLHeapElt* heapgoto(ZLHeapStruct &heap, int num);
void readZLHeap(ZLHeapStruct heap);
void getnearestgrid(int **index, int &N, double *x, int maxpts, double maxdist,
char ***tube, GridData &grid);
double getdist(double *z, double *x, int thedim);
double bilinearinterp(double *x, double ***u, GridData &grid);
double weno6interpdirect(double *x, double ***u, GridData &grid);
void getallgrad(double ****grad, double ***S, GridData &grid);
int newtondir(double *x, double *x0, double *grad, double tol, double ***S,
double ****allgrad, GridData &grid);
int regulafalsidir(double *x, double *x0, double *grad, double tol, double ***S,
GridData &grid);
void getnearestinterface(double *x, int *index, double ***S, GridData &grid) ;
void testZL(char yesC, int add, double ***S, char ***tube, PBData &pb,
GridData &grid);
void testZLatx(double *theerr, double *x, double thesign, char yesC, int add,
double ***S, char ***tube, PBData &pb, GridData &grid);
// used in IIM
void getinterfaceinfo(double *normal, double *tangent1, double *tangent2, double **Dn,
double &tau, double *Dtau, double **D2tau, double &sigma,
double *Dsigma, double &jumpfe, double *x, double ***S,
PBData &pb, GridData &grid);
#endif