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