public AnaliticalTwoSidesFixed(InputModelArgs model, double sigma) { alfa1 = model.Material.GetAlfa1(); h = model.Shape.H; l = model.Shape.L; E = model.Material.E[0]; v = model.Material.v[0, 0]; D = E * h * h * h * (1 + alfa1) / (12 * (1 - v * v)); Lambda = 14 * E * h / (30 * (1 + v)); B = E * h * (1 + alfa1) / (1 - v * v); N0 = sigma * h; lambda_2 = N0 / D; k_2 = Lambda / (Lambda + N0); lambda1_2 = lambda_2 * k_2; lambda1 = Math.Sqrt(lambda1_2); ch = Math.Cosh(lambda1 * l / 2); sh = Math.Sinh(lambda1 * l / 2); _b = l * (1 / (Lambda + N0) - 1 / (D * lambda_2)) / (2 * lambda1 * sh); p = (-1) * CountLoad(); }
private string getAxesData(InputModelArgs args) { NumberFormatInfo numberFormatInfo = new CultureInfo("en-US", false).NumberFormat; numberFormatInfo.NumberDecimalSeparator = "."; string resData = "M 0,0"; resData += "L " + (args.Shape.L * zoomValue).ToString("0.00000", numberFormatInfo) + ",0"; /*resData += "M " + (args.Shape.L*zoomValue).ToString("0.00000", numberFormatInfo) + ","+ * ((-1)*args.Shape.H*zoomValue).ToString("0.00000", numberFormatInfo); * resData += "L " + (args.Shape.L * zoomValue).ToString("0.00000", numberFormatInfo) + "," + (args.Shape.L * zoomValue).ToString("0.00000", numberFormatInfo);*/ return(resData); }
static void Main(string[] args) { InputModelArgs model = new InputModelArgs(); model.Shape.L = 1; model.Shape.H = 0.1; model.Material.AutoiFillE(40000); model.Material.AutoFillV(0.3); model.Material.AutoFillG(); model.Boundary = BoundaryConditions.FixedLeftSide; model.Load = 2752.4039476340849; FEMSolver solver = new FEMSolver(model); int iter; Result result = solver.SolvePDE(30, 6, 0.001, out iter); AnaliticalOneSideFixed analitical = new AnaliticalOneSideFixed(model); using (StreamWriter sw = new StreamWriter("ResultU1.txt")) { foreach (Node node in solver.Mesh.MiddleNodes) { Vector alfa = new Vector(3); alfa[0] = node.X; alfa[2] = node.Y; sw.WriteLine(node.X.ToString() + " " + solver.U[2 * node.Index].ToString("0.00000") + "\t" + analitical.U(alfa)[0].ToString("0.00000")); } sw.Close(); } using (StreamWriter sw = new StreamWriter("ResultU3.txt")) { foreach (Node node in solver.Mesh.MiddleNodes) { Vector alfa = new Vector(3); alfa[0] = node.X; alfa[2] = node.Y; sw.WriteLine(node.X.ToString() + "\t" + result.U[2 * node.Index + 1].ToString("0.00000") + "\t" + analitical.U(alfa)[2].ToString("0.00000")); } sw.Close(); } Console.WriteLine("Ітерацій: " + iter.ToString()); Console.WriteLine("Files Filed"); Console.Read(); }
public AnaliticalOneSideFixed(InputModelArgs model) { this.model = model; double alfa1 = model.Material.GetAlfa1(); double h = model.Shape.H; double l = model.Shape.L; double E = model.Material.E[0]; double v = model.Material.v[0, 0]; D = E * h * h * h * (1 + alfa1) / (12 * (1 - v * v)); Lambda = 14 * E * h / (30 * (1 + v)); p = -model.Load; l2 = l * l; l3 = l * l * l; l4 = l * l * l * l; l5 = l * l * l * l * l; l6 = l * l * l * l * l * l; l7 = l * l * l * l * l * l * l; wK1 = p / (2 * Lambda); wK2 = p / (6 * D); }
public FEMSolver(InputModelArgs model) { Model = model; Mesh = new MeshGenerator(); }
public ModelViewModel() { Model = new InputModelArgs(); Results = new ObservableCollection <ResultItem>(); SetDefaultValues(); }