Lines Matching refs:thi
339 static void THIInitialize_HOM_A(THI thi, PetscReal x, PetscReal y, PrmNode *p) in THIInitialize_HOM_A() argument
341 Units units = thi->units; in THIInitialize_HOM_A()
342 PetscReal s = -x * PetscSinReal(thi->alpha); in THIInitialize_HOM_A()
343 …500 * units->meter * PetscSinReal(x * 2 * PETSC_PI / thi->Lx) * PetscSinReal(y * 2 * PETSC_PI / th… in THIInitialize_HOM_A()
348 static void THIInitialize_HOM_C(THI thi, PetscReal x, PetscReal y, PrmNode *p) in THIInitialize_HOM_C() argument
350 Units units = thi->units; in THIInitialize_HOM_C()
351 PetscReal s = -x * PetscSinReal(thi->alpha); in THIInitialize_HOM_C()
356 …nReal(x * 2 * PETSC_PI / thi->Lx) * PetscSinReal(y * 2 * PETSC_PI / thi->Ly)) * units->Pascal * un… in THIInitialize_HOM_C()
362 static void THIInitialize_HOM_F(THI thi, PetscReal x, PetscReal y, PrmNode *p) in THIInitialize_HOM_F() argument
364 Units units = thi->units; in THIInitialize_HOM_F()
365 PetscReal s = -x * PetscSinReal(thi->alpha); in THIInitialize_HOM_F()
366 …1000 * units->meter + 100 * units->meter * PetscSinReal(x * 2 * PETSC_PI / thi->Lx); /* * sin(y*2*… in THIInitialize_HOM_F()
368 …p->h = (1 - (atan((x - thi->Lx / 2) / 1.) + PETSC_PI / 2.) / PETSC_PI) * 500 * units->m… in THIInitialize_HOM_F()
375 static void THIInitialize_HOM_X(THI thi, PetscReal xx, PetscReal yy, PrmNode *p) in THIInitialize_HOM_X() argument
377 Units units = thi->units; in THIInitialize_HOM_X()
378 …PetscReal x = xx * 2 * PETSC_PI / thi->Lx - PETSC_PI, y = yy * 2 * PETSC_PI / thi->Ly - PETSC_PI; … in THIInitialize_HOM_X()
379 PetscReal r = PetscSqrtReal(x * x + y * y), s = -x * PetscSinReal(thi->alpha); in THIInitialize_HOM_X()
382 p->beta2 = 1000 * (r < 1 ? 2 : 0) * units->Pascal * units->year / units->meter / thi->rhog; in THIInitialize_HOM_X()
386 static void THIInitialize_HOM_Y(THI thi, PetscReal xx, PetscReal yy, PrmNode *p) in THIInitialize_HOM_Y() argument
388 Units units = thi->units; in THIInitialize_HOM_Y()
389 …PetscReal x = xx * 2 * PETSC_PI / thi->Lx - PETSC_PI, y = yy * 2 * PETSC_PI / thi->Ly - PETSC_PI; … in THIInitialize_HOM_Y()
390 PetscReal r = PetscSqrtReal(x * x + y * y), s = -x * PetscSinReal(thi->alpha); in THIInitialize_HOM_Y()
394 …eal(x * 3 / 2) * PetscCosReal(y * 3 / 2)) * units->Pascal * units->year / units->meter / thi->rhog; in THIInitialize_HOM_Y()
398 static void THIInitialize_HOM_Z(THI thi, PetscReal xx, PetscReal yy, PrmNode *p) in THIInitialize_HOM_Z() argument
400 Units units = thi->units; in THIInitialize_HOM_Z()
401 …PetscReal x = xx * 2 * PETSC_PI / thi->Lx - PETSC_PI, y = yy * 2 * PETSC_PI / thi->Ly - PETSC_PI; … in THIInitialize_HOM_Z()
402 PetscReal r = PetscSqrtReal(x * x + y * y), s = -x * PetscSinReal(thi->alpha); in THIInitialize_HOM_Z()
405 …eal(x * 3 / 2) * PetscCosReal(y * 3 / 2)) * units->Pascal * units->year / units->meter / thi->rhog; in THIInitialize_HOM_Z()
408 static void THIFriction(THI thi, PetscReal rbeta2, PetscReal gam, PetscReal *beta2, PetscReal *dbet… in THIFriction() argument
410 if (thi->friction.irefgam == 0) { in THIFriction()
411 Units units = thi->units; in THIFriction()
412 thi->friction.irefgam = 1. / (0.5 * PetscSqr(100 * units->meter / units->year)); in THIFriction()
413 thi->friction.eps2 = 0.5 * PetscSqr(1.e-4 / thi->friction.irefgam); in THIFriction()
415 if (thi->friction.exponent == 0) { in THIFriction()
419 …*beta2 = rbeta2 * PetscPowReal(thi->friction.eps2 + gam * thi->friction.irefgam, thi->friction.ex… in THIFriction()
420 …*dbeta2 = thi->friction.exponent * *beta2 / (thi->friction.eps2 + gam * thi->friction.irefgam) * t… in THIFriction()
424 static void THIViscosity(THI thi, PetscReal gam, PetscReal *eta, PetscReal *deta) in THIViscosity() argument
427 if (thi->viscosity.Bd2 == 0) { in THIViscosity()
428 Units units = thi->units; in THIViscosity()
429 …const PetscReal n = thi->viscosity.glen_n, /* Glen exponent… in THIViscosity()
433 thi->viscosity.Bd2 = B / 2; in THIViscosity()
434 thi->viscosity.exponent = (p - 2) / 2; in THIViscosity()
435 thi->viscosity.eps = 0.5 * PetscSqr(1e-5 / units->year); in THIViscosity()
437 Bd2 = thi->viscosity.Bd2; in THIViscosity()
438 exponent = thi->viscosity.exponent; in THIViscosity()
439 eps = thi->viscosity.eps; in THIViscosity()
444 static void THIErosion(THI thi, const Node *vel, PetscScalar *erate, Node *derate) in THIErosion() argument
446 …>u) + PetscSqr(vel->v)) / PetscSqr(thi->erosion.refvel), rate = -thi->erosion.rate * PetscPowScala… in THIErosion()
449 if (thi->erosion.exponent == 1) { in THIErosion()
453 …derate->u = 0.5 * thi->erosion.exponent * rate / magref2 * 2. * vel->u / PetscSqr(thi->erosion.ref… in THIErosion()
454 …derate->v = 0.5 * thi->erosion.exponent * rate / magref2 * 2. * vel->v / PetscSqr(thi->erosion.ref… in THIErosion()
481 static PetscErrorCode THIDestroy(THI *thi) in THIDestroy() argument
484 if (--((PetscObject)*thi)->refct > 0) PetscFunctionReturn(PETSC_SUCCESS); in THIDestroy()
485 PetscCall(PetscFree((*thi)->units)); in THIDestroy()
486 PetscCall(PetscFree((*thi)->mattype)); in THIDestroy()
487 PetscCall(PetscFree((*thi)->monitor_basename)); in THIDestroy()
488 PetscCall(PetscHeaderDestroy(thi)); in THIDestroy()
495 THI thi; in THICreate() local
505 …PetscCall(PetscHeaderCreate(thi, THI_CLASSID, "THI", "Toy Hydrostatic Ice", "THI", comm, THIDestro… in THICreate()
507 PetscCall(PetscNew(&thi->units)); in THICreate()
509 units = thi->units; in THICreate()
524 thi->Lx = 10.e3; in THICreate()
525 thi->Ly = 10.e3; in THICreate()
526 thi->Lz = 1000; in THICreate()
527 thi->nlevels = 1; in THICreate()
528 thi->dirichlet_scale = 1; in THICreate()
529 thi->verbose = PETSC_FALSE; in THICreate()
531 thi->viscosity.glen_n = 3.; in THICreate()
532 thi->erosion.rate = 1e-3; /* m/a */ in THICreate()
533 thi->erosion.exponent = 1.; in THICreate()
534 thi->erosion.refvel = 1.; /* m/a */ in THICreate()
543 L = thi->Lx; in THICreate()
545 if (flg) thi->Lx = thi->Ly = L; in THICreate()
546 PetscCall(PetscOptionsReal("-thi_Lx", "X Domain size (m)", "", thi->Lx, &thi->Lx, NULL)); in THICreate()
547 PetscCall(PetscOptionsReal("-thi_Ly", "Y Domain size (m)", "", thi->Ly, &thi->Ly, NULL)); in THICreate()
548 PetscCall(PetscOptionsReal("-thi_Lz", "Z Domain size (m)", "", thi->Lz, &thi->Lz, NULL)); in THICreate()
552 thi->initialize = THIInitialize_HOM_A; in THICreate()
553 thi->no_slip = PETSC_TRUE; in THICreate()
554 thi->alpha = 0.5; in THICreate()
557 thi->initialize = THIInitialize_HOM_C; in THICreate()
558 thi->no_slip = PETSC_FALSE; in THICreate()
559 thi->alpha = 0.1; in THICreate()
562 thi->initialize = THIInitialize_HOM_F; in THICreate()
563 thi->no_slip = PETSC_FALSE; in THICreate()
564 thi->alpha = 0.5; in THICreate()
567 thi->initialize = THIInitialize_HOM_X; in THICreate()
568 thi->no_slip = PETSC_FALSE; in THICreate()
569 thi->alpha = 0.3; in THICreate()
572 thi->initialize = THIInitialize_HOM_Y; in THICreate()
573 thi->no_slip = PETSC_FALSE; in THICreate()
574 thi->alpha = 0.5; in THICreate()
577 thi->initialize = THIInitialize_HOM_Z; in THICreate()
578 thi->no_slip = PETSC_FALSE; in THICreate()
579 thi->alpha = 0.5; in THICreate()
595 …PetscCall(PetscOptionsReal("-thi_alpha", "Bed angle (degrees)", "", thi->alpha, &thi->alpha, NULL)… in THICreate()
596 …ponent in Glen flow law, 1=linear, infty=ideal plastic", NULL, thi->viscosity.glen_n, &thi->viscos… in THICreate()
598 thi->friction.exponent = (m - 1) / 2; in THICreate()
599 …relative to sliding velocity at reference velocity (m/a)", NULL, thi->erosion.rate, &thi->erosion.… in THICreate()
600 …ower of sliding velocity appearing in erosion relation", NULL, thi->erosion.exponent, &thi->erosio… in THICreate()
601 …_refvel", "Reference sliding velocity for erosion (m/a)", NULL, thi->erosion.refvel, &thi->erosion… in THICreate()
602 thi->erosion.rate *= units->meter / units->year; in THICreate()
603 thi->erosion.refvel *= units->meter / units->year; in THICreate()
604 …le", "Scale Dirichlet boundary conditions by this factor", "", thi->dirichlet_scale, &thi->dirichl… in THICreate()
605 …boundary conditions by this factor in SSA (2D) assembly", "", thi->ssa_friction_scale, &thi->ssa_f… in THICreate()
606 …eleration term in velocity system, physical is almost zero", NULL, thi->inertia, &thi->inertia, NU… in THICreate()
607 …scOptionsInt("-thi_nlevels", "Number of levels of refinement", "", thi->nlevels, &thi->nlevels, NU… in THICreate()
609 PetscCall(PetscStrallocpy(mtype, &thi->mattype)); in THICreate()
610 …", "Enable verbose output (like matrix sizes and statistics)", "", thi->verbose, &thi->verbose, NU… in THICreate()
613 PetscCall(PetscStrallocpy(monitor_basename, &thi->monitor_basename)); in THICreate()
614 thi->monitor_interval = 1; in THICreate()
615 …or_interval", "Frequency at which to write state files", NULL, thi->monitor_interval, &thi->monito… in THICreate()
621 thi->Lx *= units->meter; in THICreate()
622 thi->Ly *= units->meter; in THICreate()
623 thi->Lz *= units->meter; in THICreate()
624 thi->alpha *= PETSC_PI / 180; in THICreate()
626 PRangeClear(&thi->eta); in THICreate()
627 PRangeClear(&thi->beta2); in THICreate()
631 driving = rho * grav * PetscSinReal(thi->alpha) * 1000 * units->meter; in THICreate()
632 THIViscosity(thi, 0.5 * gradu * gradu, &eta, &deta); in THICreate()
633 thi->rhog = rho * grav; in THICreate()
634 if (thi->verbose) { in THICreate()
635 …PetscCall(PetscPrintf(PetscObjectComm((PetscObject)thi), "Units: meter %8.2g second %8.2g kg %8.… in THICreate()
636 …mm((PetscObject)thi), "Domain (%6.2g,%6.2g,%6.2g), pressure %8.2g, driving stress %8.2g\n", (doubl… in THICreate()
637 …PetscCall(PetscPrintf(PetscObjectComm((PetscObject)thi), "Large velocity 1km/a %8.2g, velocity gra… in THICreate()
638 THIViscosity(thi, 0.5 * PetscSqr(1e-3 * gradu), &eta, &deta); in THICreate()
639 …PetscCall(PetscPrintf(PetscObjectComm((PetscObject)thi), "Small velocity 1m/a %8.2g, velocity gra… in THICreate()
643 *inthi = thi; in THICreate()
650 static PetscErrorCode THIFixGhosts(THI thi, DM da3, DM da2, Vec X3, Vec X2) in THIFixGhosts() argument
662 …for (j = info.gys; j < info.gys + info.gym; j++) x2[i][j].b += PetscSinReal(thi->alpha) * thi->Lx … in THIFixGhosts()
669 static PetscErrorCode THIInitializePrm(THI thi, DM da2prm, PrmNode **p) in THIInitializePrm() argument
678 PetscReal xx = thi->Lx * i / mx, yy = thi->Ly * j / my; in THIInitializePrm()
679 thi->initialize(thi, xx, yy, &p[i][j]); in THIInitializePrm()
685 static PetscErrorCode THIInitial(THI thi, DM pack, Vec X) in THIInitial() argument
704 PetscCall(THIInitializePrm(thi, da2, prm)); in THIInitial()
706 hx = thi->Lx / mx; in THIInitial()
707 hy = thi->Ly / my; in THIInitial()
711 …= zm - 1, drivingx = thi->rhog * (prm[i + 1][j].b + prm[i + 1][j].h - prm[i - 1][j].b - prm[i - 1]… in THIInitial()
729 static void PointwiseNonlinearity(THI thi, const Node n[restrict 8], const PetscReal phi[restrict 3… in PointwiseNonlinearity() argument
747 THIViscosity(thi, PetscRealPart(gam), eta, deta); in PointwiseNonlinearity()
750 …(DMDALocalInfo *info, const Node ***x, const PrmNode **prm, const Node ***xdot, Node ***f, THI thi) in THIFunctionLocal_3D() argument
761 hx = thi->Lx / info->mz; in THIFunctionLocal_3D()
762 hy = thi->Ly / info->my; in THIFunctionLocal_3D()
783 if (thi->no_slip && k == 0) { in THIFunctionLocal_3D()
797 PointwiseNonlinearity(thi, n, phi, dphi, &u, &v, du, dv, &eta, &deta); in THIFunctionLocal_3D()
798 jw /= thi->rhog; /* scales residuals to be O(1) */ in THIFunctionLocal_3D()
804 …[1]) + dp[1] * jw * eta * (du[1] + dv[0]) + dp[2] * jw * eta * du[2] + pp * jw * thi->rhog * ds[0]; in THIFunctionLocal_3D()
805 …[1]) + dp[0] * jw * eta * (du[1] + dv[0]) + dp[2] * jw * eta * dv[2] + pp * jw * thi->rhog * ds[1]; in THIFunctionLocal_3D()
806 fn[l]->u += pp * jw * udot * thi->inertia * pp; in THIFunctionLocal_3D()
807 fn[l]->v += pp * jw * vdot * thi->inertia * pp; in THIFunctionLocal_3D()
811 if (thi->no_slip) { in THIFunctionLocal_3D()
826 …etscScalar diagu = 2 * etabase / thi->rhog * (hx * hy / hz + hx * hz / hy + 4 * hy * hz / hx), dia… in THIFunctionLocal_3D()
827 fn[0]->u = thi->dirichlet_scale * diagu * x[i][j][k].u; in THIFunctionLocal_3D()
828 fn[0]->v = thi->dirichlet_scale * diagv * x[i][j][k].v; in THIFunctionLocal_3D()
839 … THIFriction(thi, PetscRealPart(rbeta2), PetscRealPart(u * u + v * v) / 2, &beta2, &dbeta2); in THIFunctionLocal_3D()
853 PetscCall(PRangeMinMax(&thi->eta, etamin, etamax)); in THIFunctionLocal_3D()
854 PetscCall(PRangeMinMax(&thi->beta2, beta2min, beta2max)); in THIFunctionLocal_3D()
858 …ocalInfo *info, const Node ***x, const PrmNode **prm, const PrmNode **prmdot, PrmNode **f, THI thi) in THIFunctionLocal_2D() argument
885 THIErosion(thi, &x[i][j][0], &erate, NULL); in THIFunctionLocal_2D()
896 THI thi = (THI)ctx; in THIFunction() local
912 PetscCall(THIFixGhosts(thi, da3, da2, X3, X2)); in THIFunction()
926 PetscCall(THIFunctionLocal_3D(&info3, x3, x2, xdot3, f3, thi)); in THIFunction()
927 PetscCall(THIFunctionLocal_2D(&info3, x3, x2, xdot2, f2, thi)); in THIFunction()
946 if (thi->verbose) { in THIFunction()
948 PetscCall(PetscViewerASCIIGetStdout(PetscObjectComm((PetscObject)thi), &viewer)); in THIFunction()
966 static PetscErrorCode THIMatrixStatistics(THI thi, Mat B, PetscViewer viewer) in THIMatrixStatistics() argument
980 …", m, (double)nrm, (double)PetscRealPart(val0), (double)PetscRealPart(val2), (double)thi->eta.cmin, in THIMatrixStatistics()
981 … (double)thi->eta.cmax, (double)thi->beta2.cmin, (double)thi->beta2.cmax)); in THIMatrixStatistics()
1020 static PetscErrorCode THISolveStatistics(THI thi, TS ts, PetscInt coarsened, const char name[]) in THISolveStatistics() argument
1027 PetscCall(PetscObjectGetComm((PetscObject)thi, &comm)); in THISolveStatistics()
1059 …PetscCallMPI(MPIU_Allreduce(tmin, min, 3, MPIU_REAL, MPIU_MIN, PetscObjectComm((PetscObject)thi))); in THISolveStatistics()
1060 …PetscCallMPI(MPIU_Allreduce(tmax, max, 3, MPIU_REAL, MPIU_MAX, PetscObjectComm((PetscObject)thi))); in THISolveStatistics()
1062 nrm2 *= thi->units->year / thi->units->meter; in THISolveStatistics()
1064 min[j] *= thi->units->year / thi->units->meter; in THISolveStatistics()
1065 max[j] *= thi->units->year / thi->units->meter; in THISolveStatistics()
1071 umin *= thi->units->year / thi->units->meter; in THISolveStatistics()
1072 umax *= thi->units->year / thi->units->meter; in THISolveStatistics()
1073 umean *= thi->units->year / thi->units->meter; in THISolveStatistics()
1077 …g], converged range [%g, %g]\n", (double)thi->eta.min, (double)thi->eta.max, (double)thi->eta.cmin… in THISolveStatistics()
1078 … converged range [%g, %g]\n", (double)thi->beta2.min, (double)thi->beta2.max, (double)thi->beta2.c… in THISolveStatistics()
1094 …Local_Momentum(DMDALocalInfo *info, const Node ***x, const PrmNode **prm, Mat B, Mat Bcpl, THI thi) in THIJacobianLocal_Momentum() argument
1105 hx = thi->Lx / info->mz; in THIJacobianLocal_Momentum()
1106 hy = thi->Ly / info->my; in THIJacobianLocal_Momentum()
1123 if (thi->no_slip && k == 0) { in THIJacobianLocal_Momentum()
1132 PointwiseNonlinearity(thi, n, phi, dphi, &u, &v, du, dv, &eta, &deta); in THIJacobianLocal_Momentum()
1133 jw /= thi->rhog; /* residuals are scaled by this factor */ in THIJacobianLocal_Momentum()
1153 Ke[l * 2 + 0][ll * 2 + 0] += pp * jw * thi->inertia * pp; in THIJacobianLocal_Momentum()
1154 Ke[l * 2 + 1][ll * 2 + 1] += pp * jw * thi->inertia * pp; in THIJacobianLocal_Momentum()
1158 … Kcpl[FieldIndex(Node, l, u)][FieldIndex(PrmNode, ll, h)] += pp * jw * thi->rhog * dpl[0]; in THIJacobianLocal_Momentum()
1159 … Kcpl[FieldIndex(Node, l, u)][FieldIndex(PrmNode, ll, b)] += pp * jw * thi->rhog * dpl[0]; in THIJacobianLocal_Momentum()
1160 … Kcpl[FieldIndex(Node, l, v)][FieldIndex(PrmNode, ll, h)] += pp * jw * thi->rhog * dpl[1]; in THIJacobianLocal_Momentum()
1161 … Kcpl[FieldIndex(Node, l, v)][FieldIndex(PrmNode, ll, b)] += pp * jw * thi->rhog * dpl[1]; in THIJacobianLocal_Momentum()
1166 if (thi->no_slip) { in THIJacobianLocal_Momentum()
1168 …etscScalar diagu = 2 * etabase / thi->rhog * (hx * hy / hz + hx * hz / hy + 4 * hy * hz / hx), dia… in THIJacobianLocal_Momentum()
1169 Ke[0][0] = thi->dirichlet_scale * diagu; in THIJacobianLocal_Momentum()
1172 Ke[1][1] = thi->dirichlet_scale * diagv; in THIJacobianLocal_Momentum()
1183 … THIFriction(thi, PetscRealPart(rbeta2), PetscRealPart(u * u + v * v) / 2, &beta2, &dbeta2); in THIJacobianLocal_Momentum()
1227 …onst Node ***x3, const PrmNode **x2, const PrmNode **xdot2, PetscReal a, Mat B22, Mat B21, THI thi) in THIJacobianLocal_2D() argument
1260 THIErosion(thi, &x3[i][j][0], NULL, &derate); in THIJacobianLocal_2D()
1273 THI thi = (THI)ctx; in THIJacobian() local
1289 PetscCall(THIFixGhosts(thi, da3, da2, X3, X2)); in THIJacobian()
1304 PetscCall(THIJacobianLocal_Momentum(&info3, x3, x2, B11, B12, thi)); in THIJacobian()
1310 PetscCall(THIJacobianLocal_2D(&info3, x3, x2, xdot2, a, B22, B21, thi)); in THIJacobian()
1333 if (thi->verbose) PetscCall(THIMatrixStatistics(thi, B, PETSC_VIEWER_STDOUT_WORLD)); in THIJacobian()
1341 static PetscErrorCode THIDAVecView_VTK_XML(THI thi, DM pack, Vec X, const char filename[], const ch… in THIDAVecView_VTK_XML() argument
1344 Units units = thi->units; in THIDAVecView_VTK_XML()
1354 PetscCall(PetscObjectGetComm((PetscObject)thi, &comm)); in THIDAVecView_VTK_XML()
1414 …PetscReal xx = thi->Lx * i / mx, yy = thi->Ly * j / my, b = PetscRealPart(y2[i * ym + j][FieldOffs… in THIDAVecView_VTK_XML()
1475 THI thi = (THI)ctx; in THITSMonitor() local
1482 if (thi->monitor_interval && step % thi->monitor_interval) PetscFunctionReturn(PETSC_SUCCESS); in THITSMonitor()
1484 …PetscCall(PetscSNPrintf(filename3, sizeof(filename3), "%s-3d-%03" PetscInt_FMT ".vts", thi->monito… in THITSMonitor()
1485 …PetscCall(PetscSNPrintf(filename2, sizeof(filename2), "%s-2d-%03" PetscInt_FMT ".vts", thi->monito… in THITSMonitor()
1486 PetscCall(THIDAVecView_VTK_XML(thi, pack, X, filename3, filename2)); in THITSMonitor()
1490 static PetscErrorCode THICreateDM3d(THI thi, DM *dm3d) in THICreateDM3d() argument
1497 PetscCall(PetscObjectGetComm((PetscObject)thi, &comm)); in THICreateDM3d()
1520 THI thi; in main() local
1530 PetscCall(THICreate(comm, &thi)); in main()
1531 PetscCall(THICreateDM3d(thi, &da3)); in main()
1536 …PetscCall(DMDACreate2d(PetscObjectComm((PetscObject)thi), DM_BOUNDARY_PERIODIC, DM_BOUNDARY_PERIOD… in main()
1559 for (i = 0; i < thi->nlevels; i++) { in main()
1560 …PetscReal Lx = thi->Lx / thi->units->meter, Ly = thi->Ly / thi->units->meter, Lz = thi->Lz / thi->… in main()
1564 …PetscCall(PetscPrintf(PetscObjectComm((PetscObject)thi), "Level %" PetscInt_FMT " domain size (m) … in main()
1568 PetscCall(THIInitial(thi, pack, X)); in main()
1573 PetscCall(TSMonitorSet(ts, THITSMonitor, thi, NULL)); in main()
1575 PetscCall(TSSetIFunction(ts, NULL, THIFunction, thi)); in main()
1576 PetscCall(TSSetIJacobian(ts, B, B, THIJacobian, thi)); in main()
1588 if (0) PetscCall(THISolveStatistics(thi, ts, 0, "Full")); in main()
1594 if (flg) PetscCall(THIDAVecView_VTK_XML(thi, pack, X, filename, NULL)); in main()
1601 PetscCall(THIDestroy(&thi)); in main()