HyPar
1.0
Finite-Difference Hyperbolic-Parabolic PDE Solver on Cartesian Grids
|
2nd order interpolation of the 2nd primitive More...
#include <stdio.h>
#include <stdlib.h>
#include <basic.h>
#include <arrayfunctions.h>
#include <interpolation.h>
#include <mpivars.h>
#include <hypar.h>
Go to the source code of this file.
Macros | |
#define | _MINIMUM_GHOSTS_ 1 |
Functions | |
int | Interp2PrimSecondOrder (double *fI, double *fC, int dir, void *s, void *m) |
2nd order component-wise interpolation of the 2nd primitive on a uniform grid More... | |
2nd order interpolation of the 2nd primitive
Definition in file Interp2PrimSecondOrder.c.
#define _MINIMUM_GHOSTS_ 1 |
Minimum number of ghost points required for this interpolation method.
Definition at line 19 of file Interp2PrimSecondOrder.c.
int Interp2PrimSecondOrder | ( | double * | fI, |
double * | fC, | ||
int | dir, | ||
void * | s, | ||
void * | m | ||
) |
2nd order component-wise interpolation of the 2nd primitive on a uniform grid
Computes the interpolated values of the second primitive of a function \({\bf f}\left({\bf u}\right)\) at the interfaces from the cell-centered values of the function using the second order central method on a uniform grid. The second primitive is defined as a function \({\bf h}\left({\bf u}\right)\) that satisfies:
\begin{equation} {\bf f}\left({\bf u}\left(x\right)\right) = \frac{1}{\Delta x^2} \int_{x-\Delta x/2}^{x+\Delta x/2} \left( \int_{\eta-\Delta x/2}^{\eta+\Delta x/2} {\bf h}\left({\bf u}\left(\zeta\right)\right) d\zeta \right) d\eta, \end{equation}
where \(x\) is the spatial coordinate along the dimension of the interpolation. This function the 2nd order central numerical approximation \(\hat{\bf f}_{j+1/2} \approx {\bf h}_{j+1/2}\) as \(\hat{\bf f}_{j+1/2} \approx {\bf h}_{j+1/2}\) as:
\begin{equation} \hat{\bf f}_{j+1/2} = \frac{1}{2}\left( {\bf f}_{j+1} - {\bf f}_j \right). \end{equation}
Implementation Notes:
Reference:
Function arguments:
Argument | Type | Explanation |
---|---|---|
fI | double* | Array to hold the computed interpolant at the grid interfaces. This array must have the same layout as the solution, but with no ghost points. Its size should be the same as u in all dimensions, except dir (the dimension along which to interpolate) along which it should be larger by 1 (number of interfaces is 1 more than the number of interior cell centers). |
fC | double* | Array with the cell-centered values of the flux function \({\bf f}\left({\bf u}\right)\). This array must have the same layout and size as the solution, with ghost points. |
dir | int | Spatial dimension along which to interpolate (eg: 0 for 1D; 0 or 1 for 2D; 0,1 or 2 for 3D) |
s | void* | Solver object of type HyPar: the following variables are needed - HyPar::ghosts, HyPar::ndims, HyPar::nvars, HyPar::dim_local. |
m | void* | MPI object of type MPIVariables: this is needed only by compact interpolation method that need to solve a global implicit system across MPI ranks. |
fI | Array of interpolated function values at the interfaces |
fC | Array of cell-centered values of the function \({\bf f}\left({\bf u}\right)\) |
dir | Spatial dimension along which to interpolation |
s | Object of type HyPar containing solver-related variables |
m | Object of type MPIVariables containing MPI-related variables |
Definition at line 56 of file Interp2PrimSecondOrder.c.