20 #undef _MINIMUM_GHOSTS_
25 #define _MINIMUM_GHOSTS_ 3
89 int ghosts = solver->
ghosts;
90 int ndims = solver->
ndims;
91 int nvars = solver->
nvars;
96 static const double one_sixth = 1.0/6.0;
98 double *ww1, *ww2, *ww3;
99 ww1 = weno->
w1 + (upw < 0 ? 2*weno->size : 0) + (uflag ? weno->
size : 0) + weno->
offset[dir];
100 ww2 = weno->
w2 + (upw < 0 ? 2*weno->size : 0) + (uflag ? weno->
size : 0) + weno->
offset[dir];
101 ww3 = weno->
w3 + (upw < 0 ? 2*weno->size : 0) + (uflag ? weno->
size : 0) + weno->
offset[dir];
105 int indexC[ndims], indexI[ndims], index_outer[ndims], bounds_outer[ndims], bounds_inter[ndims];
106 _ArrayCopy1D_(dim,bounds_outer,ndims); bounds_outer[dir] = 1;
107 _ArrayCopy1D_(dim,bounds_inter,ndims); bounds_inter[dir] += 1;
110 #if defined(CPU_STAT)
111 clock_t cpu_start, cpu_end;
116 #pragma omp parallel for schedule(auto) default(shared) private(i,index_outer,indexC,indexI)
117 for (i=0; i<N_outer; i++) {
121 for (indexI[dir] = 0; indexI[dir] < dim[dir]+1; indexI[dir]++) {
122 int qm1,qm2,qm3,qp1,qp2,p;
125 indexC[dir] = indexI[dir]-1;
_ArrayIndex1D_(ndims,dim,indexC,ghosts,qm1);
126 qm3 = qm1 - 2*stride[dir];
127 qm2 = qm1 - stride[dir];
128 qp1 = qm1 + stride[dir];
129 qp2 = qm1 + 2*stride[dir];
131 indexC[dir] = indexI[dir] ;
_ArrayIndex1D_(ndims,dim,indexC,ghosts,qm1);
132 qm3 = qm1 + 2*stride[dir];
133 qm2 = qm1 + stride[dir];
134 qp1 = qm1 - stride[dir];
135 qp2 = qm1 - 2*stride[dir];
139 double *fm3, *fm2, *fm1, *fp1, *fp2;
140 fm3 = (fC+qm3*nvars);
141 fm2 = (fC+qm2*nvars);
142 fm1 = (fC+qm1*nvars);
143 fp1 = (fC+qp1*nvars);
144 fp2 = (fC+qp2*nvars);
147 double f1[nvars], f2[nvars], f3[nvars];
148 _ArrayAXBYCZ_(f1,(2*one_sixth),fm3,(-7*one_sixth) ,fm2,(11*one_sixth) ,fm1,nvars);
149 _ArrayAXBYCZ_(f2,(-one_sixth) ,fm2,(5*one_sixth) ,fm1,(2*one_sixth) ,fp1,nvars);
150 _ArrayAXBYCZ_(f3,(2*one_sixth),fm1,(5*one_sixth) ,fp1,(-one_sixth) ,fp2,nvars);
162 #if defined(CPU_STAT)
164 printf(
"Interp1PrimFifthOrderWENO CPU time = %8.6lf dir = %d\n", (
double)(cpu_end - cpu_start) / CLOCKS_PER_SEC, dir);
Definitions for the functions computing the interpolated value of the primitive at the cell interface...
#define _ArrayIndexnD_(N, index, imax, i, ghost)
MPI related function definitions.
Structure of variables/parameters needed by the WENO-type scheme.
#define _ArrayIndex1D_(N, imax, i, ghost, index)
#define _ArrayMultiply3Add1D_(x, a, b, c, d, e, f, size)
int Interp1PrimFifthOrderWENO(double *, double *, double *, double *, int, int, void *, void *, int)
5th order WENO reconstruction (component-wise) on a uniform grid
Contains function definitions for common mathematical functions.
#define _ArrayCopy1D_(x, y, size)
#define _ArrayAXBYCZ_(w, a, x, b, y, c, z, size)
Contains structure definition for hypar.
Some basic definitions and macros.
Contains macros and function definitions for common array operations.
#define _ArrayProduct1D_(x, size, p)
Structure containing all solver-specific variables and functions.