Retour

L'oscillateur harmonique avec frottement fluide

Analyse du système

Cette expérience de physique numérique propose d'étudier le comportement d'un système physique à un degré de liberté, soumis à un amortissement du à un frottement fluide. L'équation normalisée de ce mouvement est:

d2x/dt2 + 2*z*ω0*dx/dt + ω0**2*x = 0                (1)

où:

Dans beaucoup d'ouvrages, on introduit le facteur de qualité du système, noté Q. Selon notre notation Q = 1/2*z. On peut donc écrire l'équation (1):

d2x/dt2 + ω0/Q*dx/dt + ω02*x = 0              (2)

Nota : dans la suite, j'utiliserai les conventions FORTRAN d'écriture des équations. Je présume que vous les connaissez et c'est plus pratique que de faire du LaTex.

Si les frottements sont nuls (z=0), on retrouve l'équation différentielle bien connue du pendule simple, dont le mouvement est périodique, de période propre T0 = 2*PI/ω0
Les solutions x(t) de l'équation (2) et donc la nature du mouvement dépendent du signe du discriminant Δ = (ω0/Q)2 - 4*ω02 de l'équation caractéristique :

r2 + ω0/Q*r + ω02 = 0              (3)

Cas 1 - Δ < 0 Le frottement est faible (Q > 0.5) le régime du système est pseudo-périodique

La solution de l'équation (2) est de la forme (je vous laisse chercher la démonstration!):

x(t) = (A*COS(ωa*t) + B*SIN(ωa*t))* EXP(-(ωa/2*Q)*t)              (4)

où:

ωa désigne la pseudo-pulsation du mouvement égale à ω0*SQRT(1 - (1/4*Q**2))

A et B dépendent des conditions initiales x0 et v0

On appelle "temps de relaxation" ou "durée caractéristique" la valeur 2*Q/ω0

La pseudo-période du mouvement Ta est égale à T0/SQRT(1 - (1/4*Q**2))

Cas 2 - Δ = 0 (Q = 0.5) le régime du système est apériodique critique

L'équation caractéristique (3) admet deux solutions identiques, égales à -ω0/2*Q.

La solution de l'équation (2) est de la forme:

x(t) = (A*t + B)*EXP(-(ω0/2*Q)*t)               (5)

où:

A et B dépendent des conditions initiales x0 et v0

On remarque que dans ce cas, le système n'oscille pas. L'amplitude tend très rapidement vers 0.
Le temps de relaxation de ce système en régime apériodique critique est égal à 2*Q/ω0

Cas 3 - Δ > 0 le frottement est important (Q > 0.5) le régime du système est apériodique

L'équation (3) admet deux solutions réelles négatives:) + (ω0/2)*SQRT(1/Q*Q - 4)

r2 = -(ω0/2*Q) - (ω0/2)*SQRT(1/Q*Q - 4)

La solution de l'équation (2) est de la forme:

x(t) = A*EXP(r1*t) + B*EXP(r2*t)               (6)

où:

A et B dépendent des conditions initiales x0 et v0

On remarque que dans ce cas aussi, le système n'oscille pas. L'amplitude décroit exponentiellement, selon la valeur de Q

Le temps de relaxation de ce système en régime apériodique est égal à -1/r1

Le programme d'étude du système

Il s'agit d'écrire un programme qui simulera le comportement d'un oscillateur harmonique soumis à un frottement fluide. Ce programme devra nous permettre de faire varier les valeurs des paramètres du système (ω0 et Q) ainsi que les conditions initiales (x0 et v0).
Nous stockerons les données de calcul afin de procéder aux expériences décrites ci-dessous: tracé du mouvement, tracé du portrait de phase, etc.
Le programme utilise la routine ResolutionRK4 pour résoudre le système différentiel. Le comportement du système sera décrit dans la routine Derivee. Le programme principal se nomme OscillateurAmorti.
Le code source de la routine:

IMPLICIT None

REAL alpha, beta

C alpha = omega0/Q

C beta = omega0*omega0

COMMON /Oscillateur/alpha, beta

INTEGER nbEquation

REAL x, y(NbEquation), dy(NbEquation)

C Description du systeme differentiel de l'oscillateur

C y(1) = y

C y(2) = dy/dt

dy(1) = y(2) ! dy/dt

dy(2) = -alpha*y(2) - beta*y(1) ! d2y/dt2

RETURN

END

Ce code ne présente aucune difficulté. Il est articulé autour du changement de variables classique qui permet d'écrire une EDO de deuxième ordre sous la forme de deux EDO de premier ordre. ω0/Q et ω02 , qui ne changent pas au cours du programme, sont calculés dans le corps du programme principal puis je les passe en COMMON à la routine Derivee (resp. alpha et beta). C'est toujours ça d'économisé en temps de calcul.
Pour le télécharger : Derivee.for

Le code source du programme OscillateurAmorti:

PROGRAM OscillateurAmorti

IMPLICIT None

C Declaration des routines externes

C ResolutionRK4 : routine d'implementation du schema RK4

C Derivee : description du systeme differentiel de l'oscillateur

EXTERNAL ResolutionRK4

EXTERNAL Derivee

C Declaration des parametres RK4

C Le systeme differentiel comporte deux equations

INTEGER NbEquation

PARAMETER (NbEquation = 2)

C Declaration des constantes

REAL PI

DATA PI/3.141592654/

C Declaration des variables

INTEGER i, NbPas

REAL y(NbEquation), t, PasTemps

REAL omega0, Q, x0, v0, alpha, beta, Ta, T0

C Declaration des variables communes

COMMON /Oscillateur/alpha, beta

C Saisie des parametres du mouvement

WRITE(*,'(a,$)') 'Pulsation propre de l''oscillateur (rd.s-1) : '

READ(*,*) omega0

WRITE(*,'(a,$)') 'Facteur de qualite de l''oscillateur : '

READ(*,*) Q

WRITE(*,'(a,$)') 'Abscisse initiale x0 (en m) : '

READ(*,*) x0

WRITE(*,'(a,$)') 'Vitesse initiale v0 (en m.s-1) : '

READ(*,*) v0

C calcul des valeurs intermediaires pour optimiser le traitement

C dans Derivee

alpha = omega0/Q

beta = omega0*omega0

C Calcul de la periode propre et la pseudo periode de l'oscillateur

T0 = 2*PI/omega0

Ta = T0/SQRT(1 - 1/(4*Q*Q))

C Pour obtenir un trace exploitable, il faut estimer PasTemps

C en fonction de omega0

IF (omega0 .LT. 10.0d0) THEN

PasTemps = 0.01d0

ELSE

PasTemps = 0.1d0/omega0

ENDIF

C Calcul du nombre de pas en fonction de Q

IF (Q .LE. 0.5d0) THEN

NbPas = T0*3/PasTemps

ELSE

NbPas = (Ta*Q+1)/PasTemps ! Q*Ta donne approximativement le nb d'oscillations

ENDIF

C Ouverture du fichier de stockage des resultats de calcul

C Ce fichier sera trace par GnuPlot

OPEN(10, FILE='OscillateurAmorti.dat')

C Ecriture des conditions initiales

y(1) = x0

y(2) = v0

t = 0.0d0

WRITE(10,* ) t, y(1), y(2)

C Boucle de calcul

DO i=1, NbPas

t = i*PasTemps

CALL ResolutionRK4(t, y, PasTemps, NbEquation, Derivee)

WRITE(10,*) t, y(1), y(2)

ENDDO

C Fermeture du fichier de donnees

CLOSE(10)

STOP

END

Les points particuliers de ce programme:

Pour télécharger le code source : OscillateurAmorti.for et le projet VFORT OscillateurAmorti.prj

Expérience 1 - Etude du mouvement en fonction de Q et ω0

Le fichier de commande Gnuplot PlotOscillateur.p permet de tracer la courbe x(t) en fonction de t. Vous pouvez évidement le modifier pour l'adapter à vos besoins.

Muni du programme OscillateurAmorti, que vous lancerez dans une fenêtre Commande de Windows, et de GnuPlot (il vous suffit de passer la commande load 'OscillateurAmorti.p') vous pourrez faire quelques manip, par exemple:

Vous pouvez évidemment le modifier pour l'adapter à vos besoins.

Expérience 2 - Etude du portrait de phase en fonction de Q et ω0

Rédaction en cours....


Contenu et design par Dominique Lefebvre - www.tangenteX.com mars 2013 -- Vous pouvez me joindre par mail ou sur PhysiqueX

Licence Creative Commons

Cette œuvre est mise à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Pas de Modification 3.0 France .