Lines Matching refs:ts

3 static PetscErrorCode TSRHSSplitGetRHSSplit(TS ts, const char splitname[], TS_RHSSplitLink *isplit)  in TSRHSSplitGetRHSSplit()  argument
8 *isplit = ts->tsrhssplit; in TSRHSSplitGetRHSSplit()
32 PetscErrorCode TSRHSSplitSetIS(TS ts, const char splitname[], IS is) in TSRHSSplitSetIS() argument
34 TS_RHSSplitLink newsplit, next = ts->tsrhssplit; in TSRHSSplitSetIS()
38 PetscValidHeaderSpecific(ts, TS_CLASSID, 1); in TSRHSSplitSetIS()
46 PetscCall(PetscSNPrintf(newsplit->splitname, 7, "%" PetscInt_FMT, ts->num_rhs_splits)); in TSRHSSplitSetIS()
50 PetscCall(TSCreate(PetscObjectComm((PetscObject)ts), &newsplit->ts)); in TSRHSSplitSetIS()
52 PetscCall(PetscObjectIncrementTabLevel((PetscObject)newsplit->ts, (PetscObject)ts, 1)); in TSRHSSplitSetIS()
53 …rintf(prefix, sizeof(prefix), "%srhsplit_%s_", ((PetscObject)ts)->prefix ? ((PetscObject)ts)->pref… in TSRHSSplitSetIS()
54 PetscCall(TSSetOptionsPrefix(newsplit->ts, prefix)); in TSRHSSplitSetIS()
55 if (!next) ts->tsrhssplit = newsplit; in TSRHSSplitSetIS()
60 ts->num_rhs_splits++; in TSRHSSplitSetIS()
80 PetscErrorCode TSRHSSplitGetIS(TS ts, const char splitname[], IS *is) in TSRHSSplitGetIS() argument
85 PetscValidHeaderSpecific(ts, TS_CLASSID, 1); in TSRHSSplitGetIS()
88 PetscCall(TSRHSSplitGetRHSSplit(ts, splitname, &isplit)); in TSRHSSplitGetIS()
109 PetscErrorCode TSRHSSplitSetRHSFunction(TS ts, const char splitname[], Vec r, TSRHSFunctionFn *rhsf… in TSRHSSplitSetRHSFunction() argument
116 PetscValidHeaderSpecific(ts, TS_CLASSID, 1); in TSRHSSplitSetRHSFunction()
120 PetscCall(TSRHSSplitGetRHSSplit(ts, splitname, &isplit)); in TSRHSSplitSetRHSFunction()
123 if (!r && ts->vec_sol) { in TSRHSSplitSetRHSFunction()
124 PetscCall(VecGetSubVector(ts->vec_sol, isplit->is, &subvec)); in TSRHSSplitSetRHSFunction()
127 PetscCall(VecRestoreSubVector(ts->vec_sol, isplit->is, &subvec)); in TSRHSSplitSetRHSFunction()
130 if (ts->dm) { in TSRHSSplitSetRHSFunction()
133 PetscCall(DMGetDimension(ts->dm, &dim)); in TSRHSSplitSetRHSFunction()
135 PetscCall(DMClone(ts->dm, &dmc)); in TSRHSSplitSetRHSFunction()
136 PetscCall(TSSetDM(isplit->ts, dmc)); in TSRHSSplitSetRHSFunction()
141 PetscCall(TSSetRHSFunction(isplit->ts, r, rhsfunc, ctx)); in TSRHSSplitSetRHSFunction()
162 PetscErrorCode TSRHSSplitSetIFunction(TS ts, const char splitname[], Vec r, TSIFunctionFn *ifunc, P… in TSRHSSplitSetIFunction() argument
169 PetscValidHeaderSpecific(ts, TS_CLASSID, 1); in TSRHSSplitSetIFunction()
173 PetscCall(TSRHSSplitGetRHSSplit(ts, splitname, &isplit)); in TSRHSSplitSetIFunction()
176 if (!r && ts->vec_sol) { in TSRHSSplitSetIFunction()
177 PetscCall(VecGetSubVector(ts->vec_sol, isplit->is, &subvec)); in TSRHSSplitSetIFunction()
180 PetscCall(VecRestoreSubVector(ts->vec_sol, isplit->is, &subvec)); in TSRHSSplitSetIFunction()
183 if (ts->dm) { in TSRHSSplitSetIFunction()
186 PetscCall(DMGetDimension(ts->dm, &dim)); in TSRHSSplitSetIFunction()
188 PetscCall(DMClone(ts->dm, &dmc)); in TSRHSSplitSetIFunction()
189 PetscCall(TSSetDM(isplit->ts, dmc)); in TSRHSSplitSetIFunction()
194 PetscCall(TSSetIFunction(isplit->ts, r, ifunc, ctx)); in TSRHSSplitSetIFunction()
216 PetscErrorCode TSRHSSplitSetIJacobian(TS ts, const char splitname[], Mat Amat, Mat Pmat, TSIJacobia… in TSRHSSplitSetIJacobian() argument
222 PetscValidHeaderSpecific(ts, TS_CLASSID, 1); in TSRHSSplitSetIJacobian()
225 if (Amat) PetscCheckSameComm(ts, 1, Amat, 3); in TSRHSSplitSetIJacobian()
226 if (Pmat) PetscCheckSameComm(ts, 1, Pmat, 4); in TSRHSSplitSetIJacobian()
229 PetscCall(TSRHSSplitGetRHSSplit(ts, splitname, &isplit)); in TSRHSSplitSetIJacobian()
232 if (ts->dm) { in TSRHSSplitSetIJacobian()
235 PetscCall(DMGetDimension(ts->dm, &dim)); in TSRHSSplitSetIJacobian()
237 PetscCall(DMClone(ts->dm, &dmc)); in TSRHSSplitSetIJacobian()
238 PetscCall(TSSetDM(isplit->ts, dmc)); in TSRHSSplitSetIJacobian()
243 PetscCall(TSSetIJacobian(isplit->ts, Amat, Pmat, ijac, ctx)); in TSRHSSplitSetIJacobian()
263 PetscErrorCode TSRHSSplitGetSubTS(TS ts, const char splitname[], TS *subts) in TSRHSSplitGetSubTS() argument
268 PetscValidHeaderSpecific(ts, TS_CLASSID, 1); in TSRHSSplitGetSubTS()
272 PetscCall(TSRHSSplitGetRHSSplit(ts, splitname, &isplit)); in TSRHSSplitGetSubTS()
273 if (isplit) *subts = isplit->ts; in TSRHSSplitGetSubTS()
297 PetscErrorCode TSRHSSplitGetSubTSs(TS ts, PetscInt *n, TS *subts[]) in TSRHSSplitGetSubTSs() argument
299 TS_RHSSplitLink ilink = ts->tsrhssplit; in TSRHSSplitGetSubTSs()
303 PetscValidHeaderSpecific(ts, TS_CLASSID, 1); in TSRHSSplitGetSubTSs()
305 PetscCall(PetscMalloc1(ts->num_rhs_splits, subts)); in TSRHSSplitGetSubTSs()
307 (*subts)[i++] = ilink->ts; in TSRHSSplitGetSubTSs()
311 if (n) *n = ts->num_rhs_splits; in TSRHSSplitGetSubTSs()
334 PetscErrorCode TSRHSSplitGetSNES(TS ts, SNES *snes) in TSRHSSplitGetSNES() argument
337 PetscValidHeaderSpecific(ts, TS_CLASSID, 1); in TSRHSSplitGetSNES()
339 if (!ts->snesrhssplit) { in TSRHSSplitGetSNES()
340 PetscCall(SNESCreate(PetscObjectComm((PetscObject)ts), &ts->snesrhssplit)); in TSRHSSplitGetSNES()
341 PetscCall(PetscObjectSetOptions((PetscObject)ts->snesrhssplit, ((PetscObject)ts)->options)); in TSRHSSplitGetSNES()
342 PetscCall(SNESSetFunction(ts->snesrhssplit, NULL, SNESTSFormFunction, ts)); in TSRHSSplitGetSNES()
343 PetscCall(PetscObjectIncrementTabLevel((PetscObject)ts->snesrhssplit, (PetscObject)ts, 1)); in TSRHSSplitGetSNES()
344 if (ts->problem_type == TS_LINEAR) PetscCall(SNESSetType(ts->snesrhssplit, SNESKSPONLY)); in TSRHSSplitGetSNES()
346 *snes = ts->snesrhssplit; in TSRHSSplitGetSNES()
367 PetscErrorCode TSRHSSplitSetSNES(TS ts, SNES snes) in TSRHSSplitSetSNES() argument
372 PetscValidHeaderSpecific(ts, TS_CLASSID, 1); in TSRHSSplitSetSNES()
375 PetscCall(SNESDestroy(&ts->snesrhssplit)); in TSRHSSplitSetSNES()
377 ts->snesrhssplit = snes; in TSRHSSplitSetSNES()
379 PetscCall(SNESSetFunction(ts->snesrhssplit, NULL, SNESTSFormFunction, ts)); in TSRHSSplitSetSNES()
380 PetscCall(SNESGetJacobian(ts->snesrhssplit, NULL, NULL, &func, NULL)); in TSRHSSplitSetSNES()
381 … == SNESTSFormJacobian) PetscCall(SNESSetJacobian(ts->snesrhssplit, NULL, NULL, SNESTSFormJacobian… in TSRHSSplitSetSNES()