File: p2.c.html

package info (click to toggle)
petsc 3.1.dfsg-7
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 131,360 kB
  • ctags: 491,710
  • sloc: ansic: 288,064; cpp: 66,909; python: 28,799; fortran: 19,153; makefile: 13,945; sh: 3,502; f90: 1,655; xml: 620; csh: 230; java: 13
file content (136 lines) | stat: -rw-r--r-- 13,508 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
<center><a href="p2.c">Actual source code: p2.c</a></center><br>

<html>
<head>
<title></title>
<meta name="generator" content="c2html 0.9.5">
<meta name="date" content="2010-04-08T19:58:00+00:00">
</head>

<body bgcolor="#FFFFFF">
<pre width="80">
<a name="line2">  2: </a>static char help[] = <font color="#666666">"Model single-physics solver. Modified from ex19.c \n\\n"</font>;

<a name="line4">  4: </a><font color="#B22222">/* ------------------------------------------------------------------------</font>

<a name="line6">  6: </a><font color="#B22222">    See ex19.c for discussion of the problem </font>

<a name="line8">  8: </a><font color="#B22222">  ------------------------------------------------------------------------- */</font>
<a name="line9"> 9: </a> #include <A href="mp.h.html">mp.h</A>


<a name="line17"> 17: </a><strong><font color="#4169E1"><a name="main"></a>int main(int argc,char **argv)</font></strong>
<a name="line18"> 18: </a>{
<a name="line19"> 19: </a>  <A href="tutorials/../../docs/manualpages/DMMG/DMMG.html#DMMG">DMMG</A>           *dmmg;          <font color="#B22222">/* multilevel grid structure */</font>
<a name="line20"> 20: </a>  AppCtx         user;                <font color="#B22222">/* user-defined work context */</font>
<a name="line21"> 21: </a>  <A href="tutorials/../../docs/manualpages/Sys/PetscInt.html#PetscInt">PetscInt</A>       mx,my,its;
<a name="line23"> 23: </a>  <A href="tutorials/../../docs/manualpages/Sys/MPI_Comm.html#MPI_Comm">MPI_Comm</A>       comm;
<a name="line24"> 24: </a>  <A href="tutorials/../../docs/manualpages/SNES/SNES.html#SNES">SNES</A>           snes;
<a name="line25"> 25: </a>  <A href="tutorials/../../docs/manualpages/DA/DA.html#DA">DA</A>             da2;

<a name="line27"> 27: </a>  <A href="tutorials/../../docs/manualpages/Sys/PetscInitialize.html#PetscInitialize">PetscInitialize</A>(&amp;argc,&amp;argv,(char *)0,help);
<a name="line28"> 28: </a>  <A href="tutorials/../../docs/manualpages/Profiling/PetscLogEventRegister.html#PetscLogEventRegister">PetscLogEventRegister</A>(<font color="#666666">"FormFunc2"</font>, 0,&amp;EVENT_FORMFUNCTIONLOCAL2);
<a name="line29"> 29: </a>  comm = <A href="tutorials/../../docs/manualpages/Sys/PETSC_COMM_WORLD.html#PETSC_COMM_WORLD">PETSC_COMM_WORLD</A>;

<a name="line31"> 31: </a>  <font color="#B22222">/* Problem parameters (velocity of lid, prandtl, and grashof numbers) */</font>
<a name="line32"> 32: </a>  <A href="tutorials/../../docs/manualpages/Sys/PetscOptionsGetReal.html#PetscOptionsGetReal">PetscOptionsGetReal</A>(<A href="tutorials/../../docs/manualpages/Sys/PETSC_NULL.html#PETSC_NULL">PETSC_NULL</A>,<font color="#666666">"-lidvelocity"</font>,&amp;user.lidvelocity,<A href="tutorials/../../docs/manualpages/Sys/PETSC_NULL.html#PETSC_NULL">PETSC_NULL</A>);
<a name="line33"> 33: </a>  <A href="tutorials/../../docs/manualpages/Sys/PetscOptionsGetReal.html#PetscOptionsGetReal">PetscOptionsGetReal</A>(<A href="tutorials/../../docs/manualpages/Sys/PETSC_NULL.html#PETSC_NULL">PETSC_NULL</A>,<font color="#666666">"-prandtl"</font>,&amp;user.prandtl,<A href="tutorials/../../docs/manualpages/Sys/PETSC_NULL.html#PETSC_NULL">PETSC_NULL</A>);
<a name="line34"> 34: </a>  <A href="tutorials/../../docs/manualpages/Sys/PetscOptionsGetReal.html#PetscOptionsGetReal">PetscOptionsGetReal</A>(<A href="tutorials/../../docs/manualpages/Sys/PETSC_NULL.html#PETSC_NULL">PETSC_NULL</A>,<font color="#666666">"-grashof"</font>,&amp;user.grashof,<A href="tutorials/../../docs/manualpages/Sys/PETSC_NULL.html#PETSC_NULL">PETSC_NULL</A>);

<a name="line36"> 36: </a>  <font color="#B22222">/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -</font>
<a name="line37"> 37: </a><font color="#B22222">     Create user context, set problem data, create vector data structures.</font>
<a name="line38"> 38: </a><font color="#B22222">     Also, compute the initial guess.</font>
<a name="line39"> 39: </a><font color="#B22222">     - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */</font>

<a name="line41"> 41: </a>  <font color="#B22222">/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -</font>
<a name="line42"> 42: </a><font color="#B22222">     Setup Physics 2: </font>
<a name="line43"> 43: </a><font color="#B22222">        - Lap(T) + PR*Div([U*T,V*T]) = 0        </font>
<a name="line44"> 44: </a><font color="#B22222">        where U and V are given by the given x.u and x.v</font>
<a name="line45"> 45: </a><font color="#B22222">        - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */</font>
<a name="line46"> 46: </a>  <A href="tutorials/../../docs/manualpages/DA/DACreate2d.html#DACreate2d">DACreate2d</A>(comm,DA_NONPERIODIC,<A href="tutorials/../../docs/manualpages/DA/DA_STENCIL_STAR.html#DA_STENCIL_STAR">DA_STENCIL_STAR</A>,-4,-4,<A href="tutorials/../../docs/manualpages/Sys/PETSC_DECIDE.html#PETSC_DECIDE">PETSC_DECIDE</A>,<A href="tutorials/../../docs/manualpages/Sys/PETSC_DECIDE.html#PETSC_DECIDE">PETSC_DECIDE</A>,1,1,0,0,&amp;da2);
<a name="line47"> 47: </a>  <A href="tutorials/../../docs/manualpages/DA/DASetFieldName.html#DASetFieldName">DASetFieldName</A>(da2,0,<font color="#666666">"temperature"</font>);

<a name="line49"> 49: </a>  <font color="#B22222">/* Create the solver object and attach the grid/physics info */</font>
<a name="line50"> 50: </a>  <A href="tutorials/../../docs/manualpages/DMMG/DMMGCreate.html#DMMGCreate">DMMGCreate</A>(comm,1,&amp;user,&amp;dmmg);
<a name="line51"> 51: </a>  <A href="tutorials/../../docs/manualpages/DMMG/DMMGSetDM.html#DMMGSetDM">DMMGSetDM</A>(dmmg,(<A href="tutorials/../../docs/manualpages/DA/DM.html#DM">DM</A>)da2);
<a name="line52"> 52: </a>  <A href="tutorials/../../docs/manualpages/DMMG/DMMGSetISColoringType.html#DMMGSetISColoringType">DMMGSetISColoringType</A>(dmmg,IS_COLORING_GLOBAL);

<a name="line54"> 54: </a>  <A href="tutorials/../../docs/manualpages/DMMG/DMMGSetInitialGuess.html#DMMGSetInitialGuess">DMMGSetInitialGuess</A>(dmmg,FormInitialGuess);
<a name="line55"> 55: </a>  <A href="tutorials/../../docs/manualpages/DMMG/DMMGSetSNES.html#DMMGSetSNES">DMMGSetSNES</A>(dmmg,FormFunction,0);
<a name="line56"> 56: </a>  <A href="tutorials/../../docs/manualpages/DMMG/DMMGSetFromOptions.html#DMMGSetFromOptions">DMMGSetFromOptions</A>(dmmg);

<a name="line58"> 58: </a>  <A href="tutorials/../../docs/manualpages/DA/DAGetInfo.html#DAGetInfo">DAGetInfo</A>(da2,<A href="tutorials/../../docs/manualpages/Sys/PETSC_NULL.html#PETSC_NULL">PETSC_NULL</A>,&amp;mx,&amp;my,0,0,0,0,0,0,0,0);
<a name="line59"> 59: </a>  user.lidvelocity = 1.0/(mx*my);
<a name="line60"> 60: </a>  user.prandtl     = 1.0;
<a name="line61"> 61: </a>  user.grashof     = 1.0;

<a name="line63"> 63: </a>  <font color="#B22222">/* Solve the nonlinear system */</font>
<a name="line64"> 64: </a>  <A href="tutorials/../../docs/manualpages/DMMG/DMMGSolve.html#DMMGSolve">DMMGSolve</A>(dmmg);
<a name="line65"> 65: </a>  snes = <A href="tutorials/../../docs/manualpages/DMMG/DMMGGetSNES.html#DMMGGetSNES">DMMGGetSNES</A>(dmmg);
<a name="line66"> 66: </a>  <A href="tutorials/../../docs/manualpages/SNES/SNESGetIterationNumber.html#SNESGetIterationNumber">SNESGetIterationNumber</A>(snes,&amp;its);
<a name="line67"> 67: </a>  <A href="tutorials/../../docs/manualpages/Sys/PetscPrintf.html#PetscPrintf">PetscPrintf</A>(comm,<font color="#666666">"Physics 2: Number of Newton iterations = %D\n\n"</font>, its);

<a name="line69"> 69: </a>  <font color="#B22222">/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -</font>
<a name="line70"> 70: </a><font color="#B22222">     Free spaces </font>
<a name="line71"> 71: </a><font color="#B22222">   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */</font>
<a name="line72"> 72: </a>  <A href="tutorials/../../docs/manualpages/DA/DADestroy.html#DADestroy">DADestroy</A>(da2);
<a name="line73"> 73: </a>  <A href="tutorials/../../docs/manualpages/DMMG/DMMGDestroy.html#DMMGDestroy">DMMGDestroy</A>(dmmg);
<a name="line74"> 74: </a>  <A href="tutorials/../../docs/manualpages/Sys/PetscFinalize.html#PetscFinalize">PetscFinalize</A>();
<a name="line75"> 75: </a>  <font color="#4169E1">return</font> 0;
<a name="line76"> 76: </a>}

<a name="line80"> 80: </a><strong><font color="#4169E1"><a name="FormInitialGuess"></a><A href="tutorials/../../docs/manualpages/Sys/PetscErrorCode.html#PetscErrorCode">PetscErrorCode</A> FormInitialGuess(<A href="tutorials/../../docs/manualpages/DMMG/DMMG.html#DMMG">DMMG</A> dmmg,<A href="tutorials/../../docs/manualpages/Vec/Vec.html#Vec">Vec</A> X)</font></strong>
<a name="line81"> 81: </a>{
<a name="line83"> 83: </a>  AppCtx         *user = (AppCtx*)dmmg-&gt;user;
<a name="line84"> 84: </a>  <A href="tutorials/../../docs/manualpages/DA/DA.html#DA">DA</A>             da2 = (<A href="tutorials/../../docs/manualpages/DA/DA.html#DA">DA</A>)dmmg-&gt;dm;
<a name="line85"> 85: </a>  Field2         **x2;
<a name="line86"> 86: </a>  <A href="tutorials/../../docs/manualpages/DA/DALocalInfo.html#DALocalInfo">DALocalInfo</A>    info2;

<a name="line89"> 89: </a>  <font color="#B22222">/* Access the arrays inside  of X */</font>
<a name="line90"> 90: </a>  <A href="tutorials/../../docs/manualpages/DA/DAVecGetArray.html#DAVecGetArray">DAVecGetArray</A>(da2,X,(void**)&amp;x2);

<a name="line92"> 92: </a>  <A href="tutorials/../../docs/manualpages/DA/DAGetLocalInfo.html#DAGetLocalInfo">DAGetLocalInfo</A>(da2,&amp;info2);

<a name="line94"> 94: </a>  <font color="#B22222">/* Evaluate local user provided function */</font>
<a name="line95"> 95: </a>  FormInitialGuessLocal2(&amp;info2,x2,user);

<a name="line97"> 97: </a>  <A href="tutorials/../../docs/manualpages/DA/DAVecRestoreArray.html#DAVecRestoreArray">DAVecRestoreArray</A>(da2,X,(void**)&amp;x2);
<a name="line98"> 98: </a>  <font color="#4169E1">return</font>(0);
<a name="line99"> 99: </a>}

<a name="line103">103: </a><strong><font color="#4169E1"><a name="FormFunction"></a><A href="tutorials/../../docs/manualpages/Sys/PetscErrorCode.html#PetscErrorCode">PetscErrorCode</A> FormFunction(<A href="tutorials/../../docs/manualpages/SNES/SNES.html#SNES">SNES</A> snes,<A href="tutorials/../../docs/manualpages/Vec/Vec.html#Vec">Vec</A> X,<A href="tutorials/../../docs/manualpages/Vec/Vec.html#Vec">Vec</A> F,void *ctx)</font></strong>
<a name="line104">104: </a>{
<a name="line106">106: </a>  <A href="tutorials/../../docs/manualpages/DMMG/DMMG.html#DMMG">DMMG</A>           dmmg = (<A href="tutorials/../../docs/manualpages/DMMG/DMMG.html#DMMG">DMMG</A>)ctx;
<a name="line107">107: </a>  AppCtx         *user = (AppCtx*)dmmg-&gt;user;
<a name="line108">108: </a>  <A href="tutorials/../../docs/manualpages/DA/DA.html#DA">DA</A>             da2 = (<A href="tutorials/../../docs/manualpages/DA/DA.html#DA">DA</A>)dmmg-&gt;dm;
<a name="line109">109: </a>  <A href="tutorials/../../docs/manualpages/DA/DALocalInfo.html#DALocalInfo">DALocalInfo</A>    info2;
<a name="line110">110: </a>  Field2         **x2,**f2;
<a name="line111">111: </a>  <A href="tutorials/../../docs/manualpages/Vec/Vec.html#Vec">Vec</A>            X2;

<a name="line114">114: </a>  <A href="tutorials/../../docs/manualpages/DA/DAGetLocalInfo.html#DAGetLocalInfo">DAGetLocalInfo</A>(da2,&amp;info2);

<a name="line116">116: </a>  <font color="#B22222">/* Get local vectors to hold ghosted parts of X */</font>
<a name="line117">117: </a>  <A href="tutorials/../../docs/manualpages/DA/DAGetLocalVector.html#DAGetLocalVector">DAGetLocalVector</A>(da2,&amp;X2);
<a name="line118">118: </a>  <A href="tutorials/../../docs/manualpages/DA/DAGlobalToLocalBegin.html#DAGlobalToLocalBegin">DAGlobalToLocalBegin</A>(da2,X,<A href="tutorials/../../docs/manualpages/Sys/INSERT_VALUES.html#INSERT_VALUES">INSERT_VALUES</A>,X2);
<a name="line119">119: </a>  <A href="tutorials/../../docs/manualpages/DA/DAGlobalToLocalEnd.html#DAGlobalToLocalEnd">DAGlobalToLocalEnd</A>(da2,X,<A href="tutorials/../../docs/manualpages/Sys/INSERT_VALUES.html#INSERT_VALUES">INSERT_VALUES</A>,X2);

<a name="line121">121: </a>  <font color="#B22222">/* Access the array inside of X1 */</font>
<a name="line122">122: </a>  <A href="tutorials/../../docs/manualpages/DA/DAVecGetArray.html#DAVecGetArray">DAVecGetArray</A>(da2,X2,(void**)&amp;x2);

<a name="line124">124: </a>  <font color="#B22222">/* Access the subvectors in F. </font>
<a name="line125">125: </a><font color="#B22222">     These are not ghosted so directly access the memory locations in F */</font>
<a name="line126">126: </a>  <A href="tutorials/../../docs/manualpages/DA/DAVecGetArray.html#DAVecGetArray">DAVecGetArray</A>(da2,F,(void**)&amp;f2);

<a name="line128">128: </a>  <font color="#B22222">/* Evaluate local user provided function */</font>
<a name="line129">129: </a>  FormFunctionLocal2(&amp;info2,0,x2,f2,(void**)user);

<a name="line131">131: </a>  <A href="tutorials/../../docs/manualpages/DA/DAVecRestoreArray.html#DAVecRestoreArray">DAVecRestoreArray</A>(da2,F,(void**)&amp;f2);
<a name="line132">132: </a>  <A href="tutorials/../../docs/manualpages/DA/DAVecRestoreArray.html#DAVecRestoreArray">DAVecRestoreArray</A>(da2,X2,(void**)&amp;x2);
<a name="line133">133: </a>  <A href="tutorials/../../docs/manualpages/DA/DARestoreLocalVector.html#DARestoreLocalVector">DARestoreLocalVector</A>(da2,&amp;X2);
<a name="line134">134: </a>  <font color="#4169E1">return</font>(0);
<a name="line135">135: </a>}

</pre>
</body>

</html>