<div dir="ltr"><div>When having lunch at a garden under wonderful autumn sky, I realized that the tutorial examples are designed to test both the real and complex versions and thus they must be general enough. My complaint about the tutourial examples are not justified.</div><div>Cheers,</div><div>Youjun<br></div><div><br></div><br><div class="gmail_quote"><div dir="ltr">On Sat, Aug 4, 2018 at 12:37 PM Dave May <<a href="mailto:dave.mayhem23@gmail.com">dave.mayhem23@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"><br><div class="gmail_extra"><br><div class="gmail_quote">On 4 August 2018 at 19:11, Youjun Hu <span dir="ltr"><<a href="mailto:youjunhu@gmail.com" target="_blank">youjunhu@gmail.com</a>></span> wrote:<br><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>Thank Barry for the clarification.</div><div>In summary, application code developers should choose the specific datatypes (PetscReal and PetscComplex) rather than the more general datatype PetscScalar</div><div>because application codes usually have fixed datatype and the flexibility provided by PetscScalar is for PETSc library developers and usually not for application developers.</div><div>If an application developer uses PetscScalar to declare a variable that is intended by the developer to be complex and is assigned a complex value later in the code and then used in, e.g.,  MatSetValues, but it happens that petsc is configured with --with-scalar-type=real</div><div>then, it is not possible for this error to be detected at compiling time. If the developer specify PetscComplex, then this inconsistency can be seen by compilers and hopefully an error message can be raised during compiling.</div><div><br></div><div>Conclusion: avoid using PetscScalar in application codes unless it is absolutely needed (which is not common). </div></div></blockquote><div><br></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="ltr"><div>The example application codes provided in tutor folds of petsc often use PetscScalar, which is a little misleading and should better be revised to use concrete datatypes.<br></div><div>Correct me if anybody finds this conclusion is not justified.<br></div></div></blockquote><div><br></div>Not justified.</div><div class="gmail_quote"><br><div>Tutorial examples serve several purposes:</div><div><br></div><div>1/ To illustrate the point Barry made. e.g. they demonstrate how a user can write a single application code which works with both complex and real configurations.<br></div><div><br></div><div>2/ The examples are also used in the testing suite which employs a multitude of petsc configuration combinations, e.g single precision {real,complex|, double precision {real,complex}, __float128. <br></div><div><br></div><br></div></div></div>
</blockquote></div></div>