Hi,
here we are developing in C++ and using PETSc encapsulated into C++
classes since 1997.... I am curious about a kind of survey on "How do
you use PETSc in your code?"
I would say that bad code in feasible in almost all languages (yes, we
did that to! :) ): peer code review is there to help prevent that! We
enforce unwanted features (i.e. in our case we forbid exceptions) by git
hooks... Also, some old features are disabled if you use "-std=c++17"
compiler flag for example.Also clang++ can warn you about deprecated
features... and we are forcing to compile without warnings in our CI chain.
I absolutely vote for a C++ API over existing PETSc!
If PETSc is at end encapsulated into Julia or Rust for example, is it
easily callable from C++?
What about the easiness of PETSc++ callable from other languages?
Eric
On 2022-07-25 17:34, Barry Smith wrote:
A major problem with writing a completely new version of a large
code base is that one has to start with nothing and slowly build up to
everything, which can take years. Years in which you need to continue
to maintain the old version, people want to continue to add
functionality to the old version, and people want to continue to use
the old version because the new version doesn't have "the
functionality the user needs" ready yet.
Is there an approach where we can have a new PETSc
API/language/paradigm but start with a very thin layer on the current
API so it just works from day one?
* to this would seem to require if PETSc future is not in C, there
has to be a very, very easy way and low error-prone way to wrap
PETSc current to be called from the new language. For example, how
petsc4py wraps seems too manual and too error-prone. C++ can
easily and low-error prone call C, any other viable candidates?
--
Eric Chamberland, ing., M. Ing
Professionnel de recherche
GIREF/Université Laval
(418) 656-2131 poste 41 22 42