Commit 16da511f authored by Enzo Vergnaud's avatar Enzo Vergnaud
Browse files

Update u4-fonctions.cpp

parent a2a90663
......@@ -30,11 +30,12 @@ void InitialiserDonnees()
srand(time(NULL));
// Initialisations des donnees a effectuer ici
gDonnees.corde.k = 40;
gDonnees.corde.k1 = 40;
gDonnees.corde.k2 = 40;
gDonnees.corde.kc = 20;
gDonnees.corde.m = 0.1/1000; // masse en kg
gDonnees.corde.r = 2*0.1*sqrt(gDonnees.corde.k*gDonnees.corde.m); // coeff d'amortissement
gDonnees.corde.r1 = 2*0.1*sqrt(gDonnees.corde.k1*gDonnees.corde.m); // coeff d'amortissement
gDonnees.corde.r2 = 2*0.1*sqrt(gDonnees.corde.k2*gDonnees.corde.m); // coeff d'amortissement
gDonnees.corde.l_corde = 0.003;
gDonnees.corde.Lg = 0.01;
......@@ -43,13 +44,14 @@ void InitialiserDonnees()
gDonnees.corde.x[2] = gDonnees.corde.x[1] + gDonnees.corde.l_corde;
gDonnees.corde.x[3] = gDonnees.corde.x[1] + gDonnees.corde.x[2];
gDonnees.corde.y1 = 0.00001; // Position masse 1 en haut a t=0 (en m)
gDonnees.corde.y2 = 0.00001; // Position masse 2 en haut a t=0 (en m)
gDonnees.corde.y1_u_0 = 0.00001;
gDonnees.corde.y2_u_0 = 0.00001;
// c.h = {1.2e-2, 2*c.y1, 2*c.y2, 1.2e-2}; error: assigning to an array from an initializer list
gDonnees.corde.h[0] = 1.2e-2; // ouverture au point de départ de la constriction glottique
gDonnees.corde.h[1] = 2*gDonnees.corde.y1; // ouverture initiale au niveau de chaque masse
gDonnees.corde.h[2] = 2*gDonnees.corde.y2;
gDonnees.corde.h[1] = 2*gDonnees.corde.y1_u_0; // ouverture initiale au niveau de chaque masse
gDonnees.corde.h[2] = 2*gDonnees.corde.y2_u_0;
gDonnees.corde.h[3] = 1.2e-2; // ouverture à la fin de la constriction glottique*/
/*c.h0 = 1.2e-2; // ouverture au point de départ de la constriction glottique
// ouverture initiale au niveau de chaque masse
......@@ -57,15 +59,18 @@ void InitialiserDonnees()
c.h2 = 2*c.y2;
c.h3= c.h0; // ouverture à la fin de la constriction glottique*/
gDonnees.corde.ytm1[0] = 0.6e-2; // ouverture au point de départ de la constriction glottique
gDonnees.corde.ytm1[1] = gDonnees.corde.y1; // ouverture initiale au niveau de chaque masse
gDonnees.corde.ytm1[2] = gDonnees.corde.y2;
gDonnees.corde.ytm1[3] = 0.6e-2; // ouverture à la fin de la constriction glottique*/
// Déplacements
gDonnees.corde.y1 = 0; // déplacement masse 1 en haut a t=0 (en m)
gDonnees.corde.y2 = 0; // déplacement masse 2 en haut a t=0 (en m)
gDonnees.corde.ytm1[0] = 0; //0.6e-2; // ouverture au point de départ de la constriction glottique
gDonnees.corde.ytm1[1] = 0; //gDonnees.corde.y1; // ouverture initiale au niveau de chaque masse
gDonnees.corde.ytm1[2] = 0; // gDonnees.corde.y2;
gDonnees.corde.ytm1[3] = 0; //0.6e-2; // ouverture à la fin de la constriction glottique*/
gDonnees.corde.ytm2[0] = 0.6e-2; // ouverture au point de départ de la constriction glottique
gDonnees.corde.ytm2[1] = gDonnees.corde.y1; // ouverture initiale au niveau de chaque masse
gDonnees.corde.ytm2[2] = gDonnees.corde.y2;
gDonnees.corde.ytm2[3] = 0.6e-2; // ouverture à la fin de la constriction glottique*/
gDonnees.corde.ytm2[0] = 0; //0.6e-2; // ouverture au point de départ de la constriction glottique
gDonnees.corde.ytm2[1] = 0; //gDonnees.corde.y1; // ouverture initiale au niveau de chaque masse
gDonnees.corde.ytm2[2] = 0; //gDonnees.corde.y2;
gDonnees.corde.ytm2[3] = 0; //0.6e-2; // ouverture à la fin de la constriction glottique*/
// Reste à définir xS car 1.2H1>H2
......@@ -78,28 +83,16 @@ void InitialiserDonnees()
gDonnees.corde.Ugm1 = 0;
gInterface.SliderK->value(gDonnees.corde.k);
gInterface.SliderKc->value(gDonnees.corde.kc);
gInterface.SliderM->value(gDonnees.corde.m*10e3);
gInterface.SliderR->value(gDonnees.corde.r*10e2);
gInterface.SliderX3->value(gDonnees.corde.x[3]*10e4);
gInterface.SliderX2->value(gDonnees.corde.x[2]*10e4);
gInterface.SliderX1->value(gDonnees.corde.x[1]*10e4);
gInterface.SliderH0->value(gDonnees.corde.h[0]*10e2);
gInterface.SliderH1->value(gDonnees.corde.h[1]*10e3);
gDonnees.corde.boum = 1;
gDonnees.corde.t_boum = 0;
//gDonnees.corde.Oke[0] = 0;
gInterface.BoutonPolarisationX->value(1);
// Exemple son
//JouerSon("media/r2d2.mp3");
}
/// Fonctions utilitaires
double maxDouble(double a, double b) {
......@@ -142,7 +135,7 @@ void afficherTableau(double * t, int taille)
printf("[");
for(p=t; p<t+taille; p++)
{
printf(" %.10lf ", *p);
printf(" %.18lf ", *p);
}
printf("]\n");
}
......@@ -291,7 +284,7 @@ void Pseparation_Matlab()
if (gDonnees.corde.h[1]!=gDonnees.corde.h[2]) //si h1 est différent de h2
{
(gDonnees.corde.hs) = sep*(gDonnees.corde.h[1]);
(gDonnees.corde.xs) = ((gDonnees.corde.hs)-(gDonnees.corde.h[2]))/(gDonnees.geometrie.A[1]) + gDonnees.corde.x[1];
(gDonnees.corde.xs) = ((gDonnees.corde.hs)-(gDonnees.corde.h[1]))/(gDonnees.geometrie.A[1]) + gDonnees.corde.x[1];
}
else
......@@ -353,6 +346,7 @@ double calculUg_Matlab()
Ug = 0; //on fixe alors le débit à zéro
dUg = (Ug-gDonnees.corde.Ugm1)*gDonnees.fe; //calcul de la dérivée du débit
Delta=0; //par défaut on met Delta à Zéro, par NR
GA = 0;
}
else
{
......@@ -476,7 +470,7 @@ void calculForceMatlab()
X_W_s_Matlab(&Xs, &Ws);
//printf("");
double Ug, P, bern, tmp1, tmpG, tmpH;
Ug = calculUg(gDonnees.corde, gDonnees.t);
Ug = calculUg_Matlab();
P = calculPsub();
// quelques variables temporaires
tmp1 = 0.5*Rho*(Ug*Ug)/(gDonnees.corde.Lg*(gDonnees.corde.Lg)); //variable temporaire associée au terme de Bernoulli
......@@ -491,6 +485,8 @@ void calculForceMatlab()
//terme de bernoulli
bern = tmp1*(1/(pow(gDonnees.corde.h[0],2))-2*(X_Matlab(0)-gDonnees.corde.x[0]*W_Matlab(0))/pow((gDonnees.corde.x[1]-gDonnees.corde.x[0]),2));
printf("bern: %.10lf \n", bern);
gDonnees.corde.f[0] = 0.5*(gDonnees.corde.x[1]-gDonnees.corde.x[0])*gDonnees.corde.Lg*(P+bern);
// *******************************************************
// ********************* Calcul de Fr_h1 *****************
......@@ -510,6 +506,8 @@ void calculForceMatlab()
// bern = tmp1*(1/(pow(gDonnees.corde.x[0],2))+2*(X_Matlab(1)-gDonnees.corde.x[2]*W_Matlab(1))/pow(gDonnees.corde.x[2]-gDonnees.corde.x[1],2));
bern = tmp1*(1/(pow(gDonnees.corde.h[0],2))+2*(X_Matlab(1)-gDonnees.corde.x[2]*W_Matlab(1))/(pow(gDonnees.corde.x[2]-gDonnees.corde.x[1],2)));
}
gDonnees.corde.f[1] = 0.5*(gDonnees.corde.x[2]-gDonnees.corde.x[1])*gDonnees.corde.Lg*(P+bern);
}
else //cas où la glotte forme un canal divergent avec h2>hs
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment