Why Isn't My Debye Medium Wave Simulation Producing Expected Results?

  • Thread starter Thread starter lemoz
  • Start date Start date
Click For Summary
SUMMARY

The discussion focuses on troubleshooting a simulation of electromagnetic wave propagation in a Debye medium using a custom code. The user reports unexpected results, suspecting issues with the absorbing boundary conditions. Recommendations include exploring established simulation tools such as ANSYS and COMSOL, which may provide more reliable results. The code provided is written in Pascal and includes specific parameters like epsilon, sigma, and time steps that are critical for accurate simulation.

PREREQUISITES
  • Understanding of electromagnetic wave propagation principles
  • Familiarity with Debye medium properties
  • Proficiency in Pascal programming language
  • Knowledge of simulation software like ANSYS or COMSOL
NEXT STEPS
  • Investigate the implementation of absorbing boundary conditions in electromagnetic simulations
  • Learn how to use ANSYS for electromagnetic wave simulations
  • Explore COMSOL Multiphysics for modeling Debye materials
  • Study numerical methods for solving partial differential equations in wave propagation
USEFUL FOR

Researchers, engineers, and students involved in electromagnetic simulations, particularly those working with Debye materials and seeking to enhance their simulation accuracy and reliability.

lemoz
Messages
2
Reaction score
0
Frequency dependent material simulation
 
Engineering news on Phys.org
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?
 
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

Last edited by a moderator:

Similar threads

  • · Replies 11 ·
Replies
11
Views
1K
Replies
26
Views
5K
Replies
93
Views
8K
Replies
8
Views
2K
Replies
1
Views
2K
  • · Replies 14 ·
Replies
14
Views
3K
  • · Replies 8 ·
Replies
8
Views
2K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 17 ·
Replies
17
Views
2K
  • · Replies 2 ·
Replies
2
Views
2K