<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Mar 22, 2019 at 5:17 PM Shashwat Sharma 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>
<div dir="ltr">
<div>
<div class="gmail-m_8348042415777072044m_1083750009899479956gmail_signature">
Hello,</div>
</div>
<div class="gmail-m_8348042415777072044m_1083750009899479956gmail_signature">
<br>
</div>
<div class="gmail-m_8348042415777072044m_1083750009899479956gmail_signature">
I'd like to be able to check if a Mat object has been created and allocated; if it hasn't been created yet, I want to create and allocate it, otherwise I want to reuse the existing allocation.</div></div></div></blockquote><div><br></div><div>Have your constructor initialize it to PETSC_NULL_MAT. And the test with if (m_mat==PETSC_NULL_MAT) MatCreate ....</div><div><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><div dir="ltr">
<div class="gmail-m_8348042415777072044m_1083750009899479956gmail_signature">
<br>
</div>
<div class="gmail-m_8348042415777072044m_1083750009899479956gmail_signature">
The context is that I have a Mat variable declared (but not defined) in a header file, so that it is available to the entire class. It is created (MatCreate) and allocated at a later point in the implementation, and may need to be reused with different values
 several times. But I don't want to allocate it unless it's needed, because it would be quite large.</div>
<div class="gmail-m_8348042415777072044m_1083750009899479956gmail_signature">
<br>
</div>
<div class="gmail-m_8348042415777072044m_1083750009899479956gmail_signature">
Also, I want my destructor to only call MatDestroy on the matrix if it has been created (otherwise it gives seg faults).</div></div></div></blockquote><div><br></div><div>Same, but I think you can call MatDestroy with a NULL matrix. </div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div dir="ltr">
<div class="gmail-m_8348042415777072044m_1083750009899479956gmail_signature">
<br>
</div>
<div class="gmail-m_8348042415777072044m_1083750009899479956gmail_signature">
How can I achieve this?</div>
<div class="gmail-m_8348042415777072044m_1083750009899479956gmail_signature">
<br>
</div>
<div class="gmail-m_8348042415777072044m_1083750009899479956gmail_signature">
Thanks.</div>
<div dir="ltr"><br>
</div>
</div>
</div>

</blockquote></div></div></div></div></div></div>