Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.

Fortran NURBS library

Ben_W_
Beginner
1,742 Views

Hi, all:

This is not IVF related question, but a general question regard FORTRAN NURBS library.

I'm looking for a public domain fortran NURBS library. I did a Google search and ended with very little information. There was a FORTRAN NURBS library developed by David Talyor (DT_NURBS) in Naval Reserach. But since his retirement, the only download link is broken and the access to that librray is lost.

is someone in this forum aware any other FORTRAN NURBS librraies? Does anybody has a copy of DT_NURBS?

Thanks in advance.

Jimy Jiang

0 Kudos
7 Replies
rase
New Contributor I
1,742 Views

My suggestion is to have a look at John Burkardt's website (http://people.sc.fsu.edu/~jburkardt/). John has assembled a lot of Fortran programs and libraries. Maybe you will find there what you are looking for.

0 Kudos
Johannes_Rieke
New Contributor III
1,742 Views

Hi Jimy,

as far as I know DT_NURBS was and is the only complete functional NURBS kernel in FORTRAN/ Fortran, which exists. Complete means in my opinion that not only NURBS splines/surfaces can be generated but intersections and other operations are possible. There exist a lot libs which can construct splines for interpolation and so on but I found nothing which is near to the functionality to a NURBS/CAD kernel.

By the way David Taylor is as far as I know not the person who developed DT_NURBS but a unit of the Naval Surface Warfare Center/Carderock Division is named by him (David Taylor Model Basin, http://en.wikipedia.org/wiki/David_Taylor_Model_Basin).

Nevertheless, I worked a lot with DT_NURBS during my PhD and in some cases it works very good but in some cases I got massive problems with related to a CAD program 'simple tasks' (e.g. distance calculations between curves). The mathematical background isn't easy for sure, but modern CAD kernels can handle problems more robust. Further DT_NURBS is pure F77, which means many implicit interfaces (around 2000 subroutines) and many hidden errors (call parameter is integer, subroutine makes double of it, ...). Most things are compiled by the Intel compilers robust and works in runtime good so far, but I tested not all functions... In addition an attempt was made to have something as 'dynamic memory' with F77. Works but makes the program very complex and IMHO slows down the program. I could write on and on about advantages/ disadvantages...

DT_NURBS is not open source and was distributed under special license conditions within the US and scientific institutions. One could get a copy on request but was not allowed the redistribute it. I don't know how to get e legal copy nowadays? If you are interested you could try to write an email to someone at Naval Surface Warfare Center/Carderock Division?

I myself would not use DT_NURBS in a new to code program anymore. I would write wrappers for SISL (http://www.sintef.no/Informasjons--og-kommunikasjonsteknologi-IKT/Anvendt-matematikk/Fagomrader/Geometri/Prosjekter/The-SISL-Nurbs-Library/SISL-Homepage/) or OpenCascade (http://www.opencascade.org/) C/C++ libs. There you have an active community and a lot of good examples.

A point which would interest me also is whether anybody has tried to use SISL or OpenCascade from Fortran?

Maybe I missed something in WWW. I'm also interested in Fortran NURBS kernel alternatives. Does somebody know alternatives to DT_NURBS?

Best regards,

Johannes

0 Kudos
Ben_W_
Beginner
1,742 Views

Hi, Johannes and Rase:

Thanks for your informational response. I'm also thinking whether I should develop a FORTRAN wrapper for some modern C NURBS libraries instead of using DT_NURBS, givien the age and the availability of DT_NURBS. Now the license of DT_NURBS also concerns me. So I'm more inclined to write a FORTRAN wrapper for a C NURBS library. I'm also aware of opencascade NURBS library. But it's a C++ library and is almost impossible to make it callable from FORTRAN.

Again thanks alot for your reply.

Jim

0 Kudos
Johannes_Rieke
New Contributor III
1,742 Views

Hi Jim,

it seems that there are not many Fortran users, which need/ like to have a NURBS kernel for Fortran in Fortran. Do you know 'The NURBS Book' from Les Piegl and Wayne Tiller. It's one of the rare books that cover this topic. It contains pseudo code examples. The authors wrote also a NURBS lib, but this is commercial and also in C as far as I know.

If you not like to write an own NURBS lib, I think SISL could be the key. You said you considered C NURBS libraries. Have you a favorite?

Concerning wrappers for OpenCascade, is it impossible to interface to object oriented C++ code from (object oriented) Fortran? There must be users which has done this?

I don't know whether anybody at David Taylor Basin is still using DT_NURBS, but maybe there is someone who can tell, whether the source code can be free distributed because it is nearly 30 years old. Asking at David Taylor Basin would be a starting point. If you are interested in the detailed license I can look for it.

Best regards,

Johannes

0 Kudos
Ben_W_
Beginner
1,742 Views

Hi, Johannes:

I do have the NURBS book by Les Piegl and Wayne. I'm reading it right now. As you pointed out, the authors does have a C NURBS library for sale.

I have not decided yet whether I will develop a FORTRAN warpper for a C NURBS library. If I do, I will use NLib/SMLib from SMS becasue our company is already licensed these libraries.

I'm also aware of OpenCascade. It's a C++ library. As far as I know, there is no easy solution, if not impossible, to interface with object oriented C++ cdoe directly from FORTRAN. You can call C++ class static functions. But I don't know how to call object member functions from fortran. It might be posisble for object oriented FORTRAN. But there is no standard approach on how to do it. I really think that the next FORTRAN standard should enhance the c interoperability to inlcude C++ code.

I did a little bit research on the license of DT_NURBS. Form What I found, I think that that library was frree to download. You just need to registred with them (provide your information to them). But beacuse it was so old,  there is not too much information out there and I'm not sure about this. You mentioned that you used DT_NURBS a lot in your Ph. D research. If you can find its detail license, that will help me make my decision. In the case DT_NURBS is in public domain, is it possible for you to obtain a copy of it?

Enjoy the discussion with you.

 

Thanks,

Jim

0 Kudos
Johannes_Rieke
New Contributor III
1,742 Views

Hi Jim,

I still have a copy of DT_NURBS containing also user's manual and reference manual. The user manual contains some information on licenses and an address at NSWC, which should be contacted for ordering (13 years back in 2000):

Bob Ames ames@oasys.dt.navy.mil NSWC/Carderock Division David Taylor Model Basin Code 50 Bethesda, Md. 20084-5000 (301)227-1339(ph) (301)227-1125(fax)

With a little luck he's still there and can give information on the license issues. Hopeyfully it isn't against any law to provide the user's manual. So, I attached this to my post. It contains some interesting examples of using DT_NURBS.

Here a again a little advice. For me there were some dead ends in the use of some functions where I had to build runtime consuming workarounds. I tried the same things within a CAD tool (Pro Engineer and CATIA) and they didn't have the same problems. I know that NURBS in general can be nasty but there seems to exist newer more robust mathematical approaches. Still many tools have problems with complex NURBS operations. From the point of view of a mechanical engineer many finite element pre-processors have massive problems on meshing imported geometry and generate runtime crashes (all of the products of the big companies). NURBS are curse and bless the same time in my experience. For many applications there still is no - known to me - alternative. My advice would be to use a commercial NURBS lib where somebody can give you support.

Maybe there are many people out there which also use/used DT_NURBS but it seems that none of these are active in this forum or are interested in providing information...

Please let me know, if I can give you more information (Send author a message). In general I enjoy this discussion on a (Fortran) NURBS kernel very much and would be happy on any information

Best regards,

Johannes

 

 

0 Kudos
Ben_W_
Beginner
1,742 Views

Hi, Johannes:

Thanks for your DT_NURBS manual. I briefly read it yesterday. I lost most of interest in it after reading the manual. The library IS old. And as you pointed out, my biggest concern is the support and futher developement of the library.

Yesterday I tried wrapping NLib C library with latest FORTRAN c interoperability feature. Just within a day, I came up most of the important  C data structures in F90 so that I'm ready to test some basic function calls. So I basically give up on DT_NURBS.

It's pretty clear to me now that DT_NURBS is almost dead unless someone can remodel it with F90 features.

Thanks,

 

Jim

0 Kudos
Reply