/************* wave.c: Basic Waveguide Code *****************/ #include #include #include #include #include #define PREMUL 32768 /* Fixed exponent */ #define MAXN 8192 /* Max # nodes */ #ifndef PI #define PI 3.1415926535 #endif int notcl = 0, nosound = 0; /* to prevent (time expensive) output */ int e[MAXN], v[MAXN]; /* displacement and velocity arrays */ int u1 =1024, u2 =1024; /* combined values of (c/m)*PREMUL*dt */ int n; /* number of nodes */ int steps; /* number of (full wave) iter. steps */ int fd; /* file descriptor for sound file */ int binoutnode; /* node to output in sound file */ init(n) int n; { int i; for (i=0; i 0) { t = e[i]/PREMUL; cp = (char *) &t; write(fd,cp,1); write(fd,cp+1,1); } } propagate(n) /* Compute new velocity and */ int n; /* displacements once for all nodes. */ { /* (more optimization possible here) */ register int i; for (i=0; i 0) close(fd); } process_args(argc,argv) int argc; char *argv[]; { int i; if ((argc < 3) || ( ((argc-3)%2) != 0 )) { printf("Usage %s <#nodes> <#steps> [