<div dir="ltr"><div>Hello again!</div><div><br></div><div>Thanks for your reply.</div><div><br></div><div>It cleared in my mind the path to be followed for the isogeometric analysis i.e. through Bézier extraction.So I went through a lot of its theory part as well as the implementation part and scribbled down roughly everything required and the expected outputs and came up with a flow chart present in the attachment.</div><div><br></div><div>Pre-processing part-</div><div>Since the basis functions of isogeometric analysis are related to control points, and not nodes as shape functions of FEA, the input of node coordinates is replaced by coordinates of control points.The element topology is therefore related to the numbering of control points rather than the numbering of element nodes.The isogeometric analysis program based on Bézier extraction will require an extra input, namely the Bézier extraction operators.A question -> are the "readers" mentioned in the project statement related to this part?About reading the data from CAD files?Can you throw some more light on readers?</div><div><br></div><div>Solving part-</div><div>This will mainly contain a shape function routine which generates NURBS basis functions and derivatives in the isogeometric analysis program based on Bézier extraction.I am attaching a flow chart for this also.To form NURBS basis functions based on Bézier extraction using this shape function routine, first the NURBS weights and the element extraction operators from the preprocessing step are called in.The Bézier basis functions and derivatives are calculated in a separate routine, and are also called into the shape function routine.</div><div><br></div><div>Post-processing part-</div><div>As you replied to the rendering question in the previous mail,I re-thought about it and did some further research.So,basically it would include- finding the range of values taken on over a mesh and the location of the extremal values,computing derivative values and inspecting them,dividing the mesh into regions based on scalar values or spatial cuts to make inspection of the quantities defined on the mesh (e.g., stress, strain, temperature) possible.It will write displacements and reactions at the control points,in contrast to FEA which writes these quantities at the nodes. In addition, the program plots NURBS control mesh, Bézier control mesh and Bézier physical mesh. The displacement field is evaluated at the parametric coordinates which equal the nodes of FEA (for the same polynomial order), and plotted in the physical space.A modification is made to the storing of stress values to be able to plot contour plots of the stresses.The stresses are stored reflecting the Gauss points’ alignment relative to each other in the parameter space.</div><div><br></div><div>Also,I have been able to set-up VTK on my system.Can you please tell me which part of the code base I should mainly focus on.One more thing,I haven't been able to completely get through the cutting part.A piece of advice on this would be really very helpful.</div><div><br></div><div>Also , what kind of details are you expecting in the proposal ? Do you want it to be mildly broad , or do you want it to be targeted as a needle ? Could you shed some light on it ?</div><div><br></div><div>A quick response will be really helpful !</div><div><br></div><div>Regards,</div><div>Deevankshu Garg</div><div>(<a href="https://github.com/gargd">https://github.com/gargd</a>)</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Mar 18, 2015 at 9:39 PM, David Thompson <span dir="ltr"><<a href="mailto:david.thompson@kitware.com" target="_blank">david.thompson@kitware.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Deevankshu,<br>
<span class=""><br>
> The project "CAD Model and Simulation Spline Visualization" is of particular interest to me.Curves and NURBS Modelling has been a project of mine at a personal level(<a href="https://github.com/gargd/Here-I-come-NURBS" target="_blank">https://github.com/gargd/Here-I-come-NURBS</a> & <a href="https://github.com/gargd/Bezier-curves-and-surfaces" target="_blank">https://github.com/gargd/Bezier-curves-and-surfaces</a>).<br>
<br>
</span>Those are nice examples, but they use the OpenGL GLU toolkit to evaluate the spline. Just to be clear, we are interested in adding implementations of evaluation and inversion to VTK, not using GLU to perform those operations.<br>
<br>
> ... About the project,there are some points I want to discuss and some questions I want to ask. ... Besides its obvious advantages of being easily integrated with CAD and the high level of solution accuracy, we also have the advantage of not having to write the whole code from scratch and reusing the earlier present FEM code.<br>
<br>
Using a FEM solver's evaluation and interpolation methods is one way to go, but the issues involved are<br>
<br>
1. Many isogeometric analysis (IGA) codes use slightly different spline or patch formulations. We want to accommodate them all, not just a few.<br>
<br>
2. I do not know of open source IGA implementations which cover the gamut of interpolation techniques whose source we could borrow.<br>
<br>
That is why we are aiming to provide operations on basic rational Bézier patches. The Bézier patch operations would not access control point arrays directly but use iterators so that different IGA formulations could provide Bézier patch iterators to access their underlying meshes.<br>
<span class=""><br>
> I have thought of a rough idea about implementing the project-<br>
><br>
> 1.A new mesh representation class-<br>
> This would include-<br>
> a. h-refinement(knot insertion) for one and two dimensional meshes.<br>
> b. p-refinement(order elevation) and k-refinement using Geopdes library.<br>
<br>
</span>Unfortunately, the GeoPDEs library is licensed under the GPL. VTK cannot include GPL code without changing its license.<br>
<span class=""><br>
> c.Extended IGA for hole,inclusion and crack modelling using variational formulas.<br>
<br>
</span>This is interesting, but the first job is to implement basic evaluation and inversion methods along with cutting and clipping.<br>
<span class=""><br>
> d.Bezier extraction-to integrate isogeometric analysis with existing FEM codes.<br>
<br>
</span>This is the route we are hoping to take.<br>
<span class=""><br>
> e.Visualization of displacements and stresses.<br>
><br>
> 2.Contouring-<br>
> This would basically include creating new classes like the following ones-<br>
> a.crackedMesh: visualize cracked mesh as truly cracked domain.<br>
> b.crackedMeshNURBS: the same but for higher order NURBS.<br>
> c.plotStress: compute displacements and stresses at nodes of a visualization mesh.<br>
<br>
</span>The way the VTK framework is written, these would not be individual classes but different combinations of classes into pipelines.<br>
<span class=""><br>
> 3.Cutting-<br>
> a.elements cut by cracks:sub-triangulation<br>
> b.elements cut by circular holes/inclusions:adaptive sub-cells.<br>
<br>
</span>We do not care so much about what shape the cut is, but rather how the cut is computationally represented; is it an implicit function? a spline in world coordinates or parameter space? a simple plane? By providing some basic functionality, the cases above (plus others) can be handled with a small effort.<br>
<span class=""><br>
> Things I want to ask-<br>
</span>> a.You mentioned about conversion to handle the variety of spline formats (T-Splines, NURBS, Catmull-Clark surfaces, etc.).Would an object oriented design be more beneficial ...<br>
<br>
Yes. I think the first step would be to provide a base class that allows iteration over a set of Bézier patches that, taken together, represent the spline curve, surface, or volume.<br>
<br>
> ... with the B-splines sitting at the top of the heirarchy?<br>
<br>
A B-spline formulation could be at the top of *one* hierarchy, but it would have siblings for other formats like T-splines.<br>
<span class=""><br>
> b.IGA techniques are mainly for analysis and meshing,what does it have to do with rendering.<br>
<br>
</span>Rendering is only part of visualization. It is important to provide analysis tools for post-processing to<br>
<br>
- find the range of values taken on over a mesh and the location of the extremal values.<br>
- compute derivative values and inspect them<br>
- divide the mesh into regions based on scalar values or spatial cuts to make inspection of the quantities defined on the mesh (e.g., stress, strain, temperature) possible.<br>
<span class=""><br>
> Shouldn't the rendering techniques remain the  same?<br>
<br>
</span>I am unsure what you mean by this? The same as what?<br>
<span class=""><br>
> We can obviously optimise rendering,but it wouldn't be a part of IGA,right?<br>
<br>
</span>Rendering would involve evaluating patches provided by an IGA mesh at regular locations and connecting the evaluated points into a simplicial mesh (line segments in 1-D, triangles in 2-D, tetrahedra in 3-D) for either rendering or further post-processing. One example of post-processing is deflecting the evaluated points using the strain field computed by IGA.<br>
<br>
> ...<br>
<span class="">> Thanks a lot for reading!<br>
<br>
</span>I look forward to reading your proposal when you submit it to GSoC.<br>
<span class="HOEnZb"><font color="#888888"><br>
        David</font></span></blockquote></div><br></div>