UCFD_SPARSE  v1.0
Documentation
Loading...
Searching...
No Matches
flux.c
Go to the documentation of this file.
1
20#include "flux.h"
21
22#ifndef CONST_H
24 #define gamma 1.4
26 #define pmin 1e-15
27#endif
28
29#define max(a,b) (((a) > (b)) ? (a) : (b))
30
37void ns_flux_container(int nfvars, int ndims, double *u, double *nf, double *f)
38{
46 double rho = u[0];
47 double et = u[nfvars-1];
48 double temp = 0.0;
49 double contrav = 0.0;
50 int i;
51
52 for (i=0; i<ndims; i++) {
53 contrav += u[i+1]*nf[i];
54 temp += u[i+1]*u[i+1];
55 }
56 contrav /= rho;
57
58 // Apply lower bound of pressure value
59 double p = (gamma - 1.0)*(et - 0.5*temp/rho);
60 if (p < pmin) {
61 p = pmin;
62 et = p/(gamma-1.0) + 0.5*temp/rho;
63 u[nfvars-1] = et;
64 }
65
66 // Total enthalpy
67 double ht = et + p;
68
69 // Computes flux array
70 f[0] = rho*contrav;
71 for (int i=0; i<ndims; i++) {
72 f[i+1] = u[i+1] * contrav + nf[i]*p;
73 }
74 f[nfvars-1] = ht*contrav;
75}
76
85void rans_flux_container(int nfvars, int ndims, int nturbvars, double *u, double *nf, double *f)
86{
87 double rho = u[0];
88 double contrav = 0.0;
89
90 for (int i=0; i<ndims; i++) {
91 contrav += u[i+1] * nf[i];
92 }
93 contrav /= rho;
94
95 for (int i=0; i<nturbvars; i++) {
96 f[i] = u[nfvars+i]*contrav;
97 }
98}
99
100
101int rans_source_jacobian(int nvars, int ntvars, double betast, \
102 double *uf, double *tmat, double *dsrc)
103{
104 /* 1-equation RANS model (Spalart-Allmaras) */
105 if (ntvars == 1) {
106 tmat[0] += dsrc[nvars-1];
107 }
108
109 /* 2-equations RANS model (kw-SST) */
110 else if (ntvars == 2) {
111 double k = uf[nvars-2] / uf[0];
112 tmat[0] += dsrc[nvars-2];
113 tmat[1] += max(betast*k, 0.0);
114 tmat[3] += dsrc[nvars-1];
115 }
116
117 else {
118 return -1;
119 }
120
121 return 0;
122}
int rans_source_jacobian(int nvars, int ntvars, double betast, double *uf, double *tmat, double *dsrc)
Computes source term Jacobian matrix for RANS equations.
Definition: flux.c:101
#define gamma
Definition: flux.c:24
void ns_flux_container(int nfvars, int ndims, double *u, double *nf, double *f)
Computes flux for Navier-Stokes equations.
Definition: flux.c:37
void rans_flux_container(int nfvars, int ndims, int nturbvars, double *u, double *nf, double *f)
Computes flux for RANS equations.
Definition: flux.c:85
#define pmin
Definition: flux.c:26
#define max(a, b)
Definition: flux.c:29
Header file for numerical flux funtions.
#define ndims
Definition: mpi3d.c:32
#define nvars
Definition: mpi3d.c:31