Hành trình mô phỏng biến dạng đường ray từ Abaqus đến Simpack

Các bước hướng dẫn mô phỏng liên hợp giữa Simpack và Abaqus để phân tích tương tác giữa xe và đường ray, bao gồm xây dựng mô hình đường ray linh hoạt, tạo tệp FBI, thiết kế tấm nổi đàn hồi bằng lò xo thép, kích thích độ không bằng phẳng của đường ray, cùng các thành phần chính.

Mô hình hóa đường ray linh hoạt là yếu tố then chốt trong phân tích tương tác giữa xe và đường ray. Trong Abaqus, sự biến dạng đàn hồi của đường ray được mô phỏng bằng phương pháp tổng hợp dạng chính (modal superposition), tức là chia nhỏ chuyển động rung động thành nhiều "hành động cơ bản". Điều quan trọng là phải trích xuất đủ số dạng chính, đảm bảo độ chính xác nhưng không làm chậm quá trình tính toán.

Dưới đây là đoạn mã Python chạy phân tích dạng chính trong Abaqus:

from abaqus import *
from abaqusConstants import *
import section

# Thiết lập thông số tiết diện đường ray
sectionRail = section.RectangularSection(name='RailProfile', 
                                        width=0.15, 
                                        height=0.2) 

# Gán vật liệu (giả sử đã định nghĩa trước)
materialSteel = mdb.models['Model-1'].materials['Steel']
mdb.models['Model-1'].HomogeneousSolidSection(name='RailProfile', 
                                             material='Steel', 
                                             thickness=1.0)

# Tạo bước tính toán dạng chính
modalStep = mdb.models['Model-1'].FrequencyStep(name='ModalAnalysis', 
                                               previous='Initial', 
                                               numEigen=20) 

# Gửi công việc tính toán
job = mdb.Job(name='RailModal', model='Model-1')
job.submit()

Đoạn mã trên thực hiện hai nhiệm vụ chính: định nghĩa tiết diện và vật liệu, sau đó trích xuất 20 dạng chính đầu tiên. Lưu ý tham số numEigen=20 – nếu mô hình có cấu trúc phức tạp (như đường cong hoặc giao lộ), nên tăng lên 30–50 dạng.

Tệp FBI: Mật mã kết nối linh hoạt

Sau khi Abaqus hoàn thành phân tích dạng chính, cần tạo tệp FBI (Flexible Body Interface) mà Simpack có thể đọc được. Đường dẫn thực hiện trong menu Abaqus: File > Export > SIMPACK Flexible Body. Lưu ý quan trọng: phải tích chọn Include stress/strain, nếu không sẽ gặp lỗi "Không tìm thấy lực tại nút" trong mô phỏng liên hợp.

Tệp FBI được tạo ra có định dạng như sau:

# Dữ liệu mô hình linh hoạt SIMPACK
NODES 3528
1  0.0  0.0  0.0
2  0.5  0.0  0.0
...
MODAL_DISPLACEMENTS 20
1  0.0023  -0.0017  0.0004 ...

Tệp này chứa thông tin tọa độ nút và dạng chính rung động. Nếu Simpack hiển thị mô hình bị "nổi lơ lửng", hãy kiểm tra xem điểm tham chiếu trong Abaqus có khớp với hệ tọa độ toàn cục của Simpack không.

Xây dựng tấm nổi đàn hồi trong Simpack

Tấm nổi có chức năng giảm chấn, được mô phỏng bằng thành phần Spring-Damper trong Simpack. Hai tham số chính là độ cứng theo phương dọc (ví dụ 1e8 N/m) và tỷ lệ cản (thường 0.15–0.25). Ví dụ cấu hình:

# Lệnh tạo mô hình Simpack
Create SpringDamper "FloatingSlabSpring"  
  Stiffness = 1.0e8  
  Damping = 1.2e5  
  ConnectTo = "Rail_RefPoint", "Ground"  

Một cách tiếp cận linh hoạt: nếu muốn mô phỏng độ cứng phi tuyến (như cao su già cỗi), có thể thay thế Stiffness bằng Hàm Định nghĩa Người dùng, liên kết với tệp .csv chứa đường cong độ cứng.

Kích thích độ không bằng phẳng đường ray

Độ không bằng phẳng là nguyên nhân chính gây rung lắc xe. Simpack hỗ trợ hai phương pháp tải:

  1. Nhập dữ liệu đo thực tế: Lưu trữ độ không bằng phẳng từ xe kiểm tra đường vào tệp .txt, định dạng:
0.0   -0.12
1.2    0.05  
3.8   -0.08  
...  
  1. Tạo phổ nhân tạo bằng tổng hợp hài: Dùng đoạn mã Python sau:
import numpy as np

# Tạo góc pha ngẫu nhiên
phase = np.random.uniform(0, 2*np.pi, 100)  

# Tổng hợp các sóng hài khác nhau
distance = np.linspace(0, 1000, 100)
irregularity = 0.001 * np.sum([np.sin(2*np.pi*distance/(10*(i+1)) + phase[i]) for i in range(100)], axis=0)

np.savetxt('track_irregularity.txt', np.column_stack((distance, irregularity)))

Đoạn mã này tạo ra độ không bằng phẳng ngẫu nhiên với bước sóng từ 10m đến 1000m. Lưu ý không đặt biên độ quá lớn (ví dụ ≤ 2mm), nếu không xe sẽ "nhảy múa" như đồ chơi.

Bộ cứu hộ khi mô phỏng liên hợp gặp sự cố

  • Lỗi "Dạng chính không khớp": Kiểm tra đơn vị giữa Abaqus và Simpack (Newton vs Kilonewton, mét vs milimét).
  • Đường ray đâm xuyên bánh xe: Giảm bước thời gian tính toán tiếp xúc từ 1e-3s xuống 1e-4s trong Simpack.
  • Tốc độ mô phỏng chậm: Khi xuất tệp FBI từ Abaqus, kích hoạt Mode Truncation để chỉ giữ lại 10 dạng chính có ảnh hưởng lớn nhất đến tần số.

Danh sách cấu hình mẫu:

  • Đường ray: Phần tử 20 nút, chiều dài ≥ 50m
  • Bánh xe: Vật thể cứng, đường kính 920mm
  • Tần số lấy mẫu: Ít nhất 500Hz (theo định lý Nyquist)

Mô phỏng tương tác linh-tĩnh là nghệ thuật cân bằng giữa độ chân thực và khả năng tính toán – càng gặp lỗi, càng hiểu rõ quy luật.

Thẻ: Abaqus Simpack python Phân tích dạng chính Tệp FBI

Đăng vào ngày 26 tháng 5 lúc 12:23