FDTD code

G

gladiator

Guest
Hallo, Ik ben op zoek naar een FDTD code 2D of 3D, dat kunnen vergelijken van verschillende absorberende grens condiditons te helpen kunt u dankzij
 
Een eenvoudige 1-D FDTD code in matlab met ABC wordt hieronder gegeven. % 1-D FDTD code KE = 200;% KE is hij het aantal cellen moet worden gebruikt ex = nullen (1, KE); hy = nullen (1, KE); ex_low_m1 = 0; ex_low_m2 = 0; ex_high_m1 = 0; ex_high_m2 = 0; kc = KE / 2;% Gaussiaans pulse t0 = 40; verspreid = 12, n = input ('T =?'); voor T = 1: n% Main FDTD Loop% Ex veld voor k = 2: KE ex (k) = ex (k) + 0,5 * (hy (k-1)-hy (k)); end% Gaussian puls in het midden puls = exp (-0,5 * ((t0-T) ^ 2 / verspreid ^ 2)); ex (kc) = impuls;% Absorbing Randvoorwaarden ex (1) = ex_low_m2; ex_low_m2 = ex_low_m1; ex_low_m1 = ex (2); ex (KE) = ex_high_m2; ex_high_m2 = ex_high_m1; ex_high_m1 = ex ( KE-1);% Hy veld voor k = 1: KE-1 hy (k) = HY (k) + 0,5 * (ex (k)-ex (k +1)); end end% Einde van FDTD Loop perceel (ex)
 
Mooi stukje .... Kunt u me leren een beetje? Ik heb een aantal kleine vragen en ik ben niet verey familier met FDTD. 1. Kunnen vervangen we de Gaussische pols? Hoe? 2. Kunnen we MIX FDTD met een andere methode? bedankt!:: idea::?: [quote = peter-gr] Een eenvoudige 1-D FDTD code in matlab met ABC wordt hieronder gegeven. % 1-D FDTD code KE = 200;% KE is hij het aantal cellen moet worden gebruikt ex = nullen (1, KE); hy = nullen (1, KE); ex_low_m1 = 0; ex_low_m2 = 0; ex_high_m1 = 0; ex_high_m2 = 0; kc = KE / 2;% Gaussiaans pulse t0 = 40; verspreid = 12, n = input ('T =?'); voor T = 1: n% Main FDTD Loop% Ex veld voor k = 2: KE ex (k) = ex (k) + 0,5 * (hy (k-1)-hy (k)); end% Gaussian puls in het midden puls = exp (-0,5 * ((t0-T) ^ 2 / verspreid ^ 2)); ex (kc) = impuls;% Absorbing Randvoorwaarden ex (1) = ex_low_m2; ex_low_m2 = ex_low_m1; ex_low_m1 = ex (2); ex (KE) = ex_high_m2; ex_high_m2 = ex_high_m1; ex_high_m1 = ex ( KE-1);% Hy veld voor k = 1: KE-1 hy (k) = HY (k) + 0,5 * (ex (k)-ex (k +1)); end end% Einde van FDTD Loop perceel (ex) [/quote]
 
1. Ik denk dat je kunt elke wave-vorm te gebruiken. Hoe het te doen zal afhangen van de software die u gebruikt. Een voorbeeld hiervan is het verstrekken van een databestand waarin de amplitude van pusle op een reeks van tijd stappen. Nu de juistheid van het resultaat en de tijd om convergentie zou worden beïnvloed door de golf-vorm. Als uw bron loopt 10.000 keer de stappen vóór het bereiken van "praktische" nul, dan zou u zorgvuldig te controleren of de output is veel eerder (zeg 5000) gestabiliseerd. Als de simulatie is te vroeg beëindigd, heb je fout. Je zou ook denken aan numerieke dispersie ... 2. Uiteraard kunt u mengen FDTD met andere methode. Sommige commerciële codes (bijv. WASP-net) doet dat. Vanuit een theoretisch oogpunt, zijn de methoden die worden gebruikt om enkele differentiaalvergelijkingen op te lossen, en je kon gelijk principe Appy om een probleem domein te ontleden in subdomeinen en verschillende methoden toe te passen in elk van hen.
 
Je kunt natuurlijk gebruik maken van een puls dan gaussian.For Zo kun je bijvoorbeeld een sinusvormige puls te gebruiken. Download het volgende bestand wat waarschijnlijk zal je helpen. good luck. peter-gr.
 
Het is zeer gemakkelijk te schakelen om te schakelen naar een sinusvormige source.Just de parameter puls vervangen door de volgende: puls = sin (2 * pi * freq_in * dt * T); De parameter freq_in bepaalt de frequentie van de golf.
 
Misschien vindt u de 2D-en 3D-code in het boek van Taflove. Computational Electrodynamica: De Finite-Difference Time-Domain Method door Allen Taflove, Susan C. Hagness (Hardcover - juni 2000) Of u kunt een ander boek Elektromagnetische Simulatie Met behulp van de FDTD methode van Dennis M. Sullivan (Auteur) (Hardcover) vinden
 
Ik heb een 3D-FDTD code implementeren van een puntbron in een vrije ruimte met mesh Mur absorberende grenzen. Zou me helpen?
 
Het boek van Dennis Sullivan geeft de programma's die u wilt gebruiken voor 3D-FDTD simulatie.
 
in de matlab source code boven, als het vraagt om een inbreng van de "T" wat heeft dat te doen? hulp wordt gewaardeerd.
 
De T geeft aan dat de time-stappen (de tijd dat de puls zal duren: T = At * n).
 
kan iemand uitleggen absorberende randvoorwaarde? Ik ben nog steeds een beetje verloren op het algoritme. thanks.
 
Absorberende randvoorwaarden zijn noodzakelijk om uitgaande H en E velden te houden van wordt teruggekaatst in de ruimte probleem. Normaal gesproken, bij de berekening van het E-gebied, weten we dat de omringende H waarden, dit is een fundamentele aanname in de FDTD method.At de rand van het probleem ruimte zullen we niet de waarde naar een kant. Stel dat we op zoek naar een randvoorwaarde in de end.If de golf gaat in de richting van de randvoorwaarde in de vrije ruimte, is het reizen op c, de snelheid van light.So in een keer stap van de FDTD algoritme, het reizen: afstand = c * dt = c * (dx/2c) = dx / 2 De bovenstaande vergelijking legt uit dat hij twee keer stappen voor een golf duurt te steken een cell.So een gezond verstand benadering zegt als dat een gemeenschappelijk randvoorwaarde zou Ex zijn ( n) (0) = Ex (n-2) (1) Het is relativeley eenvoudig te implementeren this.Store een waarde van Ex (1) voor twee keer stappen en vervolgens het in Ex (0).
 

Welcome to EDABoard.com

Sponsor

Back
Top