Simulation d'un réservoir

Bonjour,

je suis étudiant de master, je travaille sur les réservoirs. j'ai simulé un réservoir en 2D.

maintenant, je veux le faire en 3D, mais je ne parvien pas à le faire.

j'ai écris le programme, mais lorsque je l'exécute, il n'affiche aucune erreur, mais il ne donne non plus de résultat. j'ai exécuté le programme de 20h à 07h le matin, mais aucun résultats.

s.v.p. aidez moi

voilà le programme en question.

clc; clear all;
format long;
Lx= 1.0;
Ly= 1.0;
Lz= 1.0;
kp= 1e-4;
delta_x= 0.01;
delta_y= delta_x;
delta_z= delta_x;
figure(1);
nx=100;
ny=100;
nz=100;
i=2:nx-1;
j=2:ny-1;
k=2:nz-1
Q(1:nx,1:ny,1:nz)=0;
P(1:nx,1:ny,1:nz)=3;
U(1:nx,1:ny,1:nz)=3;
P(1,:,:)=P(2,:,:);
P(:,1,:)=P(:,2,:);
P(:,:,1)=P(:,:,2);
P(nx,:,:)=P(nx-1,:,:);
P(:,ny,:)=P(:,ny-1,:);
P(:,:,nz)=P(:,:,nz-1);
Q(nx-1,ny-1,nz-1)=-1e0;
Q(2,2,2)=1e0;
for iter=1:20000
U(1:nx,1:ny,1:nz)=P(1:nx,1:ny,1:nz);
P(i,j,k)= (0.25)*(P(i+1,j,k)+P(i-1,j,k)+P(i,j+1,k)+P(i,j-1,k)+P(i,j,k+1)+P(i,j,k-1))+0.25*Q(i,j,k)*((delta_x)^2)/kp;
P(1,:,:)=P(2,:,:);
P(:,1,:)=P(:,2,:);
P(:,:,1)=P(:,:,2);
P(nx,:,:)=P(nx-1,:,:);
P(:,ny,:)=P(:,ny-1,:);
P(:,:,nz)=P(:,:,nz-1);
end
contour3(P);
[u v w]= gradient(P);
[verts averts]= streamslice(u,v,w,startx,starty,startz);
iverts= interpstreamspeed(u,v,verts,15);
sl= streamline(iverts);
set(sl,'Marker','.')
hold on; pcolor(P); shading interp
axis tight; view(3);
figure(2);
contour3(P);
di=abs(P-U);
ep=(sum(sum(di)))/sum(sum((abs(P))));
Q

1 réponse

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    Salut.
    pour savoir s'il sagit d'un problème de codage ou de lenteur d'exécution, diminue la taille et le nombre d'iteration voir si tu as quelque chose.