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

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

#include "config.h"
Include dependency graph for lusgs.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

void serial_pre_lusgs (UCFD_INT neles, UCFD_INT nface, UCFD_FLOAT factor, UCFD_FLOAT *fnorm_vol, UCFD_FLOAT *dt, UCFD_FLOAT *diag, UCFD_FLOAT *fspr)
 Computes Diagonal matrix for LU-SGS method. More...
 
void ns_serial_lower_sweep (UCFD_INT neles, UCFD_INT nface, UCFD_INT *nei_ele, UCFD_FLOAT *fnorm_vol, UCFD_FLOAT *vec_fnorm, UCFD_FLOAT *uptsb, UCFD_FLOAT *rhsb, UCFD_FLOAT *dub, UCFD_FLOAT *diag, UCFD_FLOAT *fspr)
 Lower sweep of LU-SGS method for Navier-Stokes equations. More...
 
void rans_serial_lower_sweep (UCFD_INT neles, UCFD_INT nface, UCFD_INT *nei_ele, UCFD_FLOAT *fnorm_vol, UCFD_FLOAT *vec_fnorm, UCFD_FLOAT *uptsb, UCFD_FLOAT *rhsb, UCFD_FLOAT *dub, UCFD_FLOAT *diag, UCFD_FLOAT *fspr, UCFD_FLOAT *dsrc)
 Lower sweep of LU-SGS method for RANS equations. More...
 
void ns_serial_upper_sweep (UCFD_INT neles, UCFD_INT nface, UCFD_INT *nei_ele, UCFD_FLOAT *fnorm_vol, UCFD_FLOAT *vec_fnorm, UCFD_FLOAT *uptsb, UCFD_FLOAT *rhsb, UCFD_FLOAT *dub, UCFD_FLOAT *diag, UCFD_FLOAT *fspr)
 Upper sweep of LU-SGS method for Navier-Stokes equations. More...
 
void rans_serial_upper_sweep (UCFD_INT neles, UCFD_INT nface, UCFD_INT *nei_ele, UCFD_FLOAT *fnorm_vol, UCFD_FLOAT *vec_fnorm, UCFD_FLOAT *uptsb, UCFD_FLOAT *rhsb, UCFD_FLOAT *dub, UCFD_FLOAT *diag, UCFD_FLOAT *fspr, UCFD_FLOAT *dsrc)
 Upper sweep of LU-SGS method for RANS equations. More...
 
void lusgs_serial_ns_update (UCFD_INT neles, UCFD_FLOAT *uptsb, UCFD_FLOAT *rhsb)
 Updates solution array. More...
 
void lusgs_serial_update (UCFD_INT neles, UCFD_FLOAT *uptsb, UCFD_FLOAT *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

◆ lusgs_serial_ns_update()

void lusgs_serial_ns_update ( UCFD_INT  neles,
UCFD_FLOAT uptsb,
UCFD_FLOAT rhsb 
)

Updates solution array.

Parameters
nelesNumber of element cells
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 313 of file lusgs.c.

Here is the caller graph for this function:

◆ lusgs_serial_update()

void lusgs_serial_update ( UCFD_INT  neles,
UCFD_FLOAT uptsb,
UCFD_FLOAT rhsb 
)

Updates solution array.

Parameters
nelesNumber of element cells
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 333 of file lusgs.c.

◆ ns_serial_lower_sweep()

void ns_serial_lower_sweep ( UCFD_INT  neles,
UCFD_INT  nface,
UCFD_INT nei_ele,
UCFD_FLOAT fnorm_vol,
UCFD_FLOAT vec_fnorm,
UCFD_FLOAT uptsb,
UCFD_FLOAT rhsb,
UCFD_FLOAT dub,
UCFD_FLOAT diag,
UCFD_FLOAT fspr 
)

Lower sweep of LU-SGS method for Navier-Stokes equations.

Parameters
nelesNumber of element cells
nfaceNumber of faces depends on element type
nei_eleIndices for neighbor cells [nface, 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 74 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 ( UCFD_INT  neles,
UCFD_INT  nface,
UCFD_INT nei_ele,
UCFD_FLOAT fnorm_vol,
UCFD_FLOAT vec_fnorm,
UCFD_FLOAT uptsb,
UCFD_FLOAT rhsb,
UCFD_FLOAT dub,
UCFD_FLOAT diag,
UCFD_FLOAT fspr 
)

Upper sweep of LU-SGS method for Navier-Stokes equations.

Parameters
nelesNumber of element cells
nfaceNumber of faces depends on element type
nei_eleIndices for neighbor cells [nface, 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 193 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 ( UCFD_INT  neles,
UCFD_INT  nface,
UCFD_INT nei_ele,
UCFD_FLOAT fnorm_vol,
UCFD_FLOAT vec_fnorm,
UCFD_FLOAT uptsb,
UCFD_FLOAT rhsb,
UCFD_FLOAT dub,
UCFD_FLOAT diag,
UCFD_FLOAT fspr,
UCFD_FLOAT dsrc 
)

Lower sweep of LU-SGS method for RANS equations.

Parameters
nelesNumber of element cells
nfaceNumber of faces depends on element type
nei_eleIndices for neighbor cells [nface, 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 129 of file lusgs.c.

Here is the call graph for this function:

◆ rans_serial_upper_sweep()

void rans_serial_upper_sweep ( UCFD_INT  neles,
UCFD_INT  nface,
UCFD_INT nei_ele,
UCFD_FLOAT fnorm_vol,
UCFD_FLOAT vec_fnorm,
UCFD_FLOAT uptsb,
UCFD_FLOAT rhsb,
UCFD_FLOAT dub,
UCFD_FLOAT diag,
UCFD_FLOAT fspr,
UCFD_FLOAT dsrc 
)

Upper sweep of LU-SGS method for RANS equations.

Parameters
nelesNumber of element cells
nfaceNumber of faces depends on element type
nei_eleIndices for neighbor cells [nface, 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 251 of file lusgs.c.

Here is the call graph for this function:

◆ serial_pre_lusgs()

void serial_pre_lusgs ( UCFD_INT  neles,
UCFD_INT  nface,
UCFD_FLOAT  factor,
UCFD_FLOAT fnorm_vol,
UCFD_FLOAT dt,
UCFD_FLOAT diag,
UCFD_FLOAT 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 43 of file lusgs.c.

Here is the caller graph for this function: