public EquationParameters DeleteParams(int ParId) { EquationParameters dbEntry = context.EquationParameters.Find(ParId); if (dbEntry != null) { context.EquationParameters.Remove(dbEntry); context.SaveChanges(); } return(dbEntry); }
public IActionResult Index() { EquationParameters equationParameters = new EquationParameters() { Number1 = 1, Number2 = 2, Operator = System.Linq.Expressions.ExpressionType.Add }; ViewBag.SupportedOperators = SupportedOperators.GetSupportedOperatorsAsListItems(); return(View(equationParameters)); }
public static double [] InitialConditionsSetter(EquationParameters parames, int dataLength) { Type MyType = typeof(EquationInitializeConditions); MethodInfo[] methods = MyType.GetMethods(); double[] data = new double [dataLength]; foreach (MethodInfo method in methods) { if (method.Name == parames.InitialConditions) { data = (double[])method.Invoke(null, new object[] { dataLength }); } } return(data); }
public IActionResult Index([FromForm] EquationParameters equationParameters) { ViewBag.EquationResult = equationParameters.Operator switch { ExpressionType.Add => Add(equationParameters.Number1, equationParameters.Number2), ExpressionType.Subtract => Subtract(equationParameters.Number1, equationParameters.Number2), ExpressionType.Multiply => Multiply(equationParameters.Number1, equationParameters.Number2), ExpressionType.Divide => Divide(equationParameters.Number1, equationParameters.Number2), _ => throw new NotSupportedException() }; ViewBag.SupportedOperators = SupportedOperators.GetSupportedOperatorsAsListItems(); return(View(equationParameters)); }
public ActionResult Delete(int ExperId) { ExperimentsDB deletedProduct = Expers.DeleteExperiment(ExperId); EquationParameters deletedParams = EquParams.DeleteParams(ExperId); if (deletedProduct != null) { TempData["Message"] = string.Format("{0} equation was deleted", deletedParams.EquationName); } else { TempData["FailMessage"] = string.Format("The equation might have already been deleted"); } return(RedirectToAction("List", Expers.Experiments.Select(x => x))); }
public static string FileWriter(double [] data, EquationParameters parames, int time) { //StreamWriter wrt = new StreamWriter(stream); //wrt.WriteLine(time==0 ? "[":""); StringBuilder wrt = new StringBuilder(); wrt.AppendLine(time == 0 ? "[" : ""); for (int j = 0; j < data.Length; j++) { double val = j * parames.VarStep; wrt.AppendLine("{\"x\":" + val.ToString("0.00") + ","); wrt.AppendLine("\"t\":" + (time).ToString() + ","); wrt.AppendLine("\"val\":" + data[j].ToString("0.00") + (time == (int)(parames.MaxTime / parames.TimeStep) - 1 && j == (data.Length - 1) ? "}]" : "},")); } return(wrt.ToString()); }
public static string SemiLagrangeScheme(EquationParameters parameters) { StringBuilder result = new StringBuilder(); double[] data = new double[(int)(parameters.MaxVar / parameters.VarStep)]; data = EquationMethods.InitialConditionsSetter(parameters, data.Length); for (int i = 0; i < (int)(parameters.MaxTime / parameters.TimeStep); i++) { double[] reservoir = new double[data.Length]; double[] res = new double[data.Length]; int approx; int secondapprox; for (int j = 0; j < reservoir.Length; j++) { reservoir[j] = j - parameters.Coeffitient * parameters.TimeStep / parameters.VarStep; res[j] = data[j]; } for (int j = 1; j < reservoir.Length; j++) { if (reservoir[j] > 0) { approx = (int)reservoir[j]; if (approx > reservoir[j]) { secondapprox = approx - 1; } else if (approx < reservoir[j]) { secondapprox = approx + 1; } else { secondapprox = approx; } data[j] = Math.Abs(approx - reservoir[j]) * res[approx] + Math.Abs(secondapprox - reservoir[j]) * res[secondapprox]; } else { data[j] = data[0]; } } data[0] = res[reservoir.Length - 1]; result.Append(EquationMethods.FileWriter(data, parameters, i)); } return(result.ToString()); }
public ActionResult Save(EquationParameters data, string graph) { if (ModelState.IsValid) { ExperimentsDB experiment = new ExperimentsDB(); experiment.Gif = Encoding.Default.GetBytes(graph); experiment.MimeType = "json"; EquParams.SaveParams(data); experiment.User = HttpContext.User.Identity.Name; Expers.SaveExperiment(experiment); TempData["Message"] = string.Format("{0} equation has been saved", data.EquationName); return(RedirectToAction("Equation", "Home", new { EquationType = data.EquationName })); } else { TempData["FailMessage"] = string.Format("Not all necessary data was provided"); return(View("List", Expers.Experiments)); } }
public ActionResult Equation(EquationParameters parames) { if (ModelState.IsValid) { string result = ""; Type EqType = typeof(EquationMethods).Assembly.GetType(parames.EquationName, true); MethodInfo[] methods = EqType.GetMethods(BindingFlags.Public | BindingFlags.Static | BindingFlags.DeclaredOnly); foreach (MethodInfo method in methods) { if (method.Name == parames.NumericalMethods) { result = (string)method.Invoke(null, new object[] { parames }); } } Session["result"] = result; Session["TempEquation"] = parames; Session["Image"] = true; } return(View(parames)); }
public ActionResult Equation(string EquationType) { Type MyType = typeof(EquationInitializeConditions); MethodInfo[] methodes = MyType.GetMethods(); List <string> InitialCond = new List <string>(); foreach (MethodInfo method in methodes) { if (method.ReturnType == typeof(double[])) { InitialCond.Add(method.Name); } } Session["InitialConditions"] = new SelectList(InitialCond); List <string> MethodsNames = new List <string>(); if (EquationType != "None") { Type EqType = typeof(EquationMethods).Assembly.GetType(EquationType); MethodInfo[] methods = EqType.GetMethods(BindingFlags.Public | BindingFlags.Static | BindingFlags.DeclaredOnly); foreach (MethodInfo method in methods) { MethodsNames.Add(method.Name); } } Session["NumericalMethods"] = new SelectList(MethodsNames); EquationParameters Temporary = (EquationParameters)Session["TempEquation"]; if (Temporary == null || Temporary.EquationName != EquationType) { Session["Image"] = false; Session["TempEquation"] = null; return(View(new EquationParameters { EquationName = EquationType })); } return(View(Temporary)); }
public static string UpwindScheme(EquationParameters parameters) { double[] data = new double[(int)(parameters.MaxVar / parameters.VarStep)]; data = EquationMethods.InitialConditionsSetter(parameters, data.Length); StringBuilder result = new StringBuilder(); for (int i = 0; i < (int)(parameters.MaxTime / parameters.TimeStep); i++) { double[] reservoir = new double[data.Length]; for (int j = 0; j < reservoir.Length; j++) { reservoir[j] = data[j]; } for (int j = 1; j < reservoir.Length; j++) { data[j] = reservoir[j] - parameters.TimeStep * parameters.Coeffitient * (reservoir[j] - reservoir[j - 1]) / parameters.VarStep; } data[0] = reservoir[reservoir.Length - 1]; result.Append(EquationMethods.FileWriter(data, parameters, i)); } return(result.ToString()); }
public static string CentralDifferences(EquationParameters parameters) { double[] data = new double[(int)(parameters.MaxVar / parameters.VarStep)]; data = EquationMethods.InitialConditionsSetter(parameters, data.Length); StringBuilder result = new StringBuilder(); //FileStream stream = new FileStream("C:/Users/mm/Documents/Visual Studio 2017/Projects/EquationsSolver/WebGUI/DataStorage/data.json", FileMode.Create, FileAccess.Write); for (int i = 0; i < (int)(parameters.MaxTime / parameters.TimeStep); i++) { double[] reservoir = new double[data.Length]; for (int j = 0; j < reservoir.Length; j++) { reservoir[j] = data[j]; } for (int j = 1; j < reservoir.Length - 1; j++) { data[j] = reservoir[j] + parameters.TimeStep * parameters.Coeffitient * (reservoir[j + 1] - 2.0 * reservoir[j] + reservoir[j - 1]) / (parameters.VarStep * parameters.VarStep); } result.Append(EquationMethods.FileWriter(data, parameters, i)); } return(result.ToString()); //stream.Close(); }
public void SaveParams(EquationParameters equparams) { context.EquationParameters.Add(equparams); context.SaveChanges(); }