xref: /petsc/src/ts/adapt/impls/basic/adaptbasic.c (revision 84df9cb40eca90ea9b18a456fab7a4ecc7f6c1a4)
1 #include <private/tsimpl.h> /*I "petscts.h" I*/
2 
3 typedef struct {
4   PetscReal atol;               /* Absolute tolerance for errors committed in one time step */
5   PetscReal rtol;               /* Relative tolerance */
6   PetscReal rmin,rmax;          /* safety factors for increasing/decreasing step size */
7   PetscReal nu;
8 } TSAdapt_Basic;
9 
10 #undef __FUNCT__
11 #define __FUNCT__ "TSAdaptChoose_Basic_1"
12 static PetscErrorCode TSAdaptChoose_Basic_1(TSAdapt adapt,TS ts,PetscReal h,PetscInt *next_sc,PetscReal *next_h,PetscBool *accept)
13 {
14   PETSC_UNUSED TSAdapt_Basic *basic = (TSAdapt_Basic*)adapt->data;
15   PETSC_UNUSED PetscErrorCode ierr;
16 
17   PetscFunctionBegin;
18   *next_sc = 0;
19   *next_h = h;
20   *accept = PETSC_TRUE;
21   PetscFunctionReturn(0);
22 }
23 
24 #undef __FUNCT__
25 #define __FUNCT__ "TSAdaptDestroy_Basic"
26 static PetscErrorCode TSAdaptDestroy_Basic(TSAdapt adapt)
27 {
28   PetscErrorCode ierr;
29 
30   PetscFunctionBegin;
31   ierr = PetscFree(adapt->data);CHKERRQ(ierr);
32   PetscFunctionReturn(0);
33 }
34 
35 EXTERN_C_BEGIN
36 #undef __FUNCT__
37 #define __FUNCT__ "TSAdaptCreate_Basic"
38 /*MC
39    TSADAPTBASIC - Basic adaptive controller for time stepping
40 
41    Level: intermediate
42 
43 .seealso: TS, TSAdapt, TSSetAdapt()
44 M*/
45 PetscErrorCode TSAdaptCreate_Basic(TSAdapt adapt)
46 {
47   PetscErrorCode ierr;
48   TSAdapt_Basic *a;
49 
50   PetscFunctionBegin;
51   ierr = PetscNewLog(adapt,TSAdapt_Basic,&a);CHKERRQ(ierr);
52   adapt->data = (void*)a;
53   adapt->ops->choose = TSAdaptChoose_Basic_1;
54   adapt->ops->destroy = TSAdaptDestroy_Basic;
55   PetscFunctionReturn(0);
56 }
57 EXTERN_C_END
58