<div dir="ltr">It is a fact of life that some projects just don't have the resources, minimal though they may be, to move everyone to a new PETSc and not maintain "backward compatibility" with older PETSc versions.<div><br></div><div>These MACROs work well and are a fine way to go.</div><div><br></div><div>Note, there were some big changes, bigger than anything before and I would hope bigger than ever again, in Fortran from 3.7: paths for includes changed to deal with package managers and NULL was replaced by typed NULLS (eg, <span style="color:rgb(0,0,0);font-family:Times;font-size:medium">PETSC_NULL_INTEGER, PETSC_NULL_SCALAR...</span>) to get type checking in Fortran. This touches a lot of code and makes a mess of Macros, but it is doable (I've done it). Either way it is a lot more work than is usually required to maintain PETSc interfaces.</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Mar 7, 2020 at 7:25 AM Patrick Sanan <<a href="mailto:patrick.sanan@gmail.com">patrick.sanan@gmail.com</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 dir="ltr">I agree that it's better to upgrade whenever possible, but if for reasons out of your control you find yourself needing to support multiple versions of PETSc,<div>which span API changes, you can use macros that PETSc provides for you, as described here:</div><div><a href="https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Sys/PETSC_VERSION.html" target="_blank">https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Sys/PETSC_VERSION.html</a><br></div><div><br></div><div>I found this handy in a similar situation to yours. There was one lingering production cluster that had an old version of PETSc in a very-convenient-for-users module, even though everywhere else we could use the latest.</div><div><br></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px">#if PETSC_VERSION_GE(3,9,0)<br>call PCFactorSetUpMatSolverType(pc,ierr);CHKERRQ(ierr);<br>#else<br>call PCFactorSetUpMatSolverPackage(pc,ierr);CHKERRQ(ierr); ! PETSc 3.8 and earlier<br>#endif</blockquote><div></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"></blockquote></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Am Fr., 6. März 2020 um 19:15 Uhr schrieb Matthew Knepley <<a href="mailto:knepley@gmail.com" target="_blank">knepley@gmail.com</a>>:<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 dir="ltr"><div dir="ltr">On Fri, Mar 6, 2020 at 12:16 PM baikadi pranay <<a href="mailto:pranayreddy865@gmail.com" target="_blank">pranayreddy865@gmail.com</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto">Hello PETSc users, <div dir="auto"><br></div><div dir="auto">We have a FORTRAN code which uses eigenvalue solver routines. The version of PETSc/SLEPc used is 3.11.1.We would be deploying the code on a cluster which has PETSc/SLEPc version 3.6.4. We were wondering if we need to change any functions or if there is backwards compatibility.</div><div dir="auto"><br></div><div dir="auto">Please let me know if you need any further information. </div></div></blockquote><div><br></div><div>3.6 is 5 years old. It would be easier to just install the new version on the cluster. That would take 20min max.</div><div><br></div><div>However, if you would really like to make it compatible, you can look at the list of changes here: <a href="https://www.mcs.anl.gov/petsc/documentation/changes/index.html" target="_blank">https://www.mcs.anl.gov/petsc/documentation/changes/index.html</a></div><div><br></div><div>  Thanks,</div><div><br></div><div>     Matt</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 dir="auto"><div dir="auto">Thank you,</div><div dir="auto">Pranay.</div></div>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>-- Norbert Wiener</div><div><br></div><div><a href="http://www.cse.buffalo.edu/~knepley/" target="_blank">https://www.cse.buffalo.edu/~knepley/</a><br></div></div></div></div></div></div></div></div>
</blockquote></div>
</blockquote></div>