# -*- coding: utf-8 -*-
"""
Created on Mon Dec 15 19:34:25 2025

@author: erwan
"""

import numpy as np
import matplotlib.pyplot as plt

epsilon = 8.854e-12 #permittivité du vide F.m-1
q_e = 1.6e-19 #charge élémentaire C


#1
L = 10 #longueur côté grille m à modifier
N = 100 #nombre de points à modifier
h = L/N #pas spatial à modifier


#2
xx = np.linspace(0, 3, 4) #à modifier
x, y = np.meshgrid(xx, xx)


A = np.array( [[1,3,2,4], #Matrice de test
     [0,2,4,1],
     [0,3,5,2],
     [2,1,1,0]])


#3
def grad(A):
    longueur_x = np.size(A,1)
    longueur_y = np.size(A,0)
    
    gradA_x = np.zeros((longueur_y, longueur_x))
    gradA_y = np.zeros((longueur_y, longueur_x))
    
    for i in range(0, 0): #à modifier
        for j in range(0, 0): #à modifier
            gradA_x[j,i] = 0 #à modifier
            
    for j in range(0, 0): #à modifier
        for i in range(0, 0): #à modifier
            gradA_y[j,i] = 0 #à modifier
        
    return gradA_x, gradA_y
        
gradA = grad(A)  #Gradient de test


#5
V = 0 #Potentiel électrique charge ponctuelle à modifier
gradV_x, gradV_y = 0, 0 #Composantes du gradient selon u_x et u_y 
E_x = 0 #Composante du champ électrique selon u_x à modifier
E_y = 0 #Composante du champ électrique selon u_y à modifier


#6
plt.figure(1)
plt.contour(A, A, A, 50, linestyle='dashed', cmpa='Greys') #à modifier
plt.xlabel("x")
plt.ylabel("y")
plt.streamplot(x ,y ,A ,A , .5, color='#d62626') #à modifier
plt.gca().set_aspect('equal') 


#8
V_etendue = np.zeros((N,N))
rho = np.zeros((N,N))
for k in range(0,N):
    rho[0 ,0 ] = 1 #à modifier
    rho[0 ,0 ] = -1 #à modifier
 
    
#9
def calculV(A):
    longueur_x = np.size(A,1)
    longueur_y = np.size(A,0)
    
    calculA = np.zeros((longueur_y, longueur_x))
    
    for i in range(0 ,0 ): #à modifier
        for j in range(0 ,0 ): #à modifier
            calculA[i,j] = 0 #à modifier
        
    return calculA


#10
for k in range(0): #à modifier
    V_etendue = 0 #à modifier

#11
gradV_etendue_x, gradV_etendue_y = grad(V_etendue) #Champ électrostatique associé
gradV_x, gradV_y = grad(A) #Composantes du gradient selon u_x et u_y à modifier
E_etendue_x = 0 #Composante du champ électrique selon u_x à modifier
E_etendue_y = 0 #Composante du champ électrique selon u_y à modifier

plt.figure(2)
plt.contour(A ,A ,A , 50, linestyle='dashed', cmpa='Greys') #à modifier
plt.xlabel("x")
plt.ylabel("y")
plt.streamplot(x ,y ,A ,A, .5, color='#d62626') #à modifier
plt.gca().set_aspect('equal')

plt.show()