- #1
lemoz
- 2
- 0
Frequency dependant material simulation
Program debyeformulation;
Const
size=200;
Var
dz: array[0..size-1] of real;
ez: array[0..size-1] of real;
hx: array[0..size-2] of real;
ga: array[0..size-1] of real;
gb: array[0..size-1] of real;
gc: array[0..size-1] of real;
ix: array[0..size-1] of real;
sx: array[0..size-1] of real;
Time,maxTime,i:integer;
dx,dt,epsz,epsilon,sigma:real;
t0, spread, pulse:real;
tau,hi ;
ezl1,ezl2,ezh1, ezh2:real;
monfichier:text;
begin
assign(monfichier,'debyeformul100.txt');
rewrite(monfichier);
dx :=0.01; dt:=dx/6e8; epsz:=8.8e-12;
for i:=0 to size-1 do
begin
ga[i]:=1.0; gb[i]:=0.0; gc[i]:=0.0; dz[i]:=0.0; ez[i]:=0.0; hx[i]:=0.0; ix[i]:=0.0; sx[i]:=0.0;
end;
ezl1:=0.0; ezl2:=0.0; ezh1:=0.0; ezh2:=0.0;
epsilon:=2.0; sigma:=0.01; hi:=2.0; tau:=0.001;
for i:=100 to size-1 do
begin
ga[i]:=1.0/(epsilon+sigma*dt/epsz+hi*dt/tau);
gb[i]:= sigma*dt/epsz;
gc[i]:= hi*dt/tau;
end;
for i:=0 to size-1 do
begin
writeln(i,'',ga[i]:6:2,'',gb[i]:6:2,'',gc[i]:6:2);
end;
maxTime:=100; t0:=50.0; spread:=10.0;
for Time:=0 to maxTime-1 do
begin
for i:=1 to size-2 do
begin
dz[i]:=dz[i]+0.5*(hx[i-1]-hx[i]);
end;
pulse:=exp(-0.5*(Time-t0)*(Time-t0)/spread);
dz[5]:=dz[5]+pulse;
for i:=1 to size-2 do
begin
ez[i]:=ga[i]*(dz[i]-ix[i]-sx[i]);
ix[i]:=ix[i]+gb[i]*ez[i];
sx[i]:= exp(-dt/tau) *sx[i]+gc[i]*ez[i];
end;
ez[0]:= ezl2;
ezl2:= ezl1;
ezl1:= ez[1];
ez[size-1]:= ezh2;
ezh2 :=ezh1
ezh1 :=ez[size-2] ;
for i:=0 to size-1 do
begin
hx[i]:=hx[i]+0.5*(ez[i]-ez[i+1]);
end;
end;
for i:=0 to size-1 do
begin
write(monfichier,i,' ',ez[i]:1:3);
writeln(monfichier);
end;
close(monfichier);
readln;
end.