Hello! I need a code to simulate a wave impinging on a frequency dependent material in one dimension

  • Thread starter lemoz
  • Start date
  • #1
lemoz
2
0
Frequency dependant material simulation
 
Engineering news on Phys.org
  • #2
Welcome to PF.

What have you found in your Google searching so far? What frequency range do you need to simulate? What do you mean by "one dimension"? Can you show a sketch of the setup that you want to simulate?

Have you looked at standard simulation packages like ANSYS and COMSOL? Are you a university student currently? If so, do you have access to student versions of those simulation packages?



If you are not a student, what is this project for?
 
  • #3
Ok. I will try to be more explicit. I try to simulate a debye the propagation of electromagnetic wave in a debye medium with this code below. But i have trouble, i don’t have expected result and i don’t wich is the problem. I think that the absorbing boundary condition don’t work correct lu.

[Mentor Note: pasted your Word document code into the code box below]
Code:
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.
 

Attachments

  • Freqdep.docx
    23.9 KB · Views: 45
Last edited by a moderator:

Similar threads

  • Electrical Engineering
Replies
2
Views
493
Replies
1
Views
781
Replies
4
Views
678
Replies
2
Views
2K
  • Electrical Engineering
Replies
12
Views
1K
Replies
1
Views
441
Replies
1
Views
937
Replies
10
Views
625
Replies
3
Views
2K
  • Electrical Engineering
2
Replies
61
Views
8K
Back
Top