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); }
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); }
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); }
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); }
/// <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")); }
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); }
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; }
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; }