Bonjour cher Professeur
Ma compilation affiche je n’ai pas compris
– Square mesh : nb vertices =22 , nb triangles = 20 , nb boundary edges 22
– FESpace: Nb of Nodes 44 Nb of DoF 132
– Solve :
min -1.3237e-12 max 0.345492
current line = 68
Exec error : Try to get unset x,y, …
– number :1
Exec error : Try to get unset x,y, …
– number :1
err code 8 , mpirank 0
try getConsole C:\Users\ADMIN\Desktop\simulations\codee.edp
save log in : ‘C:\Users\ADMIN\Desktop\simulations\codee.log’
wait enter ?
voici mon code:
load “msh3”
load “medit”
int nx =10, ny =1, nz = 1;
int[int] rup = [0,6]; // Haut du cube étiqueté par zéro
int[int] rdown = [0,5]; // Bas du cube étiqueté par zéro
int[int] rmid = [1,2,3,4]; // Parois latérales étiquetées
mesh3 Th = buildlayers(square(nx, ny, [0.5x, 0.4y]), nz, zbound=[0., 0.1],
labelmid=rmid, labelup = rup, labeldown = rdown);
real E = 21.5e4,rho=1600;
real sigma = 0.29;
real gravity = -0.05;
// Fespace
fespace Vh(Th, [P1, P1, P1]);
Vh [u1, u2, u3],[u1oldd, u2oldd, u3oldd]=[sin(2pix)sin(2piy)sin(2piz), sin(2pix)sin(2piy)sin(2piz), 0]
,[u1old, u2old, u3old]=[sin(2pix)sin(2piy)sin(2piz), sin(2pix)sin(2piy)sin(2piz), 0], [v1, v2, v3],[up1,up2,up3];
// Macro
real sqrt2 = sqrt(2.);
macro epsilon(u1, u2, u3) [
dx(u1), dy(u2), dz(u3),
(dz(u2) + dy(u3))/sqrt2,
(dz(u1) + dx(u3))/sqrt2,
(dy(u1) + dx(u2))/sqrt2] //
macro div(u1, u2, u3) (dx(u1) + dy(u2) + dz(u3)) //
int kk=0;
// Problem
real mu = E/(2*(1+sigma));
real lambda = Esigma/((1+sigma)(1-2*sigma));
real dt=0.00000001, beta=0,T=0.000001, alpha=0;
real[int] instT(floor(T/dt) + 1);
real[int] NORML2(floor(T/dt) + 1);
real[int] NORML(floor(T/dt) + 1);
for(real t=0; t <T; t+=dt )
{
solve Lame ([u1, u2, u3], [v1, v2, v3])
= int3d(Th)((rho/dt^2)[u1, u2, u3]'[v1, v2, v3]
+ 0.5lambdadiv(u1, u2, u3)div(v1, v2, v3)
+0.52.mu( epsilon(u1, u2, u3)'*epsilon(v1, v2, v3) )
)
+int2d(Th,1,2,3,4,6)((beta/dt)*[u1old, u2old, u3old]'*[v1, v2, v3])
-int3d(Th)( (alpha/dt)*([u1old, u2old, u3old]'*[v1, v2, v3])
+ 2*(rho/dt^2)*[u1old, u2old, u3old]'*[v1, v2, v3]
-(rho/dt^2)*[u1oldd, u2oldd, u3oldd]'*[v1, v2, v3]
- 0.5* lambda*div(u1oldd, u2oldd, u3oldd)*div(v1, v2, v3)
- 0.5*2.*mu*( epsilon(u1oldd, u2oldd, u3oldd)'*epsilon(v1, v2, v3) )
+(alpha/dt)*[u1old, u2old, u3old]'*[v1, v2, v3]
)
-int2d(Th,1,2,3,4,6)( (beta/dt)*[u1oldd, u2oldd, u3oldd]'*[v1, v2, v3])
+ on(5, u1=0, u2=0, u3=0) ;
cout << " " << u1old<< u2old<< u3old<< u1<< u2 <<endl;
[up1,up2,up3]=[u1old-u1oldd, u2old-u2oldd, u3old-u3oldd];
instT[kk]=t;
NORML2[kk]=int3d(Th)((rho/dt^2)([up1,up2,up3]'[up1, up2, up3]))
+ int3d(Th)( lambda*div(u1, u2, u3)*div(u1, u2, u3)
+ 2.mu(epsilon(u1, u2, u3)'*epsilon(u1, u2, u3) ) )
;
NORML[kk]= int2d(Th,1,2,3,4,6)((beta/dt)[u1, u2, u3]'[u1, u2, u3]) ;
[u1oldd, u2oldd, u3oldd]=[u1old, u2old, u3old];
[u1old, u2old, u3old]=[u1, u2, u3];
cout << " " << NORML2[kk]<< " " << instT[kk] <<endl;
kk++;
}
cout << " " << NORML2 <<endl;
J’aimerais envoyer le fichier.loq mais ça dit que je suis nouveau je ne peux pas envoyer un fichier.
S’il ya lien pour faire l’envoie je serai ravi.