periodic link on groups of entities
Hello Anthony and Christophe,
I'm happy to be able to reproduce my 2D grating onelab model with gmshfem (attached c++ source). It relies on Bloch conditions implemented with the new PeriodicLink feature. The results are in perfect agreement with getdp, so thanks!
I found convenient to rely on periodic stuffs from gmsh, although gmshfem does not seem to handle master/slave groups of Physical entities (which often arise in my grating stuffs). To be precise, I was expecting that the combinations of lines 112-113 together with 260-261 in the attached source file would be enough... but I had to (i) specify a physical group with same number as its matching geometrical entity for each curve and (ii) specify the 4 master/slave phase shifts one by one. Maybe there is a way to loop on those but I couldn't find any proper way. Maybe you have an idea about this?
Finally, while coding this program, I wrote a getdp-user list of things I could not find/manage to do in gmshfem (probably in order of descending ease to implement?):
- PerpendicularEdge basis function to handle conical 2D cases (mixed with Hcurl).
- High order Hdiv (for E(Hcurl)-B(Hdiv) formulations).
- PeriodicLink for Hcurl basis
- Rotate TensorFunction (e.g. for spherical PMLs)
- Cross product between two VectorPiecewiseFunction or VectorFunction
- Access tensor components (getdp's CompXX, CompXY, etc)
- With the Gmsh parser, the "Coherence" function is handy, is there an equivalent in c++ (rather than e.g. gmsh::model::occ::fragment({{2, v4}, {2, v5}, {2, v6}, {2, v7}, {2, v8}}, {}, ov, ovv);)?
I'm willing to help developing these features if you find them relevant...
I wish you a very happy festive season in spite of the .
Kind regards, Guillaume