📄 toyfdtd1 c source code listing.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><!-- saved from url=(0054)http://www.borg.umn.edu/toyfdtd/ToyFDTD1_C_Source.html --><HTML><HEAD><TITLE>ToyFDTD1 C source code listing</TITLE><META http-equiv=Content-Type content="text/html; charset=iso-8859-1"><META content="MSHTML 5.50.4522.1800" name=GENERATOR><META content="Laurie E. Miller" name=Author><META content="FDTD, ToyFDTD, computational electromagnetics, time domain, simulation, open source, volume visualization, source code, C" name=Keywords><META content="Source code in C for ToyFDTD1, the first in the ToyFDTD series of codes. The original If-I-Can-Do-It-You-Can-Do-It FDTD!" name=Description><META content="Mozilla/4.51C-SGI [en] (X11; U; IRIX64 6.5-ALPHA-1285894620 IP27) [Netscape]" name=GENERATOR></HEAD><BODY background="ToyFDTD1 C source code listing.files/JD_border.jpg" SGI_SRC="/hosts/congo.borg.umn.edu/usr/local/www/toyfdtd/JD_border.jpeg" nosave><MAP name=CemTach_logo_map-4><AREA shape=RECT coords=910,75,977,95 href="http://www.cemtach.org/sponsors.html"><AREA shape=RECT coords=853,75,903,95 href="http://www.cemtach.org/people.html"><AREA shape=RECT coords=766,75,845,94 href="http://www.cemtach.org/references/references.html"><AREA shape=RECT coords=722,76,760,94 href="http://www.cemtach.org/faq.html"><AREA shape=RECT coords=647,75,715,94 href="http://www.cemtach.org/software/software.html"><AREA shape=RECT coords=552,75,640,95 href="http://www.cemtach.org/simulations/simulations.html"><AREA shape=RECT coords=497,75,544,94 href="http://www.cemtach.org/index.html"></MAP><P><A href="http://www.borg.umn.edu/toyfdtd/CemTach_logo_map-4.map"><IMG height=104 alt="CEM TACH image map" isMap src="ToyFDTD1 C source code listing.files/CemTach_logo_map.gif" width=980 useMap=#CemTach_logo_map-4 border=0 SGI_SRC="/hosts/congo.borg.umn.edu/usr/local/www/toyfdtd/CemTach_logo_map.gif" NOSAVE></A> <BR> <BR> <BR> <P><IMG height=136 src="ToyFDTD1 C source code listing.files/Toy_FDTD_logo.gif" width=979 SGI_SRC="/hosts/congo.borg.umn.edu/usr/local/www/toyfdtd/logos/Toy_FDTD_logo.gif" NOSAVE> <BR> <BR> <BR> <TABLE cellSpacing=0 cols=2 cellPadding=0 width=900 border=0 NOSAVE> <TBODY> <TR NOSAVE> <TD width=170 NOSAVE></TD> <TD NOSAVE> <CENTER> <TABLE cellSpacing=5 cellPadding=8 border=3> <TBODY> <TR> <TD><B><FONT face=Arial,Helvetica><FONT size=+2>ToyFDTD1 C Source Code Listing</FONT></FONT></B></TD></TR></TBODY></TABLE></CENTER></TD></TR> <TR> <TD></TD> <TD> <CENTER><FONT face=Arial,Helvetica>(Note: I'm almost but not quite sure the code pasted into this page flawlessly.</FONT> <BR><FONT face=Arial,Helvetica>So if you are going to run the code, download the tar file from the link on the main ToyFDTD page.)</FONT> <P><B><FONT face=Arial,Helvetica><FONT size=+2><A href="http://www.borg.umn.edu/toyfdtd/ToyFDTD.html">ToyFDTD Home</A></FONT></FONT></B> <P><B><FONT face=Arial,Helvetica><FONT size=+1><A href="http://www.borg.umn.edu/toyfdtd/ToyFDTD1.html">back to ToyFDTD1 main page</A></FONT></FONT></B> <BR><B><FONT face=Arial,Helvetica><FONT size=+1><A href="mailto:lemiller@borg.umn.edu">lemiller@borg.umn.edu</A></FONT></FONT></B></CENTER></P></TD></TR> <TR> <TD></TD> <TD><BR> <PRE><FONT face=Arial,Helvetica><FONT size=+2><FONT color=#000000>// ToyFDTD1, version 1.03 </FONT>// The if-I-can-do-it-you-can-do-it FDTD! // Copyright (C) 1998,1999 Laurie E. Miller, Paul Hayes, Matthew O'Keefe // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // as published by the Free Software Foundation; either version 2// of the License, or any later version, with the following conditions// attached in addition to any and all conditions of the GNU// General Public License:// When reporting or displaying any results or animations created// using this code or modification of this code, make the appropriate// citation referencing ToyFDTD1 by name and including the version// number. //// This program is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty // of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.// See the GNU General Public License for more details.//// You should have received a copy of the GNU General Public License// along with this program; if not, write to the Free Software// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA // 02111-1307 USA// Contacting the authors://// Laurie E. Miller, Paul Hayes, Matthew O'Keefe// Department of Electrical and Computer Engineering// 200 Union Street S. E.// Minneapolis, MN 55455//// lemiller@borg.umn.edu// // http://www.borg.umn.edu/toyfdtd/// http://www.borg.umn.edu/toyfdtd/ToyFDTD1.html// http://www.toyfdtd.org/// This code is here for everyone, but not everyone will need something // so simple, and not everyone will need to read all the comments. // This file is over 700 lines long, but less than 400 of that is actually// code. // This ToyFDTD1 is a stripped-down, minimalist 3D FDTD code. It // illustrates the minimum factors that must be considered to // create a simple FDTD simulation.///////////////////////////////////////////////////////////////////////////////// Changes to version 1.02 from version 1.03: updating contact & web info.// For further notes on the revision history, see the changelog file.///////////////////////////////////////////////////////////////////////////////// This is a very simple Yee algorithm 3D FDTD code in C implementing// the free space form of Maxwell's equations on a Cartesian grid.// There are no internal materials or geometry. // The code as delivered simulates an idealized rectangular waveguide // by treating the interior of the mesh as free space/air and enforcing// PEC (Perfect Electric Conductor) conditions on the faces of the mesh.// The problem is taken from Field and Wave Electromagnetics, 2nd ed., by // David K. Cheng, pages 554-555. It is a WG-16 waveguide // useful for X-band applications, interior width = 2.29cm, // interior height = 1.02cm. The frequency (10 GHz) is chosen to be // in the middle of the frequency range for TE10 operation. // Boundaries: PEC (Perfect Electric Conductor).// Stimulus: A simplified sinusoidal plane wave emanates from x = 0 face.// 3D output: The electric field intensity vector components in the direction // of the height of the guide (ez) are output to file every // PLOT_MODULUS timesteps (and for the last timestep), scaled to // the range of integers from zero through 254. (The colormap // included in the tar file assigns rgb values to the range zero through// 255.) Scaling is performed on each timestep individually, since // it is not known in advance what the maximum and minimum // values will be for the entire simulation. The integer value 127 is // held to be equal to the data zero for every timestep. This method // of autoscaling every timestep can be very helpful in a simulation // where the intensities are sometimes strong and sometimes faint, // since it will highlight the presence and structure of faint signals // when stronger signals have left the mesh. // Each timestep has it's own output file. This data output file format// can be used in several visualization tools, such as animabob and viz. // Other output: Notes on the progress of the simulation are written to standard// output as the program runs. // A .viz file is output to feed parameters to viz, should viz later be// used to view the data files.// Some terminology used here://// This code implements a Cartesian mesh with space differentials // of dx, dy, dz.// This means that a point in the mesh has neighboring points dx meters // away in the direction of the positive and negative x-axis,// and neighboring points dy meters away in the directions // of the +- y-axis, and neighboring points dz meters away // in the directions of the +- z-axis,// The mesh has nx cells in the x direction, ny in the y direction, // and nz in the z direction.// ex, ey, and ez refer to the arrays of electric field intensity vectors // -- for example, ex is a 3-dimensional array consisting of the // x component of the E field intensity vector for every point in the // mesh. ex[i][j][k] refers to the x component of the E field intensity // vector at point [i][j][k]. // hx, hy, and hz refer to the arrays of magnetic field intensity vectors.//// dt is the time differential -- the length of each timestep in seconds.//// bob is a file format that stands for "brick of bytes", meaning a string // of bytes that can be interpreted as a 3-dimensional array of byte // values (integers from zero through 255). animabob is a free // visualization tool that displays and animates a sequence of bricks // of bytes. For more information on animabob or to download a copy, // see the ToyFDTD website at http://www.borg.umn.edu/toyfdtd///// viz is another free visualization tool that displays and animates // brick-of-byte files. For more information on viz or to download a copy, // see the ToyFDTD website at http://www.borg.umn.edu/toyfdtd/#include <math.h> #include <stdio.h> #include <float.h>// program control constants
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -