]> SALOME platform Git repositories - tools/solverlab.git/commitdiff
Salome HOME
Identified static functions
authormichael <michael@localhost.localdomain>
Mon, 17 May 2021 08:25:37 +0000 (10:25 +0200)
committermichael <michael@localhost.localdomain>
Mon, 17 May 2021 08:25:37 +0000 (10:25 +0200)
CoreFlows/Models/inc/DiffusionEquation.hxx
CoreFlows/Models/inc/LinearElasticityModel.hxx
CoreFlows/Models/inc/StationaryDiffusionEquation.hxx
CoreFlows/Models/inc/utilitaire_algebre.h
CoreFlows/Models/src/FiveEqsTwoFluid.cxx
CoreFlows/Models/src/IsothermalTwoFluid.cxx
CoreFlows/Models/src/ProblemFluid.cxx
CoreFlows/Models/src/SinglePhase.cxx
CoreFlows/Models/src/SinglePhaseStaggered.cxx
CoreFlows/Models/src/StationaryDiffusionEquation.cxx

index 73dc61f5692f55f9622877f8098d925ee9e62ba1..cb922c6e21944dc7711b22bb6356fbceb1469508 100755 (executable)
@@ -141,9 +141,9 @@ protected :
     /*********** Functions for finite element method ***********/
     Vector gradientNodal(Matrix M, vector< double > v);//gradient of nodal shape functions
        double computeDiffusionMatrixFE(bool & stop);
-    int fact(int n);
-    int unknownNodeIndex(int globalIndex, std::vector< int > dirichletNodes);
-    int globalNodeIndex(int unknownIndex, std::vector< int > dirichletNodes);
+    static int fact(int n);
+    static int unknownNodeIndex(int globalIndex, std::vector< int > dirichletNodes);
+    static int globalNodeIndex(int unknownIndex, std::vector< int > dirichletNodes);
 
        TimeScheme _timeScheme;
        map<string, LimitFieldDiffusion> _limitField;
index 81aeed208cb6cd7d30781201508456f4c7a209bb..bdaee35ba4e0138168ee4c26a089d1599fcb13df 100755 (executable)
@@ -178,9 +178,9 @@ protected :
     /*********** Functions for finite element method ***********/
     Vector gradientNodal(Matrix M, vector< double > v);//gradient of nodal shape functions
        double computeStiffnessMatrixFE(bool & stop);
-    int fact(int n);
-    int unknownNodeIndex(int globalIndex, std::vector< int > dirichletNodes);
-    int globalNodeIndex(int unknownIndex, std::vector< int > dirichletNodes);
+    static int fact(int n);
+    static int unknownNodeIndex(int globalIndex, std::vector< int > dirichletNodes);
+    static int globalNodeIndex(int unknownIndex, std::vector< int > dirichletNodes);
 
     /********* Possibility to set a boundary field as Dirichlet boundary condition *********/
     bool _dirichletValuesSet;
index 8c9809530ae903dc981c0b28fddd64bfee05c465..7810a39d3cd48eaf8d428abedeeb8d8d6ae99d48 100755 (executable)
@@ -219,9 +219,9 @@ protected :
     /*********** Functions for finite element method ***********/
     Vector gradientNodal(Matrix M, vector< double > v);//gradient of nodal shape functions
        double computeDiffusionMatrixFE(bool & stop);
-    int fact(int n);
-    int unknownNodeIndex(int globalIndex, std::vector< int > dirichletNodes) const;
-    int globalNodeIndex(int unknownIndex, std::vector< int > dirichletNodes) const;
+    static int fact(int n);
+    static int unknownNodeIndex(int globalIndex, std::vector< int > dirichletNodes);
+    static int globalNodeIndex(int unknownIndex, std::vector< int > dirichletNodes);
 
     /********* Possibility to set a boundary field as DirichletNeumann boundary condition *********/
     bool _dirichletValuesSet;
index 874a35653caf40e586d5777e22a766cd83bd3e7c..033b7bb4a0a0297f15d399f46f6ff3825b05b26e 100755 (executable)
@@ -158,12 +158,12 @@ class Polynoms
 {
 public:
 
-       void abs_par_interp_directe(int n,  vector< complex< double > > vp,   double * A, int sizeA, double epsilon, double *result,vector< complex< double > > y);
+       static void abs_par_interp_directe(int n,  vector< complex< double > > vp,   double * A, int sizeA, double epsilon, double *result,vector< complex< double > > y);
 
        /** \fn polynome_caracteristique
         * \brief Calcule le polynome caracteristique
         * @return */
-       vector< double > polynome_caracteristique(double alpha_v, double alpha_l, double Uv, double Ul, double rhov, double rhol, double   cv_2, double cl_2, double dPiv, double dPil);//c= inverse vitesse du son!
+       static vector< double > polynome_caracteristique(double alpha_v, double alpha_l, double Uv, double Ul, double rhov, double rhol, double   cv_2, double cl_2, double dPiv, double dPil);//c= inverse vitesse du son!
        /** \fn polynome_caracteristique
         * \brief
         * @param alpha1
@@ -181,24 +181,24 @@ public:
         * @param g2
         * @param epsilon
         * @return */
-       vector< double > polynome_caracteristique(double alpha1, double alpha2, double u1, double u2, double rho1, double rho2, double invc1sq, double invc2sq, double dpi1, double dpi2, double g2press, double g2alpha, double g2, double epsilon);
+       static vector< double > polynome_caracteristique(double alpha1, double alpha2, double u1, double u2, double rho1, double rho2, double invc1sq, double invc2sq, double dpi1, double dpi2, double g2press, double g2alpha, double g2, double epsilon);
 
        /** \fn module
         * \brief calcule le module d'un nombre complexe
         * @param z est un nombre complexe
         * @return  calcule le module de z*/
-       double module(complex< double > z);
+       static double module(complex< double > z);
        /** \fn modulec calcule le module² de z */
-       double modulec(complex< double > z);
+       static double modulec(complex< double > z);
        /** \fn abs_generalise
         * \brief calcule la valeur absolue d'un nombre complexe
         * \Details calcule la valeur absolue d'un nombre complexe en prenant en compte
         * que la partie réelle c-a-d si z= a+ib abs_generalize() renvoie |a|+ib
         * @param z
         * @return si z = a+ib elle renvoie |a|+ib */
-       complex< double > abs_generalise(complex< double > z);
+       static complex< double > abs_generalise(complex< double > z);
 
-       int new_tri_selectif(vector< complex< double > > &L, int n, double epsilon);
+       static int new_tri_selectif(vector< complex< double > > &L, int n, double epsilon);
 
        /** \fn tri_selectif
         * \brief
@@ -207,7 +207,7 @@ public:
         * @param epsilon
         * @return */
        template< typename T >
-       int tri_selectif(T& L, int n, double epsilon);
+       static int tri_selectif(T& L, int n, double epsilon);
 
        /** \fn matrixProduct
         * \brief calcule le produit de 2 matrices .
@@ -217,7 +217,7 @@ public:
         * @param R2,C2 la taille de la matrice2 Nbr de ligne et le nbr de colonne
         * @param out le resultat de Matrix1*Matrix2
         * @return */
-       void matrixProduct
+       static void matrixProduct
        (
                        const double *Matrix1,
                        const int &R1,
@@ -235,7 +235,7 @@ public:
         * @param Vector correspond au vecteur du produit
         * @param out le resultat de Matrix*Vector
         * @return   */
-       void matrixProdVec
+       static void matrixProdVec
        (       const double *Matrix,
                        const int &R1,
                        const int &C1,
@@ -243,7 +243,7 @@ public:
                        double *out
        );
 
-       bool belongTo(complex< double > a , vector< complex <double > > v, double epsilon);
+       static bool belongTo(complex< double > a , vector< complex <double > > v, double epsilon);
 
 private:
 
@@ -252,7 +252,7 @@ private:
  * @param *U,*V les 2 vecteurs
  * @param N taille des 2 vecteurs
  * @return la somme de U et V dans U*/
-void add
+static void add
 (
                double *U,              //vecteur auquel on ajoute
                int N,                  //taille du vecteur
@@ -267,7 +267,7 @@ void add
  * @param *ab le resultat
  * @return */
 
-void tensor
+static void tensor
 (      const double *a,        //vecteur gauche
                int N,                  //taille du vecteur gauche
                const double *b,        //vecteur droit
@@ -281,31 +281,31 @@ void tensor
  * @param N taille de la matrice
  * @param shift résultat
  * @return renvoie la trace de la matrice Matrix dans shift */
-void shift_diagonal( double *Matrix, const int N, double shift);
+static void shift_diagonal( double *Matrix, const int N, double shift);
 //qques outils d'algebre des polynomes
 
 /** \fn remplir_trinome
  * \brief remplie un trinome
  */
-void remplir_trinome(double coeff, double u, double alpha, vector< double >& trinome);
+static void remplir_trinome(double coeff, double u, double alpha, vector< double >& trinome);
 
 /** \fn additionne
  * \brief Additionne 2 vecteurs de tailles differentes
  * @param P,Q les 2 vecteurs à additionner
  * @param n,m les 2 tailles respectives des vecteurs P et Q
  * @return un vecteur qui correspond a P+Q*/
-vector< double > additionne(const vector< double >& P, const vector< double >& Q, int n, int m);
+static vector< double > additionne(const vector< double >& P, const vector< double >& Q, int n, int m);
 
 /** \fn multiplie
  * \brief Calcule le produit scalaire de 2 vecteurs de tailles differentes
  * @param P,Q les 2 vecteurs
  * @param n,m les 2 tailles respectives des 2 vecteurs
  * @return un vecteur correspond à (P,Q) */
-vector< double > multiplie(const vector< double >& P, const vector< double >& Q, int n, int m);
+static vector< double > multiplie(const vector< double >& P, const vector< double >& Q, int n, int m);
 
 //Pour le tri des valeurs propres
 
-void ordre_croissant_abs(vector< complex< double > > &L, int n);
+static void ordre_croissant_abs(vector< complex< double > > &L, int n);
 
 //Calcul des coefficients du polynome d'interpolation x->y dans la base de Newton
 template<class T>
@@ -317,12 +317,12 @@ template<class T>
  * @param y
  * @param epsilon
  * @return */
-vector< complex< double > > dif_div(int n, const vector< complex< double > >& x, const vector< T >& y, double epsilon);//n=nb valeurs à interpoler
+static vector< complex< double > > dif_div(int n, const vector< complex< double > >& x, const vector< T >& y, double epsilon);//n=nb valeurs à interpoler
 
 //attention, Les vp complexes conjugu�es doivent se suivre dans la liste x
-void appliquer_dif_div(int n, const vector< complex< double > >& dif_div, const vector< complex< double > >& x, const double* A, const int sizeA, double epsilon, double *p);//p=result
+static void appliquer_dif_div(int n, const vector< complex< double > >& dif_div, const vector< complex< double > >& x, const double* A, const int sizeA, double epsilon, double *p);//p=result
 
-double avr(double a, double b);
+static double avr(double a, double b);
 
 };
 #endif 
index 57a3722a68e81c95ab17c97f929a2fb94a3ee1e3..8a165fa820fe98fdcd90348e4f37b98f46b1759c 100755 (executable)
@@ -901,7 +901,6 @@ void FiveEqsTwoFluid::convectionMatrices()
                }
        }
        /******** Compute the eigenvalues and eigenvectors of Roe Matrix (using lapack)*********/
-       Polynoms Poly;
        dgeev_(jobvl, jobvr,  &_nVar,
                        Aroe,&LDA,egvaReal,egvaImag, egVectorL,
                        &LDVL,egVectorR,
@@ -952,7 +951,7 @@ void FiveEqsTwoFluid::convectionMatrices()
                        valeurs_propres[j] = complex<double>(egvaReal[j],egvaImag[j]);
                }
 
-               taille_vp =Poly.new_tri_selectif(valeurs_propres,valeurs_propres.size(),_precision);
+               taille_vp =Polynoms::new_tri_selectif(valeurs_propres,valeurs_propres.size(),_precision);
 
                valeurs_propres_dist=vector< complex< double > >(taille_vp);
                for( int i=0 ; i<taille_vp ; i++)
@@ -1132,7 +1131,7 @@ void FiveEqsTwoFluid::convectionMatrices()
                }
                vector< complex< double > > y (taille_vp,0);
                for( int i=0 ; i<taille_vp ; i++)
-                       y[i] = Poly.abs_generalise(valeurs_propres_dist[i]);
+                       y[i] = Polynoms::abs_generalise(valeurs_propres_dist[i]);
 
                if(_entropicCorrection)
                {
@@ -1156,7 +1155,7 @@ void FiveEqsTwoFluid::convectionMatrices()
                        for( int i=0 ; i<taille_vp ; i++)
                                cout<<y[i] <<", "<<endl;
                }
-               Poly.abs_par_interp_directe(taille_vp,valeurs_propres_dist, _Aroe, _nVar,_precision, _absAroe,y);
+               Polynoms::abs_par_interp_directe(taille_vp,valeurs_propres_dist, _Aroe, _nVar,_precision, _absAroe,y);
 
                if( _spaceScheme ==pressureCorrection){
                        for( int i=0 ; i<_Ndim ; i++)
@@ -1179,7 +1178,7 @@ void FiveEqsTwoFluid::convectionMatrices()
 
        if(_entropicCorrection || _spaceScheme ==pressureCorrection || _spaceScheme ==lowMach){
                InvMatriceRoe( valeurs_propres_dist);
-               Poly.matrixProduct(_absAroe, _nVar, _nVar, _invAroe, _nVar, _nVar, _signAroe);
+               Polynoms::matrixProduct(_absAroe, _nVar, _nVar, _invAroe, _nVar, _nVar, _signAroe);
        }
        else if (_spaceScheme==upwind)//upwind sans entropic
                SigneMatriceRoe( valeurs_propres_dist);
@@ -1921,10 +1920,9 @@ void FiveEqsTwoFluid::entropicShift(double* n, double& vpcorr0, double& vpcorr1)
                        eigValuesLeft[j] = complex<double>(egvaReal[j],egvaImag[j]);
                        eigValuesRight[j] = complex<double>(egvaReal[j],egvaImag[j]);
                }
-               Polynoms Poly;
-               int sizeLeft =  Poly.new_tri_selectif(eigValuesLeft, eigValuesLeft.size(), _precision);
-               int sizeRight =  Poly.new_tri_selectif(eigValuesRight, eigValuesRight.size(), _precision);
-               if (_verbose && _nbTimeStep%_freqSave ==0)
+               int sizeLeft =  Polynoms::new_tri_selectif(eigValuesLeft, eigValuesLeft.size(), _precision);
+               int sizeRight =  Polynoms::new_tri_selectif(eigValuesRight, eigValuesRight.size(), _precision);
+               if (_verbose && (_nbTimeStep-1)%_freqSave ==0)
                {
                        cout<<" Eigenvalue of JacoMat Left: " << endl;
                        for(int i=0; i<sizeLeft; i++)
@@ -1996,10 +1994,9 @@ void FiveEqsTwoFluid::entropicShift(double* n)
        for(int j=0; j<_nVar; j++){
                eigValuesRight[j] = complex<double>(egvaReal[j],egvaImag[j]);
        }
-       Polynoms Poly;
-       int sizeLeft =  Poly.new_tri_selectif(eigValuesLeft, eigValuesLeft.size(), _precision);
-       int sizeRight =  Poly.new_tri_selectif(eigValuesRight, eigValuesRight.size(), _precision);
-       if (_verbose && _nbTimeStep%_freqSave ==0)
+       int sizeLeft =  Polynoms::new_tri_selectif(eigValuesLeft, eigValuesLeft.size(), _precision);
+       int sizeRight =  Polynoms::new_tri_selectif(eigValuesRight, eigValuesRight.size(), _precision);
+       if (_verbose && (_nbTimeStep-1)%_freqSave ==0)
        {
                cout<<" Eigenvalue of JacoMat Left: " << endl;
                for(int i=0; i<sizeLeft; i++)
index b2e4d187303c4d01c94154d6d097ed38488fa00e..515bc0487a8afb3cdffde4dc4f7112b907c8ddc4 100755 (executable)
@@ -268,8 +268,7 @@ void IsothermalTwoFluid::convectionMatrices()
        _Uroe[_nVar]=dpi1 ;
 
        /***********Calcul des valeurs propres ********/
-       Polynoms Poly;
-       vector< double > pol_car= Poly.polynome_caracteristique(alpha,  1-alpha, u1_n, u2_n, rho1, rho2,invcsq1,invcsq2, dpi1, dpi2, g2press, g2alpha, g2,_precision);
+       vector< double > pol_car= Polynoms::polynome_caracteristique(alpha,  1-alpha, u1_n, u2_n, rho1, rho2,invcsq1,invcsq2, dpi1, dpi2, g2press, g2alpha, g2,_precision);
        for(int ct=0;ct<4;ct++){
                if (abs(pol_car[ct])<_precision*_precision)
                        pol_car[ct]=0;
@@ -289,9 +288,9 @@ void IsothermalTwoFluid::convectionMatrices()
        //On ajoute les valeurs propres triviales
        if(_Ndim>1)
        {
-               if( !Poly.belongTo(u1_n,valeurs_propres, _precision) )
+               if( !Polynoms::belongTo(u1_n,valeurs_propres, _precision) )
                        valeurs_propres.push_back(u1_n);//vp vapor energy
-               if( !Poly.belongTo(u2_n,valeurs_propres, _precision) )
+               if( !Polynoms::belongTo(u2_n,valeurs_propres, _precision) )
                        valeurs_propres.push_back(u2_n);//vp liquid energy
        }
        bool doubleeigenval = norm(valeurs_propres[0] - valeurs_propres[1])<_precision;//norm= suqare of the magnitude
@@ -301,7 +300,7 @@ void IsothermalTwoFluid::convectionMatrices()
                valeurs_propres.pop_back();
        }
 
-       int taille_vp = Poly.new_tri_selectif(valeurs_propres,valeurs_propres.size(),_precision);//valeurs_propres.size();//
+       int taille_vp = Polynoms::new_tri_selectif(valeurs_propres,valeurs_propres.size(),_precision);//valeurs_propres.size();//
 
        _maxvploc=0;
        for(int i =0; i<taille_vp; i++)
@@ -447,9 +446,8 @@ void IsothermalTwoFluid::convectionMatrices()
        if(_spaceScheme==upwind || _spaceScheme ==lowMach)
        {
                vector< complex< double > > y (taille_vp,0);
-               Polynoms Poly;
                for( int i=0 ; i<taille_vp ; i++)
-                       y[i] = Poly.abs_generalise(valeurs_propres[i]);
+                       y[i] = Polynoms::abs_generalise(valeurs_propres[i]);
 
                if(_entropicCorrection)
                {
@@ -460,7 +458,7 @@ void IsothermalTwoFluid::convectionMatrices()
                                y[i] +=_entropicShift[1];
                }
 
-               Poly.abs_par_interp_directe(taille_vp,valeurs_propres, _Aroe, _nVar,_precision, _absAroe,y);
+               Polynoms::abs_par_interp_directe(taille_vp,valeurs_propres, _Aroe, _nVar,_precision, _absAroe,y);
                if( _spaceScheme ==pressureCorrection){
                        for( int i=0 ; i<_Ndim ; i++)
                                for( int j=0 ; j<_Ndim ; j++){
@@ -485,7 +483,7 @@ void IsothermalTwoFluid::convectionMatrices()
 
        if(_entropicCorrection || _spaceScheme ==pressureCorrection || _spaceScheme ==lowMach){
                InvMatriceRoe( valeurs_propres_dist);
-               Poly.matrixProduct(_absAroe, _nVar, _nVar, _invAroe, _nVar, _nVar, _signAroe);
+               Polynoms::matrixProduct(_absAroe, _nVar, _nVar, _invAroe, _nVar, _nVar, _signAroe);
        }
        else if (_spaceScheme==upwind)//upwind sans entropic
                SigneMatriceRoe( valeurs_propres_dist);
@@ -1086,14 +1084,13 @@ void IsothermalTwoFluid::entropicShift(double* n)
        double invcsq2 = 1/_fluides[1]->vitesseSonTemperature(_Temperature,rho2);
        invcsq2*=invcsq2;
 
-       Polynoms Poly;
-       pol_car= Poly.polynome_caracteristique(alpha,  1-alpha, u1_n, u2_n, rho1, rho2, invcsq1, invcsq2, dpi1, dpi2);
+       pol_car= Polynoms::polynome_caracteristique(alpha,  1-alpha, u1_n, u2_n, rho1, rho2, invcsq1, invcsq2, dpi1, dpi2);
        for(int ct=0;ct<4;ct++){
                if (abs(pol_car[ct])<_precision*_precision)
                        pol_car[ct]=0;
        }
        vector< complex<double> > vp_left = getRacines(pol_car);
-       int taille_vp_left = Poly.new_tri_selectif(vp_left,vp_left.size(),_precision);
+       int taille_vp_left = Polynoms::new_tri_selectif(vp_left,vp_left.size(),_precision);
 
        if(_verbose && _nbTimeStep%_freqSave ==0)
        {
@@ -1126,13 +1123,13 @@ void IsothermalTwoFluid::entropicShift(double* n)
        invcsq2 = 1/_fluides[1]->vitesseSonTemperature(_Temperature,rho2);
        invcsq2*=invcsq2;
 
-       pol_car= Poly.polynome_caracteristique(alpha,  1-alpha, u1_n, u2_n, rho1, rho2, invcsq1, invcsq2, dpi1, dpi2);
+       pol_car= Polynoms::polynome_caracteristique(alpha,  1-alpha, u1_n, u2_n, rho1, rho2, invcsq1, invcsq2, dpi1, dpi2);
        for(int ct=0;ct<4;ct++){
                if (abs(pol_car[ct])<_precision*_precision)
                        pol_car[ct]=0;
        }
        vector< complex<double> > vp_right = getRacines(pol_car);
-       int taille_vp_right = Poly.new_tri_selectif(vp_right,vp_right.size(),_precision);
+       int taille_vp_right = Polynoms::new_tri_selectif(vp_right,vp_right.size(),_precision);
 
        if(_verbose && _nbTimeStep%_freqSave ==0)
        {
index 1eb8c765fd71b700ade83fa28b215ec965647f43..2f60c470f6a43882ee7ed15f83999fb5af776425 100755 (executable)
@@ -423,9 +423,8 @@ double ProblemFluid::computeTimeStep(bool & stop){
                                                cout << endl;
                                        }
                                        idm = idCells[k];
-                                       Polynoms Poly;
                                        //calcul et insertion de A^-*Jcb
-                                       Poly.matrixProduct(_AroeMinusImplicit, _nVar, _nVar, _Jcb, _nVar, _nVar, _a);
+                                       Polynoms::matrixProduct(_AroeMinusImplicit, _nVar, _nVar, _Jcb, _nVar, _nVar, _a);
                                        MatSetValuesBlocked(_A, size, &idm, size, &idm, _a, ADD_VALUES);
 
                                        if(_verbose)
@@ -440,7 +439,7 @@ double ProblemFluid::computeTimeStep(bool & stop){
                                                displayMatrix(_AroeMinusImplicit, _nVar,"-_AroeMinusImplicit: ");
 
                                        //calcul et insertion de D*JcbDiff
-                                       Poly.matrixProduct(_Diffusion, _nVar, _nVar, _JcbDiff, _nVar, _nVar, _a);
+                                       Polynoms::matrixProduct(_Diffusion, _nVar, _nVar, _JcbDiff, _nVar, _nVar, _a);
                                        MatSetValuesBlocked(_A, size, &idm, size, &idm, _a, ADD_VALUES);
                                        for(int k=0; k<_nVar*_nVar;k++)
                                                _Diffusion[k] *= -1;
@@ -1020,8 +1019,7 @@ void ProblemFluid::addConvectionToSecondMember
        {
                for(int k=0; k<_nVar; k++)
                        _temp[k]=(_Ui[k] - _Uj[k])*_inv_dxi;//(Ui-Uj)*_inv_dxi
-               Polynoms Poly;
-               Poly.matrixProdVec(_AroeMinus, _nVar, _nVar, _temp, _phi);//phi=A^-(U_i-U_j)/dx
+               Polynoms::matrixProdVec(_AroeMinus, _nVar, _nVar, _temp, _phi);//phi=A^-(U_i-U_j)/dx
                VecSetValuesBlocked(_b, 1, _idm, _phi, ADD_VALUES);
 
                if(_verbose && _nbTimeStep%_freqSave ==0)
@@ -1041,7 +1039,7 @@ void ProblemFluid::addConvectionToSecondMember
                {
                        for(int k=0; k<_nVar; k++)
                                _temp[k]*=_inv_dxj/_inv_dxi;//(Ui-Uj)*_inv_dxj
-                       Poly.matrixProdVec(_AroePlus, _nVar, _nVar, _temp, _phi);//phi=A^+(U_i-U_j)/dx
+                       Polynoms::matrixProdVec(_AroePlus, _nVar, _nVar, _temp, _phi);//phi=A^+(U_i-U_j)/dx
                        VecSetValuesBlocked(_b, 1, _idn, _phi, ADD_VALUES);
 
                        if(_verbose && _nbTimeStep%_freqSave ==0)
@@ -1147,12 +1145,12 @@ void ProblemFluid::addSourceTermToSecondMember
                        cout<< _porosityGradientSourceVector[k]<<", ";
                cout<<endl;
        }
-       Polynoms Poly;
+
        if(!isBord){
                if(_wellBalancedCorrection){
                        for(int k=0; k<_nVar;k++)
                                _phi[k]=(_Si[k]+_Sj[k])/2+_pressureLossVector[k]+_porosityGradientSourceVector[k];
-                       Poly.matrixProdVec(_signAroe, _nVar, _nVar, _phi, _l);
+                       Polynoms::matrixProdVec(_signAroe, _nVar, _nVar, _phi, _l);
                        for(int k=0; k<_nVar;k++){
                                _Si[k]=(_phi[k]-_l[k])*mesureFace/_perimeters(i);///nbVoisinsi;
                                _Sj[k]=(_phi[k]+_l[k])*mesureFace/_perimeters(j);///nbVoisinsj;
@@ -1193,7 +1191,7 @@ void ProblemFluid::addSourceTermToSecondMember
                if(_wellBalancedCorrection){
                        for(int k=0; k<_nVar;k++)
                                _phi[k]=(_Si[k]+_Sj[k])/2+_pressureLossVector[k]+_porosityGradientSourceVector[k];
-                       Poly.matrixProdVec(_signAroe, _nVar, _nVar, _phi, _l);
+                       Polynoms::matrixProdVec(_signAroe, _nVar, _nVar, _phi, _l);
                        for(int k=0; k<_nVar;k++)
                                _Si[k]=(_phi[k]-_l[k])*mesureFace/_perimeters(i);///nbVoisinsi;
                        if (_verbose && _nbTimeStep%_freqSave ==0)
@@ -1353,13 +1351,12 @@ vector< complex<double> > ProblemFluid::getRacines(vector< double > pol_car){
 
 void ProblemFluid::AbsMatriceRoe(vector< complex<double> > valeurs_propres_dist)
 {
-       Polynoms Poly;
        int nbVp_dist=valeurs_propres_dist.size();
        vector< complex< double > > y (nbVp_dist,0);
        for( int i=0 ; i<nbVp_dist ; i++)
-               y[i] = Poly.abs_generalise(valeurs_propres_dist[i]);
-       Poly.abs_par_interp_directe(nbVp_dist,valeurs_propres_dist, _Aroe, _nVar,_precision, _absAroe,y);
-       if(_verbose && _nbTimeStep%_freqSave ==0)
+               y[i] = Polynoms::abs_generalise(valeurs_propres_dist[i]);
+       Polynoms::abs_par_interp_directe(nbVp_dist,valeurs_propres_dist, _Aroe, _nVar,_precision, _absAroe,y);
+       if(_verbose && (_nbTimeStep-1)%_freqSave ==0)
        {
                cout<< endl<<"ProblemFluid::AbsMatriceRoe: Valeurs propres :" << nbVp_dist<<endl;
                for(int ct =0; ct<nbVp_dist; ct++)
@@ -1386,9 +1383,9 @@ void ProblemFluid::SigneMatriceRoe(vector< complex<double> > valeurs_propres_dis
                else
                        y[i] = 0;
        }
-       Polynoms Poly;
-       Poly.abs_par_interp_directe(nbVp_dist,valeurs_propres_dist, _Aroe, _nVar,_precision, _signAroe,y);
-       if(_verbose && _nbTimeStep%_freqSave ==0)
+
+       Polynoms::abs_par_interp_directe(nbVp_dist,valeurs_propres_dist, _Aroe, _nVar,_precision, _signAroe,y);
+       if(_verbose && (_nbTimeStep-1)%_freqSave ==0)
        {
                cout<< endl<<"ProblemFluid::SigneMatriceRoe: Valeurs propres :" << nbVp_dist<<endl;
                for(int ct =0; ct<nbVp_dist; ct++)
@@ -1405,16 +1402,16 @@ void ProblemFluid::InvMatriceRoe(vector< complex<double> > valeurs_propres_dist)
 {
        int nbVp_dist=valeurs_propres_dist.size();
        vector< complex< double > > y (nbVp_dist,0);
-       Polynoms Poly;
+
        for( int i=0 ; i<nbVp_dist ; i++)
        {
-               if(Poly.module(valeurs_propres_dist[i])>_precision)
+               if(Polynoms::module(valeurs_propres_dist[i])>_precision)
                        y[i] = 1./valeurs_propres_dist[i];
                else
                        y[i] = 1./_precision;
        }
-       Poly.abs_par_interp_directe(nbVp_dist,valeurs_propres_dist, _Aroe, _nVar,_precision, _invAroe,y);
-       if(_verbose && _nbTimeStep%_freqSave ==0)
+       Polynoms::abs_par_interp_directe(nbVp_dist,valeurs_propres_dist, _Aroe, _nVar,_precision, _invAroe,y);
+       if(_verbose && (_nbTimeStep-1)%_freqSave ==0)
        {
                cout<< endl<<"ProblemFluid::InvMatriceRoe : Valeurs propres :" << nbVp_dist<<endl;
                for(int ct =0; ct<nbVp_dist; ct++)
index c5c27ae3922186ac9df0334a67bb9f1987cb9b26..fd4dc87544237abf9370f6e10c6f32e0bdd0dea5 100755 (executable)
@@ -904,10 +904,9 @@ void SinglePhase::convectionMatrices()
                                _entropicShift=vector<double>(3,0);//at most 3 distinct eigenvalues
 
                        vector< complex< double > > y (3,0);
-                       Polynoms Poly;
                        for( int i=0 ; i<3 ; i++)
-                               y[i] = Poly.abs_generalise(vp_dist[i])+_entropicShift[i];
-                       Poly.abs_par_interp_directe(3,vp_dist, _Aroe, _nVar,_precision, _absAroe,y);
+                               y[i] = Polynoms::abs_generalise(vp_dist[i])+_entropicShift[i];
+                       Polynoms::abs_par_interp_directe(3,vp_dist, _Aroe, _nVar,_precision, _absAroe,y);
 
                        if( _spaceScheme ==pressureCorrection)
                                for( int i=0 ; i<_Ndim ; i++)
@@ -951,9 +950,8 @@ void SinglePhase::convectionMatrices()
                                for(int idim=0;idim<_Ndim; idim++)
                                        _Vij[1+idim]=_Uroe[1+idim];
                                primToConsJacobianMatrix(_Vij);
-                               Polynoms Poly;
-                               Poly.matrixProduct(_AroeMinus, _nVar, _nVar, _primToConsJacoMat, _nVar, _nVar, _AroeMinusImplicit);
-                               Poly.matrixProduct(_AroePlus,  _nVar, _nVar, _primToConsJacoMat, _nVar, _nVar, _AroePlusImplicit);
+                               Polynoms::matrixProduct(_AroeMinus, _nVar, _nVar, _primToConsJacoMat, _nVar, _nVar, _AroeMinusImplicit);
+                               Polynoms::matrixProduct(_AroePlus,  _nVar, _nVar, _primToConsJacoMat, _nVar, _nVar, _AroePlusImplicit);
                        }
                        else
                                for(int i=0; i<_nVar*_nVar;i++)
@@ -981,8 +979,7 @@ void SinglePhase::convectionMatrices()
        if(_entropicCorrection)
        {
                InvMatriceRoe( vp_dist);
-               Polynoms Poly;
-               Poly.matrixProduct(_absAroe, _nVar, _nVar, _invAroe, _nVar, _nVar, _signAroe);
+               Polynoms::matrixProduct(_absAroe, _nVar, _nVar, _invAroe, _nVar, _nVar, _signAroe);
        }
        else if (_spaceScheme==upwind || (_spaceScheme ==pressureCorrection ) || (_spaceScheme ==lowMach ))//upwind sans entropic
                SigneMatriceRoe( vp_dist);
@@ -2567,11 +2564,10 @@ void SinglePhase::staggeredVFFCMatricesPrimitiveVariables(double un)//vitesse no
                }
                else//case nil velocity on the interface, apply centered scheme
                {
-                       Polynoms Poly;
                        primToConsJacobianMatrix(_Vj);
-                       Poly.matrixProduct(_AroeMinus, _nVar, _nVar, _primToConsJacoMat, _nVar, _nVar, _AroeMinusImplicit);
+                       Polynoms::matrixProduct(_AroeMinus, _nVar, _nVar, _primToConsJacoMat, _nVar, _nVar, _AroeMinusImplicit);
                        primToConsJacobianMatrix(_Vi);
-                       Poly.matrixProduct(_AroePlus,  _nVar, _nVar, _primToConsJacoMat, _nVar, _nVar, _AroePlusImplicit);
+                       Polynoms::matrixProduct(_AroePlus,  _nVar, _nVar, _primToConsJacoMat, _nVar, _nVar, _AroePlusImplicit);
                }
        }
 }
index 1427321227c266945fe4b9ff7d99f4acbf548597..3468ccd0ea4a4aaffdf15dab0d42c82823b9900c 100755 (executable)
@@ -650,10 +650,9 @@ void SinglePhaseStaggered::convectionMatrices()
                                _entropicShift=vector<double>(3,0);//at most 3 distinct eigenvalues
 
                        vector< complex< double > > y (3,0);
-                       Polynoms Poly;
                        for( int i=0 ; i<3 ; i++)
-                               y[i] = Poly.abs_generalise(vp_dist[i])+_entropicShift[i];
-                       Poly.abs_par_interp_directe(3,vp_dist, _Aroe, _nVar,_precision, _absAroe,y);
+                               y[i] = Polynoms::abs_generalise(vp_dist[i])+_entropicShift[i];
+                       Polynoms::abs_par_interp_directe(3,vp_dist, _Aroe, _nVar,_precision, _absAroe,y);
 
                        if( _spaceScheme ==pressureCorrection)
                                for( int i=0 ; i<_Ndim ; i++)
@@ -697,9 +696,8 @@ void SinglePhaseStaggered::convectionMatrices()
                                for(int idim=0;idim<_Ndim; idim++)
                                        _Vij[1+idim]=_Uroe[1+idim];
                                primToConsJacobianMatrix(_Vij);
-                               Polynoms Poly;
-                               Poly.matrixProduct(_AroeMinus, _nVar, _nVar, _primToConsJacoMat, _nVar, _nVar, _AroeMinusImplicit);
-                               Poly.matrixProduct(_AroePlus,  _nVar, _nVar, _primToConsJacoMat, _nVar, _nVar, _AroePlusImplicit);
+                               Polynoms::matrixProduct(_AroeMinus, _nVar, _nVar, _primToConsJacoMat, _nVar, _nVar, _AroeMinusImplicit);
+                               Polynoms::matrixProduct(_AroePlus,  _nVar, _nVar, _primToConsJacoMat, _nVar, _nVar, _AroePlusImplicit);
                        }
                        else
                                for(int i=0; i<_nVar*_nVar;i++)
@@ -727,8 +725,7 @@ void SinglePhaseStaggered::convectionMatrices()
        if(_entropicCorrection)
        {
                InvMatriceRoe( vp_dist);
-               Polynoms Poly;
-               Poly.matrixProduct(_absAroe, _nVar, _nVar, _invAroe, _nVar, _nVar, _signAroe);
+               Polynoms::matrixProduct(_absAroe, _nVar, _nVar, _invAroe, _nVar, _nVar, _signAroe);
        }
        else if (_spaceScheme==upwind || (_spaceScheme ==pressureCorrection ) || (_spaceScheme ==lowMach ))//upwind sans entropic
                SigneMatriceRoe( vp_dist);
index 0af2cd8d77df76ff6e244379b48f1e3c8c61cf78..a4661a3115da9d6047f1e0979283d6331757fe63 100755 (executable)
@@ -12,7 +12,7 @@ int StationaryDiffusionEquation::fact(int n)
 {
   return (n == 1 || n == 0) ? 1 : fact(n - 1) * n;
 }
-int StationaryDiffusionEquation::unknownNodeIndex(int globalIndex, std::vector< int > dirichletNodes) const
+int StationaryDiffusionEquation::unknownNodeIndex(int globalIndex, std::vector< int > dirichletNodes) 
 {//assumes Dirichlet node numbering is strictly increasing
     int j=0;//indice de parcours des noeuds frontière avec CL Dirichlet
     int boundarySize=dirichletNodes.size();
@@ -26,7 +26,7 @@ int StationaryDiffusionEquation::unknownNodeIndex(int globalIndex, std::vector<
         throw CdmathException("StationaryDiffusionEquation::unknownNodeIndex : Error : node is a Dirichlet boundary node");
 }
 
-int StationaryDiffusionEquation::globalNodeIndex(int unknownNodeIndex, std::vector< int > dirichletNodes) const
+int StationaryDiffusionEquation::globalNodeIndex(int unknownNodeIndex, std::vector< int > dirichletNodes)
 {//assumes Dirichlet boundary node numbering is strictly increasing
     int boundarySize=dirichletNodes.size();
     /* trivial case where all boundary nodes are Neumann BC */