-
-
Notifications
You must be signed in to change notification settings - Fork 186
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix inconsistent ufl usage in examples #3532
base: main
Are you sure you want to change the base?
Conversation
Not sure if it is worth continuing to work on this. Some of the developers are of the opinion that the choice of doing
is to ensure that the weak formulation of the problem is as close to the one on paper as possible, avoiding to have to add a prefix |
Good point, but could we then switch to consistent usage of |
I guess so, unless the list of imported names gets super long. If I were you I would put this on hold until a few other developers have had the opportunity to comment. |
I think having a mixture doesn’t hurt. |
I noticed this by chance when copying the elasticity weak form 2.0 * μ * ufl.sym(grad(v)) + λ * ufl.tr(ufl.sym(grad(v))) * ufl.Identity(len(v)) and it was not clear to me why it didn't just work with an |
Here I agree it is very confusing. It dangerously suggests |
4fee9be
to
2910d49
Compare
Updated all demos that shared this behavior to always follow the style used for the weak form, which I guess is the most important part of the |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good. I would have the opinion to make it unified and do not use ufl.grad, ufl.sym, ...
, but if others like to keep some demos with the explicit names then this is a good compromise.
I quite like the explicitness of |
If I had to pick, I prefer |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I find this confusing and would prefer ufl.foo
. When I read, for example
c, mu = split(u)
it is extremely unclear if split
is a dolfinx
or a ufl
function.
It would be better, in general, if imports from packages other than the 'home' package (dolfinx
in the case of the demos) used namespacing.
When one decides for a consistent style one could also check for it https://docs.astral.sh/ruff/settings/#lint_flake8-import-conventions_banned-from |
I do not have a strong opinion here, so either way looks good. See also https://google.github.io/styleguide/pyguide.html#224-decision |
Some examples use multiple import schemes of
ufl
, this switches to a single import style per example.For example currenltly
demo_elasticity.py
contains:Other examples that share this:
demo_biharmonic.py
demo_cahn-hilliard.py
demo_hdg.py
demo_helmholtz.py
demo_lagrange_variants.py
demo_poisson_matrix_free.py
demo_poisson.py
demo_pyamg.py
demo_stokes.py