xref: /petsc/src/ts/interface/tscreate.c (revision b92453a828cddaaf8731b9c34ef1222aaa5613b1)
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