Tuesday, August 16, 2016

Summary

It's exciting that the GSoC project is going to the end. 
My code is available via this link.

During the whole periods, the following milestones are achieved:

  • A DUNE-style B-Spline geometry interface including
    GlobalCoordinate center () const
    int corners () const
    GlobalCoordinate corner (int i) constDune::GeometryType type () const
    bool  affine () const
    GlobalCoordinate  global (const LocalCoordinate &local) const
    const JacobianTransposed & jacobianTransposed (const LocalCoordinate &local) const
    const JacobianInverseTransposed &  jacobianInverseTransposed (const LocalCoordinate &local) const
    ctype  integrationElement (const LocalCoordinate &local) const
    Among these functions, the 
    global and jacobianTransposed are the two key functions.

  • A DUNE-style NURBS geometry interface(same as the previous one)
  • A basic DUNE grid manager for B-Spline patch including the follwoing components(classes):
    grid
    leafgridview
    entity
    leafiterator
    indexset
  • A basic DUNE grid manager for NURBS patch(same as the previous one)

The following task is not completed yet,
  • Make the VTKwriter applicable for the B-Spline and NURBS grid view
    This task involves creating a vertex entity and iterator. I'm still debugging on it.
During the three months, my mentors and the whole community as well were very helpful. They answered my basic question with great patience and always tried to help me with all their effort. I would like to thank for their patience and help first.

Previously I was mainly dealing with algorithms implementation with the help of existing libraries. This is the first time to think from the developer perspective, which requires much more programming skills. It's a good opportunity for me to practice my hands-on skills(meta-programming, interfaces), foster good programming habits(programming style, comments, consistency). As a result, for the first two milestone regarding spline algorithms, although more codes were involves, I faces less challenges. But I encountered much more difficulty for the gird structure construction. On the one hand, this is due to my skill inefficiency; on the other hand, I feel it's the requirement are not quite clear. So in the future, it would be more beneficial for new developer to have a tutorial on how to make a basic DUNE gird. This is my suggestion.

In the end, thanks for google for organizing this awesome event!

Thursday, August 4, 2016

Continue NURBS gird manager with entity and iterator class

This week I continue my work with NURBS gird manager. The following work have been done
  • Created the NURBSGridLeafIterator class
     template<int codim, typename NURBSGridView, typename NURBSEntity>
    class NURBSGridLeafIterato
    which allows iteration over all entities of a NURBSGridView
  • Modified the NURBSPatch class and NURBSGrid
    to fit the newly-add features
  • Created a NURBSGridLeafIndexSet
    template<class GridImp>
    class NURBSGridLeafIndexSet
    to return the index of a given entity
  • Added test case for NURBS grid
The implementation details are hidden as it is analogous to what I did for BSpline grid.

The next step is to test whether what we had is enough for a VTKwriter. Now in our test code, we iterate over all elements of a BSpline/NURBS grid we created, and writes the resulting geometry manually to a VTK file. DUNE provides a VTKwriter which is able to write the elements of a gridView automatically to a VTK file. But we don't know yet what interfaces are required to make the VTKwriter work expected. So we will try to debug into and see what new classes and functions are needed.