*** empty log message ***

This commit is contained in:
abd 2006-04-25 12:52:08 +00:00
parent 578ea7c219
commit 04fa66f92d
5 changed files with 240 additions and 31 deletions

View File

@ -190,14 +190,23 @@ void aptrte( Z nutysu, R aretmx,
mnsoar = new Z[mosoar*mxsoar]; mnsoar = new Z[mosoar*mxsoar];
if( mnsoar==NULL ) goto ERREUR; if( mnsoar==NULL ) goto ERREUR;
//initialiser le tableau mnsoar pour le hachage des aretes //initialiser le tableau mnsoar pour le hachage des aretes
#ifdef DFORTRAN
INSOAR( mxsomm, mosoar, mxsoar, n1soar, mnsoar );
#else
insoar_( mxsomm, mosoar, mxsoar, n1soar, mnsoar ); insoar_( mxsomm, mosoar, mxsoar, n1soar, mnsoar );
#endif
// mnarst( mxsomm ) numero mnsoar d'une arete pour chacun des sommets // mnarst( mxsomm ) numero mnsoar d'une arete pour chacun des sommets
if( mnarst!=NULL ) delete [] mnarst; if( mnarst!=NULL ) delete [] mnarst;
mnarst = new Z[1+mxsomm]; mnarst = new Z[1+mxsomm];
if( mnarst==NULL ) goto ERREUR; if( mnarst==NULL ) goto ERREUR;
n = 1+mxsomm; n = 1+mxsomm;
#ifdef DFORTRAN
AZEROI( n, mnarst );
#else
azeroi_( n, mnarst ); azeroi_( n, mnarst );
#endif
// mnslig( mxsomm ) no de sommet dans sa ligne pour chaque sommet frontalier // mnslig( mxsomm ) no de sommet dans sa ligne pour chaque sommet frontalier
// ou no du point si interne forc'e par l'utilisateur // ou no du point si interne forc'e par l'utilisateur
@ -205,7 +214,11 @@ void aptrte( Z nutysu, R aretmx,
if( mnslig!=NULL ) delete [] mnslig; if( mnslig!=NULL ) delete [] mnslig;
mnslig = new Z[mxsomm]; mnslig = new Z[mxsomm];
if( mnslig==NULL ) goto ERREUR; if( mnslig==NULL ) goto ERREUR;
#ifdef DFORTRAN
AZEROI( mxsomm, mnslig );
#else
azeroi_( mxsomm, mnslig ); azeroi_( mxsomm, mnslig );
#endif
// initialisation des aretes frontalieres de la triangulation future // initialisation des aretes frontalieres de la triangulation future
// renumerotation des sommets des aretes des lignes pour la triangulation // renumerotation des sommets des aretes des lignes pour la triangulation
@ -230,8 +243,8 @@ void aptrte( Z nutysu, R aretmx,
// << " " << mnpxyd[ns0].y << " longueur arete=" << mnpxyd[ns0].z); // << " " << mnpxyd[ns0].y << " longueur arete=" << mnpxyd[ns0].z);
//carre de la longueur de l'arete 1 de la ligne fermee n //carre de la longueur de l'arete 1 de la ligne fermee n
d = pow( uvslf[ns0+1].x - uvslf[ns0].x, 2 ) d = pow( uvslf[ns0+1].x - uvslf[ns0].x, 2 );
+ pow( uvslf[ns0+1].y - uvslf[ns0].y, 2 ) ; d = d + pow( uvslf[ns0+1].y - uvslf[ns0].y, 2 ) ;
aremin = Min( aremin, d ); aremin = Min( aremin, d );
aremax = Max( aremax, d ); aremax = Max( aremax, d );
@ -247,7 +260,11 @@ void aptrte( Z nutysu, R aretmx,
//le numero n de la ligne du sommet et son numero ns1 dans la ligne //le numero n de la ligne du sommet et son numero ns1 dans la ligne
mnslig[ns0-1] = 1000000 * n + ns1-nudslf[n-1]; mnslig[ns0-1] = 1000000 * n + ns1-nudslf[n-1];
#ifdef DFORTRAN
FASOAR( ns1, ns2, moins1, moins1, n,
#else
fasoar_( ns1, ns2, moins1, moins1, n, fasoar_( ns1, ns2, moins1, moins1, n,
#endif
mosoar, mxsoar, n1soar, mnsoar, mnarst, mosoar, mxsoar, n1soar, mnsoar, mnarst,
noar0, ierr ); noar0, ierr );
//pas de test sur ierr car pas de saturation possible a ce niveau //pas de test sur ierr car pas de saturation possible a ce niveau
@ -282,8 +299,8 @@ void aptrte( Z nutysu, R aretmx,
// << " " << mnpxyd[ns].y << " longueur arete=" << mnpxyd[ns].z); // << " " << mnpxyd[ns].y << " longueur arete=" << mnpxyd[ns].z);
//carre de la longueur de l'arete //carre de la longueur de l'arete
d = pow( uvslf[ns2-1].x - uvslf[ns1-1].x, 2) d = pow( uvslf[ns2-1].x - uvslf[ns1-1].x, 2);
+ pow( uvslf[ns2-1].y - uvslf[ns1-1].y, 2); d = d + pow( uvslf[ns2-1].y - uvslf[ns1-1].y, 2);
aremin = Min( aremin, d ); aremin = Min( aremin, d );
aremax = Max( aremax, d ); aremax = Max( aremax, d );
@ -291,7 +308,11 @@ void aptrte( Z nutysu, R aretmx,
mnslig[ns] = 1000000 * n + ns1-nudslf[n-1]; mnslig[ns] = 1000000 * n + ns1-nudslf[n-1];
//ajout de l'arete dans la liste //ajout de l'arete dans la liste
#ifdef DFORTRAN
FASOAR( ns1, ns2, moins1, moins1, n,
#else
fasoar_( ns1, ns2, moins1, moins1, n, fasoar_( ns1, ns2, moins1, moins1, n,
#endif
mosoar, mxsoar, n1soar, mnsoar, mosoar, mxsoar, n1soar, mnsoar,
mnarst, noar, ierr ); mnarst, noar, ierr );
//pas de test sur ierr car pas de saturation possible a ce niveau //pas de test sur ierr car pas de saturation possible a ce niveau
@ -359,7 +380,11 @@ void aptrte( Z nutysu, R aretmx,
if( mntree==NULL ) goto ERREUR; if( mntree==NULL ) goto ERREUR;
//initialisation du tableau letree et ajout dans letree des sommets 1 a nbsomm //initialisation du tableau letree et ajout dans letree des sommets 1 a nbsomm
#ifdef DFORTRAN
TEAJTE( mxsomm, nbsomm, mnpxyd, comxmi, aretmx, mxtree, mntree, ierr );
#else
teajte_( mxsomm, nbsomm, mnpxyd, comxmi, aretmx, mxtree, mntree, ierr ); teajte_( mxsomm, nbsomm, mnpxyd, comxmi, aretmx, mxtree, mntree, ierr );
#endif
comxmi[0].z=0; comxmi[0].z=0;
comxmi[1].z=0; comxmi[1].z=0;
@ -387,7 +412,11 @@ void aptrte( Z nutysu, R aretmx,
mnqueu = new Z[mxqueu]; mnqueu = new Z[mxqueu];
if( mnqueu==NULL) goto ERREUR; if( mnqueu==NULL) goto ERREUR;
#ifdef DFORTRAN
TEHOTE( nutysu, nbarpi, mxsomm, nbsomm, mnpxyd,
#else
tehote_( nutysu, nbarpi, mxsomm, nbsomm, mnpxyd, tehote_( nutysu, nbarpi, mxsomm, nbsomm, mnpxyd,
#endif
comxmi, aretmx, comxmi, aretmx,
mntree, mxqueu, mnqueu, mntree, mxqueu, mnqueu,
ierr ); ierr );
@ -414,7 +443,11 @@ void aptrte( Z nutysu, R aretmx,
// trianguler les triangles equilateraux feuilles a partir de leurs 3 sommets // trianguler les triangles equilateraux feuilles a partir de leurs 3 sommets
// et des points de la frontiere, des points internes imposes interieurs // et des points de la frontiere, des points internes imposes interieurs
// ========================================================================== // ==========================================================================
#ifdef DFORTRAN
TETRTE( comxmi, aretmx, nbarpi, mxsomm, mnpxyd,
#else
tetrte_( comxmi, aretmx, nbarpi, mxsomm, mnpxyd, tetrte_( comxmi, aretmx, nbarpi, mxsomm, mnpxyd,
#endif
mxqueu, mnqueu, mntree, mosoar, mxsoar, n1soar, mnsoar, mxqueu, mnqueu, mntree, mosoar, mxsoar, n1soar, mnsoar,
moartr, mxartr, n1artr, mnartr, mnarst, moartr, mxartr, n1artr, mnartr, mnarst,
ierr ); ierr );
@ -443,8 +476,14 @@ void aptrte( Z nutysu, R aretmx,
// avec echange des 2 diagonales afin de rendre la triangulation delaunay // avec echange des 2 diagonales afin de rendre la triangulation delaunay
// ====================================================================== // ======================================================================
// formation du chainage 6 des aretes internes a echanger eventuellement // formation du chainage 6 des aretes internes a echanger eventuellement
#ifdef DFORTRAN
AISOAR( mosoar, mxsoar, mnsoar, na );
TEDELA( mnpxyd, mnarst,
#else
aisoar_( mosoar, mxsoar, mnsoar, na ); aisoar_( mosoar, mxsoar, mnsoar, na );
tedela_( mnpxyd, mnarst, tedela_( mnpxyd, mnarst,
#endif
mosoar, mxsoar, n1soar, mnsoar, na, mosoar, mxsoar, n1soar, mnsoar, na,
moartr, mxartr, n1artr, mnartr, n ); moartr, mxartr, n1artr, mnartr, n );
@ -475,7 +514,11 @@ void aptrte( Z nutysu, R aretmx,
mnarcf2 = new Z[mxarcf]; mnarcf2 = new Z[mxarcf];
if( mnarcf2 == NULL ) goto ERREUR; if( mnarcf2 == NULL ) goto ERREUR;
#ifdef DFORTRAN
TEREFR( nbarpi, mnpxyd,
#else
terefr_( nbarpi, mnpxyd, terefr_( nbarpi, mnpxyd,
#endif
mosoar, mxsoar, n1soar, mnsoar, mosoar, mxsoar, n1soar, mnsoar,
moartr, n1artr, mnartr, mnarst, moartr, n1artr, mnartr, mnarst,
mxarcf, mn1arcf, mnarcf, mnarcf1, mnarcf2, mxarcf, mn1arcf, mnarcf, mnarcf1, mnarcf2,
@ -516,7 +559,11 @@ void aptrte( Z nutysu, R aretmx,
for (n=0; n<nblf; n++) //numero de la ligne fermee de 1 a nblf for (n=0; n<nblf; n++) //numero de la ligne fermee de 1 a nblf
mnlftr[n] = n+1; mnlftr[n] = n+1;
#ifdef DFORTRAN
TESUEX( nblf, mnlftr,
#else
tesuex_( nblf, mnlftr, tesuex_( nblf, mnlftr,
#endif
ndtri0, nbsomm, mnpxyd, mnslig, ndtri0, nbsomm, mnpxyd, mnslig,
mosoar, mxsoar, mnsoar, mosoar, mxsoar, mnsoar,
moartr, mxartr, n1artr, mnartr, mnarst, moartr, mxartr, n1artr, mnartr, mnarst,
@ -543,7 +590,11 @@ void aptrte( Z nutysu, R aretmx,
mnarcf3 = new Z[mxarcf]; mnarcf3 = new Z[mxarcf];
if( mnarcf3 == NULL ) goto ERREUR; if( mnarcf3 == NULL ) goto ERREUR;
#ifdef DFORTRAN
TEAMQT( nutysu,
#else
teamqt_( nutysu, teamqt_( nutysu,
#endif
mnarst, mosoar, mxsoar, n1soar, mnsoar, mnarst, mosoar, mxsoar, n1soar, mnsoar,
moartr, mxartr, n1artr, mnartr, moartr, mxartr, n1artr, mnartr,
mxarcf, mnarcf2, mnarcf3, mxarcf, mnarcf2, mnarcf3,
@ -575,7 +626,11 @@ void aptrte( Z nutysu, R aretmx,
if( mnartr[nt*moartr-moartr] != 0 ) if( mnartr[nt*moartr-moartr] != 0 )
{ {
//le numero des 3 sommets du triangle nt //le numero des 3 sommets du triangle nt
#ifdef DFORTRAN
NUSOTR( nt, mosoar, mnsoar, moartr, mnartr, nosotr );
#else
nusotr_( nt, mosoar, mnsoar, moartr, mnartr, nosotr ); nusotr_( nt, mosoar, mnsoar, moartr, mnartr, nosotr );
#endif
//les 3 sommets du triangle sont actifs //les 3 sommets du triangle sont actifs
mnarst[ nosotr[0] ] = 1; mnarst[ nosotr[0] ] = 1;
mnarst[ nosotr[1] ] = 1; mnarst[ nosotr[1] ] = 1;
@ -643,7 +698,11 @@ void aptrte( Z nutysu, R aretmx,
if( mnartr[i*moartr-moartr] != 0 ) if( mnartr[i*moartr-moartr] != 0 )
{ {
//le triangle i est interne => nosotr numero de ses 3 sommets //le triangle i est interne => nosotr numero de ses 3 sommets
#ifdef DFORTRAN
NUSOTR( i, mosoar, mnsoar, moartr, mnartr, nosotr );
#else
nusotr_( i, mosoar, mnsoar, moartr, mnartr, nosotr ); nusotr_( i, mosoar, mnsoar, moartr, mnartr, nosotr );
#endif
nust[nbt++] = mnarst[ nosotr[0] ]; nust[nbt++] = mnarst[ nosotr[0] ];
nust[nbt++] = mnarst[ nosotr[1] ]; nust[nbt++] = mnarst[ nosotr[1] ];
nust[nbt++] = mnarst[ nosotr[2] ]; nust[nbt++] = mnarst[ nosotr[2] ];
@ -747,10 +806,18 @@ void qualitetrte( R3 *mnpxyd,
nbtria++; nbtria++;
//le numero des 3 sommets du triangle nt //le numero des 3 sommets du triangle nt
#ifdef DFORTRAN
NUSOTR( nt, mosoar, mnsoar, moartr, mnartr, nosotr );
#else
nusotr_( nt, mosoar, mnsoar, moartr, mnartr, nosotr ); nusotr_( nt, mosoar, mnsoar, moartr, mnartr, nosotr );
#endif
//la qualite du triangle ns1 ns2 ns3 //la qualite du triangle ns1 ns2 ns3
#ifdef DFORTRAN
QUTR2D( mnpxyd[nosotr[0]-1], mnpxyd[nosotr[1]-1], mnpxyd[nosotr[2]-1],
#else
qutr2d_( mnpxyd[nosotr[0]-1], mnpxyd[nosotr[1]-1], mnpxyd[nosotr[2]-1], qutr2d_( mnpxyd[nosotr[0]-1], mnpxyd[nosotr[1]-1], mnpxyd[nosotr[2]-1],
#endif
qualite ); qualite );
//la qualite moyenne //la qualite moyenne
@ -760,7 +827,12 @@ void qualitetrte( R3 *mnpxyd,
quamin = Min( quamin, qualite ); quamin = Min( quamin, qualite );
//aire signee du triangle nt //aire signee du triangle nt
#ifdef DFORTRAN
d = SURTD2( mnpxyd[nosotr[0]-1], mnpxyd[nosotr[1]-1], mnpxyd[nosotr[2]-1] );
#else
d = surtd2_( mnpxyd[nosotr[0]-1], mnpxyd[nosotr[1]-1], mnpxyd[nosotr[2]-1] ); d = surtd2_( mnpxyd[nosotr[0]-1], mnpxyd[nosotr[1]-1], mnpxyd[nosotr[2]-1] );
#endif
if( d<0 ) if( d<0 )
{ {
//un triangle d'aire negative de plus //un triangle d'aire negative de plus

View File

@ -141,19 +141,61 @@ MEFISTO2D_EXPORT
// auteur : Alain Perronnet Analyse Numerique Paris UPMC decembre 2001 // auteur : Alain Perronnet Analyse Numerique Paris UPMC decembre 2001
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
extern "C" { void tempscpu_( double & tempsec ); } extern "C" { void
#ifdef WIN32
__stdcall
#endif
#ifdef DFORTRAN
TEMPSCPU( double & tempsec ); }
#else
tempscpu_( double & tempsec ); }
#endif
//Retourne le temps CPU utilise en secondes //Retourne le temps CPU utilise en secondes
extern "C" { void deltacpu_( R & dtcpu ); } extern "C" { void
#ifdef WIN32
__stdcall
#endif
#ifdef DFORTRAN
DELTACPU( R & dtcpu ); }
#else
deltacpu_( R & dtcpu ); }
#endif
//Retourne le temps CPU utilise en secondes depuis le precedent appel //Retourne le temps CPU utilise en secondes depuis le precedent appel
//initialiser le tableau mnsoar pour le hachage des aretes //initialiser le tableau mnsoar pour le hachage des aretes
extern "C" {void insoar_( Z & mxsomm, Z & mosoar, Z & mxsoar, Z & n1soar, Z * mnsoar );} extern "C" {void
#ifdef WIN32
__stdcall
#endif
#ifdef DFORTRAN
INSOAR( Z & mxsomm, Z & mosoar, Z & mxsoar, Z & n1soar, Z * mnsoar );}
#else
insoar_( Z & mxsomm, Z & mosoar, Z & mxsoar, Z & n1soar, Z * mnsoar );}
#endif
//mettre a zero les nb entiers de tab //mettre a zero les nb entiers de tab
extern "C" {void azeroi_( Z & nb, Z * tab );} extern "C" {void
#ifdef WIN32
__stdcall
#endif
#ifdef DFORTRAN
AZEROI( Z & nb, Z * tab );}
#else
azeroi_( Z & nb, Z * tab );}
#endif
extern "C" {void fasoar_( Z & ns1, Z & ns2, Z & nt1, Z & nt2, Z & nolign, extern "C" {void
#ifdef WIN32
__stdcall
#endif
#ifdef DFORTRAN
FASOAR( Z & ns1, Z & ns2, Z & nt1, Z & nt2, Z & nolign,
#else
fasoar_( Z & ns1, Z & ns2, Z & nt1, Z & nt2, Z & nolign,
#endif
Z & mosoar, Z & mxsoar, Z & n1soar, Z * mnsoar, Z * mnarst, Z & mosoar, Z & mxsoar, Z & n1soar, Z * mnsoar, Z * mnarst,
Z & noar, Z & ierr );} Z & noar, Z & ierr );}
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
@ -200,19 +242,46 @@ extern "C" {void fasoar_( Z & ns1, Z & ns2, Z & nt1, Z & nt2, Z & nolign,
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//initialisation du tableau letree et ajout dans letree des sommets 1 a nbsomm //initialisation du tableau letree et ajout dans letree des sommets 1 a nbsomm
extern "C" {void teajte_( Z & mxsomm, Z & nbsomm, R3 * mnpxyd, R3 * comxmi, extern "C" {void
#ifdef WIN32
__stdcall
#endif
#ifdef DFORTRAN
TEAJTE
#else
teajte_
#endif
( Z & mxsomm, Z & nbsomm, R3 * mnpxyd, R3 * comxmi,
R & aretmx, Z & mxtree, Z * letree, R & aretmx, Z & mxtree, Z * letree,
Z & ierr );} Z & ierr );}
extern "C" {void tehote_( Z & nutysu, Z & nbarpi, Z & mxsomm, Z & nbsomm, R3 * mnpxyd, extern "C" {void
#ifdef WIN32
__stdcall
#endif
#ifdef DFORTRAN
TEHOTE
#else
tehote_
#endif
( Z & nutysu, Z & nbarpi, Z & mxsomm, Z & nbsomm, R3 * mnpxyd,
R3 * comxmi, R & aretmx, R3 * comxmi, R & aretmx,
Z * letree, Z & mxqueu, Z * mnqueu, Z * letree, Z & mxqueu, Z * mnqueu,
Z & ierr );} Z & ierr );}
// homogeneisation de l'arbre des te a un saut de taille au plus // homogeneisation de l'arbre des te a un saut de taille au plus
// prise en compte des tailles d'aretes souhaitees autour des sommets initiaux // prise en compte des tailles d'aretes souhaitees autour des sommets initiaux
extern "C" {void tetrte_( R3 * comxmi, R & aretmx, Z & nbarpi, Z & mxsomm, R3 * mnpxyd, extern "C" {void
#ifdef WIN32
__stdcall
#endif
#ifdef DFORTRAN
TETRTE
#else
tetrte_
#endif
( R3 * comxmi, R & aretmx, Z & nbarpi, Z & mxsomm, R3 * mnpxyd,
Z & mxqueu, Z * mnqueu, Z * mntree, Z & mxqueu, Z * mnqueu, Z * mntree,
Z & mosoar, Z & mxsoar, Z & n1soar, Z * mnsoar, Z & mosoar, Z & mxsoar, Z & n1soar, Z * mnsoar,
Z & moartr, Z & mxartr, Z & n1artr, Z * mnartr, Z * mnarst, Z & moartr, Z & mxartr, Z & n1artr, Z * mnartr, Z * mnarst,
@ -220,16 +289,43 @@ extern "C" {void tetrte_( R3 * comxmi, R & aretmx, Z & nbarpi, Z & mxsomm, R3 *
// trianguler les triangles equilateraux feuilles a partir de leurs 3 sommets // trianguler les triangles equilateraux feuilles a partir de leurs 3 sommets
// et des points de la frontiere, des points internes imposes interieurs // et des points de la frontiere, des points internes imposes interieurs
extern "C" {void aisoar_( Z & mosoar, Z & mxsoar, Z * mnsoar, Z & na );} extern "C" {void
#ifdef WIN32
__stdcall
#endif
#ifdef DFORTRAN
AISOAR
#else
aisoar_
#endif
( Z & mosoar, Z & mxsoar, Z * mnsoar, Z & na );}
// formation du chainage 6 des aretes internes a echanger eventuellement // formation du chainage 6 des aretes internes a echanger eventuellement
extern "C" {void tedela_( R3 * mnpxyd, Z * mnarst, extern "C" {void
#ifdef WIN32
__stdcall
#endif
#ifdef DFORTRAN
TEDELA
#else
tedela_
#endif
( R3 * mnpxyd, Z * mnarst,
Z & mosoar, Z & mxsoar, Z & n1soar, Z * mnsoar, Z & na, Z & mosoar, Z & mxsoar, Z & n1soar, Z * mnsoar, Z & na,
Z & moartr, Z & mxartr, Z & n1artr, Z * mnartr, Z & n );} Z & moartr, Z & mxartr, Z & n1artr, Z * mnartr, Z & n );}
// boucle sur les aretes internes (non sur une ligne de la frontiere) // boucle sur les aretes internes (non sur une ligne de la frontiere)
// avec echange des 2 diagonales afin de rendre la triangulation delaunay // avec echange des 2 diagonales afin de rendre la triangulation delaunay
extern "C" {void terefr_( Z & nbarpi, R3 * mnpxyd, extern "C" {void
#ifdef WIN32
__stdcall
#endif
#ifdef DFORTRAN
TEREFR
#else
terefr_
#endif
( Z & nbarpi, R3 * mnpxyd,
Z & mosoar, Z & mxsoar, Z & n1soar, Z * mnsoar, Z & mosoar, Z & mxsoar, Z & n1soar, Z * mnsoar,
Z & moartr, Z & n1artr, Z * mnartr, Z * mnarst, Z & moartr, Z & n1artr, Z * mnartr, Z * mnarst,
Z & mxarcf, Z * mnarc1, Z * mnarc2, Z & mxarcf, Z * mnarc1, Z * mnarc2,
@ -238,14 +334,32 @@ extern "C" {void terefr_( Z & nbarpi, R3 * mnpxyd,
// detection des aretes frontalieres initiales perdues // detection des aretes frontalieres initiales perdues
// triangulation frontale pour les restaurer // triangulation frontale pour les restaurer
extern "C" {void tesuex_( Z & nblf, Z * nulftr, extern "C" {void
#ifdef WIN32
__stdcall
#endif
#ifdef DFORTRAN
TESUEX
#else
tesuex_
#endif
( Z & nblf, Z * nulftr,
Z & ndtri0, Z & nbsomm, R3 * mnpxyd, Z * mnslig, Z & ndtri0, Z & nbsomm, R3 * mnpxyd, Z * mnslig,
Z & mosoar, Z & mxsoar, Z * mnsoar, Z & mosoar, Z & mxsoar, Z * mnsoar,
Z & moartr, Z & mxartr, Z & n1artr, Z * mnartr, Z * mnarst, Z & moartr, Z & mxartr, Z & n1artr, Z * mnartr, Z * mnarst,
Z & nbtria, Z * mntrsu, Z & ierr );} Z & nbtria, Z * mntrsu, Z & ierr );}
// suppression des triangles externes a la surface // suppression des triangles externes a la surface
extern "C" {void teamqt_( Z & nutysu, extern "C" {void
#ifdef WIN32
__stdcall
#endif
#ifdef DFORTRAN
TEAMQT
#else
teamqt_
#endif
( Z & nutysu,
Z * mnarst, Z & mosoar, Z & mxsoar, Z & n1soar, Z * mnsoar, Z * mnarst, Z & mosoar, Z & mxsoar, Z & n1soar, Z * mnsoar,
Z & moartr, Z & mxartr, Z & n1artr, Z * mnartr, Z & moartr, Z & mxartr, Z & n1artr, Z * mnartr,
Z & mxarcf, Z * mntrcf, Z * mnstbo, Z & mxarcf, Z * mntrcf, Z * mnstbo,
@ -259,14 +373,40 @@ extern "C" {void teamqt_( Z & nutysu,
// modification de la topologie des groupes de triangles // modification de la topologie des groupes de triangles
// mise en delaunay de la triangulation // mise en delaunay de la triangulation
extern "C" {void nusotr_( Z & nt, Z & mosoar, Z * mnsoar, Z & moartr, Z * mnartr, extern "C" {void
Z * nosotr );} #ifdef WIN32
__stdcall
#endif
#ifdef DFORTRAN
NUSOTR
#else
nusotr_
#endif
( Z & nt, Z & mosoar, Z * mnsoar, Z & moartr, Z * mnartr,Z * nosotr );}
//retrouver les numero des 3 sommets du triangle nt //retrouver les numero des 3 sommets du triangle nt
extern "C" {void qutr2d_( R3 & p1, R3 & p2, R3 & p3, R & qualite );} extern "C" {void
#ifdef WIN32
__stdcall
#endif
#ifdef DFORTRAN
QUTR2D
#else
qutr2d_
#endif
( R3 & p1, R3 & p2, R3 & p3, R & qualite );}
//calculer la qualite d'un triangle de R2 de sommets p1, p2, p3 //calculer la qualite d'un triangle de R2 de sommets p1, p2, p3
extern "C" { R surtd2_( R3 & p1, R3 & p2, R3 & p3 ); } extern "C" { R
#ifdef WIN32
__stdcall
#endif
#ifdef DFORTRAN
SURTD2
#else
surtd2_
#endif
( R3 & p1, R3 & p2, R3 & p3 ); }
//calcul de la surface d'un triangle defini par 3 points de r**2 //calcul de la surface d'un triangle defini par 3 points de r**2
#endif #endif

View File

@ -22,11 +22,13 @@
#ifndef _SMDS_Iterator_HeaderFile #ifndef _SMDS_Iterator_HeaderFile
#define _SMDS_Iterator_HeaderFile #define _SMDS_Iterator_HeaderFile
#include "SMESH_SMDS.hxx"
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
///Abstract class for iterators ///Abstract class for iterators
///@author Jerome Robert ///@author Jerome Robert
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
template<typename VALUE> class SMDS_Iterator template<typename VALUE> class SMDS_EXPORT SMDS_Iterator
{ {
public: public:
/// Return true if and only if there are other object in this iterator /// Return true if and only if there are other object in this iterator

View File

@ -63,8 +63,8 @@ class SMDS_EXPORT SMDS_MeshElement:public SMDS_MeshObject
virtual SMDSAbs_ElementType GetType() const = 0; virtual SMDSAbs_ElementType GetType() const = 0;
virtual bool IsPoly() const { return false; }; virtual bool IsPoly() const { return false; };
friend std::ostream & operator <<(std::ostream & OS, const SMDS_MeshElement *); friend SMDS_EXPORT std::ostream & operator <<(std::ostream & OS, const SMDS_MeshElement *);
friend bool SMDS_MeshElementIDFactory::BindID(int ID,SMDS_MeshElement*elem); friend SMDS_EXPORT bool SMDS_MeshElementIDFactory::BindID(int ID,SMDS_MeshElement*elem);
protected: protected:
SMDS_MeshElement(int ID=-1); SMDS_MeshElement(int ID=-1);

View File

@ -28,17 +28,12 @@
#include "SMESH_SMESH.hxx" #include "SMESH_SMESH.hxx"
#include "SMESHDS_DataMapOfShape.hxx"
#include <NCollection_DefineIndexedMap.hxx> #include <NCollection_DefineIndexedMap.hxx>
#include <TopoDS_Shape.hxx> #include <TopoDS_Shape.hxx>
SMESH_EXPORT
inline Standard_Boolean IsEqual(const TopoDS_Shape& S1,
const TopoDS_Shape& S2)
{
return S1.IsSame(S2);
}
/// Class SMESH_IndexedMapOfShape /// Class SMESH_IndexedMapOfShape
DEFINE_BASECOLLECTION (SMESH_BaseCollectionShape, TopoDS_Shape) DEFINE_BASECOLLECTION (SMESH_BaseCollectionShape, TopoDS_Shape)