1bdad233fSMatthew Knepley 2af0996ceSBarry Smith #include <petsc/private/tsimpl.h> /*I "petscts.h" I*/ 3bdad233fSMatthew Knepley 4193ac0bcSJed Brown const char *const TSConvergedReasons_Shifted[] = { 5193ac0bcSJed Brown "DIVERGED_STEP_REJECTED", 6193ac0bcSJed Brown "DIVERGED_NONLINEAR_SOLVE", 7193ac0bcSJed Brown "CONVERGED_ITERATING", 8193ac0bcSJed Brown "CONVERGED_TIME", 9193ac0bcSJed Brown "CONVERGED_ITS", 103118ae5eSBarry Smith "CONVERGED_USER", 113118ae5eSBarry Smith "CONVERGED_EVENT", 123118ae5eSBarry Smith "CONVERGED_PSEUDO_FATOL", 133118ae5eSBarry Smith "CONVERGED_PSEUDO_FATOL", 14193ac0bcSJed Brown "TSConvergedReason","TS_",0}; 15193ac0bcSJed Brown const char *const*TSConvergedReasons = TSConvergedReasons_Shifted + 2; 16193ac0bcSJed Brown 1760893bc3SSatish Balay /*@C 18bd6a702fSBarry Smith TSCreate - This function creates an empty timestepper. The problem type can then be set with TSSetProblemType() and the 19bd6a702fSBarry Smith type of solver can then be set with TSSetType(). 20bdad233fSMatthew Knepley 21bdad233fSMatthew Knepley Collective on MPI_Comm 22bdad233fSMatthew Knepley 23bdad233fSMatthew Knepley Input Parameter: 24bdad233fSMatthew Knepley . comm - The communicator 25bdad233fSMatthew Knepley 26bdad233fSMatthew Knepley Output Parameter: 27bdad233fSMatthew Knepley . ts - The TS 28bdad233fSMatthew Knepley 29bdad233fSMatthew Knepley Level: beginner 30bdad233fSMatthew Knepley 31bdad233fSMatthew Knepley .keywords: TS, create 3204ceabe5SMatthew G. Knepley .seealso: TSSetType(), TSSetUp(), TSDestroy(), TSSetProblemType() 33bdad233fSMatthew Knepley @*/ 340adebc6cSBarry Smith PetscErrorCode TSCreate(MPI_Comm comm, TS *ts) 350adebc6cSBarry Smith { 36bdad233fSMatthew Knepley TS t; 37dfbe8321SBarry Smith PetscErrorCode ierr; 38bdad233fSMatthew Knepley 39bdad233fSMatthew Knepley PetscFunctionBegin; 404482741eSBarry Smith PetscValidPointer(ts,1); 410298fd71SBarry Smith *ts = NULL; 42607a6623SBarry Smith ierr = TSInitializePackage();CHKERRQ(ierr); 43bdad233fSMatthew Knepley 4473107ff1SLisandro Dalcin ierr = PetscHeaderCreate(t, TS_CLASSID, "TS", "Time stepping", "TS", comm, TSDestroy, TSView);CHKERRQ(ierr); 45bdad233fSMatthew Knepley 46bdad233fSMatthew Knepley /* General TS description */ 47089b2837SJed Brown t->problem_type = TS_NONLINEAR; 480298fd71SBarry Smith t->vec_sol = NULL; 49bdad233fSMatthew Knepley t->numbermonitors = 0; 500298fd71SBarry Smith t->snes = NULL; 51bdad233fSMatthew Knepley t->setupcalled = 0; 520298fd71SBarry Smith t->data = NULL; 530298fd71SBarry Smith t->user = NULL; 54cdbf8f93SLisandro Dalcin t->ptime = 0.0; 55cdbf8f93SLisandro Dalcin t->time_step = 0.1; 56bdad233fSMatthew Knepley t->max_time = 5.0; 578392e04aSShri Abhyankar t->steprollback = PETSC_FALSE; 58e7069c78SShri t->steprestart = PETSC_FALSE; 59bdad233fSMatthew Knepley t->steps = 0; 60cdbf8f93SLisandro Dalcin t->max_steps = 5000; 615ef26d82SJed Brown t->ksp_its = 0; 625ef26d82SJed Brown t->snes_its = 0; 630298fd71SBarry Smith t->work = NULL; 64bdad233fSMatthew Knepley t->nwork = 0; 65193ac0bcSJed Brown t->max_snes_failures = 1; 66193ac0bcSJed Brown t->max_reject = 10; 67193ac0bcSJed Brown t->errorifstepfailed = PETSC_TRUE; 680e4ef248SJed Brown t->rhsjacobian.time = -1e20; 69e1244c69SJed Brown t->rhsjacobian.scale = 1.; 70b41af12eSJed Brown t->ijacobian.shift = 1.; 71e817cc15SEmil Constantinescu t->equation_type = TS_EQ_UNSPECIFIED; 72bdad233fSMatthew Knepley 731c3436cfSJed Brown t->atol = 1e-4; 741c3436cfSJed Brown t->rtol = 1e-4; 758d59e960SJed Brown t->cfltime = PETSC_MAX_REAL; 768d59e960SJed Brown t->cfltime_local = PETSC_MAX_REAL; 77feed9e9dSBarry Smith t->exact_final_time = TS_EXACTFINALTIME_UNSPECIFIED; 78814b06c0SHong Zhang t->vec_costintegral = NULL; 7968bece0bSHong Zhang t->trajectory = NULL; 8068bece0bSHong Zhang 81*b92453a8SLisandro Dalcin /* All methods that do adaptivity should specify 82*b92453a8SLisandro Dalcin * its preferred adapt type in their constructor */ 83*b92453a8SLisandro Dalcin t->default_adapt_type = TSADAPTNONE; 84*b92453a8SLisandro Dalcin 85bdad233fSMatthew Knepley *ts = t; 86bdad233fSMatthew Knepley PetscFunctionReturn(0); 87bdad233fSMatthew Knepley } 88