Equation Laplace SQUELETTE AVEC AIDE
TD : Equation Laplace SQUELETTE AVEC AIDE. Recherche parmi 300 000+ dissertationsPar Zanhix • 2 Mai 2017 • TD • 1 863 Mots (8 Pages) • 707 Vues
## Résolution de l'équation de Poisson / Laplace
# GDP 12/03/2015
# D'après documents Frédéric Legrand www.f-legrand.fr
## Chargement des bibliothèques
import numpy
import math
from matplotlib.pylab import *
## Définition de la classe Poisson
class Poisson:
# Méthode constructeur : initialise matrices et calcule constantes
def __init__(self,p):
# Nb de noeuds sur un coté de la zone de calcul
self.N = 2**p+1
# Taille des matrices de travail
self.M = M = self.N+2
# Taille du pas de discrétisation
self.h = 1.0/(self.N-1)
# Définition des matrices de travail
self.C = numpy.zeros((M,M),dtype=numpy.float64) # Centre
self.G = numpy.zeros((M,M),dtype=numpy.float64) # Gauche
self.D = numpy.zeros((M,M),dtype=numpy.float64) # Droite
self.H = numpy.zeros((M,M),dtype=numpy.float64) # Haut
self.B = numpy.zeros((M,M),dtype=numpy.float64) # Bas
self.F = numpy.zeros((M,M),dtype=numpy.float64) # Sources
self.U = numpy.zeros((M,M),dtype=numpy.float64) # Variable
# Paramètre optimal de sur-relaxation
self.omega = 2.0/(1.0+math.sin(math.pi*self.h))
#___________________________________________________________________________
# Définition du Laplacien
# remplissage des matrices C, G, D, H, B
def laplacien(self):
self.C[:]=-4
self.G[:]=1
self.D[:]=1
self.H[:]=1
self.B[:]=1
return None
#___________________________________________________________________________
# Condition aux limites sur les bords
def valeur_bords(self,v):
"""
Condition aux limites sur la bordure de la zone de simulation
Remplit le contour de la matrice U avec la valeur v
"""
self.U[:,0]=v
self.U[:,-1]=v
self.U[0,:]=v
self.U[-1,:]=v
return None
#___________________________________________________________________________
# Condition aux limites sur une zone
# modification des matrices C, G, D, H, B, F aux points considérés
def valeur_zone(self,v,x,y,long,forme='H',haut=0.1):
"""
Ajoute une condition aux limites dans la zone considérée
Le potentiel y est fixé à v
forme='H' segment horizontal de longueur long demarrant au point (x,y)
forme='V' segment vertical de longueur long demarrant au point (x,y)
forme='B' boite de largeur long et de hauteur haut demarrant en (x,y)
Attention : la zone ne doit pas sortir de la zone de simulation (carré de coté 1)
"""
self.C[x,y]=v
if forme==H:
for i in range (1,long):
self.C[x+i,y]
# Abcisse du point de départ dans les tableaux
...