PETSC_EXTERN PetscErrorCode TSCreate_BEuler(TS ts) { PetscErrorCode ierr; PetscFunctionBegin; ierr = TSCreate_Theta(ts);CHKERRQ(ierr); ierr = TSThetaSetTheta(ts,1.0);CHKERRQ(ierr); ts->ops->view = TSView_BEuler; PetscFunctionReturn(0); }
PETSC_EXTERN PetscErrorCode TSCreate_CN(TS ts) { PetscErrorCode ierr; PetscFunctionBegin; ierr = TSCreate_Theta(ts);CHKERRQ(ierr); ierr = TSThetaSetTheta(ts,0.5);CHKERRQ(ierr); ierr = TSThetaSetEndpoint(ts,PETSC_TRUE);CHKERRQ(ierr); ts->ops->view = TSView_CN; PetscFunctionReturn(0); }
/*MC TSBEULER - ODE solver using the implicit backward Euler method Level: beginner .seealso: TSCreate(), TS, TSSetType(), TSEULER, TSCN, TSTHETA M*/ EXTERN_C_BEGIN #undef __FUNCT__ #define __FUNCT__ "TSCreate_BEuler" PetscErrorCode TSCreate_BEuler(TS ts) { PetscErrorCode ierr; PetscFunctionBegin; ierr = TSCreate_Theta(ts);CHKERRQ(ierr); ierr = TSThetaSetTheta(ts,1.0);CHKERRQ(ierr); ts->ops->view = TSView_BEuler; PetscFunctionReturn(0); }
/*MC TSCN - ODE solver using the implicit Crank-Nicolson method. Level: beginner Notes: TSCN is equivalent to TSTHETA with Theta=0.5 and the "endpoint" option set. I.e. $ -ts_type theta -ts_theta_theta 0.5 -ts_theta_endpoint .seealso: TSCreate(), TS, TSSetType(), TSBEULER, TSTHETA M*/ EXTERN_C_BEGIN #undef __FUNCT__ #define __FUNCT__ "TSCreate_CN" PetscErrorCode TSCreate_CN(TS ts) { PetscErrorCode ierr; PetscFunctionBegin; ierr = TSCreate_Theta(ts);CHKERRQ(ierr); ierr = TSThetaSetTheta(ts,0.5);CHKERRQ(ierr); ierr = TSThetaSetEndpoint(ts,PETSC_TRUE);CHKERRQ(ierr); ts->ops->view = TSView_CN; PetscFunctionReturn(0); }