Bamg: Bidimensional Anisotrope Mesh Generator
Version v0.60 of november, 19 1998
1) define a shell variable HOSTTYPE
2) make a FLAG.$(HOSTTYPE) file
like this
CXX=g++
longlong = -DLONGLONG
O = -O $(longlong)
G = -g $(longlong)
CXXFLAGS= $(O)
CXXGRAPHIC = -I/usr/include/X11R6 -DDRAWING -DDEBUG
CXXLINKFLAG =
X11LIB = -L/usr/lib/X11R6 -lX11
X11INCLUDE= -I/usr/include/X11R6
STDLIB = -lm
F77=f77
F77FLAGS =
warning on HP-UX you can have some trouble if you are using
the "long long" data type ( bug in a old version of the C++ HP-UX compiler,
this bug is removed at the version HP C++ HPCPLUSPLUS A.10.24 )
To get the version number of your C++ Compiler, type:
% what /bin/CC
/bin/CC:
HP C++ HPCPLUSPLUS A.10.24
If your compiler do'nt have the " long long" type
remove the -DLONGLONG flag in FLAG.$(HOSTTYPE) file
3) compile with gmake (GNU make)
gmake world
This previous command create 4 exectuable files:
bamg # the mesh generator
bamg-g # the mesh generator with graphic and debug option
# to close the graphic, enter a serie of f char in the graphic window until
# closing
drawbdmesh # for display the mesh ( drawbdmesh meshfilename
# to close enter ta serie of f char in the graphic window
cvmsh2 # to convert a .am , .amdba . .nopo .msh .ftq .am_fmt mesh type
# create with emc2 fremfem or modulef library in BDmesh
do :
cvmsh2 totot.am_fmt prefix_0.mesh -g prefix_g.mesh -thetamax 30
# create two file prefix_g.msh (for the geometry definition)
# and prefix_0.msh (for the triangulation mesh file)
The am_fmt or amdba file can be created by emc2 software
4) to try some simple examples (with graphics)
gmake test-g
enter f in the graphic window to get the next plot,
enter r to redraw the plot
enter q to quit with error
or to try the same simple examples without graphics
gmake test
The results (meshes) are in the directory: examples/square/*_[0-9].msh
5) If you have perl and if you want to make quad
you can try quad option in
cd exemples/quadloop
./dotest.pl
the fonction to optimize is :
$f = "10 + sin(x/10)*cos(y/3)";
6) to do a computational fluid example
get the Navier-Stokes solver from ftp://ftp.inria.fr/INRIA/Projects/Gamma/NSC2KE.tar.gz
compile the NSC2KE
edit the script example/NACA012/adap.sh
for setting the PATH of NSC2KE and bamg
and try
Good luck
Modification:
december 11, 1997
change of Keywork in BD mesh
MaximalAngleOrCorner -> AngleOrCornerBound
EdgesTangence-> TangentAtEdges
december 18, 1997
add -splitpbedge option
to split in 2 all internal edges with 2 vertices on boundary
change in Mesh2.h and Mesh2.cpp
and correct a small bug on HP CC
change the def of
const MaxICoor22
by
#define MaxICoor22 2305843004918726658LL
in Mesh2.h
janvier 23, 1997
add -thetaquad angle_in_degre option
to create quadrilaterals elements
run in version v0.16
add -q2 option to split triangle in 3 quad and quad in 4 quad
to get only quad without triangle
in developpement (version v0.17)
change in the BD file all quadrangle by quadrilateral
run in version v0.18
Modif in CloseBoundaryEdgeV2
Mon Feb 9 17:42:47 MET 1998
In version v0.25
correction in MeshQuad.cpp
In version v0.29 Tue Feb 17 13:29:30 MET 1998
Correction of bug in MaxSubDivision
Take real triangle only => add ( tt.link || t.link)
in test of edge
Change in methode SmootingVertex
Add triangle swaping
In Version v0.31
Improvement on ReductionSimultanee
in the way to find double root
Jeudi 12 mars 1998 10:05:40
In Version v0.32
Clean of all printing
+ add flags:
-2 : to split the triangle in 4 triangle an quad in 4 quad
-anisomax double : to bound the maximal anisotropy to double
-r filename : to change mesh without total reconstruction
BUG: the -2 -2q don't work in case of adaptation
Jeudi 12 mars 1998 10:05:40
In Version v0.33 change in
the 2 routine
inline Triangle * Triangle::Quadrangle(Vertex * & v0,Vertex * & v1,Vertex * & v2,Vertex * & v3) const;
inline double Triangle::QualityQuad(int a,int option) const ;
do just one return per routine for inline in old HP compiler
Lundi 16 mars 1998 13:54:11
In Version v0.34
Make small modification to compile on:
HP: 10.20 with CC and aCC
SGI: IRIX 6.2 IP22 with CC
DEC alpha: OSF1 V4.0 564.32 alpha
IBM AIX: 4.2
SUN: SunOS 4.1.4 2 sun4m
linux: g++ (on PPC (mac) and on i386 (PC) )
Correction in cas of iso mesh == anisomax = 1,
take the hmin is the correct h
Lundi 17 mars 1998 13:54:11
In Version v0.35
Correction of bug in ForceEdge, introduce for counting nb of swap
Correction of Assert:e>=BTh.edges && e<BTh.edges+nbe in MeshQuad.cpp line: 143
by nbe -> BTh.nbe
Mardi 24 Mars 1998
In Version v0.39
Correction of a BIG BUG in Metric.cpp line 139
to get double c11 = a11*a11, c22 = a22*a22, c21= a21*a21;
to big sure n2 >=0 ;
In version v0.40
Big bug in Metric.cpp
in routine Triangles::IntersectConsMetric
the term extra diagonal was divide by two 2 times
so remove the divide by 2 in line :
Metric Miv(dxdx[iv]*ci, dxdy[iv]*ci, dydy[iv]*ci);
Mercedi 25 Mars 1998
take the abs value of the Hessien, before jacobi iteration
in routine Triangles::IntersectConsMetric
Vendredi 27 Mars
change a limit from 2000 to 20000 connected
triangles to a vertex in Mesh2.c
correct some sample bug in the Makefile
15 avril 1998
Change for freefrem
add input file type .amdba,.am_fmt,.ftp
24 avril version v0.48
add format file .am .nopo
add a mesh type converter from any mesh type ot any maesh type
cvmsh2
replace amfmt2mesh
30 avril 98 v0.49
correct a BIG bug in metric.cpp (infinity loop)
variable kkk haved 2 meaning one is called kcount
remove of amfmt2mesh
Add color in macrgraph.cpp
04 mai 98 v0.50
correct a bug when metric computation with more than 1 field.
in metric.cpp,This bug was introduce in middle of april.
add #pragma for metrowerk compler
07 mai 98 v0.51
correction in Meshio.cpp line 206 (add +1) for the end of string
now :
char * r = new char [b-buf+1]
+ color in graphics
07 mai 98 v0.52
correction in the parameter of
now :
char * r = new char [b-buf+1]
15 juin 1998 v0.53
remove of ios::trunc in ofstream openning file
due to generation of output zero file on linux
i am not sure
25 juin 1998 v0.54
put a white space some where in fleid TangentAtEdges
9 sept 1998 v0.55
put the metric in double
+ set the metric vertex field when reading mesh
13 oct 1998 v0.57
correct a bug in bamg.cpp on SUN
if (*fbb) *fbb << endl;
if (*fBB) *fBB << endl;
becomes
if (fbb) *fbb << endl;
if (fBB) *fBB << endl;
14 oct 1998 v0.58
make active the arguments -oam filename
make small change in MeshDraw
19 nov 1998 v0.60
correct a bug in Triangle::Optim( ),
probleme of stop test
And due to the error we have some bug when reading a file
20 nov 1998
some correction for FreeFem in output
21 dec 1998 version 0.62
correct a bug in egcs 1.1.1 compiler
add a power in metric definition
17 avril 1998 version 0.63
correct small bug in BB file (read and write)
----------------------------
the postscript of the software's documentation are in
ftp://ftp.inria.fr/INRIA/Projects/Gamma/bamg/bamg.ps.gz
http://www-rocq.inra.fr/gamma/cdrom/www/bamg/eng.htm
Frédéric Hecht
mailto:Frederic.Hecht@inria.fr
http://www-rocq.inra.fr/Frederic.Hecht
INRIA, Domaine de Voluceau, BP 105, Rocquencourt
78153 le Chesney CEDEX
FRANCE