39 double *fnorm_vol,
double *dt,
double *diag,
double *fjmat)
41 int idx, jdx, kdx, row, col;
42 int matsize = nfvars*nfvars;
46 #pragma omp parallel for private(jdx, kdx, row, col, fv, dmat, dti)
47 for (idx=0; idx<neles; idx++) {
49 for (kdx=0; kdx<matsize; kdx++)
53 for (jdx=0; jdx<nface; jdx++) {
54 fv = fnorm_vol[neles*jdx + idx];
55 for (row=0; row<nfvars; row++) {
56 for (col=0; col<nfvars; col++) {
57 dmat[nfvars*row+col] \
58 += fjmat[idx+neles*jdx+nface*neles*col+nfvars*nface*neles*row]*fv;
64 dti = 1.0/(dt[idx]*factor);
65 for (kdx=0; kdx<nfvars; kdx++) {
66 dmat[(nfvars+1)*kdx] += dti;
73 for (row=0; row<nfvars; row++) {
74 for (col=0; col<nfvars; col++) {
75 diag[idx+neles*col+neles*nfvars*row] = dmat[nfvars*row+col];
89 double *fnorm_vol,
double *uptsb,
double *dt,
double *tdiag,
double *tjmat,
double *dsrc)
91 int idx, jdx, kdx, row, col;
92 int ntvars =
nvars - nfvars;
93 int matsize = ntvars*ntvars;
99 #pragma omp parallel for private(jdx, kdx, row, col, fv, err, \
101 for (idx=0; idx<neles; idx++) {
103 for (kdx=0; kdx<matsize; kdx++)
106 for (kdx=0; kdx<
nvars; kdx++) {
107 uf[kdx] = uptsb[idx+neles*kdx];
108 dsrcf[kdx] = dsrc[idx+neles*kdx];
112 for (jdx=0; jdx<nface; jdx++) {
113 fv = fnorm_vol[neles*jdx + idx];
114 for (row=0; row<ntvars; row++) {
115 for (col=0; col<ntvars; col++) {
116 tmat[ntvars*row+col] \
117 += tjmat[idx+neles*jdx+nface*neles*col+ntvars*nface*neles*row]*fv;
125 printf(
"Warning:::Source term Jacobian of RANS equations does not match\n");
129 for (kdx=0; kdx<ntvars; kdx++) {
130 tmat[(ntvars+1)*kdx] += 1.0/(dt[idx]*factor);
137 for (row=0; row<ntvars; row++) {
138 for (col=0; col<ntvars; col++) {
139 tdiag[idx+neles*col+neles*ntvars*row] = tmat[ntvars*row+col];
156 int *nei_ele,
int *icolor,
int *lcolor,
double *fnorm_vol, \
157 double *rhsb,
double *dub,
double *diag,
double *fjmat)
159 int _idx, idx, jdx, kdx, neib, curr_level;
162 double rhs[nfvars], dmat[nfvars*nfvars];
165 #pragma omp parallel for private(idx, jdx, kdx, neib, curr_level, row, col, \
167 for (_idx=n0; _idx<ne; _idx++) {
169 curr_level = lcolor[idx];
172 for (kdx=0; kdx<nfvars; kdx++) {
173 rhs[kdx] = rhsb[idx+kdx*neles];
176 for (row=0; row<nfvars; row++) {
177 for (col=0; col<nfvars; col++) {
178 dmat[col+nfvars*row] = diag[idx+neles*col+nfvars*neles*row];
182 for (jdx=0; jdx<nface; jdx++) {
183 neib = nei_ele[idx+neles*jdx];
185 if (lcolor[neib] != curr_level) {
186 fv = fnorm_vol[idx+neles*jdx];
188 for (row=0; row<nfvars; row++) {
190 for (col=0; col<nfvars; col++) {
191 val += fjmat[idx+neles*jdx+nface*neles*col+nfvars*nface*neles*row] \
192 * dub[neib+neles*col];
201 for (kdx=0; kdx<nfvars; kdx++) {
202 dub[idx+neles*kdx] = rhs[kdx];
217 int *nei_ele,
int *icolor,
int *lcolor,
double *fnorm_vol, \
218 double *rhsb,
double *dub,
double *tdiag,
double *tjmat)
220 int _idx, idx, jdx, kdx, neib, curr_level;
222 int ntvars =
nvars - nfvars;
224 double rhs[ntvars], dmat[ntvars*ntvars];
227 #pragma omp parallel for private(idx, jdx, kdx, neib, curr_level, row, col, \
229 for (_idx=n0; _idx<ne; _idx++) {
231 curr_level = lcolor[idx];
234 for (kdx=0; kdx<ntvars; kdx++) {
235 rhs[kdx] = rhsb[idx+(kdx+nfvars)*neles];
238 for (row=0; row<ntvars; row++) {
239 for (col=0; col<ntvars; col++) {
240 dmat[col+ntvars*row] = tdiag[idx+neles*col+neles*ntvars*row];
244 for (jdx=0; jdx<nface; jdx++) {
245 neib = nei_ele[idx+neles*jdx];
247 if (lcolor[neib] != curr_level) {
248 fv = fnorm_vol[idx+neles*jdx];
250 for (row=0; row<ntvars; row++) {
252 for (col=0; col<ntvars; col++) {
253 val += tjmat[idx+neles*jdx+nface*neles*col+ntvars*nface*neles*row] \
254 * dub[neib+neles*(col+nfvars)];
265 for (kdx=0; kdx<ntvars; kdx++) {
266 dub[idx+neles*(kdx+nfvars)] = rhs[kdx];
279 #pragma omp parallel for private(kdx)
280 for (idx=0; idx<neles; idx++) {
281 for (kdx=0; kdx<
nvars; kdx++) {
282 uptsb[idx+neles*kdx] += dub[idx+neles*kdx];
285 dub[idx+neles*kdx] = 0.0;
void ns_parallel_pre_blusgs(int neles, int nfvars, int nface, double factor, double *fnorm_vol, double *dt, double *diag, double *fjmat)
void parallel_update(int neles, int nvars, double *uptsb, double *dub, double *subres)
void rans_parallel_pre_blusgs(int neles, int nvars, int nfvars, int nface, double factor, double betast, double *fnorm_vol, double *uptsb, double *dt, double *tdiag, double *tjmat, double *dsrc)
void ns_parallel_block_sweep(int n0, int ne, int neles, int nfvars, int nface, int *nei_ele, int *icolor, int *lcolor, double *fnorm_vol, double *rhsb, double *dub, double *diag, double *fjmat)
void rans_parallel_block_sweep(int n0, int ne, int neles, int nvars, int nfvars, int nface, int *nei_ele, int *icolor, int *lcolor, double *fnorm_vol, double *rhsb, double *dub, double *tdiag, double *tjmat)
int rans_source_jacobian(int nvars, int ntvars, double betast, double *uf, double *tmat, double *dsrc)
Computes source term Jacobian matrix for RANS equations.
Header file for numerical flux funtions.
void lusubst(int n, double *LU, double *b)
Forward/Backward Substitution function.
void ludcmp(int n, double *A)
LU Decomposition function.
Header file for LU Decomposition/Substitution.