Lines Matching refs:scheme

106   TSGLLEScheme scheme;  in TSGLLESchemeCreate()  local
115 PetscCall(PetscNew(&scheme)); in TSGLLESchemeCreate()
116 scheme->p = p; in TSGLLESchemeCreate()
117 scheme->q = q; in TSGLLESchemeCreate()
118 scheme->r = r; in TSGLLESchemeCreate()
119 scheme->s = s; in TSGLLESchemeCreate()
121 …PetscCall(PetscMalloc5(s, &scheme->c, s * s, &scheme->a, r * s, &scheme->b, r * s, &scheme->u, r *… in TSGLLESchemeCreate()
122 PetscCall(PetscArraycpy(scheme->c, c, s)); in TSGLLESchemeCreate()
123 for (j = 0; j < s * s; j++) scheme->a[j] = (PetscAbsScalar(a[j]) < 1e-12) ? 0 : a[j]; in TSGLLESchemeCreate()
124 for (j = 0; j < r * s; j++) scheme->b[j] = (PetscAbsScalar(b[j]) < 1e-12) ? 0 : b[j]; in TSGLLESchemeCreate()
125 for (j = 0; j < s * r; j++) scheme->u[j] = (PetscAbsScalar(u[j]) < 1e-12) ? 0 : u[j]; in TSGLLESchemeCreate()
126 for (j = 0; j < r * r; j++) scheme->v[j] = (PetscAbsScalar(v[j]) < 1e-12) ? 0 : v[j]; in TSGLLESchemeCreate()
128 …scCall(PetscMalloc6(r, &scheme->alpha, r, &scheme->beta, r, &scheme->gamma, 3 * s, &scheme->phi, 3… in TSGLLESchemeCreate()
133 …calar *ImV, *H, *bmat, *workscalar, *c = scheme->c, *a = scheme->a, *b = scheme->b, *u = scheme->u… in TSGLLESchemeCreate()
145 scheme->alpha[i] = 1. / Factorial(p + 1 - i); in TSGLLESchemeCreate()
146 for (j = 0; j < s; j++) scheme->alpha[i] -= b[i * s + j] * CPowF(c[j], p); in TSGLLESchemeCreate()
150 PetscCallBLAS("LAPACKgesv", LAPACKgesv_(&m, &one, ImV, &n, ipiv, scheme->alpha + 1, &n, &info)); in TSGLLESchemeCreate()
156 scheme->beta[i] = 1. / Factorial(p + 2 - i) - scheme->alpha[i]; in TSGLLESchemeCreate()
157 for (j = 0; j < s; j++) scheme->beta[i] -= b[i * s + j] * CPowF(c[j], p + 1); in TSGLLESchemeCreate()
159 …PetscCallBLAS("LAPACKgetrs", LAPACKgetrs_("No transpose", &m, &one, ImV, &n, ipiv, scheme->beta + … in TSGLLESchemeCreate()
167 scheme->stage_error[i] = CPowF(c[i], p + 1); in TSGLLESchemeCreate()
168 for (j = 0; j < s; j++) scheme->stage_error[i] -= a[i * s + j] * CPowF(c[j], p); in TSGLLESchemeCreate()
169 for (j = 1; j < r; j++) scheme->stage_error[i] += u[i * r + j] * scheme->alpha[j]; in TSGLLESchemeCreate()
175 scheme->alpha[0] = 1. / Factorial(p + 1); in TSGLLESchemeCreate()
176 for (j = 0; j < s; j++) scheme->alpha[0] -= b[0 * s + j] * CPowF(c[j], p); in TSGLLESchemeCreate()
177 for (j = 1; j < r; j++) scheme->alpha[0] += v[0 * r + j] * scheme->alpha[j]; in TSGLLESchemeCreate()
181 scheme->gamma[i] = (i == 1 ? -1. : 0) * scheme->alpha[0]; in TSGLLESchemeCreate()
182 for (j = 0; j < s; j++) scheme->gamma[i] += b[i * s + j] * scheme->stage_error[j]; in TSGLLESchemeCreate()
184 …PetscCallBLAS("LAPACKgetrs", LAPACKgetrs_("No transpose", &m, &one, ImV, &n, ipiv, scheme->gamma +… in TSGLLESchemeCreate()
193 scheme->beta[0] = 1. / Factorial(p + 2); in TSGLLESchemeCreate()
194 for (j = 0; j < s; j++) scheme->beta[0] -= b[0 * s + j] * CPowF(c[j], p + 1); in TSGLLESchemeCreate()
195 for (j = 1; j < r; j++) scheme->beta[0] += v[0 * r + j] * scheme->beta[j]; in TSGLLESchemeCreate()
200 scheme->gamma[0] = 0.0; in TSGLLESchemeCreate()
201 for (j = 0; j < s; j++) scheme->gamma[0] += b[0 * s + j] * scheme->stage_error[j]; in TSGLLESchemeCreate()
202 for (j = 1; j < r; j++) scheme->gamma[0] += v[0 * s + j] * scheme->gamma[j]; in TSGLLESchemeCreate()
218 H[2 + j * 3] = scheme->stage_error[j]; in TSGLLESchemeCreate()
220 H[0 + j * 3] += CPowF(c[j], k - 1) * scheme->alpha[k]; in TSGLLESchemeCreate()
221 H[1 + j * 3] += CPowF(c[j], k - 1) * scheme->beta[k]; in TSGLLESchemeCreate()
222 H[2 + j * 3] -= CPowF(c[j], k - 1) * scheme->gamma[k]; in TSGLLESchemeCreate()
249 for (k = 0; k < s; k++) scheme->phi[k + j * s] = bmat[k + j * ss]; in TSGLLESchemeCreate()
253 scheme->psi[0 * r + 0] = 0.; in TSGLLESchemeCreate()
254 scheme->psi[1 * r + 0] = 0.; in TSGLLESchemeCreate()
255 scheme->psi[2 * r + 0] = 0.; in TSGLLESchemeCreate()
257 scheme->psi[0 * r + j] = 0.; in TSGLLESchemeCreate()
258 scheme->psi[1 * r + j] = 0.; in TSGLLESchemeCreate()
259 scheme->psi[2 * r + j] = 0.; in TSGLLESchemeCreate()
261 scheme->psi[0 * r + j] -= CPowF(c[k], j - 1) * scheme->phi[0 * s + k]; in TSGLLESchemeCreate()
262 scheme->psi[1 * r + j] -= CPowF(c[k], j - 1) * scheme->phi[1 * s + k]; in TSGLLESchemeCreate()
263 scheme->psi[2 * r + j] -= CPowF(c[k], j - 1) * scheme->phi[2 * s + k]; in TSGLLESchemeCreate()
269 scheme->stiffly_accurate = PETSC_TRUE; in TSGLLESchemeCreate()
270 if (scheme->c[s - 1] != 1.) scheme->stiffly_accurate = PETSC_FALSE; in TSGLLESchemeCreate()
272 if (a[(s - 1) * s + j] != b[j]) scheme->stiffly_accurate = PETSC_FALSE; in TSGLLESchemeCreate()
274 if (u[(s - 1) * r + j] != v[j]) scheme->stiffly_accurate = PETSC_FALSE; in TSGLLESchemeCreate()
275 scheme->fsal = scheme->stiffly_accurate; /* FSAL is stronger */ in TSGLLESchemeCreate()
277 if (r > 1 && b[1 * s + j] != 0.) scheme->fsal = PETSC_FALSE; in TSGLLESchemeCreate()
278 if (b[1 * s + r - 1] != 1.) scheme->fsal = PETSC_FALSE; in TSGLLESchemeCreate()
280 if (r > 1 && v[1 * r + j] != 0.) scheme->fsal = PETSC_FALSE; in TSGLLESchemeCreate()
282 *inscheme = scheme; in TSGLLESchemeCreate()
876 TSGLLEScheme scheme = gl->schemes[gl->current_scheme]; in TSSolve_GLLE() local
878 r = scheme->r; in TSSolve_GLLE()
879 s = scheme->s; in TSSolve_GLLE()
880 c = scheme->c; in TSSolve_GLLE()
881 a = scheme->a; in TSSolve_GLLE()
882 u = scheme->u; in TSSolve_GLLE()
945 PetscCall((*gl->EstimateHigherMoments)(scheme, h, Ydot, gl->X, gl->himom)); in TSSolve_GLLE()
948 enorm[0] = PetscRealPart(scheme->alpha[0]) * hmnorm[1]; in TSSolve_GLLE()
949 enorm[1] = PetscRealPart(scheme->beta[0]) * hmnorm[2]; in TSSolve_GLLE()
950 enorm[2] = PetscRealPart(scheme->gamma[0]) * hmnorm[3]; in TSSolve_GLLE()
965 for (i = 1; i < scheme->r; i++) PetscCall(VecScale(X[i], PetscPowRealInt(0.5, i))); in TSSolve_GLLE()
971 PetscCall(TSGLLEVecNormWRMS(ts, gl->X[scheme->r - 1], &hmnorm[0])); in TSSolve_GLLE()
987 …PetscCall((*gl->CompleteStep)(scheme, h, gl->schemes[next_scheme], next_h, Ydot, gl->Xold, gl->X)); in TSSolve_GLLE()