<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <br>
    <span style="color: rgb(34, 34, 34); font-family: arial, sans-serif;
      font-size: small; font-style: normal; font-variant: normal;
      font-weight: normal; letter-spacing: normal; line-height: normal;
      orphans: auto; text-align: start; text-indent: 0px;
      text-transform: none; white-space: normal; widows: 1;
      word-spacing: 0px; -webkit-text-stroke-width: 0px; display: inline
      !important; float: none; background-color: rgb(255, 255, 255);">Hello
      Oliver,</span>
    <div style="color: rgb(34, 34, 34); font-family: arial, sans-serif;
      font-size: small; font-style: normal; font-variant: normal;
      font-weight: normal; letter-spacing: normal; line-height: normal;
      orphans: auto; text-align: start; text-indent: 0px;
      text-transform: none; white-space: normal; widows: 1;
      word-spacing: 0px; -webkit-text-stroke-width: 0px;"><br>
    </div>
    <div style="color: rgb(34, 34, 34); font-family: arial, sans-serif;
      font-size: small; font-style: normal; font-variant: normal;
      font-weight: normal; letter-spacing: normal; line-height: normal;
      orphans: auto; text-align: start; text-indent: 0px;
      text-transform: none; white-space: normal; widows: 1;
      word-spacing: 0px; -webkit-text-stroke-width: 0px;">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.</div>
    <div style="color: rgb(34, 34, 34); font-family: arial, sans-serif;
      font-size: small; font-style: normal; font-variant: normal;
      font-weight: normal; letter-spacing: normal; line-height: normal;
      orphans: auto; text-align: start; text-indent: 0px;
      text-transform: none; white-space: normal; widows: 1;
      word-spacing: 0px; -webkit-text-stroke-width: 0px;">I have mainly
      followed your steps and uploaded them to Gitlab. Please check if I
      did it correctly. <br>
    </div>
    <div style="color: rgb(34, 34, 34); font-family: arial, sans-serif;
      font-size: small; font-style: normal; font-variant: normal;
      font-weight: normal; letter-spacing: normal; line-height: normal;
      orphans: auto; text-align: start; text-indent: 0px;
      text-transform: none; white-space: normal; widows: 1;
      word-spacing: 0px; -webkit-text-stroke-width: 0px;"><br>
    </div>
    <div style="color: rgb(34, 34, 34); font-family: arial, sans-serif;
      font-size: small; font-style: normal; font-variant: normal;
      font-weight: normal; letter-spacing: normal; line-height: normal;
      orphans: auto; text-align: start; text-indent: 0px;
      text-transform: none; white-space: normal; widows: 1;
      word-spacing: 0px; -webkit-text-stroke-width: 0px;">Now should I
      create the entity class and complete the leafIterator class? Below
      are my elementary thoughts.<br>
      1.For the BSpline entitry class<br>
      template<int codim, typename GridImp><br>
      class BSplineGridEntiry<br>
      <br>
      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.<br>
      <br>
      2. The BSpline leaf itertator class<br>
      template<int codim, typename GridImp><br>
      class BSplineGridLeafIterator<br>
        <span style="color: rgb(0, 0, 0); font-family: verdana,
        sans-serif; font-size: 12px; font-style: normal; font-variant:
        normal; font-weight: normal; letter-spacing: normal;
        line-height: normal; orphans: auto; text-align: left;
        text-indent: 0px; text-transform: none; white-space: normal;
        widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px;
        display: inline !important; float: none; background-color:
        rgb(255, 255, 255);"><span class="Apple-converted-space"> </span></span><br>
      should contain an gridView object and an index. The <span
        style="color: rgb(0, 0, 0); font-family: verdana, sans-serif;
        font-size: 12px; font-style: normal; font-variant: normal;
        font-weight: normal; letter-spacing: normal; line-height:
        normal; orphans: auto; text-align: left; text-indent: 0px;
        text-transform: none; white-space: normal; widows: 1;
        word-spacing: 0px; -webkit-text-stroke-width: 0px; display:
        inline !important; float: none; background-color: rgb(255, 255,
        255);">operator* method, an operator != method, and an
        operator++ should be implemented.</span><br>
      <br>
      Please kindly correct my ideas. If you agree on them, I will start
      implementing them.<br>
      <br>
      Best regards,<br>
      Xinyun</div>
    <br>
    <br>
    <div class="moz-cite-prefix">On 06/29/2016 06:44 AM, Oliver Sander
      wrote:<br>
    </div>
    <blockquote
      cite="mid:54877adc-89f1-455c-b667-830587f9e051@tu-dresden.de"
      type="cite">
      <pre wrap="">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:
</pre>
      <blockquote type="cite">
        <pre wrap="">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:
</pre>
        <blockquote type="cite">
          <pre wrap="">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
<a class="moz-txt-link-abbreviated" href="mailto:Dune-devel@dune-project.org">Dune-devel@dune-project.org</a>
<a class="moz-txt-link-freetext" href="http://lists.dune-project.org/mailman/listinfo/dune-devel">http://lists.dune-project.org/mailman/listinfo/dune-devel</a>
</pre>
        </blockquote>
        <pre wrap="">
</pre>
      </blockquote>
      <pre wrap="">
</pre>
    </blockquote>
    <br>
  </body>
</html>