static PetscErrorCode TSDestroy_RK(TS ts) { PetscErrorCode ierr; PetscFunctionBegin; ierr = TSReset_RK(ts);CHKERRQ(ierr); ierr = PetscFree(ts->data);CHKERRQ(ierr); ierr = PetscObjectComposeFunctionDynamic((PetscObject)ts,"TSRKSetTolerance_C","",PETSC_NULL);CHKERRQ(ierr); PetscFunctionReturn(0); }
static PetscErrorCode TSDestroy_RK(TS ts) { PetscErrorCode ierr; PetscFunctionBegin; ierr = TSReset_RK(ts);CHKERRQ(ierr); ierr = PetscFree(ts->data);CHKERRQ(ierr); ierr = PetscObjectComposeFunction((PetscObject)ts,"TSRKGetType_C",NULL);CHKERRQ(ierr); ierr = PetscObjectComposeFunction((PetscObject)ts,"TSRKSetType_C",NULL);CHKERRQ(ierr); PetscFunctionReturn(0); }
PetscErrorCode TSRKSetType_RK(TS ts,TSRKType rktype) { TS_RK *rk = (TS_RK*)ts->data; PetscErrorCode ierr; PetscBool match; RKTableauLink link; PetscFunctionBegin; if (rk->tableau) { ierr = PetscStrcmp(rk->tableau->name,rktype,&match);CHKERRQ(ierr); if (match) PetscFunctionReturn(0); } for (link = RKTableauList; link; link=link->next) { ierr = PetscStrcmp(link->tab.name,rktype,&match);CHKERRQ(ierr); if (match) { ierr = TSReset_RK(ts);CHKERRQ(ierr); rk->tableau = &link->tab; PetscFunctionReturn(0); } } SETERRQ1(PetscObjectComm((PetscObject)ts),PETSC_ERR_ARG_UNKNOWN_TYPE,"Could not find '%s'",rktype); PetscFunctionReturn(0); }