Main Page   Alphabetical List   Compound List   File List   Compound Members  

femMesh.hpp

00001 // Emacs will be in -*- Mode: c++ -*-
00002 //
00003 // ********** DO NOT REMOVE THIS BANNER **********
00004 //
00005 // SUMMARY: Language for a Finite Element Method
00006 //
00007 // AUTHORS:  C. Prud'homme
00008 // ORG    :          
00009 // E-MAIL :   prudhomm@users.sourceforge.net
00010 //
00011 // ORIG-DATE:     June-94
00012 // LAST-MOD: 12-Jul-01 at 10:00:32 by 
00013 //
00014 // DESCRIPTION:
00015 /*
00016   This program is free software; you can redistribute it and/or modify
00017   it under the terms of the GNU General Public License as published by
00018   the Free Software Foundation; either version 2 of the License, or
00019   (at your option) any later version.
00020   
00021   This program is distributed in the hope that it will be useful,
00022   but WITHOUT ANY WARRANTY; without even the implied warranty of
00023   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00024   GNU General Public License for more details.
00025   
00026   You should have received a copy of the GNU General Public License
00027   along with this program; if not, write to the Free Software
00028   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
00029 
00030 */
00031 // DESCRIP-END.
00032 //
00033 
00034 #ifndef __TRIANGUL_H
00035 #define __TRIANGUL_H
00036 
00037 #include <femCommon.hpp>
00038 
00039 namespace fem
00040 {
00041   //DECLARE_CLASS( femMesh );
00042 
00052   class femMesh
00053   {
00054   public:
00055 
00059 
00061     typedef long integer;
00062     
00064     typedef long logical;
00065 
00067     typedef float femPoint[2];
00068     
00070     typedef long femTriangle[3];
00071   
00073 
00076     femMesh();
00077     femMesh( femMesh const& );
00079     
00083 
00084     int getNumberOfPoints() const
00085     {
00086       return np;
00087     }
00088 
00089     int getNumberOfCells() const
00090     {
00091       return nt;
00092     }
00094 
00098 
00099     void setDimensions( int, int );
00100 
00102 
00106 
00108     void Delete()
00109     {
00110       if (rp)
00111         {
00112           delete [] rp;
00113           rp = NULL;
00114         } 
00115       if (tr)
00116         {
00117           delete [] tr;
00118           tr = NULL;
00119         } 
00120       if (ng)
00121         {
00122           delete [] ng;
00123           ng = NULL;
00124         }
00125       if (ngt)
00126         {
00127           delete [] ngt;
00128           ngt = NULL;
00129         }
00130     }
00131     
00133     void removeBdyT();
00134 
00136     long  create (long nbs, long nbsmax, long nba,
00137                   float *crbdy, float *hbdy, long *arete, int *ngbdy, long *sd, long nbsd, int* flag,
00138                   int fflag);
00139 
00141     int mshptg_(float *cr,float *h, long *c, long *nu, long *nbs, long nbsmx, long *tri,
00142                 long *arete, long nba, long *sd,
00143                 long nbsd, long *reft, long *nbt, float coef, float puis, long *err);
00144 
00146     int check( float*, int ) const;
00147 
00149   public:
00150     femPoint* rp;
00151     femTriangle* tr;
00152     int* ngt;
00153     int* ng;
00154     
00155   private:
00156 
00157     void swapWithNeibhor( int );
00158     int renumerotate();
00159   
00160     int             mshrgl_ (float *c, long *nrfs, long *nbs, long *nu, long *w1,
00161                              long *w, float omega, long itermx, float eps);
00162     int             mshopt_ (long *c, long *nu, long *t, long a, long *err);
00163     void            mshvoi_ (long *nu, long *w1, long *w, long *nbt, long *nbs);
00164     int             msha1p_ (long *t, long *s, long *c, long *nu, long *reft, long *tete, long *nbt,
00165                              long *err);
00166     int             mshtri_ (float *cr, long *c, long *nbs, long *tri, long *nu, float *trfri, long *err);
00167     int             mshcxi_ (long *c, long *nu, long *tri, long *nbs, long *tete, long *err);
00168     int             mshfrt_ (long *c, long *nu, long *nbs, long *arete, long nba, long *sd,
00169                              long nbsd, long *reft, long *w, long *err);
00170     int             mshgpt_ (long *c, float *cr, long *nu, float *h, long *reft, long *nbs,
00171                              long nbsmx, long *nbt, float coef, float puis, float *trfri, long *err);
00172     long            mshlcl_ (long *c, long *nu, long *tete, long *s);
00173     int             mshtr1_ (long *criter, long *record, long *n);
00174     int             mshcvx_ (long direct, long *c, long *nu, long *pfold, long *err);
00175     int             mshfr1_ (long *c, long *nu, long *it1, long *ita, long *is1, long *s2, long *err);
00176     int             mshfr2_ (long *c, long *nu, long *lst, long *nbac, long *t, long *ta,
00177                              long *ss1, long *ss2, long *err);
00178   
00179     int             gibbs1_ (integer * n, integer * record, integer * ptvois);
00180     int             gibbs2_ (integer * n, integer * record, integer * criter);
00181     int             gibbsa_ (integer * n, integer * ptvois, integer * vois, integer * r, integer * m,
00182                              integer * nv, integer * nx, integer * ny, integer * nn, integer * w1, integer * w2,
00183                              integer * pfold, integer * pfnew, integer * impre, integer * nfout);
00184     int             gibbsb_ (integer * x, integer * y, integer * n, integer * ptvois,
00185                              integer * vois, integer * nx, integer * ny, integer * nv, integer * nn, integer * m,
00186                              integer * wh, integer * wl, integer * r, integer * impre, integer * nfout);
00187     int             gibbsc_ (integer * nz, integer * nv, integer * niveau, integer * n, integer *);
00188     int             gibbsd_ (integer * racine, integer * n, integer * ptvois, integer *
00189                              vois, integer * nv, integer * r, integer * niveau);
00190     int             gibbst_ (integer * n, integer * p, integer * nv, integer * nn, integer * ptvois, integer * vois,
00191                              integer * m, integer * r, integer * new_, integer * option,
00192                              integer * pfnew, integer * impre, integer * nfout);
00193     int             gibbsv (integer * ptvoi, integer * vois, integer * lvois, integer * w, integer * v);
00194 
00195   private:
00196     long np, nt;
00197     
00198   };
00199 
00200 }
00201 
00202 #endif /* __Triangul_H */

This is the FreeFEM reference manual
Provided by The KFEM project