from fenics import *
#creer le maillage du domaine
mesh = UnitIntervalMesh(12)
#Définir les espaces fonctionnels
V = VectorFunctionSpace(mesh, 'P', 2)#Espace des fonctions pour la vitesse
Q = FunctionSpace(mesh, 'P', 1)#Espace des fonctions pour la pression
#Définir les conditions aux limites
import numpy as np
A = np.array([4 * x * (1 - x) * y, 0])
u_D = Constant(A) #Définir la fonction de vitesse prescrite sur Gamma_D
def boundary(x, on_boundary):
return on_boundary
bc = DirichletBC(V, u_D, boundary)
# Définir les fonctions test et les foncrions d'essai
u = TrialFunction(V)
v = TestFunction(V)
p = TrialFunction(Q)
q = TestFunction(Q)
#Définir les variables pour le problème de Stokes
u = Function(V)
p = Function(Q)
#Définir les équations du problème de Stokes
F = inner(grad(u), grad(v))*dx - div(v)*p*dx - inner(f, v)*dx
G = div(u)*q*dx
#Résoudre le système
solve(F == 0, u, bc)
solve(G == 0, p)
#Afficher les résultats
plot(u)
plot(p)
#Afficher les graphiques
interactive()