Commit 34a255e1 authored by phelma's avatar phelma
Browse files

version persque finale

parent a815b0be
......@@ -24,25 +24,14 @@ void CycleCB( void* ) ;
int main (int argc, char ** argv)
{
// CORDE * c;
// GEOMETRIE * g;
// InitialiserCorde(*c);
// *g = calculGeometrie(*c);
// Pseparation(c, g);
// Creation de l'interface
CreerInterface() ;
// Initialisation du logiciel
InitialiserDonnees() ; // On initialise les donnees
ActualiserInterface(); // On affiche les donnees sur l'interface
gInterface.ZoneDessin->redraw() ; // On redessine la zone de dessin
// Armement de la fonction cyclique
Fl::add_timeout(DUREE_CYCLE, CycleCB, NULL ) ;
// Lancer la boucle de gestion des evenements
return Fl::run();
}
......@@ -57,8 +46,6 @@ void CycleCB( void* )
// Rearmement de la fonction cyclique
Fl::add_timeout(DUREE_CYCLE, CycleCB, NULL ) ;
}
///////////////////////////////////////////////////////////////////////////////////////////////
// Classe et methodes DrawingArea : a considerer comme une librairie fournie, NE PAS MODIFIER//
///////////////////////////////////////////////////////////////////////////////////////////////
......
......@@ -625,7 +625,7 @@
1330559674 /users/phelma/phelma2020/vergnaue/Documents/kitc-phelma/fltklinux64/FL/Fl_Tabs.H
"Fl_Group.H"
1615675130 source:/home/phelma/Documents/kitc-phelma/4projetcordesvocales/main.cpp
1616882343 source:/home/phelma/Documents/kitc-phelma/4projetcordesvocales/main.cpp
<iostream>
<FL/Fl.H>
<FL/fl_draw.H>
......@@ -645,13 +645,13 @@
1330559674 /home/phelma/Documents/kitc-phelma/fltklinux64/FL/fl_draw.H
"Enumerations.H"
1615675130 /home/phelma/Documents/kitc-phelma/4projetcordesvocales/main.h
1616537497 /home/phelma/Documents/kitc-phelma/4projetcordesvocales/main.h
<FL/Fl_Widget.H>
1330559674 /home/phelma/Documents/kitc-phelma/fltklinux64/FL/Fl_Widget.H
"Enumerations.H"
1615675130 /home/phelma/Documents/kitc-phelma/4projetcordesvocales/u1-interface.h
1616537497 /home/phelma/Documents/kitc-phelma/4projetcordesvocales/u1-interface.h
"main.h"
<FL/Fl_Double_Window.H>
<FL/Fl_Button.H>
......@@ -694,13 +694,13 @@
1330559674 /home/phelma/Documents/kitc-phelma/fltklinux64/FL/fl_ask.H
"Enumerations.H"
1615675130 /home/phelma/Documents/kitc-phelma/4projetcordesvocales/u3-callbacks.h
1616881069 /home/phelma/Documents/kitc-phelma/4projetcordesvocales/u3-callbacks.h
<FL/Fl_Widget.H>
1615684080 /home/phelma/Documents/kitc-phelma/4projetcordesvocales/u4-fonctions.h
1616884247 /home/phelma/Documents/kitc-phelma/4projetcordesvocales/u4-fonctions.h
<math.h>
1615675651 source:/home/phelma/Documents/kitc-phelma/4projetcordesvocales/u1-interface.cpp
1616881083 source:/home/phelma/Documents/kitc-phelma/4projetcordesvocales/u1-interface.cpp
<iostream>
<stdio.h>
"u1-interface.h"
......@@ -708,9 +708,9 @@
"u3-callbacks.h"
"u4-fonctions.h"
1615675130 /home/phelma/Documents/kitc-phelma/4projetcordesvocales/u2-dessin.h
1616537497 /home/phelma/Documents/kitc-phelma/4projetcordesvocales/u2-dessin.h
1615675130 source:/home/phelma/Documents/kitc-phelma/4projetcordesvocales/u2-dessin.cpp
1616537497 source:/home/phelma/Documents/kitc-phelma/4projetcordesvocales/u2-dessin.cpp
<iostream>
<FL/Fl.H>
<FL/fl_draw.H>
......@@ -718,7 +718,7 @@
"u2-dessin.h"
"u4-fonctions.h"
1615764528 source:/home/phelma/Documents/kitc-phelma/4projetcordesvocales/u3-callbacks.cpp
1616881069 source:/home/phelma/Documents/kitc-phelma/4projetcordesvocales/u3-callbacks.cpp
<iostream>
<FL/Fl.H>
<FL/fl_ask.H>
......@@ -813,7 +813,7 @@
1330559674 /home/phelma/Documents/kitc-phelma/fltklinux64/FL/Fl_Return_Button.H
"Fl_Button.H"
1615862892 source:/home/phelma/Documents/kitc-phelma/4projetcordesvocales/u4-fonctions.cpp
1616883619 source:/home/phelma/Documents/kitc-phelma/4projetcordesvocales/u4-fonctions.cpp
<iostream>
<stdlib.h>
<stdio.h>
......
......@@ -27,7 +27,7 @@ void CreerInterface()
gInterface.ZoneDessin = new DrawingArea(X_ZONE,Y_ZONE,L_ZONE,H_ZONE);
gInterface.ZoneDessin->draw_callback( ZoneDessinDessinerCBpb, NULL ) ;
gInterface.ZoneDessin->mouse_callback( ZoneDessinSourisCB, NULL ) ;
gInterface.ZoneDessin->keyboard_callback( ZoneDessinClavierCB, NULL ) ;
//Création sliders1
gInterface.Slider1 = new Fl_Value_Slider( 680, 300, 100, 20, "k" ) ;
......
......@@ -34,27 +34,10 @@ void TraiterCycleCB()
collision();
calculGeometrie();
Pseparation_Matlab();
printf("k1 : %.10lf k2 : %.10lf\n", gDonnees.corde.k1, gDonnees.corde.k2);
printf("r1 : %.10lf r2 : %.10lf\n", gDonnees.corde.r1, gDonnees.corde.r2);
calculForceMatlab();
double Xs, Ws;
X_W_s_Matlab(&Xs, &Ws);
afficherTableau(gDonnees.corde.f, 4);
calculdeplacement();
afficherTableau(gDonnees.corde.h,4); //printf("Déplacements: y1 : %.18lf et y2 : %.18lf\n",gDonnees.corde.y1, gDonnees.corde.y2);
//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.t += 0.0001;
// if (196 == 10000* gDonnees.t)
// {
// printf("OK");
// }
printf("%lf\n\n", gDonnees.t);
// On redessine la zone
gInterface.ZoneDessin->redraw() ;
}
......@@ -85,49 +68,7 @@ void ZoneDessinSourisCB( Fl_Widget* widget, void* data )
}
// ZoneDessinClavierCB
void ZoneDessinClavierCB( Fl_Widget* widget, void* data )
{
// Definition des variables
int Touche ;
// Recuperation de la touche clavier activee
Touche = Fl::event_key() ;
// Traitement de la touche
switch ( Touche )
{
// Touches speciales
case FL_Left :
printf("g\n");
JouerSon("media/r2d2.mp3");
break;
case FL_Right :
JouerSon("media/saberon.mp3");
break;
case FL_Up :
break ;
case FL_Down :
break ;
// Caracteres
case ' ' :
if (pouce == 0) {pouce = 1;}
else {pouce = 0;}
break ;
case 'g' :
printf("g\n");
break ;
case 'b' :
printf("Appui sur le caractere b\n");
break ;
case '1' :
printf("Appui sur le caractere 1\n");
break ;
case '2' :
printf("Appui sur le chiffre 2\n");
break ;
}
}
//Callbacks des Boutons
void BoutonQuitterCB(Fl_Widget* w, void* data)
......
......@@ -10,7 +10,6 @@
// Declaration des sous-programmes
void TraiterCycleCB() ;
void ZoneDessinSourisCB( Fl_Widget* widget, void* data ) ;
void ZoneDessinClavierCB( Fl_Widget* widget, void* data ) ;
void BoutonQuitterCB( Fl_Widget* w, void* data ) ;
void BoutonRunCB( Fl_Widget* w, void* data ) ;
void BoutonStopCB( Fl_Widget* w, void* data ) ;
......
This diff is collapsed.
......@@ -6,89 +6,76 @@
//Librairies importées
#include <math.h>
// Definition des constantes
#define DUREE_CYCLE 0.005 // 0.500 secondes, depend du materiel utilise
/// Definition des constantes
//Pour le moment on met les variables globales ici (peut-être qu'il vaut mieux les mettre dans le main.h)
#define DUREE_CYCLE 0.005 // 0.500 secondes, depend du materiel utilise
#define sep 1.2 // facteur pour la séparation
#define gamma 1.4 // Cp/Cv
#define T_e 78.6 // temp caractéristique (bizarre comme valeur) unité???
#define sigma 3.711// Diametre moleculaire
#define P_supra 0 // pression atmospherique par defaut en Pa
#define P_ref 101300
//#define P_sub 600 // C'est P_submax dans le matlab (on suppose d'abord P_sub cst)
#define P_supra 0 // pression atmospherique par defaut en Pa , référence de pression
#define Mw 28.94 // Masse moleculaire
#define R 8315 // Constante des gaz
#define T 293.15 // Température ambiante (20°C)
#define Rho 101300*Mw/(R*T) // dynamic viscosity kg.m-1.s-1
#define Mu sqrt(gamma*pression/Rho) // air density kg.m-3
#define C sqrt(gamma*pression/Rho)// speed of sound m.s-1
#define pres 1e-5 // facteur de précision pour le DL (cf p9 annexe calcul débit)
#define t_rise 0.02 // temps de montée de P_sub: sur le matlab t_rise=0.02 et le pas temporel vaut 1/10000
#define t_down 0
#define t_nul 0.0001
#define t_down 0 // temps de descente de Psub en fin de simulation
#define t_nul 0.0001 //temps initial de Psub
#define P_submax 600
#define hc 0.00004// hauteur critique de collision
#define hc 0.00004
// Declaration des donnees du projet
/// Declaration des donnees du projet
typedef struct structCorde// Pour optimiser le programme, peut-être revoir cette structure et la décomposer en sous-structure à l'intérieur (sous-structures qui contiennnt les x, les y, etc...)
{
// D'abord les variables constantes lors de la création de la corde
double K1; // Constante de raideur des oscillos (en N/m)
double K2; // Constante de raideur des oscillos (en N/m)
double k1; // Constante de raideur des oscillos (en N/m)
double k2; // Constante de raideur des oscillos (en N/m)
/// D'abord les variables constantes lors de la création de la corde
double K1; // Constante de raideur de l'oscillateur 1 (en N/m)
double K2; // Constante de raideur de l'oscillateur 2 (en N/m)
double k1; // Constante de raideur de l'oscillateur 1 modifiable (en N/m)
double k2; // Constante de raideur de l'oscillateur 2 modifiable (en N/m)
double kc; // Constante de raideur du ressort entre les deux oscillos (en N/m)
double m; // Masse des oscillos (en kg)
double r1; // Coeff d'amortissement
double r2; // Coeff d'amortissement
double x[4]; // Les abcsisses du pb (en m)
double m; // Masse des oscillateur, il y a 4 masse : 2 de la corde du dessous liée chacune à un oscillateur , 2 du dessus qui constitue la symétrie des 2 du dessous (en kg)
double r1; // Coeff d'amortissement lié à la masse 1
double r2; // Coeff d'amortissement lié à la masse 2
double x[4]; // Les abcsisses du probléme , x[1] abscisse de le masse 1 , x[2] abcsisses de la masse 2 (en m)
double h[4]; // Ces données sont les mêmes que celle de la corde en face de celle-ci, hauteurs aux abcsisses x0, x1, x2 et x (en m)
double l_corde; // Longueur des cordes vocales (en m)
double Lg; // Largeur de la glotte (en m)
//Maintenant les variables non constantes
double y1_u_0, y2_u_0; //les ordonees de la masse 1 et 2 à l'etat initial
///les variables non constantes :
double y1, y2; // Ordonnées des masses des oscillos (en m)
double ytm1[4] , ytm2[4]; // tableau de valeur de y à t-1 et t-2
double xs; // Abscisse du point de séparation de la corde (en m)
double hs;
//forces
double f[4];
double y1_u_0, y2_u_0;
// Paramètre debit (faire une structure pour plus tard)
double Ug, Ugm1;
// Collision
double hs; //la hauteur correspondant à l'abscisse du point de séparation
///forces
double f[4];// f[0]=Flh1 , f[1]=Frh1 , f[2]=Flh2 , f[3]=Frh2
/// Paramètre de débit :
double Ug; //le debit à l'instant t
double Ugm1; // le debit à t-1
/// Paramètre Collision :
double boum; // booléen pour savoir s'il y a collision
double t_boum;
double Oke[2];
double bernouilli;
} CORDE;
typedef struct structGeometrie// Contiendra la géométie d'une corde; peut-être qu'il faudra faire une structure qui regroupera à la fois une corde et sa géométrie
/// Contiendra la géométie d'une corde
typedef struct structGeometrie
{
double A[3]; // tableau qui contiendra les 3 coeffs directeurs des H
double B[3]; // tableau qui contiendra les 3 ordonnées à l'origine des H
} GEOMETRIE;
typedef struct structDessin //Contient les infos relatives au dessin/IHM
/// structure Contient les infos relatives au dessin / IHM
typedef struct structDessin
{
int isPolaX = 1; // si == 1 : polarisation en X, sinon non.
} DESSIN;
// Structure globale pour les variables fonctionnelles
/// Structure globale pour les variables fonctionnelles
typedef struct structDonnees
{
CORDE corde;
GEOMETRIE geometrie;
DESSIN dessin;
int i; // compteur tour
double t;
double fe;
double Psub;
double t;// le temps
double fe; //fréquence d'échantillonage
double Psub;// pression sous glotique
} DONNEES;
......@@ -98,50 +85,22 @@ extern DONNEES gDonnees;
/***Déclaration des sous-programmes***/
void InitialiserDonnees() ;
/***Fonctions de l'annexe***/
double calculUg(CORDE c, double t);
double W(int i);
double X(int i);
void calculforce(double t);
void X_W_s(double X,double W);
/***Fonctions reprises du matlab***/
void calculGeometrie();
void Pseparation_Matlab();
void calculdeplacement();
double calculPsub();
double calculUg_Matlab();
double W_Matlab(int i);
double X_Matlab(int i);
void X_W_s_Matlab(double* X,double* W);
void calculForceMatlab();
void collision();
void calculGeometrie(); //calcul des coefficient directeur et des ordonnées à l'origine des parties affines de la corde
void Pseparation_Matlab(); // calcul de xs et hs
void calculdeplacement(); //calcul du deplacement y1 et y2
double calculPsub(); // calcul de Psub au cours du temps
double calculUg_Matlab(); // calcul du débit au cours du temps
double W_Matlab(int i); // calcul de W pour x1 et x2
double X_Matlab(int i); // calcul de X pour x1 et x2
void X_W_s_Matlab(double* X,double* W); // calcul de X et W pour xs
void calculForceMatlab(); // calcul des forces au cours du temps
void collision(); // test si les cordes sont en collision , et modifie les valeur des raideur et des coefficients d'amortissement
/***Utilitaires***/
double maxDouble(double a, double b);
double minDouble(double a, double b);
double maxDouble(double a, double b); // retourn le Max d'un couple (a,b)
double minDouble(double a, double b); // retourn le Min d'un couple (a,b)
double elMax(double * lst, int n);// donne le maximum d'une liste
void copieTabDouble(double* tab1, double* tab2, int taille); //Copie tab1 dans tab2 de même taille taille.
void afficherTableau(double * t, int taille); // fonction utile pour la recherche d'erreurs
/***Fonctions du projet tpe vide***/
void JouerSon(char *) ; // Jouer un son
void Attente(double Seconds); // Procedure d'attente
/***Fonctions mis en suspens***/
//CORDE InitialiserCorde(CORDE c) ;
//GEOMETRIE calculGeometrie(CORDE c); // Donne la géométrie d'une corde en fonction de ses paramètres
//double hauteur(CORDE c, GEOMETRIE g, double x);
//double pression(CORDE c, GEOMETRIE g, double x);
/*double W(CORDE c, GEOMETRIE g, double x, int i);*/
/*double X(CORDE c, GEOMETRIE g, double x, int i)*/
//void zoom(double * t, double * z, int coeff_multiplicatif, int taille); // sert à augmenter les valeurs dans les tableaux pour qu'on puisse l'afficher convenablement
#endif // _u4_fonctions_h
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