fork download
  1. #include <stdio.h>
  2.  
  3. int main(void)
  4. {
  5. int # กำหนดค่าคงที่สำหรับการคำนวณ
  6. k = 32 # W/m·°C
  7. q_dot = 1.97e6 # W/m³
  8. h = 45 # W/m²·°C
  9. T_inf = 24 # °C
  10. T_fixed = 50 # °C
  11. dx = 0.08 # m
  12. A = k / dx**2 # ค่าคงที่ของอนุพันธ์อันดับสอง
  13.  
  14. # สร้างเมทริกซ์ A และเวกเตอร์ b
  15. A_matrix = np.zeros((9, 9))
  16. b_vector = np.zeros(9)
  17.  
  18. # กำหนดค่าขอบ Dirichlet (T = 50°C) สำหรับโหนด 1, 4, 7
  19. for i in [0, 3, 6]: # โหนด 1, 4, 7
  20. A_matrix[i, i] = 1
  21. b_vector[i] = T_fixed
  22.  
  23. # โหนดภายใน (โหนด 5)
  24. A_matrix[4, 4] = -4 * A
  25. A_matrix[4, 1] = A # บน (โหนด 2)
  26. A_matrix[4, 3] = A # ซ้าย (โหนด 4)
  27. A_matrix[4, 5] = A # ขวา (โหนด 6)
  28. A_matrix[4, 7] = A # ล่าง (โหนด 8)
  29. b_vector[4] = -q_dot
  30.  
  31. # โหนดที่มีการพาความร้อน (โหนด 2, 3, 6, 9)
  32. conv_nodes = [1, 2, 5, 8]
  33. for i in conv_nodes:
  34. A_matrix[i, i] = -4 * A - h # ใช้เงื่อนไขพาความร้อน
  35. if i - 3 >= 0:
  36. A_matrix[i, i - 3] = A # บน
  37. if i + 3 < 9:
  38. A_matrix[i, i + 3] = A # ล่าง
  39. if i % 3 != 0:
  40. A_matrix[i, i - 1] = A # ซ้าย
  41. if (i + 1) % 3 != 0:
  42. A_matrix[i, i + 1] = A # ขวา
  43. b_vector[i] = -h * T_inf - q_dot
  44.  
  45. # โหนดที่มีฉนวน (โหนด 8, 9) -> ไม่มีการสูญเสียพลังงานทางด้านล่าง
  46. A_matrix[7, 7] = -3 * A # โหนด 8 มีขอบฉนวนด้านล่าง
  47. A_matrix[7, 4] = A # บน (โหนด 5)
  48. A_matrix[7, 6] = A # ซ้าย (โหนด 7)
  49. A_matrix[7, 8] = A # ขวา (โหนด 9)
  50. b_vector[7] = -q_dot
  51.  
  52. A_matrix[8, 8] = -3 * A - h # โหนด 9 มีขอบฉนวนด้านล่างและพาความร้อนด้านขวา
  53. A_matrix[8, 5] = A # บน (โหนด 6)
  54. A_matrix[8, 7] = A # ซ้าย (โหนด 8)
  55. b_vector[8] = -h * T_inf - q_dot
  56.  
  57. # แก้ระบบสมการ Ax = b
  58. T_solution = np.linalg.solve(A_matrix, b_vector)
  59. T_solution.reshape(3, 3)
  60.  
Success #stdin #stdout 0.03s 25632KB
stdin
Standard input is empty
stdout
#include <stdio.h>

int main(void)
{
int # กำหนดค่าคงที่สำหรับการคำนวณ
k = 32  # W/m·°C
q_dot = 1.97e6  # W/m³
h = 45  # W/m²·°C
T_inf = 24  # °C
T_fixed = 50  # °C
dx = 0.08  # m
A = k / dx**2  # ค่าคงที่ของอนุพันธ์อันดับสอง

# สร้างเมทริกซ์ A และเวกเตอร์ b
A_matrix = np.zeros((9, 9))
b_vector = np.zeros(9)

# กำหนดค่าขอบ Dirichlet (T = 50°C) สำหรับโหนด 1, 4, 7
for i in [0, 3, 6]:  # โหนด 1, 4, 7
    A_matrix[i, i] = 1
    b_vector[i] = T_fixed

# โหนดภายใน (โหนด 5)
A_matrix[4, 4] = -4 * A
A_matrix[4, 1] = A  # บน (โหนด 2)
A_matrix[4, 3] = A  # ซ้าย (โหนด 4)
A_matrix[4, 5] = A  # ขวา (โหนด 6)
A_matrix[4, 7] = A  # ล่าง (โหนด 8)
b_vector[4] = -q_dot

# โหนดที่มีการพาความร้อน (โหนด 2, 3, 6, 9)
conv_nodes = [1, 2, 5, 8]
for i in conv_nodes:
    A_matrix[i, i] = -4 * A - h  # ใช้เงื่อนไขพาความร้อน
    if i - 3 >= 0:
        A_matrix[i, i - 3] = A  # บน
    if i + 3 < 9:
        A_matrix[i, i + 3] = A  # ล่าง
    if i % 3 != 0:
        A_matrix[i, i - 1] = A  # ซ้าย
    if (i + 1) % 3 != 0:
        A_matrix[i, i + 1] = A  # ขวา
    b_vector[i] = -h * T_inf - q_dot

# โหนดที่มีฉนวน (โหนด 8, 9) -> ไม่มีการสูญเสียพลังงานทางด้านล่าง
A_matrix[7, 7] = -3 * A  # โหนด 8 มีขอบฉนวนด้านล่าง
A_matrix[7, 4] = A  # บน (โหนด 5)
A_matrix[7, 6] = A  # ซ้าย (โหนด 7)
A_matrix[7, 8] = A  # ขวา (โหนด 9)
b_vector[7] = -q_dot

A_matrix[8, 8] = -3 * A - h  # โหนด 9 มีขอบฉนวนด้านล่างและพาความร้อนด้านขวา
A_matrix[8, 5] = A  # บน (โหนด 6)
A_matrix[8, 7] = A  # ซ้าย (โหนด 8)
b_vector[8] = -h * T_inf - q_dot

# แก้ระบบสมการ Ax = b
T_solution = np.linalg.solve(A_matrix, b_vector)
T_solution.reshape(3, 3)