المان محدود (FE) یک ابزار ضروری برای تجزیه و تحلیل ساختاری است اما موارد دیگری وجود دارد که الویت است، یکی از آنها زمان توسعه مدل است. به خصوص برای هندسه های پیچیده مانند تیغه های توربین بادی در آباکوس، جایی که سطوح آیرودینامیک بر روی سطوح غیر فضایی است، گرفتن هندسه معتبر برای کار با آن هنوز یک چالش است. حتی با تمام حمایت همه جانبه بسته های نرم افزار طراحی (CATIA, SolidWorksو…) و قابلیت های مدل سازی ابزارهای CAD!
مرور اجمالی از ایجاد هندسه
اگر چه شکل آیرودینامیکی تیغه توربین بادی پیچیده است، هندسه کامل را می توان با توپولوژی نسبتا ساده توصیف کرد. همانطور که در شکل ۱ نشان داده شده است. مانند مشخصات پروفیل، زاویه چرخش، طول وتر و غیره این پروفیل های ۲D را می توان به عنوان خط در Abaqus کشیده شده و سپس هندسه کامل تیغه را می توان با استفاده از پروفیل های دو بعدی پیوسته ایجاد کرد.

پیچ و تاب و تنظیم مقطع Airfoil
وتر و هماهنگی بخش Airfoil نسبتا مستقیم است؛ وتر فقط مقیاس Airfoil در هر دو محور نیست، در حالیکه تراز کردن Airfoil با محور، نیازمند محاسبه محاسبات در محور x است. چرخش Airfoil باید در مورد هر دو محور انجام شود (چرخش ۲D)، که چیزی جز محصول ماتریس چرخش و مختصات نیست.
موقعیت منفی در (sin(theta در جهت ساعت گرد، عنصر (۲، ۱) منفی است.
def transformCoords(airfoilFile, twist=0.0, chord=1.0, PA_Loc=0.25, **kwargs):
""" Returns the twisted Coordinates
Parameters
----------
airfoilFile, str: file name which contains the coordinates of airfoil used,
twist, float: twist in degrees, default=0
chord, float: chord in metres, default=1 (unit chord)
rad_Loc, float: radial Location of the airfoil in blade, default=0
PA_Loc, float: Pitch axis location in percent of chord, default=0.25,
Quarter-Chord location. (0 to 1)
Returns
----------
nd array: Coordinates rotated about pitch axis location
"""
rotationMatrix = lambda theta: np.array([ [np.cos(theta), np.sin(theta)],
[-np.sin(theta), np.cos(theta)] ])
twist = np.deg2rad(twist)
coords = np.loadtxt(airfoilFile, dtype=float, **kwargs)
PA_Loc *= chord # % P.A*chord
coords[:, 0] -= PA_Loc # Translate the x/c coordinates to the pitch axis
twistedCoords = np.zeros((coords.shape[0] + 1, 2))
coords_dash = np.dot(rotationMatrix(twist), coords.T).T
x_dash, y_dash = coords_dash[:, 0], coords_dash[:, 1]
twistedCoords[:-1, 0], twistedCoords[:-1, 1] = x_dash, y_dash
#Join the first and last nodes to form a closed profile, very important for Abaqus
twistedCoords[-1, 0], twistedCoords[-1, 1] = x_dash[0], y_dash[0]
twistedCoords *= chord # Scale x/c and y/c to the chord
return twistedCoords
fig, ax = plt.subplots()
for angle in range(-20, 30, 10):
twistedCoords_1 = transformCoords("S822.txt", twist=angle, chord=1.0, PA_Loc=0.25, skiprows=2)
ax.plot(twistedCoords_1[:, 0], twistedCoords_1[:, 1], label="%2d" % angle);
ax.legend(loc=2)
پیاده سازی چرخش دوتایی فوق و نمونه ای از مشخصات پروفیل نوری SILVER S822 در شکل ۲ نشان داده شده است.