~ubuntu-branches/ubuntu/warty/petsc/warty

« back to all changes in this revision

Viewing changes to src/sys/src/matlabengine/matlab.c.html

  • Committer: Bazaar Package Importer
  • Author(s): Adam C. Powell, IV
  • Date: 2004-06-07 13:41:43 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20040607134143-92p586zrauvie0le
Tags: 2.2.0-2
* Upstream patch level 2.
* New PETSC_BOPT_EXTRA option for different BOPT and lib names, with _c++
  symlinks only for plain and single (closes: #249617).
* New DEBIAN_DIST=contrib option to link with hypre, parmetis (closes:
  #249619).
* Combined petsc-c and petsc-fortran substvars into petsc-compilers.
* Extra quote in -dev prerm eliminates "too many arguments" problem.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<center><a href="matlab.c">Actual source code: matlab.c</a></center><br>
 
2
 
 
3
<html>
 
4
<head>
 
5
<title></title>
 
6
<meta name="generator" content="c2html 0.9.4">
 
7
<meta name="date" content="2004-02-27T19:57:05+00:00">
 
8
</head>
 
9
 
 
10
<body bgcolor="#FFFFFF">
 
11
<pre width="80"><a name="line1">  1: </a><font color="#B22222">/* $Id: matlab.c,v 1.17 2001/08/06 21:14:26 bsmith Exp $ #include "petsc.h" */</font>
 
12
 
 
13
<a name="line3">  3: </a><font color="#A020F0">#include </font><font color="#666666">"engine.h"</font><font color="#A020F0">   </font><font color="#B22222">/* Matlab include file */</font><font color="#A020F0"></font>
 
14
<a name="line4">  4: </a><font color="#A020F0">#include </font><font color="#666666">"petsc.h"</font><font color="#A020F0"> </font>
 
15
<a name="line5">  5: </a><font color="#A020F0">#include &lt;stdarg.h&gt;</font>
 
16
 
 
17
<a name="line7">  7: </a><font color="#4169E1">struct</font>  _p_PetscMatlabEngine {
 
18
<a name="line8">  8: </a>  PETSCHEADER(int)
 
19
<a name="line9">  9: </a>  Engine   *ep;
 
20
<a name="line10"> 10: </a>  char     buffer[1024];
 
21
<a name="line11"> 11: </a>};
 
22
 
 
23
<a name="line13"> 13: </a>int MATLABENGINE_COOKIE = -1;
 
24
 
 
25
<a name="line17"> 17: </a><font color="#B22222">/*@C</font>
 
26
<a name="line18"> 18: </a><font color="#B22222">    <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineCreate.html#PetscMatlabEngineCreate">PetscMatlabEngineCreate</A> - Creates a Matlab engine object </font>
 
27
 
 
28
<a name="line20"> 20: </a><font color="#B22222">    Not Collective</font>
 
29
 
 
30
<a name="line22"> 22: </a><font color="#B22222">    Input Parameters:</font>
 
31
<a name="line23"> 23: </a><font color="#B22222">+   <A href="../../../../../docs/manualpages/Sys/comm.html#comm">comm</A> - a seperate Matlab engine is started for each process in the communicator</font>
 
32
<a name="line24"> 24: </a><font color="#B22222">-   machine - name of machine where Matlab engine is to be run (usually <A href="../../../../../docs/manualpages/Sys/PETSC_NULL.html#PETSC_NULL">PETSC_NULL</A>)</font>
 
33
 
 
34
<a name="line26"> 26: </a><font color="#B22222">    Output Parameter:</font>
 
35
<a name="line27"> 27: </a><font color="#B22222">.   mengine - the resulting object</font>
 
36
 
 
37
<a name="line29"> 29: </a><font color="#B22222">   Level: advanced</font>
 
38
 
 
39
<a name="line31"> 31: </a><font color="#B22222">.seealso: <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineDestroy.html#PetscMatlabEngineDestroy">PetscMatlabEngineDestroy</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEnginePut.html#PetscMatlabEnginePut">PetscMatlabEnginePut</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineGet.html#PetscMatlabEngineGet">PetscMatlabEngineGet</A>(),</font>
 
40
<a name="line32"> 32: </a><font color="#B22222">          <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineEvaluate.html#PetscMatlabEngineEvaluate">PetscMatlabEngineEvaluate</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineGetOutput.html#PetscMatlabEngineGetOutput">PetscMatlabEngineGetOutput</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEnginePrintOutput.html#PetscMatlabEnginePrintOutput">PetscMatlabEnginePrintOutput</A>(),</font>
 
41
<a name="line33"> 33: </a><font color="#B22222">          <A href="../../../../../docs/manualpages/Sys/PETSC_MATLAB_ENGINE_.html#PETSC_MATLAB_ENGINE_">PETSC_MATLAB_ENGINE_</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEnginePutArray.html#PetscMatlabEnginePutArray">PetscMatlabEnginePutArray</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineGetArray.html#PetscMatlabEngineGetArray">PetscMatlabEngineGetArray</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngine.html#PetscMatlabEngine">PetscMatlabEngine</A></font>
 
42
<a name="line34"> 34: </a><font color="#B22222">@*/</font>
 
43
<a name="line35"> 35: </a><strong><font color="#4169E1"><a name="PetscMatlabEngineCreate"></a>int <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineCreate.html#PetscMatlabEngineCreate">PetscMatlabEngineCreate</A>(<A href="../../../../../docs/manualpages/Sys/MPI_Comm.html#MPI_Comm">MPI_Comm</A> <A href="../../../../../docs/manualpages/Sys/comm.html#comm">comm</A>,const char machine[],<A href="../../../../../docs/manualpages/Sys/PetscMatlabEngine.html#PetscMatlabEngine">PetscMatlabEngine</A> *mengine)</font></strong>
 
44
<a name="line36"> 36: </a>{
 
45
<a name="line37"> 37: </a>  int               ierr,<A href="../../../../../docs/manualpages/Sys/rank.html#rank">rank</A>,<A href="../../../../../docs/manualpages/Sys/size.html#size">size</A>;
 
46
<a name="line38"> 38: </a>  char              buffer[128];
 
47
<a name="line39"> 39: </a>  <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngine.html#PetscMatlabEngine">PetscMatlabEngine</A> e;
 
48
 
 
49
<a name="line42"> 42: </a>  <font color="#4169E1">if</font> (MATLABENGINE_COOKIE == -1) {
 
50
<a name="line43"> 43: </a>    <A href="../../../../../docs/manualpages/Profiling/PetscLogClassRegister.html#PetscLogClassRegister">PetscLogClassRegister</A>(&amp;MATLABENGINE_COOKIE,<font color="#666666">"Matlab Engine"</font>);
 
51
<a name="line44"> 44: </a>  }
 
52
<a name="line45"> 45: </a>  PetscHeaderCreate(e,_p_PetscMatlabEngine,int,MATLABENGINE_COOKIE,0,<font color="#666666">"MatlabEngine"</font>,<A href="../../../../../docs/manualpages/Sys/comm.html#comm">comm</A>,<A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineDestroy.html#PetscMatlabEngineDestroy">PetscMatlabEngineDestroy</A>,0);
 
53
<a name="line46"> 46: </a>  PetscLogObjectCreate(e);
 
54
 
 
55
<a name="line48"> 48: </a>  <font color="#4169E1">if</font> (!machine) machine = <font color="#666666">"\0"</font>;
 
56
<a name="line49"> 49: </a>  <A href="../../../../../docs/manualpages/Profiling/PetscLogInfo.html#PetscLogInfo">PetscLogInfo</A>(0,<font color="#666666">"Starting Matlab engine on %s\n"</font>,machine);
 
57
<a name="line50"> 50: </a>  e-&gt;ep = engOpen(machine);
 
58
<a name="line51"> 51: </a>  <font color="#4169E1">if</font> (!e-&gt;ep) <A href="../../../../../docs/manualpages/Sys/SETERRQ1.html#SETERRQ1">SETERRQ1</A>(1,<font color="#666666">"Unable to start Matlab engine on %s\n"</font>,machine);
 
59
<a name="line52"> 52: </a>  engOutputBuffer(e-&gt;ep,e-&gt;buffer,1024);
 
60
 
 
61
<a name="line54"> 54: </a>  <A href="http://www.mcs.anl.gov/mpi/www/www3/MPI_Comm_rank.html#MPI_Comm_rank">MPI_Comm_rank</A>(<A href="../../../../../docs/manualpages/Sys/comm.html#comm">comm</A>,&amp;<A href="../../../../../docs/manualpages/Sys/rank.html#rank">rank</A>);
 
62
<a name="line55"> 55: </a>  <A href="http://www.mcs.anl.gov/mpi/www/www3/MPI_Comm_size.html#MPI_Comm_size">MPI_Comm_size</A>(<A href="../../../../../docs/manualpages/Sys/comm.html#comm">comm</A>,&amp;<A href="../../../../../docs/manualpages/Sys/size.html#size">size</A>);
 
63
<a name="line56"> 56: </a>  sprintf(buffer,<font color="#666666">"<A href="http://www.mcs.anl.gov/mpi/www/www3/MPI_Comm_rank.html#MPI_Comm_rank">MPI_Comm_rank</A> = %d; <A href="http://www.mcs.anl.gov/mpi/www/www3/MPI_Comm_size.html#MPI_Comm_size">MPI_Comm_size</A> = %d;\n"</font>,<A href="../../../../../docs/manualpages/Sys/rank.html#rank">rank</A>,<A href="../../../../../docs/manualpages/Sys/size.html#size">size</A>);
 
64
<a name="line57"> 57: </a>  engEvalString(e-&gt;ep, buffer);
 
65
<a name="line58"> 58: </a>  <A href="../../../../../docs/manualpages/Profiling/PetscLogInfo.html#PetscLogInfo">PetscLogInfo</A>(0,<font color="#666666">"Started Matlab engine on %s\n"</font>,machine);
 
66
<a name="line59"> 59: </a>
 
67
<a name="line60"> 60: </a>  *mengine = e;
 
68
<a name="line61"> 61: </a>  <font color="#4169E1">return</font>(0);
 
69
<a name="line62"> 62: </a>}
 
70
 
 
71
<a name="line66"> 66: </a><font color="#B22222">/*@C</font>
 
72
<a name="line67"> 67: </a><font color="#B22222">   <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineDestroy.html#PetscMatlabEngineDestroy">PetscMatlabEngineDestroy</A> - Destroys a vector.</font>
 
73
 
 
74
<a name="line69"> 69: </a><font color="#B22222">   Collective on <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngine.html#PetscMatlabEngine">PetscMatlabEngine</A></font>
 
75
 
 
76
<a name="line71"> 71: </a><font color="#B22222">   Input Parameters:</font>
 
77
<a name="line72"> 72: </a><font color="#B22222">.  e  - the engine</font>
 
78
 
 
79
<a name="line74"> 74: </a><font color="#B22222">   Level: advanced</font>
 
80
 
 
81
<a name="line76"> 76: </a><font color="#B22222">.seealso: PetscMatlabEnginCreate(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEnginePut.html#PetscMatlabEnginePut">PetscMatlabEnginePut</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineGet.html#PetscMatlabEngineGet">PetscMatlabEngineGet</A>(),</font>
 
82
<a name="line77"> 77: </a><font color="#B22222">          <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineEvaluate.html#PetscMatlabEngineEvaluate">PetscMatlabEngineEvaluate</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineGetOutput.html#PetscMatlabEngineGetOutput">PetscMatlabEngineGetOutput</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEnginePrintOutput.html#PetscMatlabEnginePrintOutput">PetscMatlabEnginePrintOutput</A>(),</font>
 
83
<a name="line78"> 78: </a><font color="#B22222">          <A href="../../../../../docs/manualpages/Sys/PETSC_MATLAB_ENGINE_.html#PETSC_MATLAB_ENGINE_">PETSC_MATLAB_ENGINE_</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEnginePutArray.html#PetscMatlabEnginePutArray">PetscMatlabEnginePutArray</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineGetArray.html#PetscMatlabEngineGetArray">PetscMatlabEngineGetArray</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngine.html#PetscMatlabEngine">PetscMatlabEngine</A></font>
 
84
<a name="line79"> 79: </a><font color="#B22222">@*/</font>
 
85
<a name="line80"> 80: </a><strong><font color="#4169E1"><a name="PetscMatlabEngineDestroy"></a>int <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineDestroy.html#PetscMatlabEngineDestroy">PetscMatlabEngineDestroy</A>(<A href="../../../../../docs/manualpages/Sys/PetscMatlabEngine.html#PetscMatlabEngine">PetscMatlabEngine</A> v)</font></strong>
 
86
<a name="line81"> 81: </a>{
 
87
<a name="line84"> 84: </a>  <font color="#4169E1">if</font> (--v-&gt;refct &gt; 0) <font color="#4169E1">return</font>(0);
 
88
<a name="line85"> 85: </a>  PetscLogObjectDestroy(v);
 
89
<a name="line86"> 86: </a>  PetscHeaderDestroy(v);
 
90
<a name="line87"> 87: </a>  <font color="#4169E1">return</font>(0);
 
91
<a name="line88"> 88: </a>}
 
92
 
 
93
<a name="line92"> 92: </a><font color="#B22222">/*@C</font>
 
94
<a name="line93"> 93: </a><font color="#B22222">    <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineEvaluate.html#PetscMatlabEngineEvaluate">PetscMatlabEngineEvaluate</A> - Evaluates a string in Matlab</font>
 
95
 
 
96
<a name="line95"> 95: </a><font color="#B22222">    Not Collective</font>
 
97
 
 
98
<a name="line97"> 97: </a><font color="#B22222">    Input Parameters:</font>
 
99
<a name="line98"> 98: </a><font color="#B22222">+   mengine - the Matlab engine</font>
 
100
<a name="line99"> 99: </a><font color="#B22222">-   string - format as in a printf()</font>
 
101
 
 
102
<a name="line101">101: </a><font color="#B22222">   Level: advanced</font>
 
103
 
 
104
<a name="line103">103: </a><font color="#B22222">.seealso: <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineDestroy.html#PetscMatlabEngineDestroy">PetscMatlabEngineDestroy</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEnginePut.html#PetscMatlabEnginePut">PetscMatlabEnginePut</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineGet.html#PetscMatlabEngineGet">PetscMatlabEngineGet</A>(),</font>
 
105
<a name="line104">104: </a><font color="#B22222">          <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineCreate.html#PetscMatlabEngineCreate">PetscMatlabEngineCreate</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineGetOutput.html#PetscMatlabEngineGetOutput">PetscMatlabEngineGetOutput</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEnginePrintOutput.html#PetscMatlabEnginePrintOutput">PetscMatlabEnginePrintOutput</A>(),</font>
 
106
<a name="line105">105: </a><font color="#B22222">          <A href="../../../../../docs/manualpages/Sys/PETSC_MATLAB_ENGINE_.html#PETSC_MATLAB_ENGINE_">PETSC_MATLAB_ENGINE_</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEnginePutArray.html#PetscMatlabEnginePutArray">PetscMatlabEnginePutArray</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineGetArray.html#PetscMatlabEngineGetArray">PetscMatlabEngineGetArray</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngine.html#PetscMatlabEngine">PetscMatlabEngine</A></font>
 
107
<a name="line106">106: </a><font color="#B22222">@*/</font>
 
108
<a name="line107">107: </a><strong><font color="#4169E1"><a name="PetscMatlabEngineEvaluate"></a>int <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineEvaluate.html#PetscMatlabEngineEvaluate">PetscMatlabEngineEvaluate</A>(<A href="../../../../../docs/manualpages/Sys/PetscMatlabEngine.html#PetscMatlabEngine">PetscMatlabEngine</A> mengine,const char string[],...)</font></strong>
 
109
<a name="line108">108: </a>{
 
110
<a name="line109">109: </a>  va_list           Argp;
 
111
<a name="line110">110: </a>  char              buffer[1024];
 
112
<a name="line111">111: </a>  int               ierr,len,flops;
 
113
 
 
114
<a name="line114">114: </a>  <A href="../../../../../docs/manualpages/Sys/PetscStrcpy.html#PetscStrcpy">PetscStrcpy</A>(buffer,<font color="#666666">"flops(0);"</font>);
 
115
<a name="line115">115: </a>  va_start(Argp,string);
 
116
<a name="line116">116: </a><font color="#A020F0">#if defined(PETSC_HAVE_VPRINTF_CHAR)</font>
 
117
<a name="line117">117: </a>  vsprintf(buffer+9,string,(char *)Argp);
 
118
<a name="line118">118: </a><font color="#A020F0">#else</font>
 
119
<a name="line119">119: </a>  vsprintf(buffer+9,string,Argp);
 
120
<a name="line120">120: </a><font color="#A020F0">#endif</font>
 
121
<a name="line121">121: </a>  va_end(Argp);
 
122
<a name="line122">122: </a>  <A href="../../../../../docs/manualpages/Sys/PetscStrcat.html#PetscStrcat">PetscStrcat</A>(buffer,<font color="#666666">",flops"</font>);
 
123
 
 
124
<a name="line124">124: </a>  <A href="../../../../../docs/manualpages/Profiling/PetscLogInfo.html#PetscLogInfo">PetscLogInfo</A>(0,<font color="#666666">"Evaluating Matlab string: %s\n"</font>,buffer);
 
125
<a name="line125">125: </a>  engEvalString(mengine-&gt;ep, buffer);
 
126
 
 
127
<a name="line127">127: </a>  <font color="#B22222">/* </font>
 
128
<a name="line128">128: </a><font color="#B22222">     Check for error in Matlab: indicated by ? as first character in engine-&gt;buffer</font>
 
129
<a name="line129">129: </a><font color="#B22222">  */</font>
 
130
 
 
131
<a name="line131">131: </a>  <font color="#4169E1">if</font> (mengine-&gt;buffer[4] == '?') {
 
132
<a name="line132">132: </a>    <A href="../../../../../docs/manualpages/Sys/SETERRQ2.html#SETERRQ2">SETERRQ2</A>(1,<font color="#666666">"Error in evaluating Matlab command:%s\n%s"</font>,string,mengine-&gt;buffer);
 
133
<a name="line133">133: </a>  }
 
134
 
 
135
<a name="line135">135: </a>  <font color="#B22222">/*</font>
 
136
<a name="line136">136: </a><font color="#B22222">     Get flop number back from Matlab output</font>
 
137
<a name="line137">137: </a><font color="#B22222">  */</font>
 
138
<a name="line138">138: </a>  <A href="../../../../../docs/manualpages/Sys/PetscStrlen.html#PetscStrlen">PetscStrlen</A>(mengine-&gt;buffer,&amp;len);
 
139
<a name="line139">139: </a>  len -= 2;
 
140
<a name="line140">140: </a>  <font color="#4169E1">while</font> (len &gt;= 0) {
 
141
<a name="line141">141: </a>    len--;
 
142
<a name="line142">142: </a>    <font color="#4169E1">if</font> (mengine-&gt;buffer[len] == ' ') <font color="#4169E1">break</font>;
 
143
<a name="line143">143: </a>    <font color="#4169E1">if</font> (mengine-&gt;buffer[len] == '\n') <font color="#4169E1">break</font>;
 
144
<a name="line144">144: </a>    <font color="#4169E1">if</font> (mengine-&gt;buffer[len] == '\t') <font color="#4169E1">break</font>;
 
145
<a name="line145">145: </a>  }
 
146
<a name="line146">146: </a>  sscanf(mengine-&gt;buffer+len,<font color="#666666">" %d\n"</font>,&amp;flops);
 
147
<a name="line147">147: </a>  <A href="../../../../../docs/manualpages/Profiling/PetscLogFlops.html#PetscLogFlops">PetscLogFlops</A>(flops);
 
148
<a name="line148">148: </a>  <font color="#B22222">/* strip out of engine-&gt;buffer the end part about flops */</font>
 
149
<a name="line149">149: </a>  <font color="#4169E1">if</font> (len &lt; 14) <A href="../../../../../docs/manualpages/Sys/SETERRQ1.html#SETERRQ1">SETERRQ1</A>(1,<font color="#666666">"Error from Matlab %s"</font>,mengine-&gt;buffer);
 
150
<a name="line150">150: </a>  len -= 14;
 
151
<a name="line151">151: </a>  mengine-&gt;buffer[len] = 0;
 
152
 
 
153
<a name="line153">153: </a>  <A href="../../../../../docs/manualpages/Profiling/PetscLogInfo.html#PetscLogInfo">PetscLogInfo</A>(0,<font color="#666666">"Done evaluating Matlab string: %s\n"</font>,buffer);
 
154
<a name="line154">154: </a>  <font color="#4169E1">return</font>(0);
 
155
<a name="line155">155: </a>}
 
156
 
 
157
<a name="line159">159: </a><font color="#B22222">/*@C</font>
 
158
<a name="line160">160: </a><font color="#B22222">    <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineGetOutput.html#PetscMatlabEngineGetOutput">PetscMatlabEngineGetOutput</A> - Gets a string buffer where the Matlab output is </font>
 
159
<a name="line161">161: </a><font color="#B22222">          printed</font>
 
160
 
 
161
<a name="line163">163: </a><font color="#B22222">    Not Collective</font>
 
162
 
 
163
<a name="line165">165: </a><font color="#B22222">    Input Parameter:</font>
 
164
<a name="line166">166: </a><font color="#B22222">.   mengine - the Matlab engine</font>
 
165
 
 
166
<a name="line168">168: </a><font color="#B22222">    Output Parameter:</font>
 
167
<a name="line169">169: </a><font color="#B22222">.   string - buffer where Matlab output is printed</font>
 
168
 
 
169
<a name="line171">171: </a><font color="#B22222">   Level: advanced</font>
 
170
 
 
171
<a name="line173">173: </a><font color="#B22222">.seealso: <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineDestroy.html#PetscMatlabEngineDestroy">PetscMatlabEngineDestroy</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEnginePut.html#PetscMatlabEnginePut">PetscMatlabEnginePut</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineGet.html#PetscMatlabEngineGet">PetscMatlabEngineGet</A>(),</font>
 
172
<a name="line174">174: </a><font color="#B22222">          <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineEvaluate.html#PetscMatlabEngineEvaluate">PetscMatlabEngineEvaluate</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineCreate.html#PetscMatlabEngineCreate">PetscMatlabEngineCreate</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEnginePrintOutput.html#PetscMatlabEnginePrintOutput">PetscMatlabEnginePrintOutput</A>(),</font>
 
173
<a name="line175">175: </a><font color="#B22222">          <A href="../../../../../docs/manualpages/Sys/PETSC_MATLAB_ENGINE_.html#PETSC_MATLAB_ENGINE_">PETSC_MATLAB_ENGINE_</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEnginePutArray.html#PetscMatlabEnginePutArray">PetscMatlabEnginePutArray</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineGetArray.html#PetscMatlabEngineGetArray">PetscMatlabEngineGetArray</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngine.html#PetscMatlabEngine">PetscMatlabEngine</A></font>
 
174
<a name="line176">176: </a><font color="#B22222">@*/</font>
 
175
<a name="line177">177: </a><strong><font color="#4169E1"><a name="PetscMatlabEngineGetOutput"></a>int <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineGetOutput.html#PetscMatlabEngineGetOutput">PetscMatlabEngineGetOutput</A>(<A href="../../../../../docs/manualpages/Sys/PetscMatlabEngine.html#PetscMatlabEngine">PetscMatlabEngine</A> mengine,char **string)</font></strong>
 
176
<a name="line178">178: </a>{
 
177
<a name="line180">180: </a>  *string = mengine-&gt;buffer;
 
178
<a name="line181">181: </a>  <font color="#4169E1">return</font>(0);
 
179
<a name="line182">182: </a>}
 
180
 
 
181
<a name="line186">186: </a><font color="#B22222">/*@C</font>
 
182
<a name="line187">187: </a><font color="#B22222">    <A href="../../../../../docs/manualpages/Sys/PetscMatlabEnginePrintOutput.html#PetscMatlabEnginePrintOutput">PetscMatlabEnginePrintOutput</A> - prints the output from Matlab</font>
 
183
 
 
184
<a name="line189">189: </a><font color="#B22222">    Collective on <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngine.html#PetscMatlabEngine">PetscMatlabEngine</A></font>
 
185
 
 
186
<a name="line191">191: </a><font color="#B22222">    Input Parameters:</font>
 
187
<a name="line192">192: </a><font color="#B22222">.    mengine - the Matlab engine</font>
 
188
 
 
189
<a name="line194">194: </a><font color="#B22222">   Level: advanced</font>
 
190
 
 
191
<a name="line196">196: </a><font color="#B22222">.seealso: <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineDestroy.html#PetscMatlabEngineDestroy">PetscMatlabEngineDestroy</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEnginePut.html#PetscMatlabEnginePut">PetscMatlabEnginePut</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineGet.html#PetscMatlabEngineGet">PetscMatlabEngineGet</A>(),</font>
 
192
<a name="line197">197: </a><font color="#B22222">          <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineEvaluate.html#PetscMatlabEngineEvaluate">PetscMatlabEngineEvaluate</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineGetOutput.html#PetscMatlabEngineGetOutput">PetscMatlabEngineGetOutput</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineCreate.html#PetscMatlabEngineCreate">PetscMatlabEngineCreate</A>(),</font>
 
193
<a name="line198">198: </a><font color="#B22222">          <A href="../../../../../docs/manualpages/Sys/PETSC_MATLAB_ENGINE_.html#PETSC_MATLAB_ENGINE_">PETSC_MATLAB_ENGINE_</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEnginePutArray.html#PetscMatlabEnginePutArray">PetscMatlabEnginePutArray</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineGetArray.html#PetscMatlabEngineGetArray">PetscMatlabEngineGetArray</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngine.html#PetscMatlabEngine">PetscMatlabEngine</A></font>
 
194
<a name="line199">199: </a><font color="#B22222">@*/</font>
 
195
<a name="line200">200: </a><strong><font color="#4169E1"><a name="PetscMatlabEnginePrintOutput"></a>int <A href="../../../../../docs/manualpages/Sys/PetscMatlabEnginePrintOutput.html#PetscMatlabEnginePrintOutput">PetscMatlabEnginePrintOutput</A>(<A href="../../../../../docs/manualpages/Sys/PetscMatlabEngine.html#PetscMatlabEngine">PetscMatlabEngine</A> mengine,FILE *fd)</font></strong>
 
196
<a name="line201">201: </a>{
 
197
<a name="line202">202: </a>  int  ierr,<A href="../../../../../docs/manualpages/Sys/rank.html#rank">rank</A>;
 
198
 
 
199
<a name="line205">205: </a>  <A href="http://www.mcs.anl.gov/mpi/www/www3/MPI_Comm_rank.html#MPI_Comm_rank">MPI_Comm_rank</A>(mengine-&gt;<A href="../../../../../docs/manualpages/Sys/comm.html#comm">comm</A>,&amp;<A href="../../../../../docs/manualpages/Sys/rank.html#rank">rank</A>);
 
200
<a name="line206">206: </a>  <A href="../../../../../docs/manualpages/Sys/PetscSynchronizedFPrintf.html#PetscSynchronizedFPrintf">PetscSynchronizedFPrintf</A>(mengine-&gt;<A href="../../../../../docs/manualpages/Sys/comm.html#comm">comm</A>,fd,<font color="#666666">"[%d]%s"</font>,<A href="../../../../../docs/manualpages/Sys/rank.html#rank">rank</A>,mengine-&gt;buffer);
 
201
<a name="line207">207: </a>  <A href="../../../../../docs/manualpages/Sys/PetscSynchronizedFlush.html#PetscSynchronizedFlush">PetscSynchronizedFlush</A>(mengine-&gt;<A href="../../../../../docs/manualpages/Sys/comm.html#comm">comm</A>);
 
202
<a name="line208">208: </a>  <font color="#4169E1">return</font>(0);
 
203
<a name="line209">209: </a>}
 
204
 
 
205
<a name="line213">213: </a><font color="#B22222">/*@C</font>
 
206
<a name="line214">214: </a><font color="#B22222">    <A href="../../../../../docs/manualpages/Sys/PetscMatlabEnginePut.html#PetscMatlabEnginePut">PetscMatlabEnginePut</A> - Puts a Petsc object into the Matlab space. For parallel objects,</font>
 
207
<a name="line215">215: </a><font color="#B22222">      each processors part is put in a seperate  Matlab process.</font>
 
208
 
 
209
<a name="line217">217: </a><font color="#B22222">    Collective on <A href="../../../../../docs/manualpages/Sys/PetscObject.html#PetscObject">PetscObject</A></font>
 
210
 
 
211
<a name="line219">219: </a><font color="#B22222">    Input Parameters:</font>
 
212
<a name="line220">220: </a><font color="#B22222">+    mengine - the Matlab engine</font>
 
213
<a name="line221">221: </a><font color="#B22222">-    object - the PETSc object, for example <A href="../../../../../docs/manualpages/Vec/Vec.html#Vec">Vec</A></font>
 
214
 
 
215
<a name="line223">223: </a><font color="#B22222">   Level: advanced</font>
 
216
 
 
217
<a name="line225">225: </a><font color="#B22222">.seealso: <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineDestroy.html#PetscMatlabEngineDestroy">PetscMatlabEngineDestroy</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineCreate.html#PetscMatlabEngineCreate">PetscMatlabEngineCreate</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineGet.html#PetscMatlabEngineGet">PetscMatlabEngineGet</A>(),</font>
 
218
<a name="line226">226: </a><font color="#B22222">          <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineEvaluate.html#PetscMatlabEngineEvaluate">PetscMatlabEngineEvaluate</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineGetOutput.html#PetscMatlabEngineGetOutput">PetscMatlabEngineGetOutput</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEnginePrintOutput.html#PetscMatlabEnginePrintOutput">PetscMatlabEnginePrintOutput</A>(),</font>
 
219
<a name="line227">227: </a><font color="#B22222">          <A href="../../../../../docs/manualpages/Sys/PETSC_MATLAB_ENGINE_.html#PETSC_MATLAB_ENGINE_">PETSC_MATLAB_ENGINE_</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEnginePutArray.html#PetscMatlabEnginePutArray">PetscMatlabEnginePutArray</A>(), MatlabEngineGetArray(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngine.html#PetscMatlabEngine">PetscMatlabEngine</A></font>
 
220
<a name="line228">228: </a><font color="#B22222">@*/</font>
 
221
<a name="line229">229: </a><strong><font color="#4169E1"><a name="PetscMatlabEnginePut"></a>int <A href="../../../../../docs/manualpages/Sys/PetscMatlabEnginePut.html#PetscMatlabEnginePut">PetscMatlabEnginePut</A>(<A href="../../../../../docs/manualpages/Sys/PetscMatlabEngine.html#PetscMatlabEngine">PetscMatlabEngine</A> mengine,<A href="../../../../../docs/manualpages/Sys/PetscObject.html#PetscObject">PetscObject</A> obj)</font></strong>
 
222
<a name="line230">230: </a>{
 
223
<a name="line231">231: </a>  int ierr,(*put)(<A href="../../../../../docs/manualpages/Sys/PetscObject.html#PetscObject">PetscObject</A>,void*);
 
224
<a name="line232">232: </a>
 
225
<a name="line234">234: </a>  <A href="../../../../../docs/manualpages/Sys/PetscObjectQueryFunction.html#PetscObjectQueryFunction">PetscObjectQueryFunction</A>(obj,<font color="#666666">"PetscMatlabEnginePut_C"</font>,(void (**)(void))&amp;put);
 
226
<a name="line235">235: </a>  <font color="#4169E1">if</font> (!put) {
 
227
<a name="line236">236: </a>    <A href="../../../../../docs/manualpages/Sys/SETERRQ1.html#SETERRQ1">SETERRQ1</A>(1,<font color="#666666">"Object %s cannot be put into Matlab engine"</font>,obj-&gt;class_name);
 
228
<a name="line237">237: </a>  }
 
229
<a name="line238">238: </a>  <A href="../../../../../docs/manualpages/Profiling/PetscLogInfo.html#PetscLogInfo">PetscLogInfo</A>(0,<font color="#666666">"Putting Matlab object\n"</font>);
 
230
<a name="line239">239: </a>  (*put)(obj,mengine-&gt;ep);
 
231
<a name="line240">240: </a>  <A href="../../../../../docs/manualpages/Profiling/PetscLogInfo.html#PetscLogInfo">PetscLogInfo</A>(0,<font color="#666666">"Put Matlab object: %s\n"</font>,obj-&gt;name);
 
232
<a name="line241">241: </a>  <font color="#4169E1">return</font>(0);
 
233
<a name="line242">242: </a>}
 
234
 
 
235
<a name="line246">246: </a><font color="#B22222">/*@C</font>
 
236
<a name="line247">247: </a><font color="#B22222">    <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineGet.html#PetscMatlabEngineGet">PetscMatlabEngineGet</A> - Gets a variable from Matlab into a PETSc object.</font>
 
237
 
 
238
<a name="line249">249: </a><font color="#B22222">    Collective on <A href="../../../../../docs/manualpages/Sys/PetscObject.html#PetscObject">PetscObject</A></font>
 
239
 
 
240
<a name="line251">251: </a><font color="#B22222">    Input Parameters:</font>
 
241
<a name="line252">252: </a><font color="#B22222">+    mengine - the Matlab engine</font>
 
242
<a name="line253">253: </a><font color="#B22222">-    object - the PETSc object, for example <A href="../../../../../docs/manualpages/Vec/Vec.html#Vec">Vec</A></font>
 
243
 
 
244
<a name="line255">255: </a><font color="#B22222">   Level: advanced</font>
 
245
 
 
246
<a name="line257">257: </a><font color="#B22222">.seealso: <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineDestroy.html#PetscMatlabEngineDestroy">PetscMatlabEngineDestroy</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEnginePut.html#PetscMatlabEnginePut">PetscMatlabEnginePut</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineCreate.html#PetscMatlabEngineCreate">PetscMatlabEngineCreate</A>(),</font>
 
247
<a name="line258">258: </a><font color="#B22222">          <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineEvaluate.html#PetscMatlabEngineEvaluate">PetscMatlabEngineEvaluate</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineGetOutput.html#PetscMatlabEngineGetOutput">PetscMatlabEngineGetOutput</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEnginePrintOutput.html#PetscMatlabEnginePrintOutput">PetscMatlabEnginePrintOutput</A>(),</font>
 
248
<a name="line259">259: </a><font color="#B22222">          <A href="../../../../../docs/manualpages/Sys/PETSC_MATLAB_ENGINE_.html#PETSC_MATLAB_ENGINE_">PETSC_MATLAB_ENGINE_</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEnginePutArray.html#PetscMatlabEnginePutArray">PetscMatlabEnginePutArray</A>(), MatlabEngineGetArray(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngine.html#PetscMatlabEngine">PetscMatlabEngine</A></font>
 
249
<a name="line260">260: </a><font color="#B22222">@*/</font>
 
250
<a name="line261">261: </a><strong><font color="#4169E1"><a name="PetscMatlabEngineGet"></a>int <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineGet.html#PetscMatlabEngineGet">PetscMatlabEngineGet</A>(<A href="../../../../../docs/manualpages/Sys/PetscMatlabEngine.html#PetscMatlabEngine">PetscMatlabEngine</A> mengine,<A href="../../../../../docs/manualpages/Sys/PetscObject.html#PetscObject">PetscObject</A> obj)</font></strong>
 
251
<a name="line262">262: </a>{
 
252
<a name="line263">263: </a>  int ierr,(*get)(<A href="../../../../../docs/manualpages/Sys/PetscObject.html#PetscObject">PetscObject</A>,void*);
 
253
<a name="line264">264: </a>
 
254
<a name="line266">266: </a>  <font color="#4169E1">if</font> (!obj-&gt;name) {
 
255
<a name="line267">267: </a>    <A href="../../../../../docs/manualpages/Sys/SETERRQ.html#SETERRQ">SETERRQ</A>(1,<font color="#666666">"Cannot get object that has no name"</font>);
 
256
<a name="line268">268: </a>  }
 
257
<a name="line269">269: </a>  <A href="../../../../../docs/manualpages/Sys/PetscObjectQueryFunction.html#PetscObjectQueryFunction">PetscObjectQueryFunction</A>(obj,<font color="#666666">"PetscMatlabEngineGet_C"</font>,(void (**)(void))&amp;get);
 
258
<a name="line270">270: </a>  <font color="#4169E1">if</font> (!get) {
 
259
<a name="line271">271: </a>    <A href="../../../../../docs/manualpages/Sys/SETERRQ1.html#SETERRQ1">SETERRQ1</A>(1,<font color="#666666">"Object %s cannot be get into Matlab engine"</font>,obj-&gt;class_name);
 
260
<a name="line272">272: </a>  }
 
261
<a name="line273">273: </a>  <A href="../../../../../docs/manualpages/Profiling/PetscLogInfo.html#PetscLogInfo">PetscLogInfo</A>(0,<font color="#666666">"Getting Matlab object\n"</font>);
 
262
<a name="line274">274: </a>  (*get)(obj,mengine-&gt;ep);
 
263
<a name="line275">275: </a>  <A href="../../../../../docs/manualpages/Profiling/PetscLogInfo.html#PetscLogInfo">PetscLogInfo</A>(0,<font color="#666666">"Got Matlab object: %s\n"</font>,obj-&gt;name);
 
264
<a name="line276">276: </a>  <font color="#4169E1">return</font>(0);
 
265
<a name="line277">277: </a>}
 
266
 
 
267
<a name="line279">279: </a><font color="#B22222">/*</font>
 
268
<a name="line280">280: </a><font color="#B22222">    The variable Petsc_Matlab_Engine_keyval is used to indicate an MPI attribute that</font>
 
269
<a name="line281">281: </a><font color="#B22222">  is attached to a communicator, in this case the attribute is a <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngine.html#PetscMatlabEngine">PetscMatlabEngine</A></font>
 
270
<a name="line282">282: </a><font color="#B22222">*/</font>
 
271
<a name="line283">283: </a>static int Petsc_Matlab_Engine_keyval = MPI_KEYVAL_INVALID;
 
272
 
 
273
 
 
274
<a name="line288">288: </a><font color="#B22222">/*@C</font>
 
275
<a name="line289">289: </a><font color="#B22222">   <A href="../../../../../docs/manualpages/Sys/PETSC_MATLAB_ENGINE_.html#PETSC_MATLAB_ENGINE_">PETSC_MATLAB_ENGINE_</A> - Creates a matlab engine shared by all processors </font>
 
276
<a name="line290">290: </a><font color="#B22222">                    in a communicator.</font>
 
277
 
 
278
<a name="line292">292: </a><font color="#B22222">   Not Collective</font>
 
279
 
 
280
<a name="line294">294: </a><font color="#B22222">   Input Parameter:</font>
 
281
<a name="line295">295: </a><font color="#B22222">.  <A href="../../../../../docs/manualpages/Sys/comm.html#comm">comm</A> - the MPI communicator to share the engine</font>
 
282
 
 
283
<a name="line297">297: </a><font color="#B22222">   Level: developer</font>
 
284
 
 
285
<a name="line299">299: </a><font color="#B22222">   Notes: </font>
 
286
<a name="line300">300: </a><font color="#B22222">   Unlike almost all other PETSc routines, this does not return </font>
 
287
<a name="line301">301: </a><font color="#B22222">   an error code. Usually used in the form</font>
 
288
<a name="line302">302: </a><font color="#B22222">$      PetscMatlabEngineYYY(XXX object,<A href="../../../../../docs/manualpages/Sys/PETSC_MATLAB_ENGINE_.html#PETSC_MATLAB_ENGINE_">PETSC_MATLAB_ENGINE_</A>(<A href="../../../../../docs/manualpages/Sys/comm.html#comm">comm</A>));</font>
 
289
 
 
290
<a name="line304">304: </a><font color="#B22222">.seealso: <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineDestroy.html#PetscMatlabEngineDestroy">PetscMatlabEngineDestroy</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEnginePut.html#PetscMatlabEnginePut">PetscMatlabEnginePut</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineGet.html#PetscMatlabEngineGet">PetscMatlabEngineGet</A>(),</font>
 
291
<a name="line305">305: </a><font color="#B22222">          <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineEvaluate.html#PetscMatlabEngineEvaluate">PetscMatlabEngineEvaluate</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineGetOutput.html#PetscMatlabEngineGetOutput">PetscMatlabEngineGetOutput</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEnginePrintOutput.html#PetscMatlabEnginePrintOutput">PetscMatlabEnginePrintOutput</A>(),</font>
 
292
<a name="line306">306: </a><font color="#B22222">          <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineCreate.html#PetscMatlabEngineCreate">PetscMatlabEngineCreate</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEnginePutArray.html#PetscMatlabEnginePutArray">PetscMatlabEnginePutArray</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineGetArray.html#PetscMatlabEngineGetArray">PetscMatlabEngineGetArray</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngine.html#PetscMatlabEngine">PetscMatlabEngine</A>,</font>
 
293
<a name="line307">307: </a><font color="#B22222">          <A href="../../../../../docs/manualpages/Sys/PETSC_MATLAB_ENGINE_WORLD.html#PETSC_MATLAB_ENGINE_WORLD">PETSC_MATLAB_ENGINE_WORLD</A>, <A href="../../../../../docs/manualpages/Sys/PETSC_MATLAB_ENGINE_SELF.html#PETSC_MATLAB_ENGINE_SELF">PETSC_MATLAB_ENGINE_SELF</A></font>
 
294
<a name="line308">308: </a><font color="#B22222"> </font>
 
295
<a name="line309">309: </a><font color="#B22222">@*/</font>
 
296
<a name="line310">310: </a><strong><font color="#4169E1"><a name="PETSC_MATLAB_ENGINE_"></a><A href="../../../../../docs/manualpages/Sys/PetscMatlabEngine.html#PetscMatlabEngine">PetscMatlabEngine</A> <A href="../../../../../docs/manualpages/Sys/PETSC_MATLAB_ENGINE_.html#PETSC_MATLAB_ENGINE_">PETSC_MATLAB_ENGINE_</A>(<A href="../../../../../docs/manualpages/Sys/MPI_Comm.html#MPI_Comm">MPI_Comm</A> <A href="../../../../../docs/manualpages/Sys/comm.html#comm">comm</A>)</font></strong>
 
297
<a name="line311">311: </a>{
 
298
<a name="line312">312: </a>  int               ierr;
 
299
<a name="line313">313: </a>  <A href="../../../../../docs/manualpages/Sys/PetscTruth.html#PetscTruth">PetscTruth</A>        flg;
 
300
<a name="line314">314: </a>  <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngine.html#PetscMatlabEngine">PetscMatlabEngine</A> mengine;
 
301
 
 
302
<a name="line317">317: </a>  <font color="#4169E1">if</font> (Petsc_Matlab_Engine_keyval == MPI_KEYVAL_INVALID) {
 
303
<a name="line318">318: </a>    <A href="http://www.mcs.anl.gov/mpi/www/www3/MPI_Keyval_create.html#MPI_Keyval_create">MPI_Keyval_create</A>(<A href="http://www.mcs.anl.gov/mpi/www/www3/MPI_NULL_COPY_FN.html#MPI_NULL_COPY_FN">MPI_NULL_COPY_FN</A>,<A href="http://www.mcs.anl.gov/mpi/www/www3/MPI_NULL_DELETE_FN.html#MPI_NULL_DELETE_FN">MPI_NULL_DELETE_FN</A>,&amp;Petsc_Matlab_Engine_keyval,0);
 
304
<a name="line319">319: </a>    <font color="#4169E1">if</font> (ierr) {<A href="../../../../../docs/manualpages/Sys/PetscError.html#PetscError">PetscError</A>(__LINE__,<font color="#666666">"<A href="../../../../../docs/manualpages/Sys/PETSC_MATLAB_ENGINE_.html#PETSC_MATLAB_ENGINE_">PETSC_MATLAB_ENGINE_</A>"</font>,__FILE__,__SDIR__,1,1,<font color="#666666">" "</font>); mengine = 0;}
 
305
<a name="line320">320: </a>  }
 
306
<a name="line321">321: </a>  <A href="http://www.mcs.anl.gov/mpi/www/www3/MPI_Attr_get.html#MPI_Attr_get">MPI_Attr_get</A>(<A href="../../../../../docs/manualpages/Sys/comm.html#comm">comm</A>,Petsc_Matlab_Engine_keyval,(void **)&amp;mengine,(int*)&amp;flg);
 
307
<a name="line322">322: </a>  <font color="#4169E1">if</font> (ierr) {<A href="../../../../../docs/manualpages/Sys/PetscError.html#PetscError">PetscError</A>(__LINE__,<font color="#666666">"<A href="../../../../../docs/manualpages/Sys/PETSC_MATLAB_ENGINE_.html#PETSC_MATLAB_ENGINE_">PETSC_MATLAB_ENGINE_</A>"</font>,__FILE__,__SDIR__,1,1,<font color="#666666">" "</font>); mengine = 0;}
 
308
<a name="line323">323: </a>  <font color="#4169E1">if</font> (!flg) { <font color="#B22222">/* viewer not yet created */</font>
 
309
<a name="line324">324: </a>    char *machinename = 0,machine[64];
 
310
 
 
311
<a name="line326">326: </a>    <A href="../../../../../docs/manualpages/Sys/PetscOptionsGetString.html#PetscOptionsGetString">PetscOptionsGetString</A>(<A href="../../../../../docs/manualpages/Sys/PETSC_NULL.html#PETSC_NULL">PETSC_NULL</A>,<font color="#666666">"-matlab_engine_machine"</font>,machine,64,&amp;flg);
 
312
<a name="line327">327: </a>    <font color="#4169E1">if</font> (ierr) {<A href="../../../../../docs/manualpages/Sys/PetscError.html#PetscError">PetscError</A>(__LINE__,<font color="#666666">"<A href="../../../../../docs/manualpages/Sys/PETSC_MATLAB_ENGINE_.html#PETSC_MATLAB_ENGINE_">PETSC_MATLAB_ENGINE_</A>"</font>,__FILE__,__SDIR__,1,1,<font color="#666666">" "</font>); mengine = 0;}
 
313
<a name="line328">328: </a>    <font color="#4169E1">if</font> (flg) machinename = machine;
 
314
<a name="line329">329: </a>    <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineCreate.html#PetscMatlabEngineCreate">PetscMatlabEngineCreate</A>(<A href="../../../../../docs/manualpages/Sys/comm.html#comm">comm</A>,machinename,&amp;mengine);
 
315
<a name="line330">330: </a>    <font color="#4169E1">if</font> (ierr) {<A href="../../../../../docs/manualpages/Sys/PetscError.html#PetscError">PetscError</A>(__LINE__,<font color="#666666">"<A href="../../../../../docs/manualpages/Sys/PETSC_MATLAB_ENGINE_.html#PETSC_MATLAB_ENGINE_">PETSC_MATLAB_ENGINE_</A>"</font>,__FILE__,__SDIR__,1,1,<font color="#666666">" "</font>); mengine = 0;}
 
316
<a name="line331">331: </a>    <A href="../../../../../docs/manualpages/Sys/PetscObjectRegisterDestroy.html#PetscObjectRegisterDestroy">PetscObjectRegisterDestroy</A>((<A href="../../../../../docs/manualpages/Sys/PetscObject.html#PetscObject">PetscObject</A>)mengine);
 
317
<a name="line332">332: </a>    <font color="#4169E1">if</font> (ierr) {<A href="../../../../../docs/manualpages/Sys/PetscError.html#PetscError">PetscError</A>(__LINE__,<font color="#666666">"<A href="../../../../../docs/manualpages/Sys/PETSC_MATLAB_ENGINE_.html#PETSC_MATLAB_ENGINE_">PETSC_MATLAB_ENGINE_</A>"</font>,__FILE__,__SDIR__,1,1,<font color="#666666">" "</font>); mengine = 0;}
 
318
<a name="line333">333: </a>    <A href="http://www.mcs.anl.gov/mpi/www/www3/MPI_Attr_put.html#MPI_Attr_put">MPI_Attr_put</A>(<A href="../../../../../docs/manualpages/Sys/comm.html#comm">comm</A>,Petsc_Matlab_Engine_keyval,mengine);
 
319
<a name="line334">334: </a>    <font color="#4169E1">if</font> (ierr) {<A href="../../../../../docs/manualpages/Sys/PetscError.html#PetscError">PetscError</A>(__LINE__,<font color="#666666">"<A href="../../../../../docs/manualpages/Sys/PETSC_MATLAB_ENGINE_.html#PETSC_MATLAB_ENGINE_">PETSC_MATLAB_ENGINE_</A>"</font>,__FILE__,__SDIR__,1,1,<font color="#666666">" "</font>); mengine = 0;}
 
320
<a name="line335">335: </a>  }
 
321
<a name="line336">336: </a>  <A href="../../../../../docs/manualpages/Sys/PetscFunctionReturn.html#PetscFunctionReturn">PetscFunctionReturn</A>(mengine);
 
322
<a name="line337">337: </a>}
 
323
 
 
324
<a name="line341">341: </a><font color="#B22222">/*@C</font>
 
325
<a name="line342">342: </a><font color="#B22222">    <A href="../../../../../docs/manualpages/Sys/PetscMatlabEnginePutArray.html#PetscMatlabEnginePutArray">PetscMatlabEnginePutArray</A> - Puts a Petsc object into the Matlab space. For parallel objects,</font>
 
326
<a name="line343">343: </a><font color="#B22222">      each processors part is put in a seperate  Matlab process.</font>
 
327
 
 
328
<a name="line345">345: </a><font color="#B22222">    Collective on <A href="../../../../../docs/manualpages/Sys/PetscObject.html#PetscObject">PetscObject</A></font>
 
329
 
 
330
<a name="line347">347: </a><font color="#B22222">    Input Parameters:</font>
 
331
<a name="line348">348: </a><font color="#B22222">+    mengine - the Matlab engine</font>
 
332
<a name="line349">349: </a><font color="#B22222">.    m,n - the dimensions of the array</font>
 
333
<a name="line350">350: </a><font color="#B22222">.    array - the array (represented in one dimension)</font>
 
334
<a name="line351">351: </a><font color="#B22222">-    name - the name of the array</font>
 
335
 
 
336
<a name="line353">353: </a><font color="#B22222">   Level: advanced</font>
 
337
 
 
338
<a name="line355">355: </a><font color="#B22222">.seealso: <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineDestroy.html#PetscMatlabEngineDestroy">PetscMatlabEngineDestroy</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineCreate.html#PetscMatlabEngineCreate">PetscMatlabEngineCreate</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineGet.html#PetscMatlabEngineGet">PetscMatlabEngineGet</A>(),</font>
 
339
<a name="line356">356: </a><font color="#B22222">          <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineEvaluate.html#PetscMatlabEngineEvaluate">PetscMatlabEngineEvaluate</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineGetOutput.html#PetscMatlabEngineGetOutput">PetscMatlabEngineGetOutput</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEnginePrintOutput.html#PetscMatlabEnginePrintOutput">PetscMatlabEnginePrintOutput</A>(),</font>
 
340
<a name="line357">357: </a><font color="#B22222">          <A href="../../../../../docs/manualpages/Sys/PETSC_MATLAB_ENGINE_.html#PETSC_MATLAB_ENGINE_">PETSC_MATLAB_ENGINE_</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEnginePut.html#PetscMatlabEnginePut">PetscMatlabEnginePut</A>(), MatlabEngineGetArray(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngine.html#PetscMatlabEngine">PetscMatlabEngine</A></font>
 
341
<a name="line358">358: </a><font color="#B22222">@*/</font>
 
342
<a name="line359">359: </a><strong><font color="#4169E1"><a name="PetscMatlabEnginePutArray"></a>int <A href="../../../../../docs/manualpages/Sys/PetscMatlabEnginePutArray.html#PetscMatlabEnginePutArray">PetscMatlabEnginePutArray</A>(<A href="../../../../../docs/manualpages/Sys/PetscMatlabEngine.html#PetscMatlabEngine">PetscMatlabEngine</A> mengine,int m,int n,<A href="../../../../../docs/manualpages/Sys/PetscScalar.html#PetscScalar">PetscScalar</A> *array,const char name[])</font></strong>
 
343
<a name="line360">360: </a>{
 
344
<a name="line361">361: </a>  int     ierr;
 
345
<a name="line362">362: </a>  mxArray *mat;
 
346
<a name="line363">363: </a>
 
347
<a name="line365">365: </a>  <A href="../../../../../docs/manualpages/Profiling/PetscLogInfo.html#PetscLogInfo">PetscLogInfo</A>(0,<font color="#666666">"Putting Matlab array %s\n"</font>,name);
 
348
<a name="line366">366: </a><font color="#A020F0">#if !defined(PETSC_USE_COMPLEX)</font>
 
349
<a name="line367">367: </a>  mat  = mxCreateDoubleMatrix(m,n,mxREAL);
 
350
<a name="line368">368: </a><font color="#A020F0">#else</font>
 
351
<a name="line369">369: </a>  mat  = mxCreateDoubleMatrix(m,n,mxCOMPLEX);
 
352
<a name="line370">370: </a><font color="#A020F0">#endif</font>
 
353
<a name="line371">371: </a>  <A href="../../../../../docs/manualpages/Sys/PetscMemcpy.html#PetscMemcpy">PetscMemcpy</A>(mxGetPr(mat),array,m*n*<font color="#4169E1">sizeof</font>(<A href="../../../../../docs/manualpages/Sys/PetscScalar.html#PetscScalar">PetscScalar</A>));
 
354
<a name="line372">372: </a>  engPutVariable(mengine-&gt;ep,name,mat);
 
355
 
 
356
<a name="line374">374: </a>  <A href="../../../../../docs/manualpages/Profiling/PetscLogInfo.html#PetscLogInfo">PetscLogInfo</A>(0,<font color="#666666">"Put Matlab array %s\n"</font>,name);
 
357
<a name="line375">375: </a>  <font color="#4169E1">return</font>(0);
 
358
<a name="line376">376: </a>}
 
359
 
 
360
<a name="line380">380: </a><font color="#B22222">/*@C</font>
 
361
<a name="line381">381: </a><font color="#B22222">    <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineGetArray.html#PetscMatlabEngineGetArray">PetscMatlabEngineGetArray</A> - Gets a variable from Matlab into an array</font>
 
362
 
 
363
<a name="line383">383: </a><font color="#B22222">    Not Collective</font>
 
364
 
 
365
<a name="line385">385: </a><font color="#B22222">    Input Parameters:</font>
 
366
<a name="line386">386: </a><font color="#B22222">+    mengine - the Matlab engine</font>
 
367
<a name="line387">387: </a><font color="#B22222">.    m,n - the dimensions of the array</font>
 
368
<a name="line388">388: </a><font color="#B22222">.    array - the array (represented in one dimension)</font>
 
369
<a name="line389">389: </a><font color="#B22222">-    name - the name of the array</font>
 
370
 
 
371
<a name="line391">391: </a><font color="#B22222">   Level: advanced</font>
 
372
 
 
373
<a name="line393">393: </a><font color="#B22222">.seealso: <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineDestroy.html#PetscMatlabEngineDestroy">PetscMatlabEngineDestroy</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEnginePut.html#PetscMatlabEnginePut">PetscMatlabEnginePut</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineCreate.html#PetscMatlabEngineCreate">PetscMatlabEngineCreate</A>(),</font>
 
374
<a name="line394">394: </a><font color="#B22222">          <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineEvaluate.html#PetscMatlabEngineEvaluate">PetscMatlabEngineEvaluate</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineGetOutput.html#PetscMatlabEngineGetOutput">PetscMatlabEngineGetOutput</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEnginePrintOutput.html#PetscMatlabEnginePrintOutput">PetscMatlabEnginePrintOutput</A>(),</font>
 
375
<a name="line395">395: </a><font color="#B22222">          <A href="../../../../../docs/manualpages/Sys/PETSC_MATLAB_ENGINE_.html#PETSC_MATLAB_ENGINE_">PETSC_MATLAB_ENGINE_</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEnginePutArray.html#PetscMatlabEnginePutArray">PetscMatlabEnginePutArray</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineGet.html#PetscMatlabEngineGet">PetscMatlabEngineGet</A>(), <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngine.html#PetscMatlabEngine">PetscMatlabEngine</A></font>
 
376
<a name="line396">396: </a><font color="#B22222">@*/</font>
 
377
<a name="line397">397: </a><strong><font color="#4169E1"><a name="PetscMatlabEngineGetArray"></a>int <A href="../../../../../docs/manualpages/Sys/PetscMatlabEngineGetArray.html#PetscMatlabEngineGetArray">PetscMatlabEngineGetArray</A>(<A href="../../../../../docs/manualpages/Sys/PetscMatlabEngine.html#PetscMatlabEngine">PetscMatlabEngine</A> mengine,int m,int n,<A href="../../../../../docs/manualpages/Sys/PetscScalar.html#PetscScalar">PetscScalar</A> *array,const char name[])</font></strong>
 
378
<a name="line398">398: </a>{
 
379
<a name="line399">399: </a>  int     ierr;
 
380
<a name="line400">400: </a>  mxArray *mat;
 
381
<a name="line401">401: </a>
 
382
<a name="line403">403: </a>  <A href="../../../../../docs/manualpages/Profiling/PetscLogInfo.html#PetscLogInfo">PetscLogInfo</A>(0,<font color="#666666">"Getting Matlab array %s\n"</font>,name);
 
383
<a name="line404">404: </a>  mat  = engGetVariable(mengine-&gt;ep,name);
 
384
<a name="line405">405: </a>  <font color="#4169E1">if</font> (!mat) <A href="../../../../../docs/manualpages/Sys/SETERRQ1.html#SETERRQ1">SETERRQ1</A>(1,<font color="#666666">"Unable to get array %s from matlab"</font>,name);
 
385
<a name="line406">406: </a>  <A href="../../../../../docs/manualpages/Sys/PetscMemcpy.html#PetscMemcpy">PetscMemcpy</A>(array,mxGetPr(mat),m*n*<font color="#4169E1">sizeof</font>(<A href="../../../../../docs/manualpages/Sys/PetscScalar.html#PetscScalar">PetscScalar</A>));
 
386
<a name="line407">407: </a>  <A href="../../../../../docs/manualpages/Profiling/PetscLogInfo.html#PetscLogInfo">PetscLogInfo</A>(0,<font color="#666666">"Got Matlab array %s\n"</font>,name);
 
387
<a name="line408">408: </a>  <font color="#4169E1">return</font>(0);
 
388
<a name="line409">409: </a>}
 
389
 
 
390
 
 
391
 
 
392
 
 
393
</pre>
 
394
</body>
 
395
 
 
396
</html>