[Dune-devel] [GSoC] Status update

Xinyun xinyun.li at fau.de
Tue Jul 5 00:45:54 CEST 2016


Hello Oliver,

Thanks for your detailed and clear decomposition. Sorry I didn't reply 
in time because I just moved into a new flat and didn't have Internet 
last week.
I have mainly followed your steps and uploaded them to Gitlab. Please 
check if I did it correctly.

Now should I create the entity class and complete the leafIterator 
class? Below are my elementary thoughts.
1.For the BSpline entitry class
template<int codim, typename GridImp>
class BSplineGridEntiry

contains a BSplinePatch object pointer and an index indicative of the 
knot span where it locates. Also, a geometry function should be provided 
to access the BSpline geometry the entity binds to.

2. The BSpline leaf itertator class
template<int codim, typename GridImp>
class BSplineGridLeafIterator

should contain an gridView object and an index. The operator* method, an 
operator != method, and an operator++ should be implemented.

Please kindly correct my ideas. If you agree on them, I will start 
implementing them.

Best regards,
Xinyun


On 06/29/2016 06:44 AM, Oliver Sander wrote:
> Hi Xinyun,
>
> too bad you didn't write earlier.  You seem to have gone off slightly in a bad direction.
>
> This just goes to show that it would be really great if we had a text that describes
> how to write grids!
>
> Namely, you do not have to use the DefaultGridView class, and you do not have to implement
> all the GridTraits at once.  Here is my proposal for how to proceed in small steps:
>
> 1) Write a class
>
> template <int dim, int dimworld>
> class BSplineGrid;
>
> with a constructor that accepts all information needed to setup a B-spline patch.
>
> 2)  Write a class
>
> template <int dim, int dimworld>  // more parameters, if needed
> class BSplineLeafGridView;
>
> with a constructor that accepts all information needed to setup a B-spline patch.
>
> 3) The BSplineGrid class gets a data member 'BSplineLeafGridView leafGridView_'.
>
> Make the following snippet compile
>
> BSplineGrid<2,3> grid;
> auto gridView = grid.leafGridView();  // returns the BSplineLeafGridView by value
>
> 4) Write an empty class
>
> template <int codim, int GridImp>  // more parameters, if needed
> class BSplineGridLeafIterator;
>
> 5) Make the BSplineLeafGridView export the type of the iterator:
>
> The following typedef should return the type of the new iterator
>
> template <int codim>
> using NewIterator = BSplineLeafGridView::Codim<codim>::Iterator;
>
>
> These should all be reasonably easy to do.  I need to go now, but I can add more steps
> later today.  If you want we can have another phone call, but that would practically
> have to be tomorrow between 14:00 and 16:00.  After that I am unavailable until next
> wednesday.  Or maybe one of the other mentors can step in.
>
> Cheers,
> Oliver
>
>
>
> On 27.06.2016 16:55, Xinyun wrote:
>> Hi Oliver,
>>
>> Sorry I did not report my latest progress to you as I really feel stuck somehow.
>>
>> Last week, I spend quite some time to read and understand the source code of onedgird and vtkwriter as well. I found for most girds they use the defaultGridView which takes the gird type as a template parameter. It means that we don't need to manually implement a specific girdView but we need to implement all the grid traits. It seems that vtkwriter requires all or most gird traits specifications.  So I decided to set the vtkwriter as a long term goal in the very end.
>>
>> Then I tried to decompose the long term goal into realistic small ones. Having every trait implemented is not realistic for me in a short time so I picked out three important traits in a priority order: gridentity, gridLeafIterator, gridIndexSet. It doesn't mean the others are not needed, for example, girdintersectioniterator.
>>
>> Aftereards, I attempted to imitate the entity implementation of onegrid. But I found the OneDGridEntity is inherited from the EntityDefaultImplementation and wraps the OneDEntityImp object. Another class
>> OneDGridEntityPointer then wraps a OneDGridEntity object and is the base class for the gridLeafIterator. These relations may be very clear to experienced dune develops but it really took me a while to figure them out. Then I have doubts on how to define a B-Spline entity. In isogemetric analysis, the knot span is considered as the element in finite element analysis. So should I take each knot as a vertex(0-dimension entity) and every possible knot cube(with multiplications) as an element(1-dimension entity)? Or do I just need the element since the vertex doesn't make a lot of sense?
>>
>> Please correct me if I made any mistake or I'm going to a total wrong direction. I feel very sorry that I am moving slowly. Now I am still working on the BSplinePatchEntityImp, BSplinePatchEntity and BSplinePatchEntityPointer. I hope very much that I can finish and show you this week.
>>
>> Best regards,
>> Xinyun
>>
>> On 06/26/2016 10:04 PM, Oliver Sander wrote:
>>> Hi Xinyun,
>>>
>>> how are you?  I am writing to enquire about the current status of your GSoC project.
>>> The last time we talked in person we agreed that the next milestone should be a
>>> spline surface that can be written to a file by the standard VTKWriter class.
>>> You have shown good results so far, but in your git repo I see no movement at all
>>> towards the VTK milestone.  Does that all happen on your local machine?  Then please
>>> share the current status with me, to keep me informed.  Or are you stuck with some
>>> questions?  In that case, I am here to help.
>>>
>>> Cheers,
>>> Oliver
>>>
>>>
>>>
>>> _______________________________________________
>>> Dune-devel mailing list
>>> Dune-devel at dune-project.org
>>> http://lists.dune-project.org/mailman/listinfo/dune-devel

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.dune-project.org/pipermail/dune-devel/attachments/20160705/3025069c/attachment.htm>


More information about the Dune-devel mailing list