public void ParseArguments_ValidArguments_DoesNotThrowException()
        {
            var args = "-x 15.0 -y 10.0 -r 0.0 -n -s 1x2 InvertedF.xml".Split();
            var options = new Options();

            Assert.DoesNotThrow(delegate { options.ParseArguments(args); });
        }
        public void ParseArguments_DutFilenameMissing_ThrowsException()
        {
            var args = "-x 10.0 -y 0.0 -r 0.0 -s 1x2 -n".Split();
            var options = new Options();

            var exception = Assert.Throws<ArgumentException>(delegate { options.ParseArguments(args); });
            Assert.True(exception.Message.Contains("specified"), "Incorrect exception message: " + exception.Message);
        }
        public void ParseArguments_BothNoEndoandSarDefined_ThrowsException()
        {
            var args = "-x 15.0 -y 10.0 -r 0.0 -n --sar -s 1x2 InvertedF.xml".Split();
            var options = new Options();

            var exception = Assert.Throws<ArgumentException>(delegate { options.ParseArguments(args); });
            Assert.True(exception.Message.Contains("no-endo") && exception.Message.ToLower().Contains("sar"), "Incorrect exception message: " + exception.Message);
        }
        public void ParseArguments_BothSlotIndexAndAllSlotsDefined_ThrowsException()
        {
            var args = "-x 15.0 -y 10.0 -r 0.0 -i 2 -a -s 1x2 InvertedF.xml".Split();
            var options = new Options();

            var exception = Assert.Throws<ArgumentException>(delegate { options.ParseArguments(args); });
            Assert.True(exception.Message.Contains("slot-index") && exception.Message.Contains("all-slots"), "Incorrect exception message: " + exception.Message);
        }
        public void ParseArguments_ModuleDoesNotFitSlot_ThrowsException()
        {
            var args = "-x 10.0 -y 0.0 -r 0.0 -i 0 -s 2x2 InvertedF.xml".Split();
            var options = new Options();

            var exception = Assert.Throws<ArgumentException>(delegate { options.ParseArguments(args); });
            Assert.True(exception.Message.Contains("does not fit"), "Incorrect exception message: " + exception.Message);
        }
 public SimulationSetup(Options options)
 {
     inputFile = options.inputFile;
     outputDirectory = options.outputDirectory;
     excludeEndo = options.excludeEndo;
     slotIndex = (options.slotIndex == null) ? 0 : (uint)options.slotIndex; // FIXME
     x = options.x;
     y = options.y;
     rot = options.rot / 180 * Math.PI;
     frequency = options.frequency * 1e6;
     bandwidth = options.bandwidth * 1e6;
     lambda = c0 / frequency;
     lambdaMin = c0 / (frequency + bandwidth);
     moduleSize = options.moduleSize;
     impedance = options.impedance;
 }
        public static void Run(Options options)
        {
            int[] slotIndeces = null;
            if (options.allSlots == true)
            {
                slotIndeces = Endo.slotIndeces[options.moduleSize];
            }
            else
            {
                slotIndeces = new int[] { (int)options.slotIndex };
            }

            foreach (int i in slotIndeces)
            {
                var t = new SimulationSetup(options);
                t.slotIndex = (uint)i;
                t.Initialize();

                string suffix;
                if (options.excludeEndo == true)
                {
                    suffix = options.moduleSize;
                }
                else
                {
                    suffix = i.ToString();
                }

                JobHandler jh = new JobHandler();
                if (options.sarMode)
                {
                    Console.WriteLine("Generating simulation files in '" + Path.Combine(options.outputDirectory, "sar-" + suffix) + "'");
                    t.GenerateSarSimulationInput(Path.Combine(options.outputDirectory, "sar-" + suffix));
                    jh.RunScript(Path.GetFullPath(Path.Combine("sar-" + suffix, "run_sar.cmd")));
                }
                else
                {
                    Console.WriteLine("Generating simulation files in '" + Path.Combine(options.outputDirectory, "dir-" + suffix) + "'");
                    t.GenerateFarFieldSimulationInput(Path.Combine(options.outputDirectory, "dir-" + suffix));
                    jh.RunScript(Path.GetFullPath(Path.Combine("dir-" + suffix, "run_farfield.cmd")));
                }
            }
        }
        static int Main(string[] args)
        {
            var options = new Options();

            try
            {
                options.ParseArguments(args);
            }
            catch (ArgumentException e)
            {
                Console.Error.WriteLine(Environment.NewLine + "ERROR: " + e.Message);
                Console.Error.Write(options.GetUsage());
                return -1;
            }

            options.Print();
            Run(options);

            return 0;
        }