Esempio n. 1
0
        private double GetValueAtX(double freq, GraphParameters parameters)
        {
            const double epsilon_0 = 8.8542e-12; //permitivity of free space
            var          w         = 2 * Math.PI * freq;

            var R = parameters.CellRadius ?? 0;
            var d = parameters.ShellThickness ?? 0;

            var epsilon_m = parameters.MediaPermittivity ?? 0;
            var sigma_m   = parameters.MediaConductivity ?? 0;

            var epsilon_ps1 = parameters.MembranePermittivity ?? 0;
            var epsilon_pc1 = parameters.CytoplasmPermittivity ?? 0;

            var sigma_ps1 = parameters.MembraneConductivity ?? 0;
            var sigma_pc1 = parameters.CytoplasmConductivity ?? 0;

            var com_eps1   = epsilon_ps1 * epsilon_0 - new Complex(0, 1) * (sigma_ps1 / w); //complex permittivity membrane
            var com_epc1   = epsilon_pc1 * epsilon_0 - new Complex(0, 1) * (sigma_pc1 / w); //complex permittivity cytoplasm
            var com_medium = epsilon_m * epsilon_0 - new Complex(0, 1) * (sigma_m / w);     //complex permittivity of medium

            //complex permittivity using single shell model
            var com_ep1 = com_eps1 *
                          (Math.Pow((R + d) / R, 3) + 2 * (com_epc1 - com_eps1) / (com_epc1 + 2 * com_eps1)) /
                          ((Math.Pow((R + d) / R, 3) - (com_epc1 - com_eps1) / (com_epc1 + 2 * com_eps1)));

            //clasius_mosotti factor
            var Fcm1 = (com_ep1 - com_medium) / (com_ep1 + 2 * com_medium);

            var ReFcm1 = Fcm1.Real;

            return(ReFcm1);
        }
Esempio n. 2
0
        public RepositoryGraph Graph(GraphParameters graphParameters)
        {
            var graph   = new RepositoryGraph();
            var commits = new GitVertex[]
            {
                new CommitVertex("c34173273", "Wrote some code")
                {
                    Message = "This is a long form description of the commit"
                },
                new CommitVertex("b1ae7a123", "Initial commit"),
                new CommitVertex("aa3823ca1", "Added readme"),
                new CommitVertex("9e21435fa", "Branching")
                {
                    Message = "This is a long form description of the commit"
                },
                new ReferenceVertex("refs/head/master", "c34173273"),
                new ReferenceVertex("remotes/origin/master", "c34173273"),
            };

            graph.AddVertexRange(commits);
            graph.AddEdge(new GitEdge(commits[1], commits[2], null));
            graph.AddEdge(new GitEdge(commits[0], commits[1], null));
            graph.AddEdge(new GitEdge(commits[3], commits[2], null));
            graph.LayoutAlgorithmType = "EfficientSugiyama";
            return(graph);
        }
Esempio n. 3
0
        public PointMapper(GraphParameters parameters, double height, double width)
        {
            var lwidth = parameters.MaxX - parameters.MinX;
            var lheight = parameters.MaxY - parameters.MinY;
            var wMul = width/lwidth;
            var hMul = height/lheight;

            _fn = p => new Point((p.X - parameters.MinX) * wMul, (p.Y - parameters.MinY) * hMul);
        }
Esempio n. 4
0
        public void Request(int step, int halfperiod, int degree)
        {
            ApproxyParameters intParams = new ApproxyParameters(step, halfperiod, degree);

            //отправляем значения для интегрирования на сервер
            formatter.Serialize(stream, intParams);

            //прием параметров для построения графа
            graphParams = (GraphParameters)formatter.Deserialize(stream);
        }
Esempio n. 5
0
        /// <summary>
        /// Collects the graph parameters from the user, validates them, and then forwards the user to the graph page.
        /// </summary>
        /// <param name="data">Graph parameter data.</param>
        /// <returns>View to get graph parameters.</returns>
        public ActionResult GraphParameters(GraphParameterData data)
        {
            // If no data, or both parameter sets are null, give them an empty to fill.
            if (data == null ||
                (data.Parameters1 == null || data.Parameters2 == null))
            {
                // Clear errors for not entering any data
                this.ModelState.Clear();

                // Generate new model to fill data into & return
                var model = new GraphParameterData()
                {
                    FrequencyStartHz = 1000, FrequencyEndHz = 10000000
                };
                return(View(model));
            }

            // TODO Validation of graphing parameters, add to ModelState errors if any exist
            List <GraphParameters> validParameters = new List <GraphParameters>();
            // Validate that one set of graph parameters are filled out.
            GraphParameters p = data.Parameters1;

            if (p.CellRadius != null || p.CytoplasmConductivity != null || p.CytoplasmPermittivity != null || p.MediaConductivity != null || p.MediaPermittivity != null || p.MembraneConductivity != null || p.MembranePermittivity != null || p.ShellThickness != null)
            {
                validParameters.Add(data.Parameters1);
            }

            p = data.Parameters2;
            if (p.CellRadius != null || p.CytoplasmConductivity != null || p.CytoplasmPermittivity != null || p.MediaConductivity != null || p.MediaPermittivity != null || p.MembraneConductivity != null || p.MembranePermittivity != null || p.ShellThickness != null)
            {
                validParameters.Add(data.Parameters2);
            }

            if (validParameters.Count == 0)
            {
                ModelState.AddModelError("", "Please fill in at least one set of graph parameters to continue.");
            }

            if (!ModelState.IsValid)
            {
                return(View(data));
            }

            var graphData = UpdateGraphData(validParameters, data.FrequencyStartHz, data.FrequencyEndHz);

            TempData["graphData"] = graphData;
            return(RedirectToAction("Graph"));
        }
Esempio n. 6
0
        private double GetUpperCrossoverFreqEst(GraphParameters parameters)
        {
            const double epsilon_0 = 8.8542e-12; //permitivity of free space

            //TODO: do GraphParameters have to be nullable? We need all of the below to be not null.
            var epsilon_m = parameters.MediaPermittivity ?? 0;
            var sigma_m   = parameters.MediaConductivity ?? 0;

            var epsilon_pc1 = parameters.CytoplasmPermittivity ?? 0;
            var sigma_pc1   = parameters.CytoplasmConductivity ?? 0;

            //calculate the upper crossover frequency estimate
            var Fxupper_p1_est = (1 / (2 * Math.PI)) *
                                 Math.Sqrt((Math.Pow(sigma_pc1, 2) - sigma_pc1 * sigma_m - 2 * Math.Pow(sigma_m, 2)) /
                                           ((2 * Math.Pow(epsilon_m, 2) - epsilon_pc1 * epsilon_m - Math.Pow(epsilon_pc1, 2)) *
                                            Math.Pow(epsilon_0, 2)));

            return(Fxupper_p1_est);
        }
Esempio n. 7
0
        private void CreateFunction(object sender, EventArgs e)
        {
            {
                try
                {
                    MasterPane masterPane = zedGraph.MasterPane;
                    masterPane.PaneList.Clear();

                    //отправка запроса на сервер
                    client.Request(Convert.ToInt32(stepNumericUpDown.Value), Convert.ToInt32(halfperiodNumericUpDown.Value), Convert.ToInt32(degreeNumericUpDown.Value));

                    //данные для построения графа, полученные с сервера
                    GraphParameters graphParams = client.GetGraphParams;

                    //интегрирование
                    //GraphPane integrationGraph = new GraphPane();
                    //DrawGraph(integrationGraph, graphParams.GetIntegrationPoints1, Convert.ToInt32(periodNumericUpDown.Value), "Интегрирование ", Color.Red, false);
                    //DrawGraph(integrationGraph, graphParams.GetIntegrationPoints2, Convert.ToInt32(periodNumericUpDown.Value), "Интегрирование при 2*n", Color.Blue, false);
                    //masterPane.Add(integrationGraph);


                    //график функции
                    GraphPane Graph = new GraphPane();
                    DrawGraph(Graph, graphParams.GetFunctionPoints, graphParams.GetApproxyPoints, Convert.ToInt32(halfperiodNumericUpDown.Value), "График функции", "Апроксимация", Color.Black, Color.Red, true);
                    masterPane.Add(Graph);

                    //размещение графиков
                    using (Graphics g = CreateGraphics())
                    {
                        masterPane.SetLayout(g, PaneLayout.SingleColumn);
                    }

                    zedGraph.AxisChange();
                    zedGraph.Invalidate();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
        }
        public RepositoryGraph Graph(GraphParameters graphParameters)
        {
            var graph = new RepositoryGraph();
            var commits = new GitVertex[]
                {
                    new CommitVertex("c34173273", "Wrote some code")
                        {Message = "This is a long form description of the commit"},
                    new CommitVertex("b1ae7a123", "Initial commit"),
                    new CommitVertex("aa3823ca1", "Added readme"),
                    new CommitVertex("9e21435fa", "Branching")
                        {Message = "This is a long form description of the commit"},
                    new ReferenceVertex("refs/head/master", "c34173273"),
                    new ReferenceVertex("remotes/origin/master", "c34173273"),
                };

            graph.AddVertexRange(commits);
            graph.AddEdge(new GitEdge(commits[1], commits[2], null));
            graph.AddEdge(new GitEdge(commits[0], commits[1], null));
            graph.AddEdge(new GitEdge(commits[3], commits[2], null));
            graph.LayoutAlgorithmType = "EfficientSugiyama";
            return graph;
        }
Esempio n. 9
0
        static void Main(string[] args)
        {
            Calculation calculator = new Calculation();
            TcpListener server     = null;

            try
            {
                IPAddress localAddr = IPAddress.Parse("127.0.0.1");
                server = new TcpListener(localAddr, port);
                BinaryFormatter formatter = new BinaryFormatter();

                // запуск слушателя
                server.Start();

                while (true)
                {
                    Console.WriteLine("Ожидание подключения... ");

                    // получаем входящее подключение
                    TcpClient client = server.AcceptTcpClient();
                    // получаем сетевой поток для чтения и записи
                    NetworkStream stream = client.GetStream();
                    Console.WriteLine("Подключен клиент.\n");
                    try
                    {
                        while (true)
                        {
                            Console.WriteLine("Ожидание запроса...");

                            //получение параметров для интегрирования
                            ApproxyParameters intParams = (ApproxyParameters)formatter.Deserialize(stream);

                            Console.WriteLine("step: {0}\nhalfperiod: {1}\ndegree: {2}", intParams.GetStep.ToString(), intParams.GetHalfPeriod.ToString(), intParams.GetDegree.ToString());

                            //расчет данных для клиента
                            GraphParameters graphParams = calculator.CalcParams(intParams.GetStep, intParams.GetHalfPeriod, intParams.GetDegree);

                            //отправляем сообщение с расчитанными данными
                            formatter.Serialize(stream, graphParams);
                            Console.WriteLine("Выполнено.\n");
                        }
                    }
                    catch (Exception ex)
                    {
                        client.Close();
                        stream.Close();
                        Console.WriteLine("[EXCEPTION] {0}", ex.Message);
                        Console.WriteLine("Клиент отключился.\n");
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                if (server != null)
                {
                    server.Stop();
                }
            }
        }
 public GraphInfo(Type graphType, GraphParameters graphParameters)
 {
     GraphType       = graphType;
     GraphParameters = graphParameters;
 }