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

LU-SGS time integration method for unstructured grid. More...

#include "lusgs.h"
#include "flux.h"
Include dependency graph for lusgs.c:

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

LU-SGS time integration method for unstructured grid.

======================================================================================================================

LU-SGS time integration method (Single thread only).
To compute solution of the next time step, refer to the following steps.

(1) Preparing LU-SGS :
Computes diagonal matrix of the Implicit operator.
(2) Lower sweep :
First step of LU-SGS method, which computes intermediate solution difference array.
(3) Upper sweep :
Second step of LU-SGS method, which computes next solution difference array.
(4) Update :
Time integration by adding current solution with next time step solution difference

Note
In case of RANS equations, add rans_serial_{}_sweep function right after the ns_serial_{}_sweep function.
Be aware that ns and rans sweep function must be paired with each sweep step.
Author
Date
July 2024
Version
1.0
Copyright
Copyright (c) 2024, Namhyoung Kim and Jin Seok Park, Inha University, All rights reserved.
License
This project is release under the terms of the MIT License (see LICENSE file).

Definition in file lusgs.c.

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.

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.

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.

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.

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.

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.

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.