Lines Matching refs:s
32 PetscInt s; /* Number of stages */ member
69 static PetscErrorCode TSMPRKGenerateTableau2(PetscInt ratio, PetscInt s, const PetscReal Abase[], c… in TSMPRKGenerateTableau2() argument
76 for (i = 0; i < s; i++) in TSMPRKGenerateTableau2()
77 for (j = 0; j < s; j++) { in TSMPRKGenerateTableau2()
78 A1[(k * s + i) * ratio * s + k * s + j] = Abase[i * s + j]; in TSMPRKGenerateTableau2()
79 A2[(k * s + i) * ratio * s + k * s + j] = Abase[i * s + j] / ratio; in TSMPRKGenerateTableau2()
83 for (i = 0; i < s; i++) in TSMPRKGenerateTableau2()
84 for (j = 0; j < s; j++) A2[(k * s + i) * ratio * s + l * s + j] = bbase[j] / ratio; in TSMPRKGenerateTableau2()
85 for (j = 0; j < s; j++) { in TSMPRKGenerateTableau2()
86 b1[k * s + j] = bbase[j] / ratio; in TSMPRKGenerateTableau2()
87 b2[k * s + j] = bbase[j] / ratio; in TSMPRKGenerateTableau2()
93 static PetscErrorCode TSMPRKGenerateTableau3(PetscInt ratio, PetscInt s, const PetscReal Abase[], c… in TSMPRKGenerateTableau3() argument
100 for (i = 0; i < s; i++) in TSMPRKGenerateTableau3()
101 for (j = 0; j < s; j++) { in TSMPRKGenerateTableau3()
102 … A1[((k * ratio + l) * s + i) * ratio * ratio * s + (k * ratio + l) * s + j] = Abase[i * s + j]; in TSMPRKGenerateTableau3()
103 …A2[((k * ratio + l) * s + i) * ratio * ratio * s + (k * ratio + l) * s + j] = Abase[i * s + j] / r… in TSMPRKGenerateTableau3()
104 …A3[((k * ratio + l) * s + i) * ratio * ratio * s + (k * ratio + l) * s + j] = Abase[i * s + j] / r… in TSMPRKGenerateTableau3()
109 for (i = 0; i < s; i++) in TSMPRKGenerateTableau3()
110 for (j = 0; j < s; j++) { in TSMPRKGenerateTableau3()
111 …A2[((k * ratio + m) * s + i) * ratio * ratio * s + (l * ratio + n) * s + j] = bbase[j] / ratio / r… in TSMPRKGenerateTableau3()
112 …A3[((k * ratio + m) * s + i) * ratio * ratio * s + (l * ratio + n) * s + j] = bbase[j] / ratio / r… in TSMPRKGenerateTableau3()
116 for (i = 0; i < s; i++) in TSMPRKGenerateTableau3()
117 …for (j = 0; j < s; j++) A3[((k * ratio + m) * s + i) * ratio * ratio * s + (k * ratio + n) * s + j… in TSMPRKGenerateTableau3()
119 for (j = 0; j < s; j++) { in TSMPRKGenerateTableau3()
120 b1[(k * ratio + n) * s + j] = bbase[j] / ratio / ratio; in TSMPRKGenerateTableau3()
121 b2[(k * ratio + n) * s + j] = bbase[j] / ratio / ratio; in TSMPRKGenerateTableau3()
122 b3[(k * ratio + n) * s + j] = bbase[j] / ratio / ratio; in TSMPRKGenerateTableau3()
468 PetscInt s, i, j; in TSMPRKRegister() local
488 s = sbase * ratio1 * ratio2; /* this is the dimension of the matrices below */ in TSMPRKRegister()
491 t->s = s; in TSMPRKRegister()
494 PetscCall(PetscMalloc3(s * s, &t->Af, s, &t->bf, s, &t->cf)); in TSMPRKRegister()
495 PetscCall(PetscArraycpy(t->Af, Af, s * s)); in TSMPRKRegister()
497 PetscCall(PetscArraycpy(t->bf, bf, s)); in TSMPRKRegister()
499 for (i = 0; i < s; i++) t->bf[i] = Af[(s - 1) * s + i]; in TSMPRKRegister()
501 PetscCall(PetscArraycpy(t->cf, cf, s)); in TSMPRKRegister()
503 for (i = 0; i < s; i++) in TSMPRKRegister()
504 for (j = 0, t->cf[i] = 0; j < s; j++) t->cf[i] += Af[i * s + j]; in TSMPRKRegister()
509 PetscCall(PetscMalloc3(s * s, &t->Amb, s, &t->bmb, s, &t->cmb)); in TSMPRKRegister()
510 PetscCall(PetscArraycpy(t->Amb, Amb, s * s)); in TSMPRKRegister()
512 PetscCall(PetscArraycpy(t->bmb, bmb, s)); in TSMPRKRegister()
514 for (i = 0; i < s; i++) t->bmb[i] = Amb[(s - 1) * s + i]; in TSMPRKRegister()
517 PetscCall(PetscArraycpy(t->cmb, cmb, s)); in TSMPRKRegister()
519 for (i = 0; i < s; i++) in TSMPRKRegister()
520 for (j = 0, t->cmb[i] = 0; j < s; j++) t->cmb[i] += Amb[i * s + j]; in TSMPRKRegister()
523 PetscCall(PetscMalloc1(s, &t->rmb)); in TSMPRKRegister()
524 PetscCall(PetscArraycpy(t->rmb, rmb, s)); in TSMPRKRegister()
526 PetscCall(PetscCalloc1(s, &t->rmb)); in TSMPRKRegister()
530 PetscCall(PetscMalloc3(s * s, &t->Asb, s, &t->bsb, s, &t->csb)); in TSMPRKRegister()
531 PetscCall(PetscArraycpy(t->Asb, Asb, s * s)); in TSMPRKRegister()
533 PetscCall(PetscArraycpy(t->bsb, bsb, s)); in TSMPRKRegister()
535 for (i = 0; i < s; i++) t->bsb[i] = Asb[(s - 1) * s + i]; in TSMPRKRegister()
537 PetscCall(PetscArraycpy(t->csb, csb, s)); in TSMPRKRegister()
539 for (i = 0; i < s; i++) in TSMPRKRegister()
540 for (j = 0, t->csb[i] = 0; j < s; j++) t->csb[i] += Asb[i * s + j]; in TSMPRKRegister()
543 PetscCall(PetscMalloc1(s, &t->rsb)); in TSMPRKRegister()
544 PetscCall(PetscArraycpy(t->rsb, rsb, s)); in TSMPRKRegister()
546 PetscCall(PetscCalloc1(s, &t->rsb)); in TSMPRKRegister()
632 PetscInt s = tab->s, j; in TSEvaluateStep_MPRK() local
635 for (j = 0; j < s; j++) wf[j] = h * tab->bf[j]; in TSEvaluateStep_MPRK()
637 PetscCall(VecMAXPY(X, s, wf, mprk->YdotRHS)); in TSEvaluateStep_MPRK()
647 const PetscInt s = tab->s; in TSStep_MPRK() local
654 for (i = 0; i < s; i++) { in TSStep_MPRK()
660 for (j = 0; j < i; j++) wsb[j] = h * Asb[i * s + j]; in TSStep_MPRK()
676 for (j = 0; j < i; j++) wf[j] = h * Af[i * s + j]; in TSStep_MPRK()
687 for (j = 0; j < i; j++) wmb[j] = h * tab->Amb[i * s + j]; in TSStep_MPRK()
725 PetscInt s = tab->s, j, computedstages; in TSEvaluateStep_MPRKSPLIT() local
733 for (j = 0; j < s; j++) { in TSEvaluateStep_MPRKSPLIT()
744 for (j = 0; j < s; j++) { in TSEvaluateStep_MPRKSPLIT()
753 for (j = 0; j < s; j++) wsb[j] = h * tab->bsb[j]; in TSEvaluateStep_MPRKSPLIT()
755 PetscCall(VecMAXPY(Xslowbuffer, s, wsb, mprk->YdotRHS_slowbuffer)); in TSEvaluateStep_MPRKSPLIT()
764 for (j = 0; j < s; j++) { in TSEvaluateStep_MPRKSPLIT()
773 for (j = 0; j < s; j++) wmb[j] = h * tab->bmb[j]; in TSEvaluateStep_MPRKSPLIT()
775 PetscCall(VecMAXPY(Xmediumbuffer, s, wmb, mprk->YdotRHS_mediumbuffer)); in TSEvaluateStep_MPRKSPLIT()
779 for (j = 0; j < s; j++) wf[j] = h * tab->bf[j]; in TSEvaluateStep_MPRKSPLIT()
781 PetscCall(VecMAXPY(Xfast, s, wf, mprk->YdotRHS_fast)); in TSEvaluateStep_MPRKSPLIT()
792 PetscInt s = tab->s; in TSStep_MPRKSPLIT() local
799 for (i = 0; i < s; i++) { in TSStep_MPRKSPLIT()
804 for (j = 0; j < i; j++) wsb[j] = h * Asb[i * s + j]; in TSStep_MPRKSPLIT()
850 for (j = 0; j < i; j++) wf[j] = h * Af[i * s + j]; in TSStep_MPRKSPLIT()
861 for (j = 0; j < i; j++) wmb[j] = h * Amb[i * s + j]; in TSStep_MPRKSPLIT()
912 PetscCall(VecDestroyVecs(tab->s, &mprk->Y)); in TSMPRKTableauReset()
914 PetscCall(VecDestroyVecs(tab->s, &mprk->YdotRHS_fast)); in TSMPRKTableauReset()
915 PetscCall(VecDestroyVecs(tab->s, &mprk->YdotRHS_slow)); in TSMPRKTableauReset()
916 PetscCall(VecDestroyVecs(tab->s, &mprk->YdotRHS_slowbuffer)); in TSMPRKTableauReset()
917 PetscCall(VecDestroyVecs(tab->s, &mprk->YdotRHS_medium)); in TSMPRKTableauReset()
918 PetscCall(VecDestroyVecs(tab->s, &mprk->YdotRHS_mediumbuffer)); in TSMPRKTableauReset()
920 PetscCall(VecDestroyVecs(tab->s, &mprk->YdotRHS)); in TSMPRKTableauReset()
970 PetscCall(VecDuplicateVecs(ts->vec_sol, tab->s, &mprk->Y)); in TSMPRKTableauSetUp()
971 if (mprk->is_slow) PetscCall(PetscMalloc1(tab->s, &mprk->work_slow)); in TSMPRKTableauSetUp()
972 PetscCall(PetscMalloc1(tab->s, &mprk->work_slowbuffer)); in TSMPRKTableauSetUp()
974 if (mprk->is_medium) PetscCall(PetscMalloc1(tab->s, &mprk->work_medium)); in TSMPRKTableauSetUp()
975 PetscCall(PetscMalloc1(tab->s, &mprk->work_mediumbuffer)); in TSMPRKTableauSetUp()
977 PetscCall(PetscMalloc1(tab->s, &mprk->work_fast)); in TSMPRKTableauSetUp()
982 PetscCall(VecDuplicateVecs(YdotRHS_slow, tab->s, &mprk->YdotRHS_slow)); in TSMPRKTableauSetUp()
986 PetscCall(VecDuplicateVecs(YdotRHS_slowbuffer, tab->s, &mprk->YdotRHS_slowbuffer)); in TSMPRKTableauSetUp()
991 PetscCall(VecDuplicateVecs(YdotRHS_medium, tab->s, &mprk->YdotRHS_medium)); in TSMPRKTableauSetUp()
995 PetscCall(VecDuplicateVecs(YdotRHS_mediumbuffer, tab->s, &mprk->YdotRHS_mediumbuffer)); in TSMPRKTableauSetUp()
999 PetscCall(VecDuplicateVecs(YdotRHS_fast, tab->s, &mprk->YdotRHS_fast)); in TSMPRKTableauSetUp()
1002 PetscCall(VecDuplicateVecs(ts->vec_sol, tab->s, &mprk->YdotRHS)); in TSMPRKTableauSetUp()
1003 if (mprk->is_slow) PetscCall(PetscMalloc1(tab->s, &mprk->YdotRHS_slow)); in TSMPRKTableauSetUp()
1004 PetscCall(PetscMalloc1(tab->s, &mprk->YdotRHS_slowbuffer)); in TSMPRKTableauSetUp()
1006 if (mprk->is_medium) PetscCall(PetscMalloc1(tab->s, &mprk->YdotRHS_medium)); in TSMPRKTableauSetUp()
1007 PetscCall(PetscMalloc1(tab->s, &mprk->YdotRHS_mediumbuffer)); in TSMPRKTableauSetUp()
1009 PetscCall(PetscMalloc1(tab->s, &mprk->YdotRHS_fast)); in TSMPRKTableauSetUp()
1096 PetscCall(PetscFormatRealArray(fbuf, sizeof(fbuf), "% 8.6f", tab->s, tab->cf)); in TSView_MPRK()
1099 for (i = 0; i < tab->s; i++) { in TSView_MPRK()
1100 PetscCall(PetscFormatRealArray(fbuf, sizeof(fbuf), "% 8.6f", tab->s, &tab->Af[i * tab->s])); in TSView_MPRK()
1103 PetscCall(PetscFormatRealArray(fbuf, sizeof(fbuf), "% 8.6f", tab->s, tab->bf)); in TSView_MPRK()
1106 PetscCall(PetscFormatRealArray(sbuf, sizeof(sbuf), "% 8.6f", tab->s, tab->csb)); in TSView_MPRK()
1109 for (i = 0; i < tab->s; i++) { in TSView_MPRK()
1110 PetscCall(PetscFormatRealArray(sbuf, sizeof(sbuf), "% 8.6f", tab->s, &tab->Asb[i * tab->s])); in TSView_MPRK()
1113 PetscCall(PetscFormatRealArray(sbuf, sizeof(sbuf), "% 8.6f", tab->s, tab->bsb)); in TSView_MPRK()
1118 PetscCall(PetscFormatRealArray(mbuf, sizeof(mbuf), "% 8.6f", tab->s, tab->cmb)); in TSView_MPRK()
1121 for (i = 0; i < tab->s; i++) { in TSView_MPRK()
1122 … PetscCall(PetscFormatRealArray(mbuf, sizeof(mbuf), "% 8.6f", tab->s, &tab->Amb[i * tab->s])); in TSView_MPRK()
1125 PetscCall(PetscFormatRealArray(mbuf, sizeof(mbuf), "% 8.6f", tab->s, tab->bmb)); in TSView_MPRK()
1227 *ns = mprk->tableau->s; in TSGetStages_MPRK()