]> SALOME platform Git repositories - modules/smesh.git/commitdiff
Salome HOME
*** empty log message ***
authorabd <abd@opencascade.com>
Tue, 25 Apr 2006 12:52:08 +0000 (12:52 +0000)
committerabd <abd@opencascade.com>
Tue, 25 Apr 2006 12:52:08 +0000 (12:52 +0000)
src/MEFISTO2/aptrte.cxx
src/MEFISTO2/aptrte.h
src/SMDS/SMDS_Iterator.hxx
src/SMDS/SMDS_MeshElement.hxx
src/SMESH/SMESH_IndexedDataMapOfShapeIndexedMapOfShape.hxx

index 3464c8f7edc8a244c2f1df528cb060aec276b13d..8562631a6c911bf141679636f2785c28b49dee44 100755 (executable)
@@ -190,14 +190,23 @@ void  aptrte( Z nutysu, R aretmx,
   mnsoar = new Z[mosoar*mxsoar];
   if( mnsoar==NULL ) goto ERREUR;
   //initialiser le tableau mnsoar pour le hachage des aretes
+#ifdef DFORTRAN
+  INSOAR( mxsomm, mosoar, mxsoar, n1soar, mnsoar );
+#else
   insoar_( mxsomm, mosoar, mxsoar, n1soar, mnsoar );
+#endif  
 
   // mnarst( mxsomm ) numero mnsoar d'une arete pour chacun des sommets
   if( mnarst!=NULL ) delete [] mnarst;
   mnarst = new Z[1+mxsomm];
   if( mnarst==NULL ) goto ERREUR;
   n = 1+mxsomm;
+
+#ifdef DFORTRAN
+  AZEROI( n, mnarst );
+#else
   azeroi_( n, mnarst );
+#endif  
 
   // mnslig( mxsomm ) no de sommet dans sa ligne pour chaque sommet frontalier
   //               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;
   mnslig = new Z[mxsomm];
   if( mnslig==NULL ) goto ERREUR;
+#ifdef DFORTRAN
+  AZEROI( mxsomm, mnslig );
+#else
   azeroi_( mxsomm, mnslig );
+#endif  
 
   // initialisation des aretes frontalieres de la triangulation future
   // 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);
 
     //carre de la longueur de l'arete 1 de la ligne fermee n
-    d = pow( uvslf[ns0+1].x - uvslf[ns0].x, 2 ) 
-      + pow( uvslf[ns0+1].y - uvslf[ns0].y, 2 ) ;
+    d = pow( uvslf[ns0+1].x - uvslf[ns0].x, 2 );
+    d = d  + pow( uvslf[ns0+1].y - uvslf[ns0].y, 2 ) ;
     aremin = Min( aremin, 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
     mnslig[ns0-1] = 1000000 * n + ns1-nudslf[n-1];
+#ifdef DFORTRAN
+    FASOAR( ns1, ns2, moins1, moins1, n,
+#else
     fasoar_( ns1, ns2, moins1, moins1, n,
+#endif    
             mosoar, mxsoar, n1soar, mnsoar, mnarst,
             noar0,  ierr );
     //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);
 
       //carre de la longueur de l'arete
-      d = pow( uvslf[ns2-1].x - uvslf[ns1-1].x, 2) 
-        + pow( uvslf[ns2-1].y - uvslf[ns1-1].y, 2);
+      d = pow( uvslf[ns2-1].x - uvslf[ns1-1].x, 2); 
+      d = d  + pow( uvslf[ns2-1].y - uvslf[ns1-1].y, 2);
       aremin = Min( aremin, d );
       aremax = Max( aremax, d );
 
@@ -291,7 +308,11 @@ void  aptrte( Z nutysu, R aretmx,
       mnslig[ns] = 1000000 * n + ns1-nudslf[n-1];
 
       //ajout de l'arete dans la liste
+#ifdef DFORTRAN
+      FASOAR( ns1, ns2, moins1, moins1, n,
+#else
       fasoar_( ns1, ns2, moins1, moins1, n,
+#endif      
               mosoar, mxsoar, n1soar, mnsoar,
               mnarst, noar, ierr );
       //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;
 
   //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 );
+#endif  
   comxmi[0].z=0;
   comxmi[1].z=0;
 
@@ -387,7 +412,11 @@ void  aptrte( Z nutysu, R aretmx,
   mnqueu = new Z[mxqueu];
   if( mnqueu==NULL) goto ERREUR;
 
+#ifdef DFORTRAN
+  TEHOTE( nutysu, nbarpi, mxsomm, nbsomm, mnpxyd,
+#else
   tehote_( nutysu, nbarpi, mxsomm, nbsomm, mnpxyd,
+#endif  
           comxmi, aretmx,
           mntree, mxqueu, mnqueu,
           ierr );
@@ -414,7 +443,11 @@ void  aptrte( Z nutysu, R aretmx,
   // trianguler les triangles equilateraux feuilles a partir de leurs 3 sommets
   // 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,
+#endif  
           mxqueu, mnqueu, mntree, mosoar, mxsoar, n1soar, mnsoar,
           moartr, mxartr, n1artr, mnartr, mnarst,
           ierr );
@@ -443,8 +476,14 @@ void  aptrte( Z nutysu, R aretmx,
   // avec echange des 2 diagonales afin de rendre la triangulation delaunay
   // ======================================================================
   // 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 );
   tedela_( mnpxyd, mnarst,
+#endif
+  
           mosoar, mxsoar, n1soar, mnsoar, na,
           moartr, mxartr, n1artr, mnartr, n );
 
@@ -475,7 +514,11 @@ void  aptrte( Z nutysu, R aretmx,
   mnarcf2 = new Z[mxarcf];
   if( mnarcf2 == NULL ) goto ERREUR;
 
+#ifdef DFORTRAN
+  TEREFR( nbarpi, mnpxyd,
+#else
   terefr_( nbarpi, mnpxyd,
+#endif
           mosoar, mxsoar, n1soar, mnsoar,
           moartr, n1artr, mnartr, mnarst,
           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
     mnlftr[n] = n+1;
 
+#ifdef DFORTRAN
+  TESUEX( nblf,   mnlftr,
+#else
   tesuex_( nblf,   mnlftr,
+#endif  
           ndtri0, nbsomm, mnpxyd, mnslig,
           mosoar, mxsoar, mnsoar,
           moartr, mxartr, n1artr, mnartr, mnarst,
@@ -543,7 +590,11 @@ void  aptrte( Z nutysu, R aretmx,
   mnarcf3 = new Z[mxarcf];
   if( mnarcf3 == NULL ) goto ERREUR;
 
+#ifdef DFORTRAN
+  TEAMQT( nutysu,
+#else
   teamqt_( nutysu,
+#endif  
           mnarst, mosoar, mxsoar, n1soar, mnsoar,
           moartr, mxartr, n1artr, mnartr,
           mxarcf, mnarcf2, mnarcf3,
@@ -575,7 +626,11 @@ void  aptrte( Z nutysu, R aretmx,
     if( mnartr[nt*moartr-moartr] != 0 )
     {
       //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 );
+#endif      
       //les 3 sommets du triangle sont actifs
       mnarst[ nosotr[0] ] = 1;
       mnarst[ nosotr[1] ] = 1;
@@ -643,7 +698,11 @@ void  aptrte( Z nutysu, R aretmx,
     if( mnartr[i*moartr-moartr] != 0 )
     {
       //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 );
+#endif      
       nust[nbt++] = mnarst[ nosotr[0] ];
       nust[nbt++] = mnarst[ nosotr[1] ];
       nust[nbt++] = mnarst[ nosotr[2] ];
@@ -747,10 +806,18 @@ void qualitetrte( R3 *mnpxyd,
       nbtria++;
 
       //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 );
+#endif
 
       //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],
+#endif      
               qualite );
 
       //la qualite moyenne
@@ -760,7 +827,12 @@ void qualitetrte( R3 *mnpxyd,
       quamin = Min( quamin, qualite );
 
       //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] );
+#endif
+      
       if( d<0 )
       {
        //un triangle d'aire negative de plus
index 8d664a10a05d9814f139828c8348b5116d0b78f3..f12d9b96947eba9d0becf1346c083cafc40a9200 100755 (executable)
@@ -141,19 +141,61 @@ MEFISTO2D_EXPORT
 // 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
 
-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
 
 //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
-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 & 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
-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,
                          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,
                          Z * letree, Z & mxqueu, Z * mnqueu,
                          Z & ierr );}
 // 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
 
-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 & mosoar,  Z & mxsoar,  Z & n1soar, Z * mnsoar,
                           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
 // 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
 
-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 & moartr, Z & mxartr, Z & n1artr, Z * mnartr, Z & n );}
   // boucle sur les aretes internes (non sur une ligne de la frontiere)
   // 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 & moartr, Z & n1artr, Z * mnartr, Z * mnarst,
                          Z & mxarcf, Z * mnarc1, Z * mnarc2,
@@ -238,14 +334,32 @@ extern "C" {void terefr_( Z & nbarpi, R3 * mnpxyd,
 // detection des aretes frontalieres initiales perdues
 // 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 & mosoar, Z & mxsoar, Z * mnsoar,
                          Z & moartr, Z & mxartr, Z & n1artr, Z * mnartr, Z * mnarst,
                          Z & nbtria, Z * mntrsu, Z & ierr );}
 // 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 & moartr, Z & mxartr, Z & n1artr, Z * mnartr,
                          Z & mxarcf, Z * mntrcf, Z * mnstbo,
@@ -259,14 +373,40 @@ extern "C" {void teamqt_( Z & nutysu,
 // modification de la topologie des groupes de triangles
 // mise en delaunay de la triangulation
  
-extern "C" {void nusotr_( Z & nt, Z & mosoar, Z * mnsoar, Z & moartr, Z * mnartr,
-                         Z * nosotr );}
+extern "C" {void
+#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
 
-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
 
-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
 
 #endif
index 264438c7dd42fe8793bf424a5d35df14a2a6a25c..21824c1e7271da3f0e9185dc83c5e56798a372fe 100644 (file)
 #ifndef _SMDS_Iterator_HeaderFile
 #define _SMDS_Iterator_HeaderFile
 
+#include "SMESH_SMDS.hxx"
+
 ///////////////////////////////////////////////////////////////////////////////
 ///Abstract class for iterators
 ///@author Jerome Robert
 ///////////////////////////////////////////////////////////////////////////////
-template<typename VALUE> class SMDS_Iterator
+template<typename VALUE> class SMDS_EXPORT SMDS_Iterator
 {
   public:
        /// Return true if and only if there are other object in this iterator
index 0b774cda1e27d61b377d4ad5fae066258a6ee6a8..b3de99645d05d5b1a52f4688a09e1449f3ccd856 100644 (file)
@@ -63,8 +63,8 @@ class SMDS_EXPORT SMDS_MeshElement:public SMDS_MeshObject
        virtual SMDSAbs_ElementType GetType() const = 0;
        virtual bool IsPoly() const { return false; };
 
-       friend std::ostream & operator <<(std::ostream & OS, const SMDS_MeshElement *);
-       friend bool SMDS_MeshElementIDFactory::BindID(int ID,SMDS_MeshElement*elem);
+       friend SMDS_EXPORT std::ostream & operator <<(std::ostream & OS, const SMDS_MeshElement *);
+       friend SMDS_EXPORT bool SMDS_MeshElementIDFactory::BindID(int ID,SMDS_MeshElement*elem);
 
   protected:
        SMDS_MeshElement(int ID=-1);
index 4fc35195fab43095a82c14dc4c15937a067dad34..838d1f6a88ae3ce32ba5bbd8bff99e401b887884 100644 (file)
 
 #include "SMESH_SMESH.hxx"
 
+#include "SMESHDS_DataMapOfShape.hxx"
+
 #include <NCollection_DefineIndexedMap.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
 
 DEFINE_BASECOLLECTION (SMESH_BaseCollectionShape, TopoDS_Shape)