Module Pde_09_2014 (.ml)

module Pde_09_2014: sig .. end

Modélisation numérique d'une équation différentielle non-linéaire d'ordre 1

Ce code a pour but de mettre en oeuvre un schéma numérique simple d'ordre 1 pour résoudre numériquement une équation différentielle non-linéaire d'ordre 1.

Programmée en OCaml v4+ par Lilian Besson (ENS Cachan), pour une collaboration avec Nicolas Vernier (Université Paris-Sud), à Mahindra École Centrale, (C) 2014.

Distribué sous les termes de la licence GPLv3.
Author(s): Lilian BESSON
See also



Définition des constantes.


val k : float
La valeur réelle de k n'a pas d'importance ?
val x0 : float
Intervalle de résolution.
val x1 : float
val lx : float
val n : int
Nombre de points.
val h : float
val x_i : int -> float
Calculer la valeur flottante du ième point x_i.
val dt : float
Cette valeur dt peut avoir une importance !
val t_j : int -> float
Calculer la valeur flottante du jème instant t_i.
val jmax : int
Nombre d'étape maximum.

Fonctions pour afficher.


val print : ('a, Format.formatter, unit) Pervasives.format -> 'a
val sprint : ('a, unit, string) Pervasives.format -> 'a
val fprint : Pervasives.out_channel ->
('a, Pervasives.out_channel, unit) Pervasives.format -> 'a
val dftlext : string
Extension par défaut utilisée pour produire les graphiques (soit PNG soit SVG).
val dftlext : string

Différentes fonctions d'écritures.


val print_gnuplot : ?verb:bool ->
?script:string ->
?data:string ->
?plot:string ->
?ext:string ->
?t:float -> ?n:int -> ?ymin:float -> ?ymax:float -> unit -> unit
Génération et écriture du fichier script Gnuplot.
val print_y : ?verb:bool ->
?t:float ->
?n:int -> ?dt:float -> ?data:string -> float array -> unit -> unit
Génération et écriture du fichier de données brutes à partir du vecteur y.
val launch_gnuplot : ?verb:bool -> ?inter:bool -> ?script:string -> ?t:float -> unit -> int
Exécuter le script Gnuplot (par un Sys.command).
val view_eog : ?verb:bool -> ?plot:string -> ?ext:string -> unit -> int
Affichage de l'image produite, par /usr/bin/eog (par un Sys.command).
val print_and_launch : ?schema:string ->
?verb:bool ->
?inter:bool -> ?ext:string -> ?j:int -> float array -> unit -> unit
Combine toutes les étapes précédentes.

Initialisation du vecteur y_i.


val beta : float
Pour applatir la courbe au début.
val beta : float
val y_0 : float -> float
Profil initiale de la fonction y, affine, afin de vérifier que c'est le seul cas où la méthode des caractéristique permet de résoudre de façon formelle l'EDP.
val y_0 : float -> float
Profil initiale de la fonction y, parabolique comme observé réellement.
val makeym : unit -> float array
Créer le tableau initial.
val c : float
Précalcul de cette constante c = h × dt × sqrt(k).
val iMoins1 : int -> int
On utilise la symétrie naturelle du problème pour calculer y_{i-1} quand i=0.
val iPlus1 : ?n:int -> int -> int
On utilise la symétrie naturelle du problème pour calculer y_{i+1} quand i=n.

Schéma numérique.


val newnextY : ?schema:string ->
?n:int -> ?c:float -> ?h:float -> float array -> float array
Crée un nouveau tableau.
schema : précise le type de schéma (décentré gauche, droit, ou centré). Apparemment, seul le gauche est physiquement valide.
val nextY : ?schema:string ->
?n:int -> ?c:float -> ?h:float -> float array -> float array -> unit
Stocke le résultat dans le tableau déjà existant (de taille n+1) ynew.
schema : précise le type de schéma (décentré gauche, droit, ou centré). Apparemment, seul le gauche est physiquement valide.

Fonction principale de la simulation.


val sleep : float -> unit
Faire une pause pendant time seconde (par un appel Sys.command et pas Unix.sleep).
val jskip : int
Petite optimisation : on affiche qu'une fois sur jskip.
val simulation : ?schema:string -> ?inter:bool -> int -> unit -> unit
Lance la simulation.
schema : précise le type de schéma (décentré gauche, droit, ou centré). Apparemment, seul le gauche est physiquement valide.
inter : affiche chaque étape si vrai.
jmax : durée maximum de la simulation (nombre d'étape, pas en temps effectivement calculé).

Lancement de la simulation.