Commit 658b3272 authored by Enzo Vergnaud's avatar Enzo Vergnaud
Browse files

Update u4-fonctions.cpp

parent c11cf7c1
......@@ -30,6 +30,8 @@ void InitialiserDonnees()
srand(time(NULL));
// Initialisations des donnees a effectuer ici
gDonnees.corde.K1 = 40;
gDonnees.corde.K2 = 40;
gDonnees.corde.k1 = 40;
gDonnees.corde.k2 = 40;
gDonnees.corde.kc = 20;
......@@ -368,7 +370,7 @@ double calculUg_Matlab()
//if (Ugi <0), Ugi = 0;end
// dUg = (Ug-gDonnees.corde.Ugm1)*gDonnees.fe;
}
printf("xs : %.18lf et hs : %.18lf et GA : %lf\n", gDonnees.corde.xs, gDonnees.corde.hs, GA);
printf("xs : %.10lf et hs : %.10lf et GA : %lf\n", gDonnees.corde.xs, gDonnees.corde.hs, GA);
gDonnees.corde.Ugm1=Ug;
return Ug;
......@@ -414,6 +416,7 @@ double X_Matlab(int i) // terminé
//{
// X = (gDonnees.corde.x[i+1]-gDonnees.corde.x[i])/(pow(gDonnees.corde.h[i],2)); //cas où la plaque est horizontale
//}
if (fabs(gDonnees.geometrie.A[i]*gDonnees.corde.x[i+1]/gDonnees.geometrie.B[i])<pres) //cas de presque horizontalité, avec dvpt limité
{
X2 = 1/(pow(gDonnees.geometrie.B[i],2))*(pow(gDonnees.corde.x[i+1],2)/2-2*gDonnees.geometrie.A[i]*pow(gDonnees.corde.x[i+1],3)/3/gDonnees.geometrie.B[i]+3*(pow(gDonnees.geometrie.A[i],2))*pow(gDonnees.corde.x[i+1],4)/4/(pow(gDonnees.geometrie.B[i],2)));
......@@ -427,6 +430,7 @@ double X_Matlab(int i) // terminé
}
return X;
}
void X_W_s_Matlab(double* X,double* W) // entre x1 et xS, terminé
......@@ -441,8 +445,8 @@ void X_W_s_Matlab(double* X,double* W) // entre x1 et xS, terminé
// Xs = (gDonnees.corde.xs-gDonnees.corde.x[1])/(pow(gDonnees.corde.h[1],2)); //cas où la plaque est horizontale
//Ws = (gDonnees.corde.xs-gDonnees.corde.x[1])/(pow(gDonnees.corde.h[1],2)); //cas où la plaque est horizontale
//}
double Qs=fabs(gDonnees.geometrie.A[1]*gDonnees.corde.xs/gDonnees.geometrie.B[1]);
if ( Qs <pres) //cas de presque horizontalité, avec dvpt limité
if (fabs(gDonnees.geometrie.A[1]*gDonnees.corde.xs/gDonnees.geometrie.B[1])<pres) //cas de presque horizontalité, avec dvpt limité
{
X2 = 1/(pow(gDonnees.geometrie.B[1],2))*(pow(gDonnees.corde.xs,2)/2-2*gDonnees.geometrie.A[1]*pow(gDonnees.corde.xs,3)/3/gDonnees.geometrie.B[1]+3*(pow(gDonnees.geometrie.A[1],2))*pow(gDonnees.corde.xs,4)/4/(pow(gDonnees.geometrie.B[1],2)));
X1 = 1/(pow(gDonnees.geometrie.B[1],2))*(pow(gDonnees.corde.x[1],2)/2-2*gDonnees.geometrie.A[1]*pow(gDonnees.corde.x[1],3)/3/gDonnees.geometrie.B[1]+3*(pow(gDonnees.geometrie.A[1],2))*pow(gDonnees.corde.x[1],4)/4/(pow(gDonnees.geometrie.B[1],2)));
......@@ -460,7 +464,7 @@ void X_W_s_Matlab(double* X,double* W) // entre x1 et xS, terminé
//Ws = 1/gDonnees.geometrie.A[1]*(1/gDonnees.corde.h[1]-1/gDonnees.corde.hs);
*W = 1/gDonnees.geometrie.A[1]*(1/gDonnees.corde.h[1]-1/gDonnees.corde.hs);
}
printf("Qs=%.10lf\n", Qs);
}
void calculForceMatlab()
......@@ -472,9 +476,6 @@ void calculForceMatlab()
double Ug, P, bern, tmp1, tmpG, tmpH;
Ug = calculUg_Matlab();
P = calculPsub();
double Q1=fabs(gDonnees.geometrie.A[0]*gDonnees.corde.x[1]/gDonnees.geometrie.B[0]);
double Q2=fabs(gDonnees.geometrie.A[1]*gDonnees.corde.x[2]/gDonnees.geometrie.B[1]);
double Qs=fabs(gDonnees.geometrie.A[1]*gDonnees.corde.xs/gDonnees.geometrie.B[1]);
// quelques variables temporaires
tmp1 = 0.5*Rho*(Ug*Ug)/(gDonnees.corde.Lg*(gDonnees.corde.Lg)); //variable temporaire associée au terme de Bernoulli
......@@ -489,7 +490,6 @@ void calculForceMatlab()
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);
printf("Q1= %.10lf\n", Q1);
gDonnees.corde.f[0] = 0.5*(gDonnees.corde.x[1]-gDonnees.corde.x[0])*gDonnees.corde.Lg*(P+bern);
// *******************************************************
......@@ -512,6 +512,7 @@ void calculForceMatlab()
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
......@@ -536,7 +537,6 @@ void calculForceMatlab()
gDonnees.corde.f[1] = gDonnees.corde.Lg*tmpG*(P+bern)+gDonnees.corde.Lg*P_supra*(gDonnees.corde.x[2]-gDonnees.corde.xs)/(gDonnees.corde.x[2]-gDonnees.corde.x[1])*(gDonnees.corde.x[2]-(gDonnees.corde.x[2]+gDonnees.corde.xs)/2);
}
printf("Q2= %.10lf\n",Q2);
}
// *******************************************************
// ********************* Calcul de Fl_h2 *****************
......@@ -576,8 +576,8 @@ void calculForceMatlab()
bern = tmp1*(1/(pow(gDonnees.corde.h[0],2))-(Xs-gDonnees.corde.x[1]*Ws)/(tmpH*(gDonnees.corde.x[2]-gDonnees.corde.x[1])));
}
// printf("Qs=%.10lf\n", Qs );
gDonnees.corde.f[2] = gDonnees.corde.Lg*tmpH*(P+bern)+ gDonnees.corde.Lg*P_supra*(gDonnees.corde.x[2]-gDonnees.corde.xs)/(gDonnees.corde.x[2]-gDonnees.corde.x[1])*((gDonnees.corde.x[2]+gDonnees.corde.xs)/2-gDonnees.corde.x[1]);
gDonnees.corde.f[2] = gDonnees.corde.Lg*tmpH*(P+bern)+ gDonnees.corde.Lg*P_supra*(gDonnees.corde.x[2]-gDonnees.corde.xs)/(gDonnees.corde.x[2]-gDonnees.corde.x[1])*((gDonnees.corde.x[2]+gDonnees.corde.xs)/2-gDonnees.corde.x[1]);
}
//AJOUT DU PROF
if ((gDonnees.corde.h[1]>0)&&(gDonnees.corde.h[2]<=0)) //ajout pas NR (04/04/2007), pour calculer les forces de pression
......@@ -622,16 +622,13 @@ void calculdeplacement(){
printf("Déplacements: y1 t-1 : %.18lf et y2 t-1 : %.18lf\n",gDonnees.corde.ytm1[1], gDonnees.corde.ytm1[2]);
printf("Déplacements: y1 t-2 : %.18lf et y2 t-2 : %.18lf\n",gDonnees.corde.ytm2[1], gDonnees.corde.ytm2[2]);
gDonnees.corde.h[1]= 2*(gDonnees.corde.y1 + gDonnees.corde.y1_u_0); //2*gDonnees.corde.y1;
gDonnees.corde.h[2]= 2*(gDonnees.corde.y2 + gDonnees.corde.y2_u_0);
gDonnees.corde.ytm2[1]=gDonnees.corde.ytm1[1];
gDonnees.corde.ytm2[2]=gDonnees.corde.ytm1[2];
gDonnees.corde.ytm1[1]=gDonnees.corde.y1;
gDonnees.corde.ytm1[2]=gDonnees.corde.y2;
// gDonnees.corde.h[1]= 2*(gDonnees.corde.y1 + gDonnees.corde.y1_u_0); //2*gDonnees.corde.y1;
// gDonnees.corde.h[2]= 2*(gDonnees.corde.y2 + gDonnees.corde.y2_u_0); //2*gDonnees.corde.y2;
gDonnees.corde.h[1]= 2*(gDonnees.corde.y1 + gDonnees.corde.y1_u_0); //2*gDonnees.corde.y1;
gDonnees.corde.h[2]= 2*(gDonnees.corde.y2 + gDonnees.corde.y2_u_0); //2*gDonnees.corde.y2;
//gDonnees.corde.h[1]=gDonnees.geometrie.A[0]*gDonnees.corde.x[1] + gDonnees.geometrie.B[0];
......@@ -680,7 +677,7 @@ void collision()
if (gDonnees.corde.h[1]<hc )
{
if (gDonnees.corde.k1 != 160)
if (gDonnees.corde.k1 != gDonnees.corde.K1 * 4)
{
gDonnees.corde.r1 = 2 * 1.1 * sqrt(gDonnees.corde.k1 * gDonnees.corde.m);
......@@ -698,7 +695,7 @@ void collision()
if (gDonnees.corde.h[2]<hc ) // au cas où on veut un ressort différent sur la masse 2
{
if (gDonnees.corde.k2 != 160)
if (gDonnees.corde.k2 != gDonnees.corde.K2 * 4)
{
gDonnees.corde.r2 = 2 * 1.1 * sqrt(gDonnees.corde.k2 * gDonnees.corde.m);
gDonnees.corde.k2 = 4 * gDonnees.corde.k2;
......
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