CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Meshing & Mesh Conversion (https://www.cfd-online.com/Forums/openfoam-meshing/)
-   -   [Netgen] Netgen now on Sourceforge (https://www.cfd-online.com/Forums/openfoam-meshing/61942-netgen-now-sourceforge.html)

philippose November 1, 2009 09:44

Hello a a Good day :-)!

Its grey and definitely moving towards winter here :-O :-)!

Just wanted to inform people who use Netgen for creating meshes for use in OpenFOAM....

The current SVN Version of Netgen available from the sourceforge project website allows meshes to be exported into the OpenFOAM 1.5 format directly from within the GUI :-)!

After creating a mesh, choose "OpenFOAM 1.5+ Format" as the Export filetype in the "File -> Export Filetype" menu, and subsequently, export the mesh using the "File -> Export Mesh..." menu.

Netgen will ask for a folder to be specified (which in our case would be typically the case folder). It then creates the sub-folders "constant" and "polyMesh" if they dont already exist, and writes the OpenFOAM mesh files into it.

As of now, the patch names use the format: "patch<bc_num>" where "bc_num" are the boundary condition numbers specified for each of the boundaries in Netgen.


It would be great if people could use the feature, and let me know if there is anything lacking, and what could be improved...

For example....

1. Does Netgen need to ask the user to put in a scaling factor for the x, y and z directions while exporting? Or is the extra step of using the OpenFOAM utility: "transformPoints" ok?

2. Patch names.... should there be a means of specifying that within Netgen itself, or is it ok to manually alter them later in the "boundary" file?

etc...etc...

Have a wonderful Sunday :-)!

Philippose

linnemann November 2, 2009 01:51

Hi Philippose

Great news.

I'll definitely be using this feature.

One feature I might want to request which isn't related to this feature is the possibility to record a journal/macro of the steps I take within Netgen.

This way its much faster to create new meshes for almost identical geometries.

regarding OF features, I personally don't need either of the two proposed since I do it all in bash scripts. I will report back when I get it built and generate some meshes.

Best

linnemann November 2, 2009 02:04

Hi again

When downloading the SVN the configure script and makefile.in is missing in different folders am I supposed to use the ones from the 4.9.11?

Best

philippose November 2, 2009 06:21

Hello Linnemann,

A Good Afternoon to you :-)!

When you download a version of Netgen direct from the SVN Repositories, always make sure that you run the following command in order to regenerate the configure files:

autoreconf --install

This command should be run in the main folder of the Netgen sourcecode and should be done before running "./configure".

Dont use the configure files from older versions, because if there have been any changes you will miss them out, resulting in probable build failures...

Hope this helps!

Have a nice day ahead :-)!

Philippose

linnemann November 2, 2009 06:49

Hi it helped somewhat but now I'm getting this while running autoreconf --install

Code:

You should update your `aclocal.m4' by running aclocal.
libtoolize: `config.guess' exists: use `--force' to overwrite
libtoolize: `config.sub' exists: use `--force' to overwrite
libtoolize: `ltmain.sh' exists: use `--force' to overwrite
doc/Makefile.am:1: `dist_doc_DATA' is used but `docdir' is undefined
autoreconf: automake failed with exit status: 1

FIXED, Needed to install new versions of autoconf automake and libtool as the std CentOS 5 versions are too old.

Best

linnemann November 3, 2009 02:16

Just FIY.

I've built Netgen 4.9.11 and 4.9.12-svn for CentOS 5 with OpenCASCADE support.

The prebuilt binaries including needed libraries can be found on

https://sourceforge.net/projects/centfoam/

I will try and keep it updated regularly.

Best

philippose November 3, 2009 15:40

Hello Linnemann,

A Good Evening to you :-)!

Thanks a lot for maintaining binary releases of Netgen for CentOS :-)! I am sure it provide more people access to the tool....!

I have been thinking about an RPM for Fedora for a while. Alberto and his colleague have created RPMs for OpenSuse too :-)! If I am not mistaken, the OpenSuse online RPM tools can also generate RPMs for other distributions of Linux.... just need to take some time out and see how to get it working!

Have a great day!

Philippose

alberto November 3, 2009 15:51

Hi,

you are right. The openSUSE buildservice can build packages for all the major linux distributions, debian and ubuntu included.
For RPM-based distributions, it is relatively easy, since you need to create only one .spec file, and then build against all the targets you want (assuming they have the dependencies). I have no experience in using the build service for debian-based systems, but the team is supportive.

Best,

AndreF November 20, 2009 09:31

Hi guys, really sorry to post this here but although I've searched here and on the internet I can't seem to find it.

I'm having trouble installing correctly the togl package that netgen needs. I haven't found a installationg guide detailed enough for me to install it succesfully. If you could point me in the right direction it would be great.

Thanks in advance
Andre

philippose January 6, 2010 11:07

Hello Alberto,

A Happy New Year to you :-)!

I have been trying to create RPM packages for Netgen-4.9.11 for Fedora 12 on my system since last evening, with only limited success...

Would it be possible for you to let me have a peek at the spec file you used for creating the Netgen OpenSUSE RPM packages?

Have a nice evening!

Philippose

alberto January 6, 2010 11:19

Sure. I have to say most of the work on netgen was done by Andrea Florio.

You can download the .spec from the src.rpm (file-roller opens it) from here: http://software.opensuse.org/search?...t=ALL&q=netgen

Code:

# norootforbuild

Name: netgen
Summary: NETGEN is an automatic 3d tetrahedral mesh generator
Version: 4.9.11
Release: 1.0
License: LGPL
Group:  Productivity/Graphics/3D Editors
URL:    http://www.hpfem.jku.at/netgen/
Source0: %name-%version.tar.bz2
Source1: netgen.sh
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
BuildRequires: make autoconf automake gcc gcc-c++
BuildRequires: Togl metis-devel OpenCASCADE-devel tcl-devel tk-devel
BuildRequires: Mesa-devel glibc-devel libjpeg-devel lam-devel
%if %suse_version > 1020
BuildRequires: fdupes
%endif

%description
NETGEN is an automatic 3d tetrahedral mesh generator.
It accepts input from constructive solid geometry (CSG)
or boundary representation (BRep) from STL file format.
The connection to a geometry kernel allows the handling
of IGES and STEP files. NETGEN contains modules for mesh
optimization and hierarchical mesh refinement. Netgen is
open source based on the LGPL license.
It is available for Unix/Linux and Windows.

%package devel
Summary: Netgen headers for development
Requires: %name
Requires: Togl metis-devel OpenCASCADE-devel tcl-devel tk-devel
Requires: Mesa-devel glibc-devel libjpeg-devel lam-devel
Group: Development/Libraries/C and C++

%description devel
NETGEN is an automatic 3d tetrahedral mesh generator.
It accepts input from constructive solid geometry (CSG)
or boundary representation (BRep) from STL file format.
The connection to a geometry kernel allows the handling
of IGES and STEP files. NETGEN contains modules for mesh
optimization and hierarchical mesh refinement. Netgen is
open source based on the LGPL license.
It is available for Unix/Linux and Windows.


%prep
%setup -q

%build
export CFLAGS="$RPM_OPT_FLAGS"
export CXXFLAGS="$RPM_OPT_FLAGS"
export LDFLAGS="-L/opt/OpenCASCADE/%_lib/opencas"
  %configure  \
    --bindir=%_bindir/netgen \
    --enable-occ \
    --with-occ=/opt/OpenCASCADE/ \
    --enable-nglib \
    --enable-jpeglib
# need a patch, make fail if that option is enable
#    --enable-parallel \

%__make %{?jobs:-j%{jobs}}

%install
%makeinstall

%__rm %buildroot/%_libdir/libnglib.la
%__rm %buildroot/%_datadir/doc/netgen/ng4.pdf

%__ln_s %_libdir/libnglib.so %buildroot/%_libdir/libng.so

%__cp %SOURCE1 %buildroot/%_bindir/
chmod +x %buildroot/%_bindir/netgen.sh

%if %suse_version > 1020
%fdupes -s %{buildroot}
%endif

%clean
rm -fr %buildroot

%files
%defattr(-,root,root)
%doc doc/ng4.pdf
%_bindir/netgen.sh
%dir %_bindir/netgen
%_bindir/netgen/*
%_libdir/libnglib.so                     
%_libdir/libng.so
%dir %_datadir/netgen
%_datadir/netgen/*

%files devel
%defattr(-,root,root)
%_includedir/*

%changelog
* Thu Oct 15 2009 albert.passalacqua@gmail.com
- new upstream version
* Wed Jun 10 2009 andrea@opensuse.org
- new upstream version


philippose January 6, 2010 12:09

Hi again :-)

Thanks a lot Alberto... that was amazingly fast :-)!

Had a look at the spec file, and I think we might have some issues.... The same issues I have been literally battling with so far....

Basically, it looks like the Netgen system is not yet designed with installation (in a linux standard manner) in mind. Here are some of the problems I came across, and I am wondering how best these could be solved:

1. Netgen currently stores all the TCL script files also in the "bin" folder. A standard installation of Netgen using the RPM as it is built now, would end up copying all these TCL files along with the netgen executable into the "/usr/bin/netgen" folder, which is not a typical linux install

2. If the environment variable "NETGENDIR" is not set, netgen assumes that the TCL files are located in the same folder as the netgen executable.... hence the reason why a script file "netgen.sh" was used to change directory to "/usr/bin/netgen"

3. Netgen also uses an environment variable "NETGEN_USER_DIR" used as the location where the "ini" file with the recently used files are saved, as well as the user settings when the user selects "save options" in the "file" menu. In case this environment variable does not exist, it uses the current folder as the user directory.

4. During operation, Netgen typically creates two files "gmon.out" and "netgen.prof" as debug files. These files are written into the "NETGEN_USER_DIR"

5. I dont think the folder "/usr/bin/netgen" is writable by a normal user.... which implies, that all the files which netgen tries to write in points (3) and (4) will be denied access.


I am wondering how to modify Netgen so that these issues can be solved in a more standardised manner.... anyway.... just wanted to let you know that there might be some unexpected behaviour by Netgen when installed using via the RPM.

Just for the sake of completeness, here is a copy of my current spec file..... it creates a relocatable RPM, which by default installs into "/opt/netgen-4.9.11", and so far, the install and uninstall procedures seem to work without leaving anything else broken....

Code:

Name:          netgen
Version:        4.9.11
Release:        1.1%{?dist}
Summary:        An automatic mesh generation tool for 2D and 3D meshes

Prefix:        /opt/%{name}-%{version}


Group:          Applications/Engineering
License:        LGPL
URL:            http://sourceforge.net/projects/netgen-mesher
Source0:        http://sourceforge.net/projects/netgen-mesher/files/netgen-mesher/%{version}/netgen-%{version}.tar.gz
BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)

BuildRequires:  tcl-devel >= 8.5 tk-devel >= 8.5 tix-devel >= 8.4 Togl-devel = 1.7
Requires:      tcl >= 8.5 tk >= 8.5 tix >= 8.5 Togl = 1.7

%define        _instloc /opt/%{name}-%{version}

%description
Netgen is a multi-platform automatic mesh generation tool written in C++ capable of
generating meshes in two and three dimensions. The program is open source, and is
distributed under the conditions of the LGPL. Netgen is available for the Unix/Linux,
Windows NT/XP/Vista as well as the MacOS platforms for both 32-bit and 64-bit
architectures, and comes in two primary forms:

* A Stand-alone Program with its own Graphical User Interface (GUI) implemented using Tcl/Tk.
* A C++ library (Nglib) which can be linked into other applications functioning as the backend
mesh generation kernel.

Netgen generates triangular or quadrilateral meshes in 2D, and tetrahedral meshes in 3D.
The input for 2D is described by spline curves, and the input for 3D problems can be
defined by Constructive Solid Geometry (CSG), the standard STL file format, or via Boundary
Representations (BRep/IGES/STEP) when compiled with OpenCascade support.


%package        devel
Summary:        Headers and Libraries for building applications that use the Netgen meshing kernel
Group:          Development/Libraries


%description    devel
This package contains headers and libraries required to build applications that
use the Netgen-%{version} meshing kernel.

Netgen is a multi-platform automatic mesh generation tool written in C++ capable of
generating meshes in two and three dimensions. The program is open source, and is
distributed under the conditions of the LGPL. Netgen is available for the Unix/Linux,
Windows NT/XP/Vista as well as the MacOS platforms for both 32-bit and 64-bit
architectures, and comes in two primary forms:

* A Stand-alone Program with its own Graphical User Interface (GUI) implemented using Tcl/Tk.
* A C++ library (Nglib) which can be linked into other applications functioning as the backend
mesh generation kernel.

Netgen generates triangular or quadrilateral meshes in 2D, and tetrahedral meshes in 3D.
The input for 2D is described by spline curves, and the input for 3D problems can be
defined by Constructive Solid Geometry (CSG), the standard STL file format, or via Boundary
Representations (BRep/IGES/STEP) when compiled with OpenCascade support.


%prep
%setup -q


%build
autoreconf --install

CFLAGS="${CFLAGS:--O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables}" ; export CFLAGS ;
CXXFLAGS="${CXXFLAGS:--O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables}" ; export CXXFLAGS ;
FFLAGS="${FFLAGS:--O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables -I/usr/lib/gfortran/modules}" ; export FFLAGS ;

./configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu \
            --target=i686-redhat-linux-gnu \
            --prefix=%{_instloc}

make %{?_smp_mflags}


%install
rm -rf $RPM_BUILD_ROOT
make install DESTDIR=$RPM_BUILD_ROOT


%clean
rm -rf $RPM_BUILD_ROOT


%files
%defattr(-,root,root,-)
%dir %{_instloc}
%dir %{_instloc}/share
%dir %{_instloc}/share/doc
%docdir %{_instloc}/share/doc
%{_instloc}/share/doc/%{name}
%{_instloc}/bin
%exclude %{_instloc}/bin/ng_stl
%exclude %{_instloc}/bin/ng_vol
%{_instloc}/share/%{name}


%files devel
%defattr(-,root,root,-)
%dir %{_instloc}
%dir %{_instloc}/bin
%dir %{_instloc}/share
%dir %{_instloc}/share/doc
%docdir %{_instloc}/share/doc
%{_instloc}/share/doc/%{name}
%{_instloc}/lib
%{_instloc}/include
%{_instloc}/bin/ng_stl
%{_instloc}/bin/ng_vol
%{_instloc/share/%{name}


%changelog
* Tue Jan 5 2010 Philippose Rajan <philippose.rajan@gmail.com> 4.9.11-1.1
- Initial RPM release
- OpenCascade support excluded for initial testing

Shall get back to you if I get some cool ideas, or if I make some modifications....

Thanks again

Philippose

ndavey January 7, 2010 07:09

netgen 4.9.12-dev on WinXP
 
Quote:

Originally Posted by philippose (Post 234766)
Just wanted to inform people who use Netgen for creating meshes for use in OpenFOAM....

Netgen will ask for a folder to be specified (which in our case would be typically the case folder). It then creates the sub-folders "constant" and "polyMesh" if they dont already exist, and writes the OpenFOAM mesh files into it.

I've just built 4.9.12-dev (rev 266) on Windows XP, using VC++ Express 2008, with Windows 7 SDK installed and OCC

I also have OpenFOAM for windows (http://sourceforge.net/projects/openfoam-mswin/files/) installed..

After a little kicking and screaming (The SolutionDir macro didn't work for some reason, had to redo all include and library includes..) netgen built without any problems...

I loaded up an iges file, generated a mesh and went to export as OpenFOAM mesh using the above menu option..

Export spat the dummy with errors, bit of digging, something to do with c_str method, as path name comes out as:

Code:

Export mesh to file C:/cfd/simtest.... Please Wait!
 Export mesh to file C:/cfd/simtest, format is OpenFOAM 1.5+ Format
Write OpenFOAM 1.5+ Mesh Files....
Writing OpenFOAM 1.5+ Mesh files to case: C:/cfd/simtest

You then see an error:

Code:

The syntax of the command is incorrect.
because the '/'s should be a '\'s in the path name..

I added a horrible hack to fix it (not good at cpp), but it now does work for me...
That is, it creates the files.. have not looked at them yet..

Quote:

Originally Posted by philippose (Post 234766)
It would be great if people could use the feature, and let me know if there is anything lacking, and what could be improved...

For example....

1. Does Netgen need to ask the user to put in a scaling factor for the x, y and z directions while exporting? Or is the extra step of using the OpenFOAM utility: "transformPoints" ok?

2. Patch names.... should there be a means of specifying that within Netgen itself, or is it ok to manually alter them later in the "boundary" file?

I have not loaded up an export yet to look at scaling issues..
If you generate the mesh from say an iges file, will the output mesh for OpenFOAM be scaled the same?

From the very quick play I've done so far.. it would be nice to do the boundary names in Netgen.. not critical, just nice..

Regards
Neil Davey

openfoam_user January 8, 2010 10:27

Hi,

where can I get complete tutorials of netgen ?

Regards,

Stephane.

philippose January 10, 2010 16:43

Hello Neil,

A Good Evening to you, and apologies for the delay in replying!

Great to see that you were able to compile Netgen on Windows.... and specially, to see that it also worked with the Windows 7 SDK.... maybe I should install that too....

I wonder why you had a problem with "SolutionDir"... since you worked with Visual Studio 2008 Express, I expect the behaviour to have been the same on your system as it was on mine. Was this variable not defined at all? Or was it something different?

About the issue with the back-slash / forward-slash in Windows.... again, its surprising that you had a problem, because so far I have not had any issues... did you browse to the folder you wanted to export into via the window that TCL popped up, or did you type out the path yourself in the box?

Anyway, I shall look deeper into this as soon as I get back on to my system tomorrow evening.

The idea of specifying the names of the patches directly in Netgen is something that I am also toying around with, and has been on my To-Do list for a while. Just looking for an elegent and efficient way of integrating it into Netgen.

Thanks a lot for testing out Netgen, and ofcourse, you can always post problems or ideas at the Netgen Sourceforge website (look for Netgen sourceforge) in Google... should be the first result.

Have a great Sunday and a good week ahead!

Philippose

philippose January 10, 2010 16:47

Hello Stephane,

A set of complete tutorials for Netgen does not exist yet, but if you install Netgen (either windows or linux), or look into the sourcecode, you will see one PDF file in the "doc" directory called "ng4.pdf" if I remember right...

This is the only actual documentation for Netgen.... I am sorry that the Mediawiki website for Netgen on Sourceforge has not been updated yet.... I have been meaning to get on to this for a while now, but havent been able to start on it yet....

If you have any specific questions, please feel free to either post here, or in the Netgen forums available on the Sourceforge project page.

Have a nice day!

Philippose

ggruber January 11, 2010 12:24

Netgen manual
 
Hello Philippose,

Netgen is quite a good mesher !

But the manual at the svn Repository is not very actual.
I get a manual from Joachim Schöberl long time ago, but it is more detailed, especially at the chapter "Using the Graphical User Interface" and i have the source manual as well.

Please send me an E-mail and i will send it to you.

I hope you will check it in at the svn Repository at sourceforge, so it can be further developed.

Ggruber

philippose January 11, 2010 13:20

Hello Gruber,

A Good and snowy evening to you :-)!

It would be great to have a more detailed version of the User Manual... its surprising that Joachim Schöberl has not checked this into the SVN already... shall talk to him about this.

In the meantime, it would be nice if you could send me the PDF and the latex sources if you have those too.... my email address is: philippose.rajan (at) gmail (dot) com.

I think I need to try and spend some time on the documentation... the PDF as well as the Mediawiki website.... hmmm... lets see how I can squeeze this into my usual work - home schedule.... :-)!

Have a great evening ahead!

Philippose

openfoam_user January 12, 2010 02:55

Hello Gruber,

Could you, please, send me the manual of Netgen.

My email address is stephane_sanchi (at) hotmail (dot) com

Best regards,

Stephane

juanjo January 13, 2010 11:56

Hello Gruber,

Could you, please, send me the manual of Netgen.

My email address is rivera(at)epsem(dot)upc(dot)edu

Best regards,


juanjo


All times are GMT -4. The time now is 11:23.