00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 #ifndef __TRIANGUL_H
00035 #define __TRIANGUL_H
00036
00037 #include <femCommon.hpp>
00038
00039 namespace fem
00040 {
00041
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