<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On Aug 20, 2022, at 12:51 PM, Blaise Bourdin <<a href="mailto:bourdin@mcmaster.ca" class="">bourdin@mcmaster.ca</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><meta charset="UTF-8" class=""><div style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 18px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br class="Apple-interchange-newline"><br class=""><blockquote type="cite" class=""><div class="">On Aug 19, 2022, at 3:59 PM, Barry Smith <<a href="mailto:bsmith@petsc.dev" class="">bsmith@petsc.dev</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class=""><br class=""><br class=""><br class="">I think the two solutions are<br class=""><br class="">1)  to have an interface for each object type (they could possibly all call the same fortran stub function (that won't have an interface definition so that the call inside the interface (for each object type) won't issue an error or warning.<span class="Apple-converted-space"> </span><br class=""></div></div></blockquote><div class=""><br class=""></div>That would be the right thing to do. If there is a small number of functions that take a petscobject as argument, I can write the specific and generic interfaces. If we wanted all PetscObjectXXX functions, this would need to be automated<br class=""></div></div></blockquote><div><br class=""></div>Simple python script that loops over PetscObjects and loops over methods; methods could include XXXSetType(), XXXDestroy(). XXXSetFromOptions(), etc. The complication is different objects results belong in different files, the pattern might be</div><div><br class=""></div><div>src/YYY/f90-mod/petscXXX_standard.h90  (where  somehow YYY it is figured out automatically from the file or directory XXX is defined in)</div><div><br class=""></div><div>With a little more work, things like XXXView() (that take additional arguments) could also be generated automatically.</div><div><br class=""></div><div>With yet a little more work the actual Fortran stub functions for many of the xxxmethod_() could be generated automatically.</div><div><br class=""></div><div>This would be cool, we could strip out a bunch of manually written and maintained Fortran interface stuff and not have to add them for each new PetscObject that Matt introduces (saving you work :-)).</div><div><br class=""></div><div>I can help you with this</div><div><br class=""></div><div><blockquote type="cite" class=""><div class=""><div style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 18px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><blockquote type="cite" class=""><div class=""><div class=""><br class="">2) there is a way to use a * (I forgot the exact syntax in an interface to indicate anything can be pass through that variable) but it is not in Fortran 95 (I'm not sure when it was introduced) so it may not be portable enough.<br class=""></div></div></blockquote><div class=""><br class=""></div><div class="">This whole process is a real mess anyway. Not any variable can be passed as a polymorphic pointer because it would be too simple. Perhaps we could have petscobject be a class and all other objects subclasses of petscobject. Or make foretran types C interoperable and pass their address using c_loc</div><div class="">What is the older compiler / standard we are targetting?</div></div></div></blockquote><div><br class=""></div>  Probably PETSc future :-) Fortran bindings. We don't have an official minimum but I think going above 1995 is risky and would prefer not to use Fortran constructs like classes in our current bindings.</div><div><br class=""><blockquote type="cite" class=""><div class=""><div style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 18px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><div class=""><br class=""></div><div class="">Blaise</div><div class=""><br class=""></div></div><div style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 18px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><blockquote type="cite" class=""><div class=""><div class=""><br class="">Barry<br class=""><br class=""><blockquote type="cite" class="">On Aug 19, 2022, at 1:34 PM, Blaise Bourdin <<a href="mailto:bourdin@mcmaster.ca" class="">bourdin@mcmaster.ca</a>> wrote:<br class=""><br class="">Hi,<br class=""><br class="">Does anybody know if there is a magic gfortran flag to get rid of type mismatch warnings?<br class="">These pop up when using PetscObjectSetName with two different petsc objects, for instance.<br class=""><br class=""><span class="Apple-tab-span" style="white-space: pre;"></span>Warning: Type mismatch between actual argument at (1) and actual argument at (2) (TYPE(tdm)/TYPE(tpetscsf)).<br class=""><br class="">Regards,<br class="">Blaise<br class=""><br class="">—<span class="Apple-converted-space"> </span><br class="">Tier 1 Canada Research Chair in Mathematical and Computational Aspects of Solid Mechanics<br class="">Professor, Department of Mathematics & Statistics<br class="">Hamilton Hall room 409A, McMaster University<br class="">1280 Main Street West, Hamilton, Ontario L8S 4K1, Canada<span class="Apple-converted-space"> </span><br class=""><a href="https://www.math.mcmaster.ca/bourdin" class="">https://www.math.mcmaster.ca/bourdin</a><span class="Apple-converted-space"> </span>| +1 (905) 525 9140 ext. 27243<br class=""><br class=""></blockquote><br class=""></div></div></blockquote></div><br class="" style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 18px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;"><div class="" style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 18px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;"><div dir="auto" class="" style="caret-color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div dir="auto" class="" style="caret-color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div dir="auto" class="" style="caret-color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div dir="auto" class="" style="caret-color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div dir="auto" class="" style="caret-color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div dir="auto" class="" style="caret-color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div dir="auto" class="" style="caret-color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div dir="auto" class="" style="caret-color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div dir="auto" class="" style="caret-color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div dir="auto" class="" style="caret-color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div dir="auto" class="" style="caret-color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div dir="auto" class="" style="caret-color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div dir="auto" class="" style="caret-color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div class="">— <br class="">Tier 1 Canada Research Chair in Mathematical and Computational Aspects of Solid Mechanics</div><div class="">Professor, Department of Mathematics & Statistics<br class="">Hamilton Hall room 409A, McMaster University<br class="">1280 Main Street West, Hamilton, Ontario L8S 4K1, Canada <br class=""><a href="https://www.math.mcmaster.ca/bourdin" class="">https://www.math.mcmaster.ca/bourdin</a><span class="Apple-converted-space"> </span>| +1 (905) 525 9140 ext. 27243</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></blockquote></div><br class=""></body></html>