Lines Matching refs:tsdae
22 PetscErrorCode TSDAESimpleCreate(MPI_Comm comm, TSDAESimple *tsdae) in TSDAESimpleCreate() argument
25 PetscCall(PetscNew(tsdae)); in TSDAESimpleCreate()
26 (*tsdae)->comm = comm; in TSDAESimpleCreate()
30 PetscErrorCode TSDAESimpleSetRHSFunction(TSDAESimple tsdae, Vec U, PetscErrorCode (*f)(PetscReal, V… in TSDAESimpleSetRHSFunction() argument
33 tsdae->f = f; in TSDAESimpleSetRHSFunction()
34 tsdae->U = U; in TSDAESimpleSetRHSFunction()
36 tsdae->fctx = ctx; in TSDAESimpleSetRHSFunction()
40 PetscErrorCode TSDAESimpleSetIFunction(TSDAESimple tsdae, Vec V, PetscErrorCode (*F)(PetscReal, Vec… in TSDAESimpleSetIFunction() argument
43 tsdae->F = F; in TSDAESimpleSetIFunction()
44 tsdae->V = V; in TSDAESimpleSetIFunction()
46 tsdae->Fctx = ctx; in TSDAESimpleSetIFunction()
50 PetscErrorCode TSDAESimpleDestroy(TSDAESimple *tsdae) in TSDAESimpleDestroy() argument
53 PetscCall((*(*tsdae)->destroy)(*tsdae)); in TSDAESimpleDestroy()
54 PetscCall(VecDestroy(&(*tsdae)->U)); in TSDAESimpleDestroy()
55 PetscCall(VecDestroy(&(*tsdae)->V)); in TSDAESimpleDestroy()
56 PetscCall(PetscFree(*tsdae)); in TSDAESimpleDestroy()
60 PetscErrorCode TSDAESimpleSolve(TSDAESimple tsdae, Vec Usolution) in TSDAESimpleSolve() argument
63 PetscCall((*tsdae->solve)(tsdae, Usolution)); in TSDAESimpleSolve()
67 PetscErrorCode TSDAESimpleSetFromOptions(TSDAESimple tsdae) in TSDAESimpleSetFromOptions() argument
70 PetscCall((*tsdae->setfromoptions)(PetscOptionsObject, tsdae)); in TSDAESimpleSetFromOptions()
95 TSDAESimple tsdae = (TSDAESimple)actx; in TSDAESimple_Reduced_TSFunction() local
96 TSDAESimple_Reduced *red = (TSDAESimple_Reduced *)tsdae->data; in TSDAESimple_Reduced_TSFunction()
101 PetscCall(SNESSolve(red->snes, NULL, tsdae->V)); in TSDAESimple_Reduced_TSFunction()
102 PetscCall((*tsdae->f)(t, U, tsdae->V, F, tsdae->fctx)); in TSDAESimple_Reduced_TSFunction()
112 TSDAESimple tsdae = (TSDAESimple)actx; in TSDAESimple_Reduced_SNESFunction() local
113 TSDAESimple_Reduced *red = (TSDAESimple_Reduced *)tsdae->data; in TSDAESimple_Reduced_SNESFunction()
116 PetscCall((*tsdae->F)(red->t, red->U, V, F, tsdae->Fctx)); in TSDAESimple_Reduced_SNESFunction()
120 PetscErrorCode TSDAESimpleSolve_Reduced(TSDAESimple tsdae, Vec U) in TSDAESimpleSolve_Reduced() argument
122 TSDAESimple_Reduced *red = (TSDAESimple_Reduced *)tsdae->data; in TSDAESimpleSolve_Reduced()
129 PetscErrorCode TSDAESimpleSetFromOptions_Reduced(TSDAESimple tsdae, PetscOptionItems PetscOptionsOb… in TSDAESimpleSetFromOptions_Reduced() argument
131 TSDAESimple_Reduced *red = (TSDAESimple_Reduced *)tsdae->data; in TSDAESimpleSetFromOptions_Reduced()
139 PetscErrorCode TSDAESimpleDestroy_Reduced(TSDAESimple tsdae) in TSDAESimpleDestroy_Reduced() argument
141 TSDAESimple_Reduced *red = (TSDAESimple_Reduced *)tsdae->data; in TSDAESimpleDestroy_Reduced()
150 PetscErrorCode TSDAESimpleSetUp_Reduced(TSDAESimple tsdae) in TSDAESimpleSetUp_Reduced() argument
157 tsdae->data = red; in TSDAESimpleSetUp_Reduced()
159 tsdae->setfromoptions = TSDAESimpleSetFromOptions_Reduced; in TSDAESimpleSetUp_Reduced()
160 tsdae->solve = TSDAESimpleSolve_Reduced; in TSDAESimpleSetUp_Reduced()
161 tsdae->destroy = TSDAESimpleDestroy_Reduced; in TSDAESimpleSetUp_Reduced()
163 PetscCall(TSCreate(tsdae->comm, &red->ts)); in TSDAESimpleSetUp_Reduced()
167 PetscCall(VecDuplicate(tsdae->U, &tsrhs)); in TSDAESimpleSetUp_Reduced()
168 PetscCall(TSSetRHSFunction(red->ts, tsrhs, TSDAESimple_Reduced_TSFunction, tsdae)); in TSDAESimpleSetUp_Reduced()
171 PetscCall(SNESCreate(tsdae->comm, &red->snes)); in TSDAESimpleSetUp_Reduced()
173 PetscCall(SNESSetFunction(red->snes, NULL, TSDAESimple_Reduced_SNESFunction, tsdae)); in TSDAESimpleSetUp_Reduced()
174 PetscCall(SNESSetJacobian(red->snes, NULL, NULL, SNESComputeJacobianDefault, tsdae)); in TSDAESimpleSetUp_Reduced()
199 TSDAESimple tsdae = (TSDAESimple)actx; in TSDAESimple_Full_TSRHSFunction() local
200 TSDAESimple_Full *full = (TSDAESimple_Full *)tsdae->data; in TSDAESimple_Full_TSRHSFunction()
204 PetscCall(VecScatterBegin(full->scatterU, UV, tsdae->U, INSERT_VALUES, SCATTER_REVERSE)); in TSDAESimple_Full_TSRHSFunction()
205 PetscCall(VecScatterEnd(full->scatterU, UV, tsdae->U, INSERT_VALUES, SCATTER_REVERSE)); in TSDAESimple_Full_TSRHSFunction()
206 PetscCall(VecScatterBegin(full->scatterV, UV, tsdae->V, INSERT_VALUES, SCATTER_REVERSE)); in TSDAESimple_Full_TSRHSFunction()
207 PetscCall(VecScatterEnd(full->scatterV, UV, tsdae->V, INSERT_VALUES, SCATTER_REVERSE)); in TSDAESimple_Full_TSRHSFunction()
208 PetscCall((*tsdae->f)(t, tsdae->U, tsdae->V, full->UF, tsdae->fctx)); in TSDAESimple_Full_TSRHSFunction()
223 TSDAESimple tsdae = (TSDAESimple)actx; in TSDAESimple_Full_TSIFunction() local
224 TSDAESimple_Full *full = (TSDAESimple_Full *)tsdae->data; in TSDAESimple_Full_TSIFunction()
228 PetscCall(VecScatterBegin(full->scatterU, UV, tsdae->U, INSERT_VALUES, SCATTER_REVERSE)); in TSDAESimple_Full_TSIFunction()
229 PetscCall(VecScatterEnd(full->scatterU, UV, tsdae->U, INSERT_VALUES, SCATTER_REVERSE)); in TSDAESimple_Full_TSIFunction()
230 PetscCall(VecScatterBegin(full->scatterV, UV, tsdae->V, INSERT_VALUES, SCATTER_REVERSE)); in TSDAESimple_Full_TSIFunction()
231 PetscCall(VecScatterEnd(full->scatterV, UV, tsdae->V, INSERT_VALUES, SCATTER_REVERSE)); in TSDAESimple_Full_TSIFunction()
232 PetscCall((*tsdae->F)(t, tsdae->U, tsdae->V, full->VF, tsdae->Fctx)); in TSDAESimple_Full_TSIFunction()
238 PetscErrorCode TSDAESimpleSolve_Full(TSDAESimple tsdae, Vec U) in TSDAESimpleSolve_Full() argument
240 TSDAESimple_Full *full = (TSDAESimple_Full *)tsdae->data; in TSDAESimpleSolve_Full()
252 PetscErrorCode TSDAESimpleSetFromOptions_Full(TSDAESimple tsdae, PetscOptionItems PetscOptionsObjec… in TSDAESimpleSetFromOptions_Full() argument
254 TSDAESimple_Full *full = (TSDAESimple_Full *)tsdae->data; in TSDAESimpleSetFromOptions_Full()
261 PetscErrorCode TSDAESimpleDestroy_Full(TSDAESimple tsdae) in TSDAESimpleDestroy_Full() argument
263 TSDAESimple_Full *full = (TSDAESimple_Full *)tsdae->data; in TSDAESimpleDestroy_Full()
276 PetscErrorCode TSDAESimpleSetUp_Full(TSDAESimple tsdae) in TSDAESimpleSetUp_Full() argument
285 tsdae->data = full; in TSDAESimpleSetUp_Full()
287 tsdae->setfromoptions = TSDAESimpleSetFromOptions_Full; in TSDAESimpleSetUp_Full()
288 tsdae->solve = TSDAESimpleSolve_Full; in TSDAESimpleSetUp_Full()
289 tsdae->destroy = TSDAESimpleDestroy_Full; in TSDAESimpleSetUp_Full()
291 PetscCall(TSCreate(tsdae->comm, &full->ts)); in TSDAESimpleSetUp_Full()
295 PetscCall(VecDuplicate(tsdae->U, &full->UF)); in TSDAESimpleSetUp_Full()
296 PetscCall(VecDuplicate(tsdae->V, &full->VF)); in TSDAESimpleSetUp_Full()
298 PetscCall(VecGetLocalSize(tsdae->U, &nU)); in TSDAESimpleSetUp_Full()
299 PetscCall(VecGetLocalSize(tsdae->V, &nV)); in TSDAESimpleSetUp_Full()
300 PetscCall(VecCreateFromOptions(tsdae->comm, NULL, nU + nV, PETSC_DETERMINE, &tsrhs)); in TSDAESimpleSetUp_Full()
304 PetscCall(ISCreateStride(tsdae->comm, nU, UVstart, 1, &is)); in TSDAESimpleSetUp_Full()
305 PetscCall(VecScatterCreate(tsdae->U, NULL, tsrhs, is, &full->scatterU)); in TSDAESimpleSetUp_Full()
307 PetscCall(ISCreateStride(tsdae->comm, nV, UVstart + nU, 1, &is)); in TSDAESimpleSetUp_Full()
308 PetscCall(VecScatterCreate(tsdae->V, NULL, tsrhs, is, &full->scatterV)); in TSDAESimpleSetUp_Full()
311 PetscCall(TSSetRHSFunction(full->ts, tsrhs, TSDAESimple_Full_TSRHSFunction, tsdae)); in TSDAESimpleSetUp_Full()
312 PetscCall(TSSetIFunction(full->ts, NULL, TSDAESimple_Full_TSIFunction, tsdae)); in TSDAESimpleSetUp_Full()
343 TSDAESimple tsdae; in main() local
348 PetscCall(TSDAESimpleCreate(PETSC_COMM_WORLD, &tsdae)); in main()
352 PetscCall(TSDAESimpleSetRHSFunction(tsdae, U, f, NULL)); in main()
353 PetscCall(TSDAESimpleSetIFunction(tsdae, V, F, NULL)); in main()
359 PetscCall(TSDAESimpleSetUp_Reduced(tsdae)); in main()
361 PetscCall(TSDAESimpleSetFromOptions(tsdae)); in main()
362 PetscCall(TSDAESimpleSolve(tsdae, Usolution)); in main()
363 PetscCall(TSDAESimpleDestroy(&tsdae)); in main()