Open potto1 opened 6 years ago
Sounds good.
And just as a reminder: As long as ElementIga
implements ElementInterface
, everything like assembly/numbering/visualization/... should be fine. So there is no need to follow the implementation of MeshFem
just for the reason of the two to look similar. Just some hints to think about:
Following the idea of @Psirus in your previous issue #187, we could rather name the methods ControlPointsTotal()
, which I would like.
Maybe there is no problem in copying MeshIga
and copy construction/assignment may be allowed, if that helps somehow
A std::vector
may replace the ValueVector
in some cases. (Definitely for mWeights
).
The methods from UnitMeshIga
could go into MeshIga
.
MeshFem.h
), by importing them from gmsh (MeshGmsh.h
) or by the static UnitMeshFem.h
methods.How about private members? They allow a more controlled usage of the class. So maybe only member functions modify the Nurbs/Elements and const access to would be enough.
AddNode
and AddElement
may avoid this...)Edit: Just to be clear: There is no need to implement everything mentioned in the points above. It should only remind you to implement things how they fit best for MeshIga
. This is exactly the reason why everything "above" the mesh (cells, assembly...) works with ElementInterface
instead of MeshFem
or ElementIga
. So there is no MeshInterface
or MeshBase
and you can really do whatever fits best for the problem.
Looks good. There is just a question on how to store different patches. How would this be achieved?
There are the two concepts FEM and IGA. In FEM almost everything is implemented on a reference element. In IGA the geometry is described by NURBS and NO reference elements are defined. In order to take a further step towards a functioning IGA implementation I would like to discuss the following architecture consisting of three classes:
1. Class MeshIga: This class stores the Nurbs geometry for each DOF
Nurbs<TDimParameter>
in a ValueVector (see below)mDofNurbs
are stored inmElements
2. Changes in the class Nurbs (Nurbs.h):
3. UnitMeshIga: