<div dir="ltr"><a href="https://petsc.org/main/docs/manualpages/Mat/MatLoad/">https://petsc.org/main/docs/manualpages/Mat/MatLoad/</a><br><div><br></div>"Loads a matrix that has been stored in binary/HDF5 format with MatView()."<div><br></div><div>But there is a discussion on matlab format here.</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, May 16, 2022 at 11:03 AM Martin Schiødt via petsc-users <<a href="mailto:petsc-users@mcs.anl.gov">petsc-users@mcs.anl.gov</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
  

    
  
  <div>
    <p>Dear petsc-expert!</p>
    <p>I am having trouble loading the contents of my hdf5 dataset -
      "Vp" - into the Mat object Vp using MatLoad. When I try to do
      this, I get the error message displayed below. </p>
    <p><img src="cid:180cdc71e447f3dfd1c1" alt=""></p>
    <p>The hdf5 file I am trying to read, was originally created in
      Matlab with their built in function h5write. I am wondering
      whether this is the source of the problem? Nonetheless, a
      screendump of the file's structure can be seen here:</p>
    <p><img src="cid:180cdc71e44327bc5062" alt=""></p>
    <p>I have tried following a few of your examples as inspiration,
      however there may of course still be a problem in my code. I have
      appended the code below here (it is a short program, so I hope it
      is ok! - and please disregard the red error-squiggles - these are
      not true).</p>
    <p>I hope you are able to help with my problem.</p>
    <p>Best regards,</p>
    <p>Martin</p>
    <div style="color:rgb(212,212,212);background-color:rgb(30,30,30);font-family:"Droid Sans Mono","monospace",monospace;font-weight:normal;font-size:14px;line-height:19px;white-space:pre-wrap"><div><span style="color:rgb(86,156,214)">static</span><span style="color:rgb(212,212,212)"> </span><span style="color:rgb(86,156,214)">char</span><span style="color:rgb(212,212,212)"> </span><span style="color:rgb(156,220,254)">help</span><span style="color:rgb(86,156,214)">[]</span><span style="color:rgb(212,212,212)"> = </span><span style="color:rgb(206,145,120)">"Reads a HDF5 into a PETSC matrix.</span><span style="color:rgb(215,186,125)">\n\n</span><span style="color:rgb(206,145,120)">"</span><span style="color:rgb(212,212,212)">;</span></div>
<div><span style="color:rgb(197,134,192)">#include</span><span style="color:rgb(86,156,214)"> </span><span style="color:rgb(206,145,120)">"../../petsc/include/petscsys.h"</span></div><div><span style="color:rgb(197,134,192)">#include</span><span style="color:rgb(86,156,214)"> </span><span style="color:rgb(206,145,120)">"../../petsc/include/petscmat.h"</span></div><div><span style="color:rgb(197,134,192)">#include</span><span style="color:rgb(86,156,214)"> </span><span style="color:rgb(206,145,120)">"../../petsc/include/petscviewerhdf5.h"</span></div>
<div><span style="color:rgb(86,156,214)">int</span><span style="color:rgb(212,212,212)"> </span><span style="color:rgb(220,220,170)">main</span><span style="color:rgb(212,212,212)"> (</span><span style="color:rgb(86,156,214)">int</span><span style="color:rgb(212,212,212)"> </span><span style="color:rgb(156,220,254)">argc</span><span style="color:rgb(212,212,212)">, </span><span style="color:rgb(86,156,214)">char</span><span style="color:rgb(212,212,212)"> **</span><span style="color:rgb(156,220,254)">argv</span><span style="color:rgb(212,212,212)">)</span></div><div><span style="color:rgb(212,212,212)">{</span></div><div><span style="color:rgb(212,212,212)">    </span><span style="color:rgb(156,220,254)">Mat</span><span style="color:rgb(212,212,212)"> Vp;</span></div><div><span style="color:rgb(212,212,212)">    </span><span style="color:rgb(86,156,214)">PetscViewer</span><span style="color:rgb(212,212,212)"> viewer;</span></div><div><span style="color:rgb(212,212,212)">    </span><span style="color:rgb(86,156,214)">char</span><span style="color:rgb(212,212,212)"> </span><span style="color:rgb(156,220,254)">file</span><span style="color:rgb(212,212,212)">[</span><span style="color:rgb(86,156,214)">PETSC_MAX_PATH_LEN</span><span style="color:rgb(212,212,212)">]=</span><span style="color:rgb(206,145,120)">"../../Desktop/OnewaySimulations/Realization_1.h5"</span><span style="color:rgb(212,212,212)">;</span></div><div><span style="color:rgb(212,212,212)">    </span><span style="color:rgb(86,156,214)">char</span><span style="color:rgb(212,212,212)"> </span><span style="color:rgb(156,220,254)">Vp_name</span><span style="color:rgb(212,212,212)">[</span><span style="color:rgb(181,206,168)">128</span><span style="color:rgb(212,212,212)">]=</span><span style="color:rgb(206,145,120)">"Vp"</span><span style="color:rgb(212,212,212)">;</span></div><div><span style="color:rgb(212,212,212)">    </span><span style="color:rgb(86,156,214)">PetscBool</span><span style="color:rgb(212,212,212)"> flg;</span></div>
<div><span style="color:rgb(212,212,212)">    </span><span style="color:rgb(220,220,170)">PetscInitialize</span><span style="color:rgb(212,212,212)">(&</span><span style="color:rgb(156,220,254)">argc</span><span style="color:rgb(212,212,212)">, &</span><span style="color:rgb(156,220,254)">argv</span><span style="color:rgb(212,212,212)">, (</span><span style="color:rgb(86,156,214)">char</span><span style="color:rgb(212,212,212)">*)</span><span style="color:rgb(181,206,168)">0</span><span style="color:rgb(212,212,212)">, </span><span style="color:rgb(156,220,254)">help</span><span style="color:rgb(212,212,212)">);</span></div>
<div><span style="color:rgb(212,212,212)">    </span><span style="color:rgb(106,153,85)">// Determine from which file we read the matrix</span></div><div><span style="color:rgb(212,212,212)">    </span><span style="color:rgb(220,220,170)">PetscOptionsGetString</span><span style="color:rgb(212,212,212)">(</span><span style="color:rgb(86,156,214)">NULL</span><span style="color:rgb(212,212,212)">,</span><span style="color:rgb(86,156,214)">NULL</span><span style="color:rgb(212,212,212)">,</span><span style="color:rgb(206,145,120)">"-f"</span><span style="color:rgb(212,212,212)">,</span><span style="color:rgb(156,220,254)">file</span><span style="color:rgb(212,212,212)">,</span><span style="color:rgb(86,156,214)">sizeof</span><span style="color:rgb(212,212,212)">(</span><span style="color:rgb(156,220,254)">file</span><span style="color:rgb(212,212,212)">),&flg);</span></div>
<div><span style="color:rgb(212,212,212)">    </span><span style="color:rgb(106,153,85)">// Read </span></div><div><span style="color:rgb(212,212,212)">    </span><span style="color:rgb(220,220,170)">PetscViewerHDF5Open</span><span style="color:rgb(212,212,212)">(</span><span style="color:rgb(156,220,254)">PETSC_COMM_WORLD</span><span style="color:rgb(212,212,212)">,</span><span style="color:rgb(156,220,254)">file</span><span style="color:rgb(212,212,212)">,</span><span style="color:rgb(79,193,255)">FILE_MODE_READ</span><span style="color:rgb(212,212,212)">,&viewer);</span></div>
<div><span style="color:rgb(212,212,212)">    </span><span style="color:rgb(106,153,85)">// Load matrix</span></div><div><span style="color:rgb(212,212,212)">    </span><span style="color:rgb(220,220,170)">MatCreate</span><span style="color:rgb(212,212,212)">(</span><span style="color:rgb(156,220,254)">PETSC_COMM_WORLD</span><span style="color:rgb(212,212,212)">, &Vp);</span></div><div><span style="color:rgb(212,212,212)">    </span><span style="color:rgb(220,220,170)">PetscObjectSetName</span><span style="color:rgb(212,212,212)">((</span><span style="color:rgb(86,156,214)">PetscObject</span><span style="color:rgb(212,212,212)">)Vp, </span><span style="color:rgb(156,220,254)">Vp_name</span><span style="color:rgb(212,212,212)">);</span></div><div><span style="color:rgb(212,212,212)">    </span><span style="color:rgb(220,220,170)">MatSetFromOptions</span><span style="color:rgb(212,212,212)">(Vp);</span></div><div><span style="color:rgb(212,212,212)">    </span><span style="color:rgb(220,220,170)">MatLoad</span><span style="color:rgb(212,212,212)">(Vp,viewer);</span></div>
<div><span style="color:rgb(212,212,212)">    </span><span style="color:rgb(106,153,85)">// Destroy</span></div><div><span style="color:rgb(212,212,212)">    </span><span style="color:rgb(220,220,170)">PetscViewerDestroy</span><span style="color:rgb(212,212,212)">(&viewer);</span></div><div><span style="color:rgb(212,212,212)">    </span><span style="color:rgb(220,220,170)">MatDestroy</span><span style="color:rgb(212,212,212)">(&Vp);</span></div><div><span style="color:rgb(212,212,212)">    </span></div><div><span style="color:rgb(212,212,212)">    </span><span style="color:rgb(220,220,170)">PetscFinalize</span><span style="color:rgb(212,212,212)">();</span></div><div><span style="color:rgb(212,212,212)">    </span><span style="color:rgb(197,134,192)">return</span><span style="color:rgb(212,212,212)"> </span><span style="color:rgb(181,206,168)">0</span><span style="color:rgb(212,212,212)">;</span></div><div><span style="color:rgb(212,212,212)">}</span></div></div>
  </div>
</blockquote></div>