Sophie

Sophie

distrib > Fedora > 14 > x86_64 > by-pkgid > df736a3bc446df5b16150bebb7296274 > files > 284

DSDP-devel-5.8-2.fc14.i686.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>DSDP: src/sdp/sdpconesetup.c Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">DSDP</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li><a href="dirs.html"><span>Directories</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>Globals</span></a></li>
    </ul>
  </div>
  <div id="nav-path" class="navpath">
    <ul>
      <li class="navelem"><a class="el" href="dir_23046874d7fed141927c769a66d8e3a5.html">src</a>      </li>
      <li class="navelem"><a class="el" href="dir_2c21778722bc8593635d5ebd154ac3f7.html">sdp</a>      </li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="headertitle">
<div class="title">sdpconesetup.c</div>  </div>
</div>
<div class="contents">
<a href="sdpconesetup_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#include &quot;<a class="code" href="dsdpsdp_8h.html" title="Internal SDPCone data structures and routines.">dsdpsdp.h</a>&quot;</span>
<a name="l00002"></a>00002 <span class="preprocessor">#include &quot;<a class="code" href="dsdpsys_8h.html" title="Error handling, printing, and profiling.">dsdpsys.h</a>&quot;</span>
<a name="l00008"></a>00008 <span class="preprocessor">#undef __FUNCT__  </span>
<a name="l00009"></a>00009 <span class="preprocessor"></span><span class="preprocessor">#define __FUNCT__ &quot;DSDPDataTransposeInitialize&quot;</span>
<a name="l00010"></a>00010 <span class="preprocessor"></span>
<a name="l00015"></a><a class="code" href="sdpconesetup_8c.html#a9f90fe14904405597f69159a091603d7">00015</a> <span class="keywordtype">int</span> <a class="code" href="dsdpsdp_8h.html#a121e1aef433daad0b3ebd97a45dc022c" title="Initialize transpose structure for data.">DSDPDataTransposeInitialize</a>(<a class="code" href="structDSDPDataTranspose.html" title="Internal structure for transpose of data.">DSDPDataTranspose</a> *ATranspose){
<a name="l00016"></a>00016   DSDPFunctionBegin;
<a name="l00017"></a>00017   ATranspose-&gt;nnzblocks=0;
<a name="l00018"></a>00018   ATranspose-&gt;nzblocks=0;
<a name="l00019"></a>00019   ATranspose-&gt;idA=0;
<a name="l00020"></a>00020   ATranspose-&gt;idAP=0;
<a name="l00021"></a>00021   ATranspose-&gt;ttnzmat=0;
<a name="l00022"></a>00022   ATranspose-&gt;nnzblocks=0;
<a name="l00023"></a>00023   DSDPFunctionReturn(0);
<a name="l00024"></a>00024 }
<a name="l00025"></a>00025 
<a name="l00026"></a>00026 <span class="preprocessor">#undef __FUNCT__</span>
<a name="l00027"></a>00027 <span class="preprocessor"></span><span class="preprocessor">#define __FUNCT__ &quot;DSDPDataTransposeSetup&quot;</span>
<a name="l00028"></a>00028 <span class="preprocessor"></span>
<a name="l00036"></a><a class="code" href="sdpconesetup_8c.html#a96f674a6d4943dc478003ddf582e0dd6">00036</a> <span class="keywordtype">int</span> <a class="code" href="dsdpsdp_8h.html#a4286c8cd1fea9d84fd03c1ebd0e75343" title="Set up transpose structure for data.">DSDPDataTransposeSetup</a>(<a class="code" href="structDSDPDataTranspose.html" title="Internal structure for transpose of data.">DSDPDataTranspose</a> *ATranspose, <a class="code" href="structSDPblk.html" title="Internal structure for block of semidefinite cone.">SDPblk</a> *blk, <span class="keywordtype">int</span> nblocks, <span class="keywordtype">int</span> m){
<a name="l00037"></a>00037   
<a name="l00038"></a>00038   <span class="keywordtype">int</span> i,ii,kk,vvar,info;
<a name="l00039"></a>00039   <span class="keywordtype">int</span> nnzmats,tnzmats=0;
<a name="l00040"></a>00040   DSDPFunctionBegin;
<a name="l00041"></a>00041 
<a name="l00042"></a>00042   info=<a class="code" href="dsdpsdp_8h.html#a686a5277874324e2c056f97f20ba6bb4" title="Free transpose structure for data.">DSDPDataTransposeTakeDown</a>(ATranspose);DSDPCHKERR(info);
<a name="l00043"></a>00043   <span class="comment">/* Determine sparsity pattern of SDP Data Matrices */</span>
<a name="l00044"></a>00044 
<a name="l00045"></a>00045   DSDPCALLOC2(&amp;ATranspose-&gt;nnzblocks,<span class="keywordtype">int</span>,(m),&amp;info);DSDPCHKERR(info);
<a name="l00046"></a>00046   DSDPCALLOC2(&amp;ATranspose-&gt;nzblocks,<span class="keywordtype">int</span>*,(m),&amp;info);DSDPCHKERR(info);
<a name="l00047"></a>00047   DSDPCALLOC2(&amp;ATranspose-&gt;idA,<span class="keywordtype">int</span>*,(m),&amp;info);DSDPCHKERR(info);
<a name="l00048"></a>00048   ATranspose-&gt;m=m;
<a name="l00049"></a>00049   <span class="keywordflow">for</span> (i=0;i&lt;m;i++){ ATranspose-&gt;nnzblocks[i]=0; }
<a name="l00050"></a>00050   <span class="keywordflow">for</span> (kk=0; kk&lt;nblocks; kk++){
<a name="l00051"></a>00051     info=<a class="code" href="dsdpblock_8c.html#a5b2d38845e4f571e1ca58e7c17e9a593" title="Mark which variable in block have a data matrix.">DSDPBlockDataMarkNonzeroMatrices</a>(&amp;blk[kk].ADATA,ATranspose-&gt;nnzblocks);DSDPCHKERR(info);
<a name="l00052"></a>00052   }
<a name="l00053"></a>00053   <span class="keywordflow">for</span> (tnzmats=0,i=0;i&lt;m;i++){ tnzmats += ATranspose-&gt;nnzblocks[i];}
<a name="l00054"></a>00054 
<a name="l00055"></a>00055   DSDPCALLOC2(&amp;ATranspose-&gt;ttnzmat,<span class="keywordtype">int</span>,tnzmats,&amp;info);DSDPCHKERR(info);
<a name="l00056"></a>00056   ATranspose-&gt;nzblocks[0]=ATranspose-&gt;ttnzmat;
<a name="l00057"></a>00057   <span class="keywordflow">for</span> (i=1;i&lt;m;i++){
<a name="l00058"></a>00058     ATranspose-&gt;nzblocks[i]=ATranspose-&gt;nzblocks[i-1]+ATranspose-&gt;nnzblocks[i-1];
<a name="l00059"></a>00059   }
<a name="l00060"></a>00060 
<a name="l00061"></a>00061   DSDPCALLOC2(&amp;ATranspose-&gt;idAP,<span class="keywordtype">int</span>,tnzmats,&amp;info);DSDPCHKERR(info);
<a name="l00062"></a>00062   ATranspose-&gt;idA[0]=ATranspose-&gt;idAP;
<a name="l00063"></a>00063   <span class="keywordflow">for</span> (i=1;i&lt;m;i++){
<a name="l00064"></a>00064     ATranspose-&gt;idA[i]=ATranspose-&gt;idA[i-1]+ATranspose-&gt;nnzblocks[i-1];
<a name="l00065"></a>00065   }
<a name="l00066"></a>00066 
<a name="l00067"></a>00067   <span class="keywordflow">for</span> (i=0;i&lt;m;i++){ATranspose-&gt;nnzblocks[i]=0;}
<a name="l00068"></a>00068   <span class="keywordflow">for</span> (kk=0; kk&lt;nblocks; kk++){
<a name="l00069"></a>00069     info=<a class="code" href="dsdpblock_8c.html#aa48f55168b6780852229dea20c3f1d38" title="Count how many data matrices are in a block of data.">DSDPBlockCountNonzeroMatrices</a>(&amp;blk[kk].ADATA,&amp;nnzmats);DSDPCHKERR(info);
<a name="l00070"></a>00070     <span class="keywordflow">for</span> (i=0;i&lt;nnzmats;i++){
<a name="l00071"></a>00071       info=<a class="code" href="dsdpblock_8c.html#a4154d7692828019b8f2d0f407310188c" title="Get a data matrix from a block of data.">DSDPBlockGetMatrix</a>(&amp;blk[kk].ADATA,i,&amp;ii,0,0);DSDPCHKERR(info);
<a name="l00072"></a>00072       vvar=ATranspose-&gt;nnzblocks[ii];
<a name="l00073"></a>00073       ATranspose-&gt;nzblocks[ii][vvar]=kk;
<a name="l00074"></a>00074       ATranspose-&gt;idA[ii][vvar]=i;
<a name="l00075"></a>00075       ATranspose-&gt;nnzblocks[ii]++;
<a name="l00076"></a>00076     }
<a name="l00077"></a>00077   }
<a name="l00078"></a>00078 
<a name="l00079"></a>00079   DSDPFunctionReturn(0);
<a name="l00080"></a>00080 }
<a name="l00081"></a>00081 
<a name="l00082"></a>00082 <span class="preprocessor">#undef __FUNCT__  </span>
<a name="l00083"></a>00083 <span class="preprocessor"></span><span class="preprocessor">#define __FUNCT__ &quot;DSDPDataTransposeTakeDown&quot;</span>
<a name="l00084"></a>00084 <span class="preprocessor"></span>
<a name="l00089"></a><a class="code" href="sdpconesetup_8c.html#a9ef8f365ed34a4fdbd391bffe58a75a6">00089</a> <span class="keywordtype">int</span> <a class="code" href="dsdpsdp_8h.html#a686a5277874324e2c056f97f20ba6bb4" title="Free transpose structure for data.">DSDPDataTransposeTakeDown</a>(<a class="code" href="structDSDPDataTranspose.html" title="Internal structure for transpose of data.">DSDPDataTranspose</a> *ATranspose){
<a name="l00090"></a>00090   <span class="keywordtype">int</span> info;
<a name="l00091"></a>00091   DSDPFunctionBegin;
<a name="l00092"></a>00092   DSDPFREE(&amp;ATranspose-&gt;ttnzmat,&amp;info);DSDPCHKERR(info);
<a name="l00093"></a>00093   DSDPFREE(&amp;ATranspose-&gt;idAP,&amp;info);DSDPCHKERR(info);
<a name="l00094"></a>00094   DSDPFREE(&amp;ATranspose-&gt;nzblocks,&amp;info);DSDPCHKERR(info);
<a name="l00095"></a>00095   DSDPFREE(&amp;ATranspose-&gt;nnzblocks,&amp;info);DSDPCHKERR(info);
<a name="l00096"></a>00096   DSDPFREE(&amp;ATranspose-&gt;idA,&amp;info);DSDPCHKERR(info);
<a name="l00097"></a>00097   info=<a class="code" href="dsdpsdp_8h.html#a121e1aef433daad0b3ebd97a45dc022c" title="Initialize transpose structure for data.">DSDPDataTransposeInitialize</a>(ATranspose);DSDPCHKERR(info);
<a name="l00098"></a>00098   DSDPFunctionReturn(0);
<a name="l00099"></a>00099 }
<a name="l00100"></a>00100 
<a name="l00101"></a>00101 <span class="preprocessor">#undef __FUNCT__  </span>
<a name="l00102"></a>00102 <span class="preprocessor"></span><span class="preprocessor">#define __FUNCT__ &quot;DSDPCreateSDPCone&quot;</span>
<a name="l00103"></a>00103 <span class="preprocessor"></span>
<a name="l00113"></a>00113 <span class="keywordtype">int</span> DSDPCreateSDPCone(<a class="code" href="structDSDP__C.html" title="Internal structures for the DSDP solver.">DSDP</a> dsdp, <span class="keywordtype">int</span> blocks, <a class="code" href="structSDPCone__C.html" title="Internal structure for semidefinite cone.">SDPCone</a>* dspcone){
<a name="l00114"></a>00114   <span class="keywordtype">int</span> i,info;
<a name="l00115"></a>00115   <a class="code" href="structSDPCone__C.html" title="Internal structure for semidefinite cone.">SDPCone</a> sdpcone;
<a name="l00116"></a>00116 
<a name="l00117"></a>00117   DSDPFunctionBegin;
<a name="l00118"></a>00118   DSDPCALLOC1(&amp;sdpcone,<span class="keyword">struct</span> <a class="code" href="structSDPCone__C.html" title="Internal structure for semidefinite cone.">SDPCone_C</a>,&amp;info);DSDPCHKERR(info);
<a name="l00119"></a>00119   *dspcone=sdpcone;
<a name="l00120"></a>00120   sdpcone-&gt;keyid=SDPCONEKEY;
<a name="l00121"></a>00121   info=<a class="code" href="dsdpsdp_8h.html#af777a03f652ec0fb5ccc1fc24a193c6b" title="Pass a semidefinite cone to the solver.">DSDPAddSDP</a>(dsdp,sdpcone);DSDPCHKERR(info);
<a name="l00122"></a>00122 
<a name="l00123"></a>00123   info=<a class="code" href="group__DSDPSolution.html#gae212bb3666f5c021f9d310a49438e94b" title="Copy the number of variables y.">DSDPGetNumberOfVariables</a>(dsdp,&amp;sdpcone-&gt;m);DSDPCHKERR(info);
<a name="l00124"></a>00124   DSDPCALLOC2(&amp;sdpcone-&gt;blk,<a class="code" href="structSDPblk.html" title="Internal structure for block of semidefinite cone.">SDPblk</a>,blocks,&amp;info); DSDPCHKERR(info);
<a name="l00125"></a>00125   <span class="keywordflow">for</span> (i=0;i&lt;blocks; i++){
<a name="l00126"></a>00126     info=<a class="code" href="dsdpsdp_8h.html#aba330b2531cd72baf655f261bd57973d" title="Initialize data structures in one block of the cone.">DSDPBlockInitialize</a>(&amp;sdpcone-&gt;blk[i]); DSDPCHKBLOCKERR(i,info);
<a name="l00127"></a>00127   }
<a name="l00128"></a>00128 
<a name="l00129"></a>00129   sdpcone-&gt;nblocks=blocks;
<a name="l00130"></a>00130   sdpcone-&gt;optype=3;
<a name="l00131"></a>00131   info=DSDPUseDefaultDualMatrix(sdpcone); DSDPCHKERR(info);
<a name="l00132"></a>00132 
<a name="l00133"></a>00133   sdpcone-&gt;nn=0;
<a name="l00134"></a>00134   sdpcone-&gt;dsdp=dsdp;
<a name="l00135"></a>00135   info=<a class="code" href="dsdpsdp_8h.html#a121e1aef433daad0b3ebd97a45dc022c" title="Initialize transpose structure for data.">DSDPDataTransposeInitialize</a>(&amp;sdpcone-&gt;ATR); DSDPCHKERR(info);
<a name="l00136"></a>00136   info=DSDPBlockEventZero();DSDPCHKERR(info);
<a name="l00137"></a>00137   info=DSDPDualMatEventZero();DSDPCHKERR(info);
<a name="l00138"></a>00138   info=DSDPVMatEventZero();DSDPCHKERR(info);
<a name="l00139"></a>00139   DSDPFunctionReturn(0);
<a name="l00140"></a>00140 }
<a name="l00141"></a>00141 
<a name="l00142"></a>00142 
<a name="l00143"></a>00143 <span class="keywordtype">int</span> <a class="code" href="sdpconesetup_8c.html#a2b57f5f8c4d3e67caec5ec409afc8bcd" title="Create S1, S2, and DS.">DSDPCreateS</a>(<a class="code" href="structDSDPBlockData.html" title="Internal structure for data in one block of semidefintie.">DSDPBlockData</a>*,<span class="keywordtype">char</span>,<span class="keywordtype">int</span>,<a class="code" href="dsdpvec_8h.html#a421243d35437ad44ded3c1e34198e8e9" title="This object hold m+2 variables: a scaling of C, the y variables, and r.">DSDPVec</a>,<a class="code" href="structDSDPVMat__C.html" title="Dense symmetric matrix for one block in the semidefinite cone.">DSDPVMat</a>,<a class="code" href="structSDPConeVec__C.html" title="Vector whose length corresponds to dimension of a block in a cone.">SDPConeVec</a>,<a class="code" href="structSDPConeVec__C.html" title="Vector whose length corresponds to dimension of a block in a cone.">SDPConeVec</a>,<a class="code" href="structDSDPDualMat__C.html" title="Represents an S matrix for one block in the semidefinite cone.">DSDPDualMat</a>*, <a class="code" href="structDSDPDualMat__C.html" title="Represents an S matrix for one block in the semidefinite cone.">DSDPDualMat</a>*, <a class="code" href="structDSDPDSMat__C.html" title="Symmetric Delta S matrix for one block in the semidefinite cone.">DSDPDSMat</a>*, <span class="keywordtype">void</span>*);
<a name="l00144"></a>00144 
<a name="l00145"></a>00145 <span class="preprocessor">#undef __FUNCT__ </span>
<a name="l00146"></a>00146 <span class="preprocessor"></span><span class="preprocessor">#define __FUNCT__ &quot;DSDPBlockSetup&quot;</span>
<a name="l00147"></a>00147 <span class="preprocessor"></span>
<a name="l00154"></a><a class="code" href="sdpconesetup_8c.html#a186cb249adcc0871dfea7c2390e384ed">00154</a> <span class="keywordtype">int</span> <a class="code" href="sdpconesetup_8c.html#a186cb249adcc0871dfea7c2390e384ed" title="Allocate data structures of one block the cone.">DSDPBlockSetup</a>(<a class="code" href="structSDPblk.html" title="Internal structure for block of semidefinite cone.">SDPblk</a> *blk, <span class="keywordtype">int</span> blockj, <a class="code" href="dsdpvec_8h.html#a421243d35437ad44ded3c1e34198e8e9" title="This object hold m+2 variables: a scaling of C, the y variables, and r.">DSDPVec</a> WY){ 
<a name="l00155"></a>00155   <span class="keywordtype">int</span> n,info,trank,flag;
<a name="l00156"></a>00156   DSDPFunctionBegin;
<a name="l00157"></a>00157   <span class="comment">/*  </span>
<a name="l00158"></a>00158 <span class="comment">  info=DSDPBlockTakeDown(blk);DSDPCHKERR(info);</span>
<a name="l00159"></a>00159 <span class="comment">  */</span>
<a name="l00160"></a>00160   n=blk-&gt;n;
<a name="l00161"></a>00161   info=<a class="code" href="dsdpxmat_8c.html#aae8cc5530449adc05a8f13d7ee56d00a" title="Answer whether the array has been allocated or not.">DSDPVMatExist</a>(blk-&gt;T,&amp;flag);DSDPCHKERR(info);
<a name="l00162"></a>00162   <span class="keywordflow">if</span> (flag==0){
<a name="l00163"></a>00163     info=<a class="code" href="dsdpsdp_8h.html#aff1b2849be280d7a70e9480e4089cd74" title="Allocate V matrix.">DSDPMakeVMat</a>(blk-&gt;format,n,&amp;blk-&gt;T);DSDPCHKERR(info);
<a name="l00164"></a>00164   }
<a name="l00165"></a>00165 
<a name="l00166"></a>00166   info = <a class="code" href="sdpconevec_8c.html#a53a8408afb7550464ba8e0c5ff84f949" title="Allocate array for indices.">DSDPIndexCreate</a>(blk-&gt;n,&amp;blk-&gt;IS);DSDPCHKERR(info);
<a name="l00167"></a>00167   info = SDPConeVecCreate(blk-&gt;n,&amp;blk-&gt;W);DSDPCHKERR(info);
<a name="l00168"></a>00168   info = <a class="code" href="sdpconevec_8c.html#a0b5c0b92c582546c95a5d676a3ed06c4" title="Allocate another vector with the same structure as the first.">SDPConeVecDuplicate</a>(blk-&gt;W,&amp;blk-&gt;W2);DSDPCHKERR(info);
<a name="l00169"></a>00169 
<a name="l00170"></a>00170   <span class="comment">/* Build Lanczos structures */</span>
<a name="l00171"></a>00171   info=<a class="code" href="dsdplanczos_8h.html#a94aaca7c5feb571597a089bc7302a021" title="Set parameter.">DSDPSetMaximumLanczosIterations</a>(&amp;blk-&gt;Lanczos,20); DSDPCHKERR(info);
<a name="l00172"></a>00172   <span class="keywordflow">if</span> (n&gt;30){info=<a class="code" href="dsdplanczos_8h.html#a94aaca7c5feb571597a089bc7302a021" title="Set parameter.">DSDPSetMaximumLanczosIterations</a>(&amp;blk-&gt;Lanczos,20); DSDPCHKERR(info);}
<a name="l00173"></a>00173   <span class="keywordflow">if</span> (n&gt;300){info=<a class="code" href="dsdplanczos_8h.html#a94aaca7c5feb571597a089bc7302a021" title="Set parameter.">DSDPSetMaximumLanczosIterations</a>(&amp;blk-&gt;Lanczos,40); DSDPCHKERR(info);}
<a name="l00174"></a>00174   <span class="keywordflow">if</span> (n&gt;1000){info=<a class="code" href="dsdplanczos_8h.html#a94aaca7c5feb571597a089bc7302a021" title="Set parameter.">DSDPSetMaximumLanczosIterations</a>(&amp;blk-&gt;Lanczos,50); DSDPCHKERR(info);}
<a name="l00175"></a>00175   <span class="keywordflow">if</span> (1){
<a name="l00176"></a>00176     info=<a class="code" href="dsdplanczos_8h.html#a0db98a9eb4ae08a45498bf56de769636" title="Use Lanczos procedure. Assume off tridiagonal entries are zero.">DSDPFastLanczosSetup</a>(&amp;blk-&gt;Lanczos,blk-&gt;W);DSDPCHKERR(info);
<a name="l00177"></a>00177     DSDPLogInfo(0,19,<span class="stringliteral">&quot;SDP Block %d using Fast Lanczos\n&quot;</span>,blockj);
<a name="l00178"></a>00178   } <span class="keywordflow">else</span> {
<a name="l00179"></a>00179     info=<a class="code" href="dsdplanczos_8h.html#af016e5b9270f774d081faff7296f0259" title="Use slowerer but more robust method.">DSDPRobustLanczosSetup</a>(&amp;blk-&gt;Lanczos,blk-&gt;W);DSDPCHKERR(info);
<a name="l00180"></a>00180     DSDPLogInfo(0,19,<span class="stringliteral">&quot;SDP Block %d using Full Lanczos\n&quot;</span>,blockj);
<a name="l00181"></a>00181   }
<a name="l00182"></a>00182 
<a name="l00183"></a>00183   <span class="comment">/* Eigenvalues and Eigenvectors */</span>
<a name="l00184"></a>00184   info=<a class="code" href="dsdpblock_8c.html#acc8cf4482d76bba62bf861f2d2296a78" title="Factor the data matrices.">DSDPBlockFactorData</a>(&amp;blk-&gt;ADATA,blk-&gt;T,blk-&gt;W);DSDPCHKERR(info);
<a name="l00185"></a>00185   info=DSDPBlockDataRank(&amp;blk-&gt;ADATA,&amp;trank,n);DSDPCHKERR(info);
<a name="l00186"></a>00186 
<a name="l00187"></a>00187   info=<a class="code" href="sdpconesetup_8c.html#a2b57f5f8c4d3e67caec5ec409afc8bcd" title="Create S1, S2, and DS.">DSDPCreateS</a>(&amp;blk-&gt;ADATA,blk-&gt;format,trank,WY,blk-&gt;T,blk-&gt;W,blk-&gt;W2,&amp;blk-&gt;S,&amp;blk-&gt;SS,&amp;blk-&gt;DS,0);DSDPCHKERR(info);
<a name="l00188"></a>00188   
<a name="l00189"></a>00189   DSDPFunctionReturn(0);
<a name="l00190"></a>00190 }
<a name="l00191"></a>00191 
<a name="l00192"></a>00192 <span class="preprocessor">#undef __FUNCT__  </span>
<a name="l00193"></a>00193 <span class="preprocessor"></span><span class="preprocessor">#define __FUNCT__ &quot;SDPConeBlockNNZ&quot;</span>
<a name="l00194"></a>00194 <span class="preprocessor"></span><span class="keywordtype">int</span> SDPConeBlockNNZ(<a class="code" href="structSDPblk.html" title="Internal structure for block of semidefinite cone.">SDPblk</a> *blk,<span class="keywordtype">int</span> m){
<a name="l00195"></a>00195   <span class="keywordtype">int</span> i,ii,n,info,nnz,nnzmats,tnnzmats,tnnz=0;
<a name="l00196"></a>00196   <span class="keywordtype">double</span> scl;
<a name="l00197"></a>00197   <a class="code" href="structDSDPDataMat__C.html" title="Symmetric data matrix for one block in the semidefinite cone.">DSDPDataMat</a> AA;
<a name="l00198"></a>00198   DSDPFunctionBegin;
<a name="l00199"></a>00199   nnzmats=blk-&gt;ADATA.nnzmats;tnnzmats=nnzmats;
<a name="l00200"></a>00200   n=blk-&gt;n;
<a name="l00201"></a>00201 
<a name="l00202"></a>00202   <span class="keywordflow">for</span> (i=0;i&lt;nnzmats;i++){
<a name="l00203"></a>00203     info=<a class="code" href="dsdpblock_8c.html#a4154d7692828019b8f2d0f407310188c" title="Get a data matrix from a block of data.">DSDPBlockGetMatrix</a>(&amp;blk-&gt;ADATA,i,&amp;ii,&amp;scl,&amp;AA);DSDPCHKERR(info);
<a name="l00204"></a>00204     <span class="keywordflow">if</span> (ii==0){tnnzmats--; <span class="keywordflow">continue</span>;}
<a name="l00205"></a>00205     <span class="keywordflow">if</span> (ii==m-1){<span class="keywordflow">continue</span>;}
<a name="l00206"></a>00206     info = <a class="code" href="dsdpdatamat_8c.html#ab728c1dc951c326d197490022b917c52" title="Compute the square of the Frobenius norm.">DSDPDataMatCountNonzeros</a>(AA,&amp;nnz,n); DSDPCHKERR(info);
<a name="l00207"></a>00207     tnnz+= (nnz*(tnnzmats-i));
<a name="l00208"></a>00208   }
<a name="l00209"></a>00209   <span class="keywordflow">if</span> (tnnzmats&gt;1){ tnnz=tnnz/((tnnzmats)*(tnnzmats+1)/2); }
<a name="l00210"></a>00210   <span class="keywordflow">if</span> (tnnz&lt;1)  tnnz = 1; 
<a name="l00211"></a>00211   blk-&gt;nnz=tnnz;
<a name="l00212"></a>00212   DSDPFunctionReturn(0);
<a name="l00213"></a>00213 }
<a name="l00214"></a>00214 
<a name="l00215"></a>00215 <span class="preprocessor">#undef __FUNCT__  </span>
<a name="l00216"></a>00216 <span class="preprocessor"></span><span class="preprocessor">#define __FUNCT__ &quot;SDPConeSetup2&quot;</span>
<a name="l00217"></a>00217 <span class="preprocessor"></span>
<a name="l00224"></a><a class="code" href="sdpconesetup_8c.html#a8ef21ade6b5c6fadf5c0af6940c84e29">00224</a> <span class="keywordtype">int</span> <a class="code" href="dsdpsdp_8h.html#a5012d0653a4214916b95fd1548789f0b" title="Allocate data structure of the cone.">SDPConeSetup2</a>(<a class="code" href="structSDPCone__C.html" title="Internal structure for semidefinite cone.">SDPCone</a> sdpcone, <a class="code" href="dsdpvec_8h.html#a421243d35437ad44ded3c1e34198e8e9" title="This object hold m+2 variables: a scaling of C, the y variables, and r.">DSDPVec</a> yy0, <a class="code" href="structDSDPSchurMat__C.html" title="Schur complement matrix whose solution is the Newton direction.">DSDPSchurMat</a> M){  
<a name="l00225"></a>00225   <span class="keywordtype">int</span> kk,n,m,info;
<a name="l00226"></a>00226   <span class="keywordtype">double</span> nn=0;
<a name="l00227"></a>00227   <a class="code" href="structSDPblk.html" title="Internal structure for block of semidefinite cone.">SDPblk</a> *blk;
<a name="l00228"></a>00228   DSDPFunctionBegin;
<a name="l00229"></a>00229   info=DSDPVecGetSize(yy0,&amp;m);DSDPCHKERR(info);
<a name="l00230"></a>00230   <span class="keywordflow">for</span> (kk=0; kk&lt;sdpcone-&gt;nblocks; kk++){
<a name="l00231"></a>00231     blk=&amp;sdpcone-&gt;blk[kk];
<a name="l00232"></a>00232     n=blk-&gt;n;
<a name="l00233"></a>00233     info=SDPConeBlockNNZ(blk,m);DSDPCHKERR(info);
<a name="l00234"></a>00234     info=<a class="code" href="sdpconesetup_8c.html#a186cb249adcc0871dfea7c2390e384ed" title="Allocate data structures of one block the cone.">DSDPBlockSetup</a>(blk,kk,sdpcone-&gt;Work);DSDPCHKERR(info);
<a name="l00235"></a>00235     nn+=n*blk-&gt;gammamu;
<a name="l00236"></a>00236   }
<a name="l00237"></a>00237   sdpcone-&gt;nn=(int)nn;
<a name="l00238"></a>00238   DSDPFunctionReturn(0);
<a name="l00239"></a>00239 }
<a name="l00240"></a>00240 
<a name="l00241"></a>00241 <span class="preprocessor">#undef __FUNCT__  </span>
<a name="l00242"></a>00242 <span class="preprocessor"></span><span class="preprocessor">#define __FUNCT__ &quot;SDPConeSetup&quot;</span>
<a name="l00243"></a>00243 <span class="preprocessor"></span>
<a name="l00249"></a><a class="code" href="sdpconesetup_8c.html#a871866362598869ebdeb3c1e0aa75d06">00249</a> <span class="keywordtype">int</span> <a class="code" href="dsdpsdp_8h.html#aa08e7793b0e39e2280f857a1259f423e" title="Allocate data structure of the cone.">SDPConeSetup</a>(<a class="code" href="structSDPCone__C.html" title="Internal structure for semidefinite cone.">SDPCone</a> sdpcone, <a class="code" href="dsdpvec_8h.html#a421243d35437ad44ded3c1e34198e8e9" title="This object hold m+2 variables: a scaling of C, the y variables, and r.">DSDPVec</a> yy0){
<a name="l00250"></a>00250   <span class="keywordtype">int</span> kk,n,m,info;
<a name="l00251"></a>00251   DSDPFunctionBegin;
<a name="l00252"></a>00252 
<a name="l00253"></a>00253   info = DSDPVecGetSize(yy0,&amp;m);DSDPCHKERR(info);
<a name="l00254"></a>00254   <span class="keywordflow">if</span> (m!=sdpcone-&gt;m+2){DSDPSETERR(8,<span class="stringliteral">&quot;CHECK DIMENSION\n&quot;</span>);}
<a name="l00255"></a>00255   info = DSDPVecDuplicate(yy0,&amp;sdpcone-&gt;Work);DSDPCHKERR(info);
<a name="l00256"></a>00256   info = DSDPVecDuplicate(yy0,&amp;sdpcone-&gt;Work2);DSDPCHKERR(info);
<a name="l00257"></a>00257   info = DSDPVecDuplicate(yy0,&amp;sdpcone-&gt;YY);DSDPCHKERR(info);
<a name="l00258"></a>00258   info = DSDPVecDuplicate(yy0,&amp;sdpcone-&gt;YX);DSDPCHKERR(info);
<a name="l00259"></a>00259   info = DSDPVecDuplicate(yy0,&amp;sdpcone-&gt;DYX);DSDPCHKERR(info);
<a name="l00260"></a>00260   <span class="keywordflow">for</span> (kk=0; kk&lt;sdpcone-&gt;nblocks; kk++){
<a name="l00261"></a>00261     n=sdpcone-&gt;blk[kk].n;
<a name="l00262"></a>00262     info=<a class="code" href="dsdpadddatamat_8c.html#a5d965be4615ce48c2b0bd3d88399a40c" title="Add identify matrix to dual matrix.">SDPConeSetRIdentity</a>(sdpcone,kk,n,1.0);DSDPCHKERR(info);
<a name="l00263"></a>00263   }
<a name="l00264"></a>00264   
<a name="l00265"></a>00265   info=<a class="code" href="dsdpsdp_8h.html#a4286c8cd1fea9d84fd03c1ebd0e75343" title="Set up transpose structure for data.">DSDPDataTransposeSetup</a>(&amp;sdpcone-&gt;ATR,sdpcone-&gt;blk,sdpcone-&gt;nblocks,m); DSDPCHKERR(info);
<a name="l00266"></a>00266   info=DSDPBlockEventInitialize();DSDPCHKERR(info);
<a name="l00267"></a>00267   info=DSDPDualMatEventInitialize();DSDPCHKERR(info);
<a name="l00268"></a>00268   info=DSDPVMatEventInitialize();DSDPCHKERR(info);
<a name="l00269"></a>00269   DSDPFunctionReturn(0);
<a name="l00270"></a>00270 }
<a name="l00271"></a>00271 
<a name="l00272"></a>00272 <span class="preprocessor">#undef __FUNCT__ </span>
<a name="l00273"></a>00273 <span class="preprocessor"></span><span class="preprocessor">#define __FUNCT__ &quot;DSDPBlockInitialize&quot;</span>
<a name="l00274"></a>00274 <span class="preprocessor"></span>
<a name="l00279"></a><a class="code" href="sdpconesetup_8c.html#a6b852a8cecad1f54266a1b1894fde3ba">00279</a> <span class="keywordtype">int</span> <a class="code" href="dsdpsdp_8h.html#aba330b2531cd72baf655f261bd57973d" title="Initialize data structures in one block of the cone.">DSDPBlockInitialize</a>(<a class="code" href="structSDPblk.html" title="Internal structure for block of semidefinite cone.">SDPblk</a> *blk){
<a name="l00280"></a>00280   <span class="keywordtype">int</span> info;
<a name="l00281"></a>00281   DSDPFunctionBegin;
<a name="l00282"></a>00282   blk-&gt;n=0;
<a name="l00283"></a>00283   blk-&gt;format=<span class="charliteral">&#39;N&#39;</span>;
<a name="l00284"></a>00284   blk-&gt;gammamu=1.0;
<a name="l00285"></a>00285   blk-&gt;bmu=0.0;
<a name="l00286"></a>00286   blk-&gt;nnz=10000000;
<a name="l00287"></a>00287 
<a name="l00288"></a>00288   info = <a class="code" href="dsdpdualmat_8c.html#a23fcb33f75e4ba4aa70cf519123745c4" title="Set pointers to null.">DSDPDualMatInitialize</a>(&amp;blk-&gt;S); DSDPCHKERR(info);
<a name="l00289"></a>00289   info = <a class="code" href="dsdpdualmat_8c.html#a23fcb33f75e4ba4aa70cf519123745c4" title="Set pointers to null.">DSDPDualMatInitialize</a>(&amp;blk-&gt;SS); DSDPCHKERR(info);
<a name="l00290"></a>00290   info = <a class="code" href="dsdpdsmat_8c.html#af3f1124787ca6a784818a70fcd7aaa83" title="Set pointers to null.">DSDPDSMatInitialize</a>(&amp;blk-&gt;DS); DSDPCHKERR(info);
<a name="l00291"></a>00291   info = <a class="code" href="dsdpxmat_8c.html#a0088d6c397591c98f9e52a019c385304" title="Set pointers to null.">DSDPVMatInitialize</a>(&amp;blk-&gt;T); DSDPCHKERR(info);
<a name="l00292"></a>00292   info = <a class="code" href="dsdplanczos_8h.html#a5f6b8919f166ba6149cf12e71b8d3bca" title="Initialize Lanczos structure.">DSDPLanczosInitialize</a>(&amp;blk-&gt;Lanczos); DSDPCHKERR(info);
<a name="l00293"></a>00293   info = <a class="code" href="dsdpblock_8c.html#a45c16dcc217a9865cbe223bcf7b4d603" title="Set pointers to null.">DSDPBlockDataInitialize</a>(&amp;blk-&gt;ADATA); DSDPCHKERR(info);
<a name="l00294"></a>00294   info = <a class="code" href="sdpconevec_8c.html#aece9ed7b85bae935bfb13788aa0de60c" title="Set structure pointers to 0.">DSDPIndexInitialize</a>(&amp;blk-&gt;IS); DSDPCHKERR(info);
<a name="l00295"></a>00295   DSDPFunctionReturn(0);
<a name="l00296"></a>00296 }
<a name="l00297"></a>00297   
<a name="l00298"></a>00298 <span class="preprocessor">#undef __FUNCT__  </span>
<a name="l00299"></a>00299 <span class="preprocessor"></span><span class="preprocessor">#define __FUNCT__ &quot;DSDPBlockTakeDown&quot;</span>
<a name="l00300"></a>00300 <span class="preprocessor"></span>
<a name="l00305"></a><a class="code" href="sdpconesetup_8c.html#a0d09bd6d03e468abb4a7fc393e181821">00305</a> <span class="keywordtype">int</span> <a class="code" href="dsdpsdp_8h.html#ad61e0abe2e4377911e6e75f6bf34a678" title="Free data structures in one block of the cone.">DSDPBlockTakeDown</a>(<a class="code" href="structSDPblk.html" title="Internal structure for block of semidefinite cone.">SDPblk</a> *blk){
<a name="l00306"></a>00306   <span class="keywordtype">int</span> info;
<a name="l00307"></a>00307   DSDPFunctionBegin;
<a name="l00308"></a>00308   <span class="keywordflow">if</span> (!blk){DSDPFunctionReturn(0);}
<a name="l00309"></a>00309   info=<a class="code" href="dsdpblock_8c.html#afe404f36fc31fa861ff1100777171941" title="Free structures in block of data.">DSDPBlockTakeDownData</a>(&amp;blk-&gt;ADATA);DSDPCHKERR(info);
<a name="l00310"></a>00310   info=SDPConeVecDestroy(&amp;blk-&gt;W);DSDPCHKERR(info);
<a name="l00311"></a>00311   info=SDPConeVecDestroy(&amp;blk-&gt;W2);DSDPCHKERR(info);
<a name="l00312"></a>00312   info=<a class="code" href="sdpconevec_8c.html#a21a43b855d553444080b135912c2227d" title="Deallocate memory.">DSDPIndexDestroy</a>(&amp;blk-&gt;IS);DSDPCHKERR(info);
<a name="l00313"></a>00313   info=<a class="code" href="dsdplanczos_8h.html#a13450b87544302fa3e6ceda031189a7a" title="Free data structure.">DSDPLanczosDestroy</a>(&amp;blk-&gt;Lanczos);DSDPCHKERR(info);
<a name="l00314"></a>00314   info=<a class="code" href="dsdpdualmat_8c.html#aa27a146654de21980c02f192660550ab" title="Free the matrix structure.">DSDPDualMatDestroy</a>(&amp;blk-&gt;SS);DSDPCHKERR(info);
<a name="l00315"></a>00315   info=<a class="code" href="dsdpdualmat_8c.html#aa27a146654de21980c02f192660550ab" title="Free the matrix structure.">DSDPDualMatDestroy</a>(&amp;blk-&gt;S);DSDPCHKERR(info);
<a name="l00316"></a>00316   info=<a class="code" href="dsdpdsmat_8c.html#ab3e28c12ae70491cc1fb6d0e4024757a" title="Free the data structure.">DSDPDSMatDestroy</a>(&amp;blk-&gt;DS);DSDPCHKERR(info);
<a name="l00317"></a>00317   info=<a class="code" href="dsdpxmat_8c.html#acb23f3beb4969a6d69d1e3af7ccba034" title="Deallocate matrix.">DSDPVMatDestroy</a>(&amp;blk-&gt;T);DSDPCHKERR(info);
<a name="l00318"></a>00318   DSDPFunctionReturn(0);
<a name="l00319"></a>00319 }
<a name="l00320"></a>00320 
<a name="l00321"></a>00321 <span class="preprocessor">#undef __FUNCT__  </span>
<a name="l00322"></a>00322 <span class="preprocessor"></span><span class="preprocessor">#define __FUNCT__ &quot;DSDPConeTakeDown&quot;</span>
<a name="l00323"></a>00323 <span class="preprocessor"></span>
<a name="l00328"></a><a class="code" href="sdpconesetup_8c.html#a000169a392448536951f6429f357d140">00328</a> <span class="keywordtype">int</span> <a class="code" href="sdpconesetup_8c.html#a000169a392448536951f6429f357d140" title="Free data structure of the cone.">DSDPConeTakeDown</a>(<a class="code" href="structSDPCone__C.html" title="Internal structure for semidefinite cone.">SDPCone</a> sdpcone){
<a name="l00329"></a>00329   <span class="keywordtype">int</span> blockj,info;
<a name="l00330"></a>00330   DSDPFunctionBegin;
<a name="l00331"></a>00331   <span class="keywordflow">for</span> (blockj=0; blockj&lt;sdpcone-&gt;nblocks; blockj++){
<a name="l00332"></a>00332     info=<a class="code" href="dsdpsdp_8h.html#ad61e0abe2e4377911e6e75f6bf34a678" title="Free data structures in one block of the cone.">DSDPBlockTakeDown</a>(&amp;sdpcone-&gt;blk[blockj]);DSDPCHKERR(info);
<a name="l00333"></a>00333   }
<a name="l00334"></a>00334   info=DSDPVecDestroy(&amp;sdpcone-&gt;Work);DSDPCHKERR(info);
<a name="l00335"></a>00335   info=DSDPVecDestroy(&amp;sdpcone-&gt;Work2);DSDPCHKERR(info);
<a name="l00336"></a>00336   info=DSDPVecDestroy(&amp;sdpcone-&gt;YY);DSDPCHKERR(info);
<a name="l00337"></a>00337   info=DSDPVecDestroy(&amp;sdpcone-&gt;YX);DSDPCHKERR(info);
<a name="l00338"></a>00338   info=DSDPVecDestroy(&amp;sdpcone-&gt;DYX);DSDPCHKERR(info);
<a name="l00339"></a>00339   info=<a class="code" href="dsdpsdp_8h.html#a686a5277874324e2c056f97f20ba6bb4" title="Free transpose structure for data.">DSDPDataTransposeTakeDown</a>(&amp;sdpcone-&gt;ATR);DSDPCHKERR(info);
<a name="l00340"></a>00340   DSDPFunctionReturn(0);
<a name="l00341"></a>00341 }
<a name="l00342"></a>00342 
<a name="l00343"></a>00343 <span class="preprocessor">#undef __FUNCT__  </span>
<a name="l00344"></a>00344 <span class="preprocessor"></span><span class="preprocessor">#define __FUNCT__ &quot;SDPConeDestroy&quot;</span>
<a name="l00345"></a>00345 <span class="preprocessor"></span>
<a name="l00350"></a><a class="code" href="sdpconesetup_8c.html#a875286e811bbc54ea7f54e272028f8ec">00350</a> <span class="keywordtype">int</span> <a class="code" href="dsdpsdp_8h.html#a7dee9dca02543b2809d76d7a6e0493d8" title="Free data structure of the cone.">SDPConeDestroy</a>(<a class="code" href="structSDPCone__C.html" title="Internal structure for semidefinite cone.">SDPCone</a> sdpcone){
<a name="l00351"></a>00351   <span class="keywordtype">int</span> blockj,info;
<a name="l00352"></a>00352   DSDPFunctionBegin;
<a name="l00353"></a>00353   info=<a class="code" href="sdpconesetup_8c.html#a000169a392448536951f6429f357d140" title="Free data structure of the cone.">DSDPConeTakeDown</a>(sdpcone);DSDPCHKERR(info);
<a name="l00354"></a>00354   <span class="keywordflow">for</span> (blockj=0; blockj&lt;sdpcone-&gt;nblocks; blockj++){
<a name="l00355"></a>00355     info=<a class="code" href="dsdpblock_8c.html#a308bb1d9ec0ec39af374e457934552dd" title="Free the data matrices.">DSDPBlockDataDestroy</a>(&amp;sdpcone-&gt;blk[blockj].ADATA);DSDPCHKERR(info);
<a name="l00356"></a>00356   }
<a name="l00357"></a>00357   DSDPFREE(&amp;sdpcone-&gt;blk,&amp;info);DSDPCHKERR(info);
<a name="l00358"></a>00358   DSDPFREE(&amp;sdpcone,&amp;info);DSDPCHKERR(info);
<a name="l00359"></a>00359   info=DSDPBlockEventZero();DSDPCHKERR(info);
<a name="l00360"></a>00360   info=DSDPDualMatEventZero();DSDPCHKERR(info);
<a name="l00361"></a>00361   info=DSDPVMatEventZero();DSDPCHKERR(info);
<a name="l00362"></a>00362   DSDPFunctionReturn(0);
<a name="l00363"></a>00363 }
<a name="l00364"></a>00364 
</pre></div></div>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jun 8 2011 for DSDP by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>