FreeFem 3.5.x
|
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 */