I think we can forget about dt nurbs, for the reasons you explained above and also because it would be simpler to write everything from scratch than trying to read/update it or porting it to Fortran.
SISL is excellent but it misses for example the curve rotation feature.
For my needs it would be sufficient definition, fitting, analysis and interrogation of b splines and bezier curves/surfaces. They have to work on simple cases, full CAD capabilities are not required when doing simple FEM /CFD analysis.
Nurbs are really not needed, lots of people are happy not having an exact representation of a cylinder.
What is your time estimate on writing such a library by 1/2 people?
Hard to guesstimate how long it would take to write a modern Fortran NURBS/B-spline library. My best guess is that to do it right would take a minimum of two years but more likely three to write the code and more importantly do rigourous unit tests and a complete V&V focused at real world problems. As you point out full blown NURBS are not really needed unless you actually need an exact representation of conic sections. As pointed out in Piegl’s paper I referenced earlier in this thread, if you take a knowledge based approach you can get by (at the cost of more control points) with an integral B-spline representation of a circle, sphere or cylinder defined to some acceptable level of engineering accuracy
It depends on the level of functionality you want. The basic operations (defining objects, creating knot vectors, evaluating splines, fitting splines to data) etc. can be coded and subjected to preliminary unit tests in around a month (or two). Computing derivatives (needed for curvature etc), implementing algorithms for merging curves, surfaces and solids, computing intersections etc. will take a lot longer. Another issue is there are lots of books, papers, etc. on B-spline/Bezier methods for curves and surfaces but less on solid (3D) models and the last time I looked the world was not one or two dimensional. Parameterization for fitting 3D objects is a very challenging problem on its on. Piegl and Tillers book along with their papers is probably the best place to start, along with Rodgers NURBS and Mathematical Elements of Computer Graphics books.
Like many others, I am also interested in using Fortran for isogeometric analysis. A basic google search, fortunately, led me to this descriptive post. I have some background in using IGA for various solid mechanics problems, including different nonlinearities. As of now I’ve used NURBS toolbox by Spink et al. (written in Octave/Matlab) mentioned in one of the earlier posts. Due to the abovementioned obvious reasons, I also need to switch to Fortran and was looking for a similar kind of library (as Spink et al.) in Fortran.
But, after reading this post, it seems this is not the case, at least for now. I understand there isn’t a sufficiently matured library that enables the various/essential operations on 1D/2D/3D Bezier/B-spline/NURBS constructed geometries (with or without having multi-patches) for IGA. And some of you have generously started to work on developing a Fortran library on the same/similar thing.
But, can anyone tell if one can work with uni-variate B-splines for 1D IGA with an existing libraries? One my prof. here suggested me to go with splf2003 for this case. But, after seeing this post, I am not sure if I can use it even for 1D IGA.
Its a mix of Fortran and Python explicitly for IGA. The Fortran part includes an igalib.F90 file that contains the basic NURBS support you need for IGA.
I’m not familiar with the Matlab package by Spinks but you might also look at the GeoPDEs Matlab code at
Thank you for the suggestions @rwmsu. Functions included in igalib.F90 seem good for IGA of 1D curves. I will start looking at it properly.
Actually, the GeoPDEs Matlab code by rafavzqz is built on the codes by Spink. I’ve been using them as of now. But, looking for a similar library, particularly in Fortran.
Welcome @vagrawal.
Congrats for your Ph.D completion at IITG. I have a great respect for your Prof. SS. Gautham. He has contributed a lot to VSSC. In case you are planning to develop any library for isogeometric analysis in Fortran or extending igalib.F90 - please let me know - I can also contribute. Good that you have done your research on contact problems where IGA shines a lot !
Thank you!
It’s great to know that you know my Ph.D. supervisor. Yes, IGA is very advantageous to surface-dominated problems, e.g. contact problems, where an inexact representation of the boundary/outer surface of a geometry causes serious numerical issues. My current plan is to first test the existing igalib.F90 library developed by Ahamad Ratnani (suggested by @rwmsu and now you). Based on my quick observation, it seems this library provides the basic operations for univariate curves. Operations for bi-variate and tri-variate entities are based on the tensor product of uni-variate entities. That is how it should be in general, but in my opinion, not a very efficient way of computing from the implementation point of view. After 1D, I will check its performance for 2D/3D cases and will see what can additionally be done to make it more suitable/general, specifically for IGA purposes. If you already have some headstart in this regard, please let me know. I will be happy to work with like-minded people.