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 1999 version 0.63
   correct small bug in BB file (read and write)

23 decembre 1999 version 0.65
  add 3 options
  -hminaniso   conserve the anisotropy when hmin is reach
  to conserve maximal point of previous mesh (Background)
  -noKeepBackVertices      (old default)
  -KeepBackVertices        (new default)
 
05 jan 2000  version 0.66
  bug in file MeshGeom.cpp
  add line 358:
        Gh.edges[i].flag = 0;
05 avril 2001 version 0.68
  bug in ecriture de fichier non formatter
  dans OFortranUnFormattedFile::~OFortranUnFormattedFile()
   f->write((char*) l,sizeof(l));
   devient 
   f->write((char*) &l,sizeof(l));

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