Closed BenjaminRodenberg closed 3 years ago
I see a trend towards "solver-preCICE Adapter" names lately. Just in case this did not already pop up and to document why our adapters are currently named as e.g. "OpenFOAM adapter for preCICE":
I understand that in the case of FEniCS this is maybe a bit less natural, as we also write the solver. But then I am not sure I understand the "-preCICE" part. I guess the problem lies in the "adapter" part of the term in this case, where "example" could be more descriptive (but probably also incomplete).
Also, small question: what is the motivation behind the uppercase "A" in "Adapter"? We currently don't use this form anywhere else.
@MakisH Thanks for the input!
We came across this issue while writing the paper for the FEniCS(-preCICE) adapter. When thinking about the title we revisited the actual name of the software. Currently we are only writing "FEniCS Adapter". However, this does not really tell a lot about what the adapter is actually doing from the perspective of somebody who is not from within the "preCICE bubble". Therefore, we decided to extend the name of the software to "FEniCS-preCICE Adapter".
The "-preCICE" part represents (from my point of view) the for preCICE in "FEniCS adapter for preCICE".
Regarding the small question: I think the uppercase "A" currently has no real reason. "FEniCS-preCICE adapter" is also fine.
@uekerman @IshaanDesai: We did not really discuss the name "FEniCS adapter for preCICE" yet. Did we?
If the issue is people understanding what this is about, then:
I think it's time to properly discuss this :grin: I also had it on the agenda for Wednesday.
Historically, we used all kinds of different names :see_no_evil:
The adapter adapts OpenFOAM, not preCICE, so OpenFOAM adapter. The adapter does everything to make OpenFOAM compatible with preCICE, so for preCICE. One could also say of preCICE (part of the "ecosystem").
I guess those points you could also turn around. I think it's just our preCICE viewpoint. "The adapter adapts preCICE to be usable by OpenFOAM. The adapter does everything to make preCICE compatible with OpenFOAM". That could be the perspective of an OpenFOAM user hearing the first time about preCICE and its adapter, right?
"Solver-preCICE adapter" would be a symmetric name, suggestion by @ajaust. An adapter between the solver and preCICE. Adapting both ways.
Also, small question: what is the motivation behind the uppercase "A" in "Adapter"? We currently don't use this form anywhere else.
Motivation was to make it a proper name.
I guess those points you could also turn around. I think it's just our preCICE viewpoint.
I think that from a software perspective it is clear: an adapter modifies the solver code, which needs to be recompiled (or directly the runtime execution steps). preCICE itself does not even know that this ever happened.
Note that here I assume "adapter = someone that adapts something". Not generically something that goes in between and converts "stuff" from A to B and B to A (unclear what "stuff" is + this is what preCICE is mainly doing).
"The adapter adapts preCICE to be usable by OpenFOAM. The adapter does everything to make preCICE compatible with OpenFOAM". That could be the perspective of an OpenFOAM user hearing the first time about preCICE and its adapter, right?
This sounds wrong to me, due to the "preCICE (code) is not being modified" argument.
"Solver-preCICE adapter" would be a symmetric name, suggestion by @ajaust. An adapter between the solver and preCICE. Adapting both ways.
What is it adapting?
Motivation was to make it a proper name.
I am not sure if this will help solve some problem or if we will end up with both forms being used interchangeably.
Note that here I assume "adapter = someone that adapts something". Not generically something that goes in between and converts "stuff" from A to B and B to A (unclear what "stuff" is + this is what preCICE is mainly doing).
Maybe that's the important point. For me, adapter was always the thing in between. Sth like this. :smile: And "adapting" is what it does = converting data structures, converting coupling logic, etc.
Besides the best choice (if there is a best choice), I think it's time to come up with a consistent naming scheme.
In my opinion, it would be good to have a naming scheme that works for both the software name and the "code name" / "package name".
Paper title: "Software name: Coupling FEniCS to other Simulation Software"
import packagename
The repository names are good. Here, it is ok to take our viewpoint.
Taking into consideration what preCICE does, FEniCS adapter for preCICE does not seem correct to me, because we provide an adapter to couple FEniCS using preCICE and not for preCICE. Using for might confuse a new reader into thinking that preCICE is another solver. A long description would be "Adapter to coupling FEniCS using preCICE". My suggestions would be:
precice/fenics-adapter
keeping it the same as it is now because anyone who reaches the adapter repository is going to reach it via the preCICE project.precice
+ module
/ plug-in
. I think here we can totally avoid the solver name because the user is already going to be setting up the case in the solver environment.I like the new name fenicsprecice
for the package.
For now I would stick with the term "adapt/adapter". Who adapts what for who depends a lot on the software used, perspective taken etc. We could have a long discussion about that some other time/place. :-D
Nevertheless, i like the suggestion of @MakisH to drop the term "adapter" when suitable and just use the name of the package or something similar. That should avoid confusion. Thus, I also like @uekerman's new title suggestion.
As already mentioned I suggested something like "Solver-preCICE adapter" as consistent naming scheme that is somewhat vague what is actually adapted, but reflects the name of the solver it is intended to be used with and points to preCICE. I assumed that "pointing" to preCICE might be needed for users who would be completely new and just stumble over the paper or package description.
Thanks for the opinions :+1: More are very welcome!
Quick remark: if possible we could avoid prepositions in the software's name. Makes it shorter and easier to recognize as a stand-alone name.
For the software name (not a machine-readable name), I would then suggest something like:
preCICE::FEniCS
, preCICE::OpenFOAM
, etc. (no strong feelings for the separator, maybe a simple -
would be more versatile).
preCICE
first:
::
as a "namespace".Since we need a "generally recognizable" software name, let's simply drop the "adapter" part there (and only there): it is anyway a term only we are using in this way and it is already confusing. I think both my view ("adapts the code") and @uekerman's view ("adapts data structures") have cases that don't perfectly fit.
@IshaanDesai:
Taking into consideration what preCICE does, FEniCS adapter for preCICE does not seem correct to me, because we provide an adapter to couple FEniCS using preCICE and not for preCICE.
Fair point, but I would argue that we change the verb in this sentence: couple X using Y
vs adapt X for Y
. I read it as prepare FEniCS for preCICE
.
I agree with your repository and package name suggestions / argumentation.
Software name: preCICE Adapter for FEniCS. I would stress on the capital "A" as we are naming a software, it is the title.
This is mostly a style-related discussion. There are names with lowercase letters, for example "preCICE", "deal.II", etc. But indeed, not a very common pattern. Maybe a useful example for your approach would be "LibreOffice Writer", "LibreOffice Impress" etc.
Related curse in all this discussion: if we use "preCICE" first, it will often be automatically be converted to PreCICE
.
To give a quick summary/overview:
I have the impression that we have concluded on the two points (please "thumbdown" and comment, if you don't agree. "thumbup", if you agree)
fenicsprecice
. In general: Depends on language etc. A packages might be needed for python based solvers like FEniCS, but for OpenFOAM this might not apply. Here, it probably does not make sense to seek for generality.precice/fenics-adapter
. In general: precice/SOLVER-adapter
, e.g. precice/openfoam-adapter
.The "software name" is still open. Here a quick summary of the suggestions (please comment, if I'm missing something):
Do we already have a conclusion on capitalization? I have the impression that we are slightly going into the direction of Adapter, since it is a name.
I have the impression that already what we have in mind with "software name" is a bit vague (at least in https://github.com/precice/fenics-adapter/issues/85#issuecomment-699970636 there are two different interpretations or usages). From my point of view we are looking for a software name that
README.md
or title of the documentation (https://github.com/precice/openfoam-adapter)Do we look for a name that satisfies all three requirements at the same time? Or do we actually look for three different names for different purpose?
I imagine the "software name" as something that could also be on a logo and I agree with the use cases.
No strong feelings for the "A/a", but I would prefer the term to not be there at all (see comment just before yours).
After personal discussion with @uekerman, @MakisH, @atotoun, @KyleDavisSA and @fsimonis we have now a partial conclusion:
This gives us a shorter list of candidates:
Main question is now: Which separator (-
, ::
, ...) do we want to use? preCICE first or solver first?
This might also re-open the discussion about the package name (fenicsprecice
): Calling the software preCICE::FEniCS
, but the package fenicsprecice
is confusing and inconsistent.
preCICE
before the solver (e.g. preCICE/OpenFOAM
) may be a bit too intrusive. The adapter is the smaller and less relevant part compared to the solver.precice/SOLVER-adapter
. Consistency is key, so we should lean towards the same order./
as separator. This again would be consistent with the repository name.adapter
to refer to this type of software.precice.SOVLER
(e.g. precice.fenics
) as a consistent way of naming adapter packages. This also plays nicely with auto completion. Typing precice.
in IDEs should display the solverinterface + all installed python adapters.preCICE-OpenFOAM was developed as part of Gerasimos Chourdakis' master's thesis. It is based on previous work by Lucia Cheung (master's thesis in cooperation with SimScale).
preCICE::OpenFOAM was developed as part of Gerasimos Chourdakis' master's thesis. It is based on previous work by Lucia Cheung (master's thesis in cooperation with SimScale).
preCICE+OpenFOAM was developed as part of Gerasimos Chourdakis' master's thesis. It is based on previous work by Lucia Cheung (master's thesis in cooperation with SimScale).
preCICE/OpenFOAM was developed as part of Gerasimos Chourdakis' master's thesis. It is based on previous work by Lucia Cheung (master's thesis in cooperation with SimScale).
preCICE.OpenFOAM was developed as part of Gerasimos Chourdakis' master's thesis. It is based on previous work by Lucia Cheung (master's thesis in cooperation with SimScale).
Based on this, my proposition is:
Where | What |
---|---|
Adaptee | FEniCS |
Repository | precice/fenics-adapter |
Name in clear text | preCICE/FEniCS |
Package | precice.fencis |
My subjective view:
fenicsprecice
. We could also use
/
as separator. This again would be consistent with the repository name.
I would expect this to have similar issues as ::
(imagine /
in a URL), even though I visually like both separators more than other options. I guess the only viable options are -
and _
.
Placing preCICE before the solver (e.g. preCICE/OpenFOAM) may be a bit too intrusive. The adapter is the smaller and less relevant part compared to the solver.
I prefer FEniCS-preCICE over preCICE-FEniCS, to frontload the important part. In the end, the adapter is mostly about the code we couple, not preCICE. But here, I don't have a strong opinion. I am OK with preCICE-FEniCS if more people prefer this.
I see that you both favor FEniCS-preCICE
with these two contradicting arguments. I guess it feels more natural for most people and I also don't have such a strong preference apart from the reasons I explained above. I am also fine with FEniCS-preCICE
(by coincidence it fits our ATHLET-preCICE)
I don't like any other separator than "minus/hyphen" so far as they are all not allowed punctuation in "normal" language.
I also agree that we should prefer -
(or _
), but let's please not say "minus" out loud. It will be super confusing. :see_no_evil:
At the end of the day, and since everybody is now used to the "adapter" terminology, the originally suggested name "FEniCS-preCICE adapter" is actually not bad. We only need to agree to always mean "the thing that goes in between".
And we could also set that "FEniCS-preCICE adapter" (officially) == "FEniCS adapter" (in the preCICE context) == "the adapter" (in the FEniCS-preCICE context), wherever applicable. As an extension to this, a FEniCS user would probably always call it "the preCICE adapter". I guess this would be the most natural extension of what we already have, even if it maybe not how we could have (in retrospective) designed our language to be consistent across use cases.
An additional thought in favor of the "FEniCS-preCICE" name:
$ sudo apt install fenics-precice
The following NEW packages will be installed:
fenics libprecice2 pyprecice fenics-precice
In this hypothetical scenario, fenics-precice
(or any solver-precice
) is an extension to FEniCS, which uses preCICE. Therefore, it makes sense that the fenics
part comes first.
A short summary on the current state (borrowing table from https://github.com/precice/fenics-adapter/issues/85#issuecomment-701252555) follows below. I'm adding some results from https://github.com/precice/fenics-adapter/issues/85#issuecomment-702780569 and personal discussions from chat.
Where | What |
---|---|
Adaptee | FEniCS |
Repository | precice/fenics-adapter |
(official) Name in clear text | FEniCS-preCICE adapter |
Name (in preCICE context) | FEniCS adapter |
Name (in FEniCS-preCICE context) | the adapter |
Package name | fenicsprecice |
Generally we don't have strict rules for the package name, since this strongly depends on the used programming language, the community and corresponding conventions. Depending on the design of the adapter there might not even be a package, but only a class (Deal.II?) or something completely different is happening (SU2?).
Note: I do not really have a lot of experience with the Deal.II and SU2 adapters, therefore, the examples might be entirely wrong. If somebody with experience can verify the examples and edit this post that would be great :smile:
fenicsprecice
?FEniCS-preCICE
, but I want to avoid fancy spelling (compare import fenics
) and -
is not allowed for python packages. This gives fenics_precice
._
in the package name. Therefore, fenicsprecice
This is just a copy-paste from our chat in order to document which kind of ideas and use-cases generally exist (also outside of the python-FEniCS world):
pip3 install --user fenicsprecice
namespace dealii::precice
spack install openfoam-precice fenics-precice dealii-precice
spack install openfoam+precice dealii+precice
of-precice
Since it looks like we need this, an overview of our current adapters:
On your usage examples:
namespace dealii::precice
: The adapter actually defines its own Adapter
namespace.spack install openfoam-precice fenics-precice dealii-precice
: would just be spack install openfoam fenics dealii
(-
and +
in Spack mean "without"/"with")spack install openfoam+precice dealii+precice
: A Spack user would understand "build OpenFOAM with the preCICE dependency enabled." This requires that we move the adapters into the solver projects (which yes, is our long-term goal).of-precice
: This is a third-party, outdated package and I would not consider it further as an example.I agree with where the discussion is at the moment. The hyphen/minus might look boring, but it is "safe" to use as argued by @uekerman and I also like the that it would work nicely as package name in Ubuntu or other package managers as pointed out by @MakisH .
We want to use the following names for this project:
precice/fenics-adapter
, since this is consistent with the other adapters and represents the perspective of a preCICE developer.fenicsprecice
, since this repesents the perspective of a FEniCS userimport fenicsprecice
.This comes with a few todos:
README.md
)setup.py
import fenicsadapter
toimport fenicsprecice
in corresponding tutorials (e.g. https://github.com/precice/tutorials/blob/master/HT/partitioned-heat/fenics-fenics/heat.py#L30)