--- Laplace.cpp 2004-01-19 22:11:49.000000000 +0100 +++ LaplaceConductivite.cpp 2004-01-27 23:04:11.000000000 +0100 @@ -25,6 +25,19 @@ using namespace Fem2D; +/* + * Donnees du tenseur de conductivite + * tenseurConductivite[i] est la diagonale du tenseur pour + * le label "i" + */ +#define MaxLabel 4 +R tenseurConductivite[][ 2 ] = { + {1.,1.}, // idendite, le plus classique + {.5,2.}, // surtout sur l'axe des y (anisotrope) + {2.,.5}, // surtout sur l'axe des x (anisotrope) + {0.,1.}, // rien selon l'axe des x +}; + //------------------------------------------------------------------------------ //Construction de la matrice elementaire Ae sur l'element K @@ -39,13 +52,15 @@ for (int i=0; i<3; i++) { - Vertex & vi = T[i]; - R2 Hi = T.H(i); //optimisation: [DPe]i = grad lambda^e_i = Hauteur + R2 vi = ( R2 ) T[i]; + R2 Hj; // optimisation: on declare ici avant la boucle + assert( ((Label)T ) < MaxLabel ); // check for tenseurConductivite[][] + R2 gmi( T.H(i).x * tenseurConductivite[((Label)T).lab][0], // gradient modifie = A(x)*grad(wi) + T.H(i).y * tenseurConductivite[((Label)T).lab][1]);// ou A(x) est diagonale for (int j=0; j<=i; j++) { - Vertex & vj = T[j]; - R2 Hj = T.H(j); //optimisation: [DPe]j = grad lambda^e_j - *aa++ = (Hi,Hj) * T.area; //operator , du produit scalaire dans R2 + Hj = T.H(j); //optimisation: [DPe]j = grad lambda^e_j + *aa++ = (gmi,Hj) * T.area; //operator , du produit scalaire dans R2 } } }