الگوریتم وانکا

الگوریتم وانکا

الگوریتم وانکا
الگوریتم یک نرم‌کننده/پیش‌تهیه‌کننده محلی از نوع وانکا است. بر اساس ایده های موجود در Ref. 25 ، رنک. 39 و رف. 40 . می توان آن را به عنوان یک روش SOR بلوک توصیف کرد، که در آن جفت محلی درجات آزادی (DOFs) بلوک ها را تعیین می کند. ایده مهم در این الگوریتم استفاده از متغیرهای ضرب کننده لاگرانژ برای تشکیل بلوک ها است. برای اهداف تصویری، معادلات ناویر-استوکس را در نظر بگیرید. برای این معادلات متغیر فشار نقش ضریب لاگرانژ را بازی می کند. معادلات خطی شده در فرم گسسته ساختار زیر را دارند:
که در آن U و P به ترتیب درجات آزادی سرعت و فشار هستند. الگوریتم روی DOFهای متغیر ضریب لاگرانژ (در اینجا DOFs فشار j ) حلقه می‌زند و اتصال مستقیم به این DOF را پیدا می‌کند. برای انجام این کار، الگوریتم ورودی های غیر صفر را در ستون ماتریس مربوط به Pj قرار می دهد . شاخص‌های ردیف ورودی‌های غیرصفر، DOFs k را تعریف می‌کنند ، و الگوریتم یک ماتریس بلوک محلی را بر اساس این اتصال تشکیل می‌دهد:
یک به روز رسانی Vanka روی تمام j و به روز رسانی ها حلقه می شود
که در آن (.) j نشان دهنده محدودیت یک بردار به ردیف های مربوط به بلوک j است . ω یک پارامتر آرامش است. الگوریتم معکوس ماتریس های بلوک را به صراحت تشکیل نمی دهد. در عوض، به‌روزرسانی Vanka را با حل‌کننده مستقیم LAPACK یا فراخوانی زیرروال روش تکراری GMRES محاسبه می‌کند. روش GMRES یک GMRES است که بدون پیش شرط مجدد راه اندازی شده است. الگوریتم بر این واقعیت متکی است که می‌توان زیرماتریس‌های j را معکوس کرد . اگر امکان پذیر نباشد، الگوریتم پیغام خطا می دهد. یک صفر در مورب A یا jلزوماً برای این استراتژی به‌روزرسانی مشکلی نیست. به طور کلی، به روز رسانی Vanka لزوماً همه DOF ها را به روز نمی کند. این مورد برای مشکلات با محدودیت‌های ضعیف است، که در آن تنها زیر مجموعه کوچکی از DOFهای مسئله مستقیماً با ضریب‌های لاگرانژ برای محدودیت‌ها جفت می‌شوند. مثال دیگر معادلات ناویر-استوکس است که با معادلات دیگر کوپل شده است، اما در جایی که کوپلینگ مستقیماً از طریق متغیر فشار نیست ( مثلاً در مدل آشفتگی k – ε ). الگوریتم Vanka به طور خودکار DOF هایی را که توسط روش به روز رسانی Vanka در بالا به روز نمی شوند شناسایی می کند و برای هر به روز رسانی Vanka تعدادی SSOR Sweep برای این DOF ها انجام می دهد. این بخش از الگوریتم به روز رسانی SSOR است; فقط برای زیرماتریسی کار می کند که قطر آن غیر صفر است. درست مانند الگوریتم های پیش شرطی SOR و Jacobi، این الگوریتم در صورت یافتن صفر در مورب برای DOF ها در به روز رسانی SSOR یک پیام خطا می دهد.