/// <summary> /// Computes the phi: simply supported. /// Formula 2.55 /// </summary> /// <returns>The phi symply supported.</returns> /// <param name="plate">Plate.</param> /// <param name="p">P.</param> /// <param name="q">Q.</param> /// <param name="x">The x coordinate.</param> /// <param name="y">The y coordinate.</param> public static double ComputePhiPlateSimplySupported(Plate plate, int p, int q, double x, double y) { Func <double, int, double, double> beamFunc = (lx, pp, xx) => { return(Math.Sin(pp * Math.PI * xx / lx)); }; return(beamFunc(plate.L_x, p, x) * beamFunc(plate.L_y, q, y)); }
/// <summary> /// Computes the phi free. /// Formula 2.62 and 2.63 /// </summary> /// <returns>The phi free.</returns> /// <param name="plate">Plate.</param> /// <param name="p">P.</param> /// <param name="q">Q.</param> /// <param name="x">The x coordinate.</param> /// <param name="y">The y coordinate.</param> public static double ComputePhiPlateFree(Plate plate, int p, int q, double x, double y) { // TBD Func <double, int, double, double> beamFunc = (lx, pp, xx) => { return(0.0); }; return(0.0); }
/// <summary> /// Computes the eigenfrequencies. /// Formula 2.91 /// </summary> /// <returns>The eigenfrequencies.</returns> /// <param name="plate">Plate.</param> /// <param name="P">P.</param> /// <param name="Q">Q.</param> public static Complex[][] ComputeSimplySupportedPlateEigenfrequencies(Plate plate, int P, int Q) { Complex[][] wp = ComplexMatrix.Create2D(P, Q); for (int p = 1; p <= P; p++) { for (int q = 1; q <= Q; q++) { double multiplier = Math.Sqrt((Math.Pow(Math.PI, 4) * plate.B) / (plate.H * plate.Rho)); wp[p - 1][q - 1] = multiplier * (Math.Pow(Math.Pow(p / plate.L_x, 2) + Math.Pow(q / plate.L_y, 2), 2)); } } return(wp); }
/// <summary> /// Computes the norms of the plate modes. /// Formula 2.102 /// </summary> /// <returns>The norms of the plate modes.</returns> /// <param name="room">Room.</param> /// <param name="M">M.</param> /// <param name="N">N.</param> public static Complex[][] ComputeNormsOfThePlateModes(Plate plate, int P, int Q, Func <Plate, int, int, double, double, double> func) { var result = ComplexMatrix.Create2D(P, Q); for (int p = 1; p <= P; p++) { for (int q = 1; q <= Q; q++) { result[p - 1][q - 1] = GaussLegendreRule.Integrate((x, y) => { return(Math.Pow(func(plate, p, q, x, y), 2.0)); }, 0.0, plate.L_x, 0.0, plate.L_y, 5); } } return(result); }
/// <summary> /// Computes the plate room projection coefficients. /// Formula 2.87 /// </summary> /// <returns>The plate room projection coefficients.</returns> /// <param name="plate">Plate.</param> /// <param name="room">Room.</param> /// <param name="M">M.</param> /// <param name="N">N.</param> /// <param name="P">P.</param> /// <param name="Q">Q.</param> public static Complex[][][][] ComputePlateRoomProjectionCoefficients(Plate plate, Room room, int M, int N, int P, int Q) { var result = ComplexMatrix.Create4D(M, N, P, Q); for (int m = 0; m < M; m++) { for (int n = 0; n < N; n++) { for (int p = 1; p <= P; p++) { for (int q = 1; q <= Q; q++) { result[m][n][p - 1][q - 1] = GaussLegendreRule.Integrate((x, y) => { return(ComputePhiRoom(room, m, n, x + plate.DeltaX, y + plate.DeltaY) * ComputePhiPlateSimplySupported(plate, p, q, x, y)); }, 0.0, plate.L_x, 0.0, plate.L_y, 5); } } } } return(result); }
public void Add(Plate plate) { _plates.Add(plate); }