Some of changes are probably breaking backward compatibility. New ideas welcome.
[ ] Give connectivity as tuple + other things that does not need calculations.
[ ] Element id required, change problem.elements from array to dict? In output writing we need some order anyway and id-numering elements is quite standard in other FEMs.
[ ] Naming: element.properties -> element.basis.
[ ] More intelligent way to calculate global dofs. Give unknown field name of problem with a tuple of symbols, (:u1, :u2, :u3) for vector field, :T for temperature field and so on. Or ("Displacement 1", "Displacement 2"). For hybrid problems, e.g. displacement + pressure, have ((:u1, :u2, :u3), :p). The question is how to set up this information to BoundaryProblems and how to update elements after global solution.
[ ] A separate algorithm to calculate global dofs for each element before assembly.
[ ] Just like element.fields, also solver and problem have equivalent way to create and update fields.
Some of changes are probably breaking backward compatibility. New ideas welcome.
[ ] Give connectivity as tuple + other things that does not need calculations.
[ ] Element id required, change problem.elements from array to dict? In output writing we need some order anyway and id-numering elements is quite standard in other FEMs.
[ ] Naming: element.properties -> element.basis.
[ ] More intelligent way to calculate global dofs. Give unknown field name of problem with a tuple of symbols, (:u1, :u2, :u3) for vector field, :T for temperature field and so on. Or ("Displacement 1", "Displacement 2"). For hybrid problems, e.g. displacement + pressure, have ((:u1, :u2, :u3), :p). The question is how to set up this information to BoundaryProblems and how to update elements after global solution.
[ ] A separate algorithm to calculate global dofs for each element before assembly.
[ ] Just like element.fields, also solver and problem have equivalent way to create and update fields.