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

مرور اجمالی از ایجاد هندسه

اگر چه شکل آیرودینامیکی تیغه توربین بادی پیچیده است، هندسه کامل را می توان با توپولوژی نسبتا ساده توصیف کرد. همانطور که در شکل ۱ نشان داده شده است. مانند مشخصات پروفیل، زاویه چرخش، طول وتر و غیره این پروفیل های ۲D را می توان به عنوان خط در Abaqus کشیده شده و سپس هندسه کامل تیغه را می توان با استفاده از پروفیل های دو بعدی پیوسته ایجاد کرد.

شکل 1. توپولوژی سطح خارجی
شکل ۱) توپولوژی سطح خارجی

 

پیچ و تاب و تنظیم مقطع Airfoil

وتر و هماهنگی بخش Airfoil نسبتا مستقیم است؛ وتر فقط مقیاس Airfoil در هر دو محور نیست، در حالیکه تراز کردن Airfoil با محور، نیازمند محاسبه محاسبات در محور x است. چرخش Airfoil باید در مورد هر دو محور انجام شود (چرخش ۲D)، که چیزی جز محصول ماتریس چرخش و مختصات نیست.

موقعیت منفی در (sin(theta در جهت ساعت گرد، عنصر (۲، ۱) منفی است.

In [ ]:
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
In [ ]:
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 در شکل ۲ نشان داده شده است.