Header file for serial LU-SGS method. More...
Go to the source code of this file.
Functions | |
void | serial_pre_lusgs (int neles, int nface, double factor, double *fnorm_vol, double *dt, double *diag, double *fspr) |
Computes Diagonal matrix for LU-SGS method. More... | |
void | ns_serial_lower_sweep (int neles, int nfvars, int nface, int ndims, int *nei_ele, int *mapping, int *unmapping, double *fnorm_vol, double *vec_fnorm, double *uptsb, double *rhsb, double *dub, double *diag, double *fspr) |
Lower sweep of LU-SGS method for Navier-Stokes equations. More... | |
void | rans_serial_lower_sweep (int neles, int nvars, int nfvars, int nface, int ndims, int *nei_ele, int *mapping, int *unmapping, double *fnorm_vol, double *vec_fnorm, double *uptsb, double *rhsb, double *dub, double *diag, double *fspr, double *dsrc) |
Lower sweep of LU-SGS method for RANS equations. More... | |
void | ns_serial_upper_sweep (int neles, int nfvars, int nface, int ndims, int *nei_ele, int *mapping, int *unmapping, double *fnorm_vol, double *vec_fnorm, double *uptsb, double *rhsb, double *dub, double *diag, double *fspr) |
Upper sweep of LU-SGS method for Navier-Stokes equations. More... | |
void | rans_serial_upper_sweep (int neles, int nvars, int nfvars, int nface, int ndims, int *nei_ele, int *mapping, int *unmapping, double *fnorm_vol, double *vec_fnorm, double *uptsb, double *rhsb, double *dub, double *diag, double *fspr, double *dsrc) |
Upper sweep of LU-SGS method for RANS equations. More... | |
void | serial_update (int neles, int nvars, double *uptsb, double *rhsb) |
Updates solution array. More... | |
Header file for serial LU-SGS method.
Declaration of each function used in LU-SGS method.
Definition in file lusgs.h.
void ns_serial_lower_sweep | ( | int | neles, |
int | nfvars, | ||
int | nface, | ||
int | ndims, | ||
int * | nei_ele, | ||
int * | mapping, | ||
int * | unmapping, | ||
double * | fnorm_vol, | ||
double * | vec_fnorm, | ||
double * | uptsb, | ||
double * | rhsb, | ||
double * | dub, | ||
double * | diag, | ||
double * | fspr | ||
) |
Lower sweep of LU-SGS method for Navier-Stokes equations.
neles | Number of element cells |
nfvars | Number of flux variables |
nface | Number of faces depends on element type |
ndims | Dimensions |
nei_ele | Indices for neighbor cells [nface, neles] |
mapping | Reordered index by Reverse Cuthill-McKee algorithm [neles] |
unmapping | Original index before Reverse Cuthill-McKee algorithm [neles] |
fnorm_vol | Surface magnitude/cell volume [nface, neles] |
vec_fnorm | Surface vector [nface, ndims, neles] |
uptsb | Solution array [nfvars, neles] |
rhsb | Residual (RHS) array [nfvars, neles] |
dub | Difference array for update [nfvars, neles] (output) |
diag | Diagonal matrix array [neles] |
fspr | Wave speed for each cell face [nface, neles] |
By processing lower sweep, intermediate solution \(\Delta Q^*\) is computed. This function is used for Euler or Navier-Stokes equations, which has the same flux shape.
solution array is stored in dub
array.
Definition at line 75 of file lusgs.c.
void ns_serial_upper_sweep | ( | int | neles, |
int | nfvars, | ||
int | nface, | ||
int | ndims, | ||
int * | nei_ele, | ||
int * | mapping, | ||
int * | unmapping, | ||
double * | fnorm_vol, | ||
double * | vec_fnorm, | ||
double * | uptsb, | ||
double * | rhsb, | ||
double * | dub, | ||
double * | diag, | ||
double * | fspr | ||
) |
Upper sweep of LU-SGS method for Navier-Stokes equations.
neles | Number of element cells |
nfvars | Number of flux variables |
nface | Number of faces depends on element type |
ndims | Dimensions |
nei_ele | Indices for neighbor cells [nface, neles] |
mapping | Reordered index by Reverse Cuthill-McKee algorithm [neles] |
unmapping | Original index before Reverse Cuthill-McKee algorithm [neles] |
fnorm_vol | Surface magnitude/cell volume [nface, neles] |
vec_fnorm | Surface vector [nface, ndims, neles] |
uptsb | Solution array [nfvars, neles] |
rhsb | Residual (RHS) array [nfvars, neles] |
dub | Difference array for update [nfvars, neles] (output) |
diag | Diagonal matrix array [neles] |
fspr | Wave speed for each cell face [nface, neles] |
By processing upper sweep, next time step solution \(\Delta Q\) is computed. This function is used for Euler or Navier-Stokes equations, which has the same flux shape.
Solution array is stored in rhsb
array, since right-hand-side array is no longer needed.
Definition at line 207 of file lusgs.c.
void rans_serial_lower_sweep | ( | int | neles, |
int | nvars, | ||
int | nfvars, | ||
int | nface, | ||
int | ndims, | ||
int * | nei_ele, | ||
int * | mapping, | ||
int * | unmapping, | ||
double * | fnorm_vol, | ||
double * | vec_fnorm, | ||
double * | uptsb, | ||
double * | rhsb, | ||
double * | dub, | ||
double * | diag, | ||
double * | fspr, | ||
double * | dsrc | ||
) |
Lower sweep of LU-SGS method for RANS equations.
neles | Number of element cells |
nvars | Number of conservative variables |
nfvars | Number of flux variables |
nface | Number of faces depends on element type |
ndims | Dimensions |
nei_ele | Indices for neighbor cells [nface, neles] |
mapping | Reordered index by Reverse Cuthill-McKee algorithm [neles] |
unmapping | Original index before Reverse Cuthill-McKee algorithm [neles] |
fnorm_vol | Surface magnitude/cell volume [nface, neles] |
vec_fnorm | Surface vector [nface, ndims, neles] |
uptsb | Solution array [nvars, neles] |
rhsb | Residual (RHS) array [nvars, neles] |
dub | Difference array for update [nvars, neles] (output) |
diag | Diagonal matrix array [neles] |
fspr | Wave speed for each cell face [nface, neles] |
dsrc | Source term derivatives [nvars, neles] |
By processing lower sweep, intermediate solution \(\Delta Q^*\) is computed. This function is used for RANS equations.
solution array is stored in dub
array.
Definition at line 136 of file lusgs.c.
void rans_serial_upper_sweep | ( | int | neles, |
int | nvars, | ||
int | nfvars, | ||
int | nface, | ||
int | ndims, | ||
int * | nei_ele, | ||
int * | mapping, | ||
int * | unmapping, | ||
double * | fnorm_vol, | ||
double * | vec_fnorm, | ||
double * | uptsb, | ||
double * | rhsb, | ||
double * | dub, | ||
double * | diag, | ||
double * | fspr, | ||
double * | dsrc | ||
) |
Upper sweep of LU-SGS method for RANS equations.
neles | Number of element cells |
nvars | Number of conservative variables |
nfvars | Number of flux variables |
nface | Number of faces depends on element type |
ndims | Dimensions |
nei_ele | Indices for neighbor cells [nface, neles] |
mapping | Reordered index by Reverse Cuthill-McKee algorithm [neles] |
unmapping | Original index before Reverse Cuthill-McKee algorithm [neles] |
fnorm_vol | Surface magnitude/cell volume [nface, neles] |
vec_fnorm | Surface vector [nface, ndims, neles] |
uptsb | Solution array [nvars, neles] |
rhsb | Residual (RHS) array [nvars, neles] |
dub | Difference array for update [nvars, neles] (output) |
diag | Diagonal matrix array [neles] |
fspr | Wave speed for each cell face [nface, neles] |
dsrc | Source term derivatives [nvars, neles] |
By processing upper sweep, next time step solution \(\Delta Q\) is computed. This function is used for RANS equations.
Solution array is stored in rhsb
array, since right-hand-side array is no longer needed.
Definition at line 271 of file lusgs.c.
void serial_pre_lusgs | ( | int | neles, |
int | nface, | ||
double | factor, | ||
double * | fnorm_vol, | ||
double * | dt, | ||
double * | diag, | ||
double * | fspr | ||
) |
Computes Diagonal matrix for LU-SGS method.
neles | Number of element cells |
nface | Number of faces depends on element type |
factor | Multiplication factor for diffusive margin |
fnorm_vol | Surface magnitude/cell volume [nface, neles] |
dt | Time step [neles] |
diag | Diagonal matrix for LU-SGS method [neles] |
fspr | Wave speed for each cell face [nface, neles] |
This function computes diagonal matrix of the implicit operator. In LU-SGS method, implicit operator is replaced with spectral radius
, so that all element except diagonal is zero. Therefore, diag
array can be allocated as one-dimensional, which has less memory requirement.
Diffusive margin of wave speed is applied.
Definition at line 44 of file lusgs.c.
void serial_update | ( | int | neles, |
int | nvars, | ||
double * | uptsb, | ||
double * | rhsb | ||
) |
Updates solution array.
neles | Number of element cells |
nvars | Number of conservative variables |
uptsb | Solution array |
rhsb | Result of LU-SGS sweeps |
solution array updated by adding \(\Delta Q\). Be aware that rhsb
array in function parameter is the difference array after upper sweep, not the right-hand-side array.