#!/usr/bin/env python3
# -*- coding: utf-8 -*-

"""
Tracé des courbes de la la relation de dispersion du plasma
"""

#Importation des bibliothèques
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams.update({
    "text.usetex": True,
    "font.family": "sans-serif",
    "font.sans-serif": ["Helvetica"],
    "font.size": 22})

#Définition des fonctions
def omega(k):
    """
    relation de dispersion adimensionnée
    omega/omega_p = sqrt(1+(kc/omega_p)**2)
    """
    return np.sqrt(1+(k)**2)

def k(omega):
    """
    relation de dispersion adimensionnée
    kc/omega_p = sqrt((omega/omega_p)**2-1)
    """
    return np.sqrt(omega**2-1)

def v_phi(omega):
    """
    vitesse de phase adimensionnée
    v_phi/c = 1/sqrt(1-(omega_p/omega)**2)
    """
    return 1/np.sqrt(1-1/omega**2)

def v_g(omega):
    """
    vitesse de groupe adimensionnée
    v_g/c = sqrt(1-(omega_p/omega)**2)
    """
    return np.sqrt(1-1/omega**2)

def cm_to_inch(value):
    return value/2.54
# Programme principal
if __name__ == "__main__":
    OMEGA =np.linspace(1+2e-2,5,1000)
    K = k(OMEGA)

    YLABEL = r"$\displaystyle\frac{\omega}{\omega_p}$"
    XLABEL = r"$\displaystyle\frac{kc}{\omega_p}$"
    TITLE = "Relation de dispersion adimensionnée"
    
    plt.plot(K,OMEGA)
    plt.plot(K,K)
    

    plt.ylabel(YLABEL)
    plt.xlabel(XLABEL)
    plt.title(TITLE)
    plt.show()
    
    V_G = v_g(OMEGA)
    V_PHI = v_phi(OMEGA)
    C = np.ones(len(OMEGA))

    YLABEL = r"$\displaystyle\frac{v}{c}$"
    XLABEL = r"$\displaystyle\frac{\omega}{\omega_p}$"
    TITLE = "Vitesses de phase et de groupe adimensionnées"
    
    plt.plot(OMEGA, V_G, label=r"$\displaystyle\frac{v_{\phi}}{c}$")
    plt.plot(OMEGA, V_PHI, label=r"$\displaystyle\frac{v_g}{c}$")
    plt.plot(OMEGA, C, label=r"$\displaystyle\frac{c}{c}$")
    
    plt.ylabel(YLABEL)
    plt.xlabel(XLABEL)
    plt.title(TITLE)
    plt.legend()
    plt.show()
