[vtk-developers] GSoC 2015-CAD Model and Simulation Spline Visualization

David Thompson david.thompson at kitware.com
Wed Mar 18 12:09:17 EDT 2015


Hi Deevankshu,

> 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(https://github.com/gargd/Here-I-come-NURBS & https://github.com/gargd/Bezier-curves-and-surfaces).

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.

> ... 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.

Using a FEM solver's evaluation and interpolation methods is one way to go, but the issues involved are

1. Many isogeometric analysis (IGA) codes use slightly different spline or patch formulations. We want to accommodate them all, not just a few.

2. I do not know of open source IGA implementations which cover the gamut of interpolation techniques whose source we could borrow.

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.

> I have thought of a rough idea about implementing the project-
> 
> 1.A new mesh representation class-
> This would include-
> a. h-refinement(knot insertion) for one and two dimensional meshes.
> b. p-refinement(order elevation) and k-refinement using Geopdes library.

Unfortunately, the GeoPDEs library is licensed under the GPL. VTK cannot include GPL code without changing its license.

> c.Extended IGA for hole,inclusion and crack modelling using variational formulas.

This is interesting, but the first job is to implement basic evaluation and inversion methods along with cutting and clipping.

> d.Bezier extraction-to integrate isogeometric analysis with existing FEM codes.

This is the route we are hoping to take.

> e.Visualization of displacements and stresses.
> 
> 2.Contouring-
> This would basically include creating new classes like the following ones-
> a.crackedMesh: visualize cracked mesh as truly cracked domain.
> b.crackedMeshNURBS: the same but for higher order NURBS.
> c.plotStress: compute displacements and stresses at nodes of a visualization mesh. 

The way the VTK framework is written, these would not be individual classes but different combinations of classes into pipelines.

> 3.Cutting-
> a.elements cut by cracks:sub-triangulation
> b.elements cut by circular holes/inclusions:adaptive sub-cells.

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.

> Things I want to ask-
> 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 ...

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.

> ... with the B-splines sitting at the top of the heirarchy?

A B-spline formulation could be at the top of *one* hierarchy, but it would have siblings for other formats like T-splines.

> b.IGA techniques are mainly for analysis and meshing,what does it have to do with rendering.

Rendering is only part of visualization. It is important to provide analysis tools for post-processing to

- find the range of values taken on over a mesh and the location of the extremal values.
- compute derivative values and inspect them
- 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.

> Shouldn't the rendering techniques remain the  same?

I am unsure what you mean by this? The same as what?

> We can obviously optimise rendering,but it wouldn't be a part of IGA,right?

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.

> ...
> Thanks a lot for reading!

I look forward to reading your proposal when you submit it to GSoC.

	David


More information about the vtk-developers mailing list