IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

Calcul du débit de l'eau dans une digue


Sujet :

MATLAB

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Calcul du débit de l'eau dans une digue
    Bonjour,

    Nous avons pour objectif de calculer le débit (Q) à l'intérieur d'une digue grâce à Matlab.
    Cependant, nous avons un soucis au niveau de la ligne "u=ones(x)" ; le programme nous dit que u n'est pas défini.
    En fait le réel soucis est de pouvoir donner une valeur de k qui dépend de x (k vaut 1^-12 avant xmoy et 1^-20 après), donc si une autre solution existe, elle est la bienvenue.

    Voilà le programme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    clear;
    % PRE - COMPUTATION
    xmin=1.; xmax=20.; xmoy=10.;
    nx=10;
     
    dx=(xmax-xmin)/(nx-1); 
    x=[xmin:dx:xmax];
    mu=1.e-3;
     
    %k=1.e-12;
    u=ones(x);
    ip=find(x<xmoy); k=1.e-20*u; k(ip)=1.e-12; 
     
     
     
    ro=1.;
    g=9.81;
    phi=[1. 1. 1. 1. 1.];   
    h0=85.;h1=5.;
    Q=((h0^2-h1^2) ./ (xmax))* ((k*ro*g./2)*mu); % a verifier
    T=(k*ro*g*h0)/mu;
    h=zeros(1,nx);h2=zeros(1,nx);
     
     
     
    %h(1)=h0;
    %h1=(h0^2-(2.*Q*mu.*x)./(k.*ro.*g))^(1/2);
    dt=min(phi*0.1*dx*dx/T)
     
    endloop=100;
    ix=2:nx-1; ixp=ix+ones(size(ix)); ixm=ix-ones(size(ix));
    c=T/phi;
     
    % COMPUTATION
    for boucle=1:endloop,
         h2(ix)=h(ix)+dt*c*(h(ixp)-2.*h(ix)+h(ixm))/dx/dx;
         h2(1)=h0;
         h2(nx)=h1;
         h=h2;
     
    end
     
    % POST - COMPUTATION
    plot (x,h)
    Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 828
    Points
    14 828
    Par défaut
    Citation Envoyé par tyybot Voir le message
    Cependant, nous avons un soucis au niveau de la ligne "u=ones(x)" ; le programme nous dit que u n'est pas défini.
    C'eut été mieux de donner le message d'erreur exact, je pense plutôt qu'il te donne une erreur à cause de x, ones devant prendre des entiers en paramètres.
    Relis l'aide de ONES.

    Citation Envoyé par tyybot Voir le message
    En fait le réel soucis est de pouvoir donner une valeur de k qui dépend de x (k vaut 1^-12 avant xmoy et 1^-20 après)
    ça c'est relativement simple avec l'indexage logique.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    k(1:lenght(x))=1.e-20;
    k(x<xmoy)=1e-12;
    Du coup plus besoin de ta variable u

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci ça tourne.

Discussions similaires

  1. Réponses: 5
    Dernier message: 17/03/2010, 17h11
  2. Calcul d'un nombre de caractères dans une chaîne
    Par Thekiller dans le forum Langage
    Réponses: 7
    Dernier message: 08/02/2010, 23h21
  3. Calculer le nombre total d'enregistrements dans une table
    Par majudis dans le forum VBA Access
    Réponses: 3
    Dernier message: 07/01/2010, 12h02
  4. [WD10] Calcul simple et ajout du resultat dans une table.
    Par Trebor dans le forum WinDev
    Réponses: 4
    Dernier message: 24/09/2009, 17h51
  5. Réponses: 6
    Dernier message: 23/04/2009, 20h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo