From b324296e23dbdc2a3dc85ac09426fba9184af47d Mon Sep 17 00:00:00 2001 From: Thorsten Liebig Date: Thu, 9 Dec 2010 12:59:10 +0100 Subject: [PATCH] update example: Rect_Waveguide --- matlab/examples/waveguide/Rect_Waveguide.m | 146 +++++++++++++++------ 1 file changed, 109 insertions(+), 37 deletions(-) diff --git a/matlab/examples/waveguide/Rect_Waveguide.m b/matlab/examples/waveguide/Rect_Waveguide.m index 99d26a4..212fb01 100644 --- a/matlab/examples/waveguide/Rect_Waveguide.m +++ b/matlab/examples/waveguide/Rect_Waveguide.m @@ -1,36 +1,65 @@ +% +% EXAMPLE / waveguide / Rect_Waveguide +% +% This example demonstrates: +% - waveguide mode excitation +% - waveguide mode matching +% - pml absorbing boundaries +% +% +% Tested with +% - Matlab 2009b +% - openEMS v0.0.17 +% +% (C) 2010 Thorsten Liebig + close all clear clc -%% setup the simulation %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -length = 2000; -unit = 1e-3; -a = 1000; -width = a; -b = 500; -height = b; -mesh_res = [10 10 10]; +%% switches +postproc_only = 1; -%define mode +%% setup the simulation %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +physical_constants; +unit = 1e-3; %drawing unit in mm +numTS = 50000; %max. number of timesteps + +% waveguide dimensions +length = 2000; +a = 1000; %waveguide width +b = 600; %waveguide heigth + +%waveguide TE-mode definition m = 1; n = 0; -EPS0 = 8.85418781762e-12; -MUE0 = 1.256637062e-6; -C0 = 1/sqrt(EPS0*MUE0); -Z0 = sqrt(MUE0/EPS0); +mesh_res = [10 10 10]; -f0 = 1e9; -freq = linspace(f0-f0/3,f0+f0/3,201); +%% setup FDTD parameters & excitation function %%%%%%%%%%%%%%%%%%%%%%%%%%%% +f_start = 175e6; +f_stop = 500e6; -k = 2*pi*freq/C0; +% dump special frequencies to vtk, use paraview (www.paraview.org) to +% animate this dumps over phase +vtk_dump_freq = [200e6 300e6 500e6]; + +freq = linspace(f_start,f_stop,201); + +k = 2*pi*freq/c0; kc = sqrt((m*pi/a/unit)^2 + (n*pi/b/unit)^2); -fc = C0*kc/2/pi; -beta = sqrt(k.^2 - kc^2); +fc = c0*kc/2/pi; %cut-off frequency +beta = sqrt(k.^2 - kc^2); %waveguide phase-constant +ZL_a = k * Z0 ./ beta; %analytic waveguide impedance -ZL_a = k * Z0 ./ beta; +disp([' Cutoff frequencies for this mode and wavguide is: ' num2str(fc/1e6) ' MHz']); + +if (f_start