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

David Thompson david.thompson at kitware.com
Thu Mar 19 21:17:47 EDT 2015

Hi Deevankshu,

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

Just to be clear: we are not looking for an implementation of an IGA FEM solver. Instead, we want postprocessing techniques so that people with IGA solvers can use VTK to do post-processing.

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

To simplify things for the project, we would create a few test inputs to verify things work rather than try adapting to a particular solver's file format. There are many solvers out there -- even many open source solvers


and they are all slightly different. If I were doing this project, I would not get fixed to any one solver because I am not using one for any projects. However, if you are using one or know someone who is developing a solver, then it might be a good idea to make use of that in your proposal.

> ...
> Post-processing part-
> As you replied to the rendering question in the previous mail,I re-thought about it and did some further research.... It will write displacements and reactions at the control points,in contrast to FEA which writes these quantities at the nodes.

Yes, although another option is to tessellate the splines into simplices (lines, triangles, tetrahedra) and write interpolated values out at the nodes of the simplices. That step will have to be done at some point in order to render the 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.

You are correct that we would evaluate the splines at many different parametric coordinates, but I do not understand what you mean by "which equal the nodes of the FEA".

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

That is not something VTK would like to deal with. Instead, it would be up for the IGA solver to provide Bézier patches to VTK for post-processing; those patches would have values specified at the control points. There are many different schemes for handling numerical integration; it would be wrong to assume that everyone uses Gauss points.

For the GSoC project, it is safe to assume that we will come up with tests that provide your code with a sequence of Bézier patches. If we get past the simple tasks like interpolation, inversion, and tessellation then we can worry about BSpline or TSpline conversion.

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

It would be useful to understand
1. How arrays are stored (Common/Core/{vtkAbstractArray,vtkDataArray,vtkDoubleArray}).
2. How arrays are composed into datasets (Common/DataModel/{vtkDataObject,vtkDataSet,vtkUnstructuredGrid,vtkMultiBlockDataSet}).
3. How datasets are processed by filters (Common/ExecutionModel/{vtkAlgorithm,vtkUnstructuredGridAlgorithm} and Filters/Core/vtkContourFilter).

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

Here is an example of cutting a dataset using an implicit plane:


Cutting typically produces an output dataset with cells one dimension less than the input dataset's cells. E.g., Cutting a triangle mesh produces line segments. This is because the cut operation intersects the dataset with a cutting tool and generates cells that lie on the intersection. If both the input and cutting tool could be written as implicit functions F(x,y,z) = 0 and G(x,y,z) = 0, the output dataset is the set of points that satisfy both equations.

A similar operation is clipping, except that the the cutting tool is not represented with an equation G(x,y,z) = 0 but rather an inequation G(x,y,z) <= 0. Thus clipping generally returns a dataset whose cells have the same dimensions as its input.

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

I have not participated in GSoC before, so I am not the best person to answer this question. However, others at Kitware who have been mentors before wrote this guide:


As far as technical details, the guide says you should discuss "What do you intend to do in your proposed project?" You have asked me about the "CAD Model and Simulation Spline Visualization" idea and I have done my best to answer but really, you are proposing something that you are interested in doing; it does not have to be exactly the idea I outlined. My writeup is there to let you know what I am interested in (and what I think Kitware is likely to accept into VTK), not what you must do.


More information about the vtk-developers mailing list