UCFD_SPARSE  v1.0
Documentation
Loading...
Searching...
No Matches
lusgs.h File Reference

Header file for serial LU-SGS method. More...

This graph shows which files directly or indirectly include this file:

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...
 

Detailed Description

Header file for serial LU-SGS method.

Declaration of each function used in LU-SGS method.

Definition in file lusgs.h.

Function Documentation

◆ ns_serial_lower_sweep()

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.

Parameters
nelesNumber of element cells
nfvarsNumber of flux variables
nfaceNumber of faces depends on element type
ndimsDimensions
nei_eleIndices for neighbor cells [nface, neles]
mappingReordered index by Reverse Cuthill-McKee algorithm [neles]
unmappingOriginal index before Reverse Cuthill-McKee algorithm [neles]
fnorm_volSurface magnitude/cell volume [nface, neles]
vec_fnormSurface vector [nface, ndims, neles]
uptsbSolution array [nfvars, neles]
rhsbResidual (RHS) array [nfvars, neles]
dubDifference array for update [nfvars, neles] (output)
diagDiagonal matrix array [neles]
fsprWave 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.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ns_serial_upper_sweep()

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.

Parameters
nelesNumber of element cells
nfvarsNumber of flux variables
nfaceNumber of faces depends on element type
ndimsDimensions
nei_eleIndices for neighbor cells [nface, neles]
mappingReordered index by Reverse Cuthill-McKee algorithm [neles]
unmappingOriginal index before Reverse Cuthill-McKee algorithm [neles]
fnorm_volSurface magnitude/cell volume [nface, neles]
vec_fnormSurface vector [nface, ndims, neles]
uptsbSolution array [nfvars, neles]
rhsbResidual (RHS) array [nfvars, neles]
dubDifference array for update [nfvars, neles] (output)
diagDiagonal matrix array [neles]
fsprWave 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.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ rans_serial_lower_sweep()

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.

Parameters
nelesNumber of element cells
nvarsNumber of conservative variables
nfvarsNumber of flux variables
nfaceNumber of faces depends on element type
ndimsDimensions
nei_eleIndices for neighbor cells [nface, neles]
mappingReordered index by Reverse Cuthill-McKee algorithm [neles]
unmappingOriginal index before Reverse Cuthill-McKee algorithm [neles]
fnorm_volSurface magnitude/cell volume [nface, neles]
vec_fnormSurface vector [nface, ndims, neles]
uptsbSolution array [nvars, neles]
rhsbResidual (RHS) array [nvars, neles]
dubDifference array for update [nvars, neles] (output)
diagDiagonal matrix array [neles]
fsprWave speed for each cell face [nface, neles]
dsrcSource 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.

Here is the call graph for this function:

◆ rans_serial_upper_sweep()

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.

Parameters
nelesNumber of element cells
nvarsNumber of conservative variables
nfvarsNumber of flux variables
nfaceNumber of faces depends on element type
ndimsDimensions
nei_eleIndices for neighbor cells [nface, neles]
mappingReordered index by Reverse Cuthill-McKee algorithm [neles]
unmappingOriginal index before Reverse Cuthill-McKee algorithm [neles]
fnorm_volSurface magnitude/cell volume [nface, neles]
vec_fnormSurface vector [nface, ndims, neles]
uptsbSolution array [nvars, neles]
rhsbResidual (RHS) array [nvars, neles]
dubDifference array for update [nvars, neles] (output)
diagDiagonal matrix array [neles]
fsprWave speed for each cell face [nface, neles]
dsrcSource 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.

Here is the call graph for this function:

◆ serial_pre_lusgs()

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.

Parameters
nelesNumber of element cells
nfaceNumber of faces depends on element type
factorMultiplication factor for diffusive margin
fnorm_volSurface magnitude/cell volume [nface, neles]
dtTime step [neles]
diagDiagonal matrix for LU-SGS method [neles]
fsprWave 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.

Here is the caller graph for this function:

◆ serial_update()

void serial_update ( int  neles,
int  nvars,
double *  uptsb,
double *  rhsb 
)

Updates solution array.

Parameters
nelesNumber of element cells
nvarsNumber of conservative variables
uptsbSolution array
rhsbResult 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.

Definition at line 341 of file lusgs.c.