15
15
<a name="line5"> 5: </a> #include <A href="../../../src/ts/tsimpl.h.html">src/ts/tsimpl.h</A>
17
<a name="line7"> 7: </a><strong><font color="#4169E1"><a name="TSPublish_Petsc"></a>static int TSPublish_Petsc(<A href="../../../docs/manualpages/Sys/PetscObject.html#PetscObject">PetscObject</A> obj)</font></strong>
18
<a name="line8"> 8: </a>{
19
<a name="line9"> 9: </a><font color="#A020F0">#if defined(PETSC_HAVE_AMS)</font>
20
<a name="line10"> 10: </a> <A href="../../../docs/manualpages/TS/TS.html#TS">TS</A> v = (<A href="../../../docs/manualpages/TS/TS.html#TS">TS</A>) obj;
21
<a name="line11"> 11: </a> int ierr;
22
<a name="line12"> 12: </a><font color="#A020F0">#endif </font>
25
<a name="line16"> 16: </a><font color="#A020F0">#if defined(PETSC_HAVE_AMS)</font>
26
<a name="line17"> 17: </a> <font color="#B22222">/* if it is already published then return */</font>
27
<a name="line18"> 18: </a> <font color="#4169E1">if</font> (v->amem >=0) <font color="#4169E1">return</font>(0);
29
<a name="line20"> 20: </a> PetscObjectPublishBaseBegin(obj);
30
<a name="line21"> 21: </a> AMS_Memory_add_field((AMS_Memory)v->amem,<font color="#666666">"Step"</font>,&v->steps,1,AMS_INT,AMS_READ,
31
<a name="line22"> 22: </a> AMS_COMMON,AMS_REDUCT_UNDEF);
32
<a name="line23"> 23: </a> AMS_Memory_add_field((AMS_Memory)v->amem,<font color="#666666">"Time"</font>,&v->ptime,1,AMS_DOUBLE,AMS_READ,
17
<a name="line9"> 9: </a><strong><font color="#4169E1"><a name="TSPublish_Petsc"></a>static int TSPublish_Petsc(<A href="../../../docs/manualpages/Sys/PetscObject.html#PetscObject">PetscObject</A> obj)</font></strong>
18
<a name="line10"> 10: </a>{
19
<a name="line11"> 11: </a><font color="#A020F0">#if defined(PETSC_HAVE_AMS)</font>
20
<a name="line12"> 12: </a> <A href="../../../docs/manualpages/TS/TS.html#TS">TS</A> v = (<A href="../../../docs/manualpages/TS/TS.html#TS">TS</A>) obj;
21
<a name="line13"> 13: </a> int ierr;
22
<a name="line14"> 14: </a><font color="#A020F0">#endif </font>
25
<a name="line18"> 18: </a><font color="#A020F0">#if defined(PETSC_HAVE_AMS)</font>
26
<a name="line19"> 19: </a> <font color="#B22222">/* if it is already published then return */</font>
27
<a name="line20"> 20: </a> <font color="#4169E1">if</font> (v->amem >=0) <font color="#4169E1">return</font>(0);
29
<a name="line22"> 22: </a> PetscObjectPublishBaseBegin(obj);
30
<a name="line23"> 23: </a> AMS_Memory_add_field((AMS_Memory)v->amem,<font color="#666666">"Step"</font>,&v->steps,1,AMS_INT,AMS_READ,
33
31
<a name="line24"> 24: </a> AMS_COMMON,AMS_REDUCT_UNDEF);
34
<a name="line25"> 25: </a> AMS_Memory_add_field((AMS_Memory)v->amem,<font color="#666666">"CurrentTimeStep"</font>,&v->time_step,1,
35
<a name="line26"> 26: </a> AMS_DOUBLE,AMS_READ,AMS_COMMON,AMS_REDUCT_UNDEF);
36
<a name="line27"> 27: </a> PetscObjectPublishBaseEnd(obj);
37
<a name="line28"> 28: </a><font color="#A020F0">#endif</font>
38
<a name="line29"> 29: </a> <font color="#4169E1">return</font>(0);
39
<a name="line30"> 30: </a>}
41
<a name="line32"> 32: </a><font color="#B22222">/*@C</font>
42
<a name="line33"> 33: </a><font color="#B22222"> <A href="../../../docs/manualpages/TS/TSCreate.html#TSCreate">TSCreate</A> - This function creates an empty timestepper. The problem type can then be set with <A href="../../../docs/manualpages/TS/TSSetProblemType.html#TSSetProblemType">TSSetProblemType</A>() and the </font>
43
<a name="line34"> 34: </a><font color="#B22222"> type of solver can then be set with <A href="../../../docs/manualpages/TS/TSSetType.html#TSSetType">TSSetType</A>().</font>
45
<a name="line36"> 36: </a><font color="#B22222"> Collective on MPI_Comm</font>
47
<a name="line38"> 38: </a><font color="#B22222"> Input Parameter:</font>
48
<a name="line39"> 39: </a><font color="#B22222">. <A href="../../../docs/manualpages/Sys/comm.html#comm">comm</A> - The communicator</font>
50
<a name="line41"> 41: </a><font color="#B22222"> Output Parameter:</font>
51
<a name="line42"> 42: </a><font color="#B22222">. ts - The <A href="../../../docs/manualpages/TS/TS.html#TS">TS</A></font>
53
<a name="line44"> 44: </a><font color="#B22222"> Level: beginner</font>
55
<a name="line46"> 46: </a><font color="#B22222">.keywords: <A href="../../../docs/manualpages/TS/TS.html#TS">TS</A>, create</font>
56
<a name="line47"> 47: </a><font color="#B22222">.seealso: <A href="../../../docs/manualpages/TS/TSSetType.html#TSSetType">TSSetType</A>(), <A href="../../../docs/manualpages/TS/TSSetUp.html#TSSetUp">TSSetUp</A>(), <A href="../../../docs/manualpages/TS/TSDestroy.html#TSDestroy">TSDestroy</A>(), <A href="../../../docs/manualpages/Mesh/MeshCreate.html#MeshCreate">MeshCreate</A>(), <A href="../../../docs/manualpages/TS/TSSetProblemType.html#TSSetProblemType">TSSetProblemType</A>()</font>
57
<a name="line48"> 48: </a><font color="#B22222">@*/</font>
58
<a name="line49"> 49: </a><strong><font color="#4169E1"><a name="TSCreate"></a>int <A href="../../../docs/manualpages/TS/TSCreate.html#TSCreate">TSCreate</A>(MPI_Comm <A href="../../../docs/manualpages/Sys/comm.html#comm">comm</A>, <A href="../../../docs/manualpages/TS/TS.html#TS">TS</A> *ts)</font></strong> {
59
<a name="line50"> 50: </a> <A href="../../../docs/manualpages/TS/TS.html#TS">TS</A> t;
61
<a name="line55"> 55: </a> *ts = PETSC_NULL;
62
<a name="line56"> 56: </a><font color="#A020F0">#ifndef PETSC_USE_DYNAMIC_LIBRARIES</font>
63
<a name="line57"> 57: </a> <A href="../../../docs/manualpages/TS/TSInitializePackage.html#TSInitializePackage">TSInitializePackage</A>(PETSC_NULL);
64
<a name="line58"> 58: </a><font color="#A020F0">#endif</font>
66
<a name="line60"> 60: </a> PetscHeaderCreate(t, _p_TS, <font color="#4169E1">struct _TSOps</font>, TS_COOKIE, -1, <font color="#666666">"<A href="../../../docs/manualpages/TS/TS.html#TS">TS</A>"</font>, <A href="../../../docs/manualpages/Sys/comm.html#comm">comm</A>, <A href="../../../docs/manualpages/TS/TSDestroy.html#TSDestroy">TSDestroy</A>, <A href="../../../docs/manualpages/TS/TSView.html#TSView">TSView</A>);
67
<a name="line61"> 61: </a> PetscLogObjectCreate(t);
68
<a name="line62"> 62: </a> PetscLogObjectMemory(t, <font color="#4169E1">sizeof</font>(<font color="#4169E1">struct _p_TS</font>));
69
<a name="line63"> 63: </a> <A href="../../../docs/manualpages/Sys/PetscMemzero.html#PetscMemzero">PetscMemzero</A>(t->ops, <font color="#4169E1">sizeof</font>(<font color="#4169E1">struct _TSOps</font>));
70
<a name="line64"> 64: </a> t->bops->publish = TSPublish_Petsc;
71
<a name="line65"> 65: </a> t->type_name = PETSC_NULL;
72
<a name="line66"> 66: </a> t->serialize_name = PETSC_NULL;
74
<a name="line68"> 68: </a> t->ops->applymatrixbc = <A href="../../../docs/manualpages/TS/TSDefaultSystemMatrixBC.html#TSDefaultSystemMatrixBC">TSDefaultSystemMatrixBC</A>;
75
<a name="line69"> 69: </a> t->ops->applyrhsbc = <A href="../../../docs/manualpages/TS/TSDefaultRhsBC.html#TSDefaultRhsBC">TSDefaultRhsBC</A>;
76
<a name="line70"> 70: </a> t->ops->applysolbc = <A href="../../../docs/manualpages/TS/TSDefaultSolutionBC.html#TSDefaultSolutionBC">TSDefaultSolutionBC</A>;
77
<a name="line71"> 71: </a> t->ops->prestep = <A href="../../../docs/manualpages/TS/TSDefaultPreStep.html#TSDefaultPreStep">TSDefaultPreStep</A>;
78
<a name="line72"> 72: </a> t->ops->update = <A href="../../../docs/manualpages/TS/TSDefaultUpdate.html#TSDefaultUpdate">TSDefaultUpdate</A>;
79
<a name="line73"> 73: </a> t->ops->poststep = <A href="../../../docs/manualpages/TS/TSDefaultPostStep.html#TSDefaultPostStep">TSDefaultPostStep</A>;
81
<a name="line75"> 75: </a> <font color="#B22222">/* General <A href="../../../docs/manualpages/TS/TS.html#TS">TS</A> description */</font>
82
<a name="line76"> 76: </a> t->problem_type = TS_LINEAR;
83
<a name="line77"> 77: </a> t->vec_sol = PETSC_NULL;
84
<a name="line78"> 78: </a> t->vec_sol_always = PETSC_NULL;
85
<a name="line79"> 79: </a> t->numbermonitors = 0;
86
<a name="line80"> 80: </a> t->isGTS = PETSC_FALSE;
87
<a name="line81"> 81: </a> t->isExplicit = PETSC_NULL;
88
<a name="line82"> 82: </a> t->Iindex = PETSC_NULL;
89
<a name="line83"> 83: </a> t->sles = PETSC_NULL;
90
<a name="line84"> 84: </a> t->A = PETSC_NULL;
91
<a name="line85"> 85: </a> t->B = PETSC_NULL;
92
<a name="line86"> 86: </a> t->snes = PETSC_NULL;
93
<a name="line87"> 87: </a> t->funP = PETSC_NULL;
94
<a name="line88"> 88: </a> t->jacP = PETSC_NULL;
95
<a name="line89"> 89: </a> t->setupcalled = 0;
96
<a name="line90"> 90: </a> t->data = PETSC_NULL;
97
<a name="line91"> 91: </a> t->user = PETSC_NULL;
98
<a name="line92"> 92: </a> t->max_steps = 5000;
99
<a name="line93"> 93: </a> t->max_time = 5.0;
100
<a name="line94"> 94: </a> t->time_step = .1;
101
<a name="line95"> 95: </a> t->time_step_old = t->time_step;
102
<a name="line96"> 96: </a> t->initial_time_step = t->time_step;
103
<a name="line97"> 97: </a> t->steps = 0;
104
<a name="line98"> 98: </a> t->ptime = 0.0;
105
<a name="line99"> 99: </a> t->linear_its = 0;
106
<a name="line100">100: </a> t->nonlinear_its = 0;
107
<a name="line101">101: </a> t->work = PETSC_NULL;
108
<a name="line102">102: </a> t->nwork = 0;
110
<a name="line104">104: </a> *ts = t;
111
<a name="line105">105: </a> <font color="#4169E1">return</font>(0);
112
<a name="line106">106: </a>}
114
<a name="line108">108: </a><font color="#B22222">/*@ </font>
115
<a name="line109">109: </a><font color="#B22222"> <A href="../../../docs/manualpages/TS/TSSerialize.html#TSSerialize">TSSerialize</A> - This function stores or recreates a timestepper using a viewer for a binary file.</font>
117
<a name="line111">111: </a><font color="#B22222"> Collective on MPI_Comm</font>
119
<a name="line113">113: </a><font color="#B22222"> Input Parameters:</font>
120
<a name="line114">114: </a><font color="#B22222">+ <A href="../../../docs/manualpages/Sys/comm.html#comm">comm</A> - The communicator for the ts object</font>
121
<a name="line115">115: </a><font color="#B22222">. viewer - The viewer context</font>
122
<a name="line116">116: </a><font color="#B22222">- store - This flag is PETSC_TRUE is data is being written, otherwise it will be read</font>
124
<a name="line118">118: </a><font color="#B22222"> Output Parameter:</font>
125
<a name="line119">119: </a><font color="#B22222">. ts - The ts</font>
127
<a name="line121">121: </a><font color="#B22222"> Level: beginner</font>
129
<a name="line123">123: </a><font color="#B22222">.keywords: <A href="../../../docs/manualpages/TS/TS.html#TS">TS</A>, serialize</font>
130
<a name="line124">124: </a><font color="#B22222">.seealso: <A href="../../../docs/manualpages/Mesh/PartitionSerialize.html#PartitionSerialize">PartitionSerialize</A>(), <A href="../../../docs/manualpages/TS/TSSerialize.html#TSSerialize">TSSerialize</A>()</font>
131
<a name="line125">125: </a><font color="#B22222">@*/</font>
132
<a name="line126">126: </a><strong><font color="#4169E1"><a name="TSSerialize"></a>int <A href="../../../docs/manualpages/TS/TSSerialize.html#TSSerialize">TSSerialize</A>(MPI_Comm <A href="../../../docs/manualpages/Sys/comm.html#comm">comm</A>, <A href="../../../docs/manualpages/TS/TS.html#TS">TS</A> *ts, <A href="../../../docs/manualpages/Viewer/PetscViewer.html#PetscViewer">PetscViewer</A> viewer, <A href="../../../docs/manualpages/Sys/PetscTruth.html#PetscTruth">PetscTruth</A> store)</font></strong>
133
<a name="line127">127: </a>{
134
<a name="line128">128: </a> int (*serialize)(MPI_Comm, <A href="../../../docs/manualpages/TS/TS.html#TS">TS</A> *, <A href="../../../docs/manualpages/Viewer/PetscViewer.html#PetscViewer">PetscViewer</A>, <A href="../../../docs/manualpages/Sys/PetscTruth.html#PetscTruth">PetscTruth</A>);
135
<a name="line129">129: </a> int fd, len;
136
<a name="line130">130: </a> char *name;
137
<a name="line131">131: </a> <A href="../../../docs/manualpages/Sys/PetscTruth.html#PetscTruth">PetscTruth</A> match;
138
<a name="line132">132: </a> int ierr;
141
<a name="line138">138: </a> <A href="../../../docs/manualpages/Sys/PetscTypeCompare.html#PetscTypeCompare">PetscTypeCompare</A>((<A href="../../../docs/manualpages/Sys/PetscObject.html#PetscObject">PetscObject</A>) viewer, PETSC_VIEWER_BINARY, &match);
142
<a name="line139">139: </a> <font color="#4169E1">if</font> (match == PETSC_FALSE) <A href="../../../docs/manualpages/Sys/SETERRQ.html#SETERRQ">SETERRQ</A>(PETSC_ERR_ARG_WRONG, <font color="#666666">"Must be binary viewer"</font>);
143
<a name="line140">140: </a> <A href="../../../docs/manualpages/Viewer/PetscViewerBinaryGetDescriptor.html#PetscViewerBinaryGetDescriptor">PetscViewerBinaryGetDescriptor</A>(viewer, &fd);
145
<a name="line142">142: </a> <font color="#4169E1">if</font> (!TSSerializeRegisterAllCalled) {
146
<a name="line143">143: </a> <A href="../../../docs/manualpages/TS/TSSerializeRegisterAll.html#TSSerializeRegisterAll">TSSerializeRegisterAll</A>(PETSC_NULL);
147
<a name="line144">144: </a> }
148
<a name="line145">145: </a> <font color="#4169E1">if</font> (!TSSerializeList) <A href="../../../docs/manualpages/Sys/SETERRQ.html#SETERRQ">SETERRQ</A>(PETSC_ERR_ARG_CORRUPT, <font color="#666666">"Could not find table of methods"</font>);
150
<a name="line147">147: </a> <font color="#4169E1">if</font> (store) {
151
<a name="line149">149: </a> <A href="../../../docs/manualpages/Sys/PetscStrlen.html#PetscStrlen">PetscStrlen</A>((*ts)->class_name, &len);
152
<a name="line150">150: </a> <A href="../../../docs/manualpages/Sys/PetscBinaryWrite.html#PetscBinaryWrite">PetscBinaryWrite</A>(fd, &len, 1, PETSC_INT, 0);
153
<a name="line151">151: </a> <A href="../../../docs/manualpages/Sys/PetscBinaryWrite.html#PetscBinaryWrite">PetscBinaryWrite</A>(fd, (*ts)->class_name, len, PETSC_CHAR, 0);
154
<a name="line152">152: </a> <A href="../../../docs/manualpages/Sys/PetscStrlen.html#PetscStrlen">PetscStrlen</A>((*ts)->serialize_name, &len);
155
<a name="line153">153: </a> <A href="../../../docs/manualpages/Sys/PetscBinaryWrite.html#PetscBinaryWrite">PetscBinaryWrite</A>(fd, &len, 1, PETSC_INT, 0);
156
<a name="line154">154: </a> <A href="../../../docs/manualpages/Sys/PetscBinaryWrite.html#PetscBinaryWrite">PetscBinaryWrite</A>(fd, (*ts)->serialize_name, len, PETSC_CHAR, 0);
157
<a name="line155">155: </a> <A href="../../../docs/manualpages/Sys/PetscFListFind.html#PetscFListFind">PetscFListFind</A>(<A href="../../../docs/manualpages/Sys/comm.html#comm">comm</A>, TSSerializeList, (*ts)->serialize_name, (void (**)(void)) &serialize);
158
<a name="line156">156: </a> <font color="#4169E1">if</font> (!serialize) <A href="../../../docs/manualpages/Sys/SETERRQ.html#SETERRQ">SETERRQ</A>(PETSC_ERR_ARG_WRONG, <font color="#666666">"Type cannot be serialized"</font>);
159
<a name="line157">157: </a> (*serialize)(<A href="../../../docs/manualpages/Sys/comm.html#comm">comm</A>, ts, viewer, store);
160
<a name="line158">158: </a> } <font color="#4169E1">else</font> {
161
<a name="line159">159: </a> <A href="../../../docs/manualpages/Sys/PetscBinaryRead.html#PetscBinaryRead">PetscBinaryRead</A>(fd, &len, 1, PETSC_INT);
162
<a name="line160">160: </a> <A href="../../../docs/manualpages/Sys/PetscMalloc.html#PetscMalloc">PetscMalloc</A>((len+1) * <font color="#4169E1">sizeof</font>(char), &name);
163
<a name="line161">161: </a> name[len] = 0;
164
<a name="line162">162: </a> <A href="../../../docs/manualpages/Sys/PetscBinaryRead.html#PetscBinaryRead">PetscBinaryRead</A>(fd, name, len, PETSC_CHAR);
165
<a name="line163">163: </a> <A href="../../../docs/manualpages/Sys/PetscStrcmp.html#PetscStrcmp">PetscStrcmp</A>(name, <font color="#666666">"<A href="../../../docs/manualpages/TS/TS.html#TS">TS</A>"</font>, &match);
166
<a name="line164">164: </a> <A href="../../../docs/manualpages/Sys/PetscFree.html#PetscFree">PetscFree</A>(name);
167
<a name="line165">165: </a> <font color="#4169E1">if</font> (match == PETSC_FALSE) <A href="../../../docs/manualpages/Sys/SETERRQ.html#SETERRQ">SETERRQ</A>(PETSC_ERR_ARG_WRONG, <font color="#666666">"Non-ts object"</font>);
168
<a name="line166">166: </a> <font color="#B22222">/* Dispatch to the correct routine */</font>
169
<a name="line167">167: </a> <A href="../../../docs/manualpages/Sys/PetscBinaryRead.html#PetscBinaryRead">PetscBinaryRead</A>(fd, &len, 1, PETSC_INT);
170
<a name="line168">168: </a> <A href="../../../docs/manualpages/Sys/PetscMalloc.html#PetscMalloc">PetscMalloc</A>((len+1) * <font color="#4169E1">sizeof</font>(char), &name);
171
<a name="line169">169: </a> name[len] = 0;
172
<a name="line170">170: </a> <A href="../../../docs/manualpages/Sys/PetscBinaryRead.html#PetscBinaryRead">PetscBinaryRead</A>(fd, name, len, PETSC_CHAR);
173
<a name="line171">171: </a> <A href="../../../docs/manualpages/Sys/PetscFListFind.html#PetscFListFind">PetscFListFind</A>(<A href="../../../docs/manualpages/Sys/comm.html#comm">comm</A>, TSSerializeList, name, (void (**)(void)) &serialize);
174
<a name="line172">172: </a> <font color="#4169E1">if</font> (!serialize) <A href="../../../docs/manualpages/Sys/SETERRQ.html#SETERRQ">SETERRQ</A>(PETSC_ERR_ARG_WRONG, <font color="#666666">"Type cannot be serialized"</font>);
175
<a name="line173">173: </a> (*serialize)(<A href="../../../docs/manualpages/Sys/comm.html#comm">comm</A>, ts, viewer, store);
176
<a name="line174">174: </a> PetscStrfree((*ts)->serialize_name);
177
<a name="line175">175: </a> (*ts)->serialize_name = name;
178
<a name="line176">176: </a> }
180
<a name="line178">178: </a> <font color="#4169E1">return</font>(0);
181
<a name="line179">179: </a>}
32
<a name="line25"> 25: </a> AMS_Memory_add_field((AMS_Memory)v->amem,<font color="#666666">"Time"</font>,&v->ptime,1,AMS_DOUBLE,AMS_READ,
33
<a name="line26"> 26: </a> AMS_COMMON,AMS_REDUCT_UNDEF);
34
<a name="line27"> 27: </a> AMS_Memory_add_field((AMS_Memory)v->amem,<font color="#666666">"CurrentTimeStep"</font>,&v->time_step,1,
35
<a name="line28"> 28: </a> AMS_DOUBLE,AMS_READ,AMS_COMMON,AMS_REDUCT_UNDEF);
36
<a name="line29"> 29: </a> PetscObjectPublishBaseEnd(obj);
37
<a name="line30"> 30: </a><font color="#A020F0">#endif</font>
38
<a name="line31"> 31: </a> <font color="#4169E1">return</font>(0);
39
<a name="line32"> 32: </a>}
41
<a name="line34"> 34: </a><strong><font color="#228B22">#undef __FUNCT__</font></strong>
42
<a name="line36"> 36: </a><font color="#B22222">/*@C</font>
43
<a name="line37"> 37: </a><font color="#B22222"> <A href="../../../docs/manualpages/TS/TSCreate.html#TSCreate">TSCreate</A> - This function creates an empty timestepper. The problem type can then be set with <A href="../../../docs/manualpages/TS/TSSetProblemType.html#TSSetProblemType">TSSetProblemType</A>() and the </font>
44
<a name="line38"> 38: </a><font color="#B22222"> type of solver can then be set with <A href="../../../docs/manualpages/TS/TSSetType.html#TSSetType">TSSetType</A>().</font>
46
<a name="line40"> 40: </a><font color="#B22222"> Collective on <A href="../../../docs/manualpages/Sys/MPI_Comm.html#MPI_Comm">MPI_Comm</A></font>
48
<a name="line42"> 42: </a><font color="#B22222"> Input Parameter:</font>
49
<a name="line43"> 43: </a><font color="#B22222">. <A href="../../../docs/manualpages/Sys/comm.html#comm">comm</A> - The communicator</font>
51
<a name="line45"> 45: </a><font color="#B22222"> Output Parameter:</font>
52
<a name="line46"> 46: </a><font color="#B22222">. ts - The <A href="../../../docs/manualpages/TS/TS.html#TS">TS</A></font>
54
<a name="line48"> 48: </a><font color="#B22222"> Level: beginner</font>
56
<a name="line50"> 50: </a><font color="#B22222">.keywords: <A href="../../../docs/manualpages/TS/TS.html#TS">TS</A>, create</font>
57
<a name="line51"> 51: </a><font color="#B22222">.seealso: <A href="../../../docs/manualpages/TS/TSSetType.html#TSSetType">TSSetType</A>(), <A href="../../../docs/manualpages/TS/TSSetUp.html#TSSetUp">TSSetUp</A>(), <A href="../../../docs/manualpages/TS/TSDestroy.html#TSDestroy">TSDestroy</A>(), MeshCreate(), <A href="../../../docs/manualpages/TS/TSSetProblemType.html#TSSetProblemType">TSSetProblemType</A>()</font>
58
<a name="line52"> 52: </a><font color="#B22222">@*/</font>
59
<a name="line53"> 53: </a><strong><font color="#4169E1"><a name="TSCreate"></a>int <A href="../../../docs/manualpages/TS/TSCreate.html#TSCreate">TSCreate</A>(<A href="../../../docs/manualpages/Sys/MPI_Comm.html#MPI_Comm">MPI_Comm</A> <A href="../../../docs/manualpages/Sys/comm.html#comm">comm</A>, <A href="../../../docs/manualpages/TS/TS.html#TS">TS</A> *ts)</font></strong> {
60
<a name="line54"> 54: </a> <A href="../../../docs/manualpages/TS/TS.html#TS">TS</A> t;
62
<a name="line59"> 59: </a> *ts = <A href="../../../docs/manualpages/Sys/PETSC_NULL.html#PETSC_NULL">PETSC_NULL</A>;
63
<a name="line60"> 60: </a><font color="#A020F0">#ifndef PETSC_USE_DYNAMIC_LIBRARIES</font>
64
<a name="line61"> 61: </a> <A href="../../../docs/manualpages/TS/TSInitializePackage.html#TSInitializePackage">TSInitializePackage</A>(<A href="../../../docs/manualpages/Sys/PETSC_NULL.html#PETSC_NULL">PETSC_NULL</A>);
65
<a name="line62"> 62: </a><font color="#A020F0">#endif</font>
67
<a name="line64"> 64: </a> PetscHeaderCreate(t, _p_TS, <font color="#4169E1">struct _TSOps</font>, TS_COOKIE, -1, <font color="#666666">"<A href="../../../docs/manualpages/TS/TS.html#TS">TS</A>"</font>, <A href="../../../docs/manualpages/Sys/comm.html#comm">comm</A>, <A href="../../../docs/manualpages/TS/TSDestroy.html#TSDestroy">TSDestroy</A>, <A href="../../../docs/manualpages/TS/TSView.html#TSView">TSView</A>);
68
<a name="line65"> 65: </a> PetscLogObjectCreate(t);
69
<a name="line66"> 66: </a> PetscLogObjectMemory(t, <font color="#4169E1">sizeof</font>(<font color="#4169E1">struct _p_TS</font>));
70
<a name="line67"> 67: </a> <A href="../../../docs/manualpages/Sys/PetscMemzero.html#PetscMemzero">PetscMemzero</A>(t->ops, <font color="#4169E1">sizeof</font>(<font color="#4169E1">struct _TSOps</font>));
71
<a name="line68"> 68: </a> t->bops->publish = TSPublish_Petsc;
72
<a name="line69"> 69: </a> t->type_name = <A href="../../../docs/manualpages/Sys/PETSC_NULL.html#PETSC_NULL">PETSC_NULL</A>;
74
<a name="line71"> 71: </a> t->ops->applymatrixbc = <A href="../../../docs/manualpages/TS/TSDefaultSystemMatrixBC.html#TSDefaultSystemMatrixBC">TSDefaultSystemMatrixBC</A>;
75
<a name="line72"> 72: </a> t->ops->applyrhsbc = <A href="../../../docs/manualpages/TS/TSDefaultRhsBC.html#TSDefaultRhsBC">TSDefaultRhsBC</A>;
76
<a name="line73"> 73: </a> t->ops->applysolbc = <A href="../../../docs/manualpages/TS/TSDefaultSolutionBC.html#TSDefaultSolutionBC">TSDefaultSolutionBC</A>;
77
<a name="line74"> 74: </a> t->ops->prestep = <A href="../../../docs/manualpages/TS/TSDefaultPreStep.html#TSDefaultPreStep">TSDefaultPreStep</A>;
78
<a name="line75"> 75: </a> t->ops->update = <A href="../../../docs/manualpages/TS/TSDefaultUpdate.html#TSDefaultUpdate">TSDefaultUpdate</A>;
79
<a name="line76"> 76: </a> t->ops->poststep = <A href="../../../docs/manualpages/TS/TSDefaultPostStep.html#TSDefaultPostStep">TSDefaultPostStep</A>;
81
<a name="line78"> 78: </a> <font color="#B22222">/* General <A href="../../../docs/manualpages/TS/TS.html#TS">TS</A> description */</font>
82
<a name="line79"> 79: </a> t->problem_type = TS_LINEAR;
83
<a name="line80"> 80: </a> t->vec_sol = <A href="../../../docs/manualpages/Sys/PETSC_NULL.html#PETSC_NULL">PETSC_NULL</A>;
84
<a name="line81"> 81: </a> t->vec_sol_always = <A href="../../../docs/manualpages/Sys/PETSC_NULL.html#PETSC_NULL">PETSC_NULL</A>;
85
<a name="line82"> 82: </a> t->numbermonitors = 0;
86
<a name="line83"> 83: </a> t->isGTS = PETSC_FALSE;
87
<a name="line84"> 84: </a> t->isExplicit = <A href="../../../docs/manualpages/Sys/PETSC_NULL.html#PETSC_NULL">PETSC_NULL</A>;
88
<a name="line85"> 85: </a> t->Iindex = <A href="../../../docs/manualpages/Sys/PETSC_NULL.html#PETSC_NULL">PETSC_NULL</A>;
89
<a name="line86"> 86: </a> t->ksp = <A href="../../../docs/manualpages/Sys/PETSC_NULL.html#PETSC_NULL">PETSC_NULL</A>;
90
<a name="line87"> 87: </a> t->A = <A href="../../../docs/manualpages/Sys/PETSC_NULL.html#PETSC_NULL">PETSC_NULL</A>;
91
<a name="line88"> 88: </a> t->B = <A href="../../../docs/manualpages/Sys/PETSC_NULL.html#PETSC_NULL">PETSC_NULL</A>;
92
<a name="line89"> 89: </a> t->snes = <A href="../../../docs/manualpages/Sys/PETSC_NULL.html#PETSC_NULL">PETSC_NULL</A>;
93
<a name="line90"> 90: </a> t->funP = <A href="../../../docs/manualpages/Sys/PETSC_NULL.html#PETSC_NULL">PETSC_NULL</A>;
94
<a name="line91"> 91: </a> t->jacP = <A href="../../../docs/manualpages/Sys/PETSC_NULL.html#PETSC_NULL">PETSC_NULL</A>;
95
<a name="line92"> 92: </a> t->setupcalled = 0;
96
<a name="line93"> 93: </a> t->data = <A href="../../../docs/manualpages/Sys/PETSC_NULL.html#PETSC_NULL">PETSC_NULL</A>;
97
<a name="line94"> 94: </a> t->user = <A href="../../../docs/manualpages/Sys/PETSC_NULL.html#PETSC_NULL">PETSC_NULL</A>;
98
<a name="line95"> 95: </a> t->max_steps = 5000;
99
<a name="line96"> 96: </a> t->max_time = 5.0;
100
<a name="line97"> 97: </a> t->time_step = .1;
101
<a name="line98"> 98: </a> t->time_step_old = t->time_step;
102
<a name="line99"> 99: </a> t->initial_time_step = t->time_step;
103
<a name="line100">100: </a> t->steps = 0;
104
<a name="line101">101: </a> t->ptime = 0.0;
105
<a name="line102">102: </a> t->linear_its = 0;
106
<a name="line103">103: </a> t->nonlinear_its = 0;
107
<a name="line104">104: </a> t->work = <A href="../../../docs/manualpages/Sys/PETSC_NULL.html#PETSC_NULL">PETSC_NULL</A>;
108
<a name="line105">105: </a> t->nwork = 0;
110
<a name="line107">107: </a> *ts = t;
111
<a name="line108">108: </a> <font color="#4169E1">return</font>(0);
112
<a name="line109">109: </a>}