حل کننده های تکراری

حل کننده های تکراری

حل کننده های تکراری
بخش زیر اطلاعات دقیق تری در مورد انواع حل کننده های تکراری ارائه می دهد : GMRES، FGMRES، گرادیان مزدوج، BiCGStab و TFQMR.
همچنین در مورد معیارهای همگرایی برای حل کننده های خطی و انتخاب یک پیش شرط برای حل کننده سیستم خطی تکراری بحث می کند .
 
خطی در COMSOL Multiphysics Programming Manual Reference .
انواع حل کننده تکراری
اطلاعات زیر برای ویژگی Krylov Preconditioner نیز کاربرد دارد .
 
این حل‌کننده‌ها را می‌توان تقریباً بر اساس میزان استفاده از حافظه و زمان محاسباتی در هر تکرار (با حداقل حافظه و زمان اول) مرتب کرد: گرادیان‌های مزدوج، BiCGStab، TFQMR، GMRES، و سپس FGMRES. حل‌کننده‌هایی که به حافظه و زمان محاسباتی کمتری در هر تکرار نیاز دارند، معمولاً قوی‌تر هستند و برای همه انواع مسئله قابل اجرا نیستند.
حل کننده تکراری GMRES
این حل کننده سیستم خطی از روش راه اندازی مجدد GMRES (حداقل باقیمانده تعمیم یافته) استفاده می کند . این یک روش تکراری برای سیستم های خطی عمومی به شکل Ax  =  b است . برای همگرایی سریع استفاده از یک پیش شرطی مناسب مهم است . به طور پیش‌فرض، روش GCRO-DR برای بازیافت زیرفضای کریلوف فعال است (رجوع کنید به شماره 11 ). این روش می تواند در حل دنباله های سیستم های خطی که به عنوان مثال از مسائل غیر خطی ناشی می شوند مفید باشد.
حل کننده تکراری FGMRES
این حل کننده از روش FGMRES مجدد راه اندازی شده (حداقل باقیمانده تعمیم یافته انعطاف پذیر) استفاده می کند ( مراجعه 17 ). حل کننده گونه ای از حل کننده GMRES است که می تواند کلاس وسیع تری از پیش شرطی ها را به روشی قوی مدیریت کند. برای مثال می توانید از هر حل کننده تکراری به عنوان پیش شرط FGMRES استفاده کنید. نقطه ضعف روش این است که دو برابر حافظه GMRES برای همان تعداد تکرار قبل از راه اندازی مجدد استفاده می کند. FGMRES از پیش شرط درست استفاده می کند و بنابراین دارای همان معیار همگرایی با GMRES با پیش شرط راست است. اگر FGMRES همراه با یک پیش‌شرطی‌کننده ثابت مانند پیش‌شرطی‌کننده ناقص LU استفاده شود، حل‌کننده FGMRES با حل‌کننده پیش‌شرطی GMRES درست یکسان است.
حل تکرار شونده گرادیان مزدوج
این حل کننده از روش تکرار شونده گرادیان مزدوج استفاده می کند ( مرجع 9 ، رفر. 18 و رفرنس 19 ). این یک روش تکراری برای سیستم های خطی به شکل Ax b است که در آن ماتریس A قطعی مثبت و متقارن (هرمیتی) است. گاهی اوقات حل کننده نیز زمانی کار می کند که ماتریس قطعی مثبت نباشد، به خصوص اگر نزدیک به قطعی مثبت باشد. این حل کننده از حافظه کمتری استفاده می کند و اغلب سریعتر از حل کننده GMRES است، اما برای مجموعه محدودی از مدل ها کاربرد دارد.
برای همگرایی سریع، استفاده از یک پیش شرطی مناسب، که باید قطعی مثبت و متقارن (هرمیتی) باشد، مهم است .
حل کننده تکراری BiCGStab
این حل کننده از روش تثبیت شده با گرادیان دو مزدوج ( مراجعه 9 و شماره 20 ) برای حل سیستم های خطی کلی به شکل Ax b استفاده می کند. حافظه مورد نیاز و زمان محاسباتی برای یک تکرار با BiCGStab ثابت است. یعنی زمان و حافظه مورد نیاز مانند GMRES با تعداد تکرارها افزایش نمی یابد. BiCGStab تقریباً از همان مقدار حافظه استفاده می کند که GMRES برای دو تکرار استفاده می کند. بنابراین، BiCGStab معمولاً از حافظه کمتری نسبت به GMRES استفاده می کند.
رفتار همگرایی BiCGStab اغلب نامنظم تر از GMRES است. باقیمانده‌های میانی حتی می‌توانند مرتبه‌ای بزرگ‌تر از باقیمانده اولیه باشند، که می‌تواند بر دقت عددی و همچنین نرخ هم‌گرایی تأثیر بگذارد. اگر الگوریتم دقت ضعیفی در باقیمانده یا خطر رکود تشخیص دهد، تکرارها را با راه حل فعلی به عنوان حدس اولیه مجدداً شروع می کند.
برخلاف GMRES و گرادیان‌های مزدوج، BiCGStab از دو ضرب ماتریس-بردار در هر تکرار استفاده می‌کند. این نیز به دو مرحله پیش شرطی در هر تکرار نیاز دارد. همچنین، هنگام استفاده از BiCGStab با پیش شرط سمت چپ، یک مرحله پیش شرط اضافی در هر تکرار مورد نیاز است. یعنی BiCGStab با پیش شرط سمت چپ به مجموع سه مرحله پیش شرطی در هر تکرار نیاز دارد.
حل کننده تکراری TFQMR
این حل کننده از روش تکراری باقیمانده شبه کمینه بدون انتقال ( مرجع 33 و 34 ) برای حل سیستم های خطی کلی به شکل Ax b استفاده می کند. حافظه مورد نیاز و زمان محاسباتی برای یک تکرار با TFQMR ثابت است. یعنی زمان و حافظه مورد نیاز مانند GMRES با تعداد تکرارها افزایش نمی یابد. TFQMR تقریباً از همان مقدار حافظه استفاده می کند که GMRES برای دو تکرار استفاده می کند. بنابراین، TFQMR معمولاً از حافظه کمتری نسبت به GMRES استفاده می کند.
TFQMR از BiCGStab پایدارتر است زیرا یک کمینه سازی را انجام می دهد. بنابراین اغلب جایگزین بهتری نسبت به BiCGStab است. رفتار همگرایی TFQMR اغلب منظم تر از BiCGStab اما کندتر از GMRES است. گاهی اوقات الگوریتم اصلی ممکن است خراب شود. وقتی الگوریتم این را تشخیص داد، تکرارها را با راه حل فعلی به عنوان حدس اولیه مجدداً راه اندازی می کند.
برخلاف GMRES و گرادیان های مزدوج، TFQMR از دو ضرب ماتریس-بردار در هر تکرار استفاده می کند. این نیز به دو مرحله پیش شرطی در هر تکرار نیاز دارد.
معیارهای همگرایی برای حل کننده های خطی
هنگامی که از یک حل کننده تکراری استفاده می کنید، COMSOL Multiphysics خطای راه حل را هنگام حل تخمین می زند. هنگامی که برآورد خطا به اندازه کافی کوچک است، همانطور که توسط معیار همگرایی تعیین می شود
(20-23)
نرم افزار محاسبات را خاتمه می دهد و یک راه حل را برمی گرداند. هنگامی که از یک حل کننده مستقیم استفاده می کنید، COMSOL Multiphysics به صورت اختیاری می تواند بررسی کند که آیا معیار همگرایی فوق پس از مرحله حل برآورده شده است یا خیر. در صورت عدم رعایت معیار خطا، فرآیند حل متوقف شده و پیغام خطا داده می شود.
تعاریف M برای حل کننده های مختلف عبارتند از:
برای MUMPS، PARDISO، و SPOOLES، LU ، که در آن L و U فاکتورهای LU هستند که توسط حل کننده محاسبه می شوند.
هنگام استفاده از پیش شرطی چپ با حل کننده های تکراری GMRES، گرادیان مزدوج، BiCGStab و TFQMR، M ماتریس پیش شرطی است.
برای حل‌کننده‌های تکراری باقی‌مانده، M ماتریس هویت است.
معیار همگرایی در معادله 20-23 بیان می‌کند که تکرارها زمانی خاتمه می‌یابند که زمان‌های باقی‌مانده نسبی (پیش‌شرطی) ضریب ρ کمتر از یک تلورانس باشد . برای حل‌کننده‌هایی که M برابر با ماتریس هویت است، اگر ماتریس سیستم A شرایط نامناسبی داشته باشد، گاهی اوقات تکرارها می‌توانند خیلی زود با یک راه‌حل نادرست خاتمه پیدا کنند . برای حل‌کننده‌هایی که M با ماتریس هویت برابر نیست، اگر M پیش‌شرطی ضعیفی باشد، تکرارها می‌توانند خیلی زود خاتمه پیدا کنند . اگر به دلیل ماتریس سیستم نامناسب یا پیش شرطی ضعیف، تکرارها خیلی زود خاتمه می‌یابند، ضریب ρ را افزایش دهید.به تعدادی از ترتیب شماره شرط برای ماتریس – A. اگر ρ از عدد شرط برای ماتریس − A بزرگتر باشد ، معیار همگرایی نشان می‌دهد که خطای نسبی کمتر از tol است :  −  − | <  تول · – .
انتخاب یک پیش شرط برای حل کننده سیستم خطی تکراری
هنگام استفاده از حل کننده سیستم خطی تکرار شونده ، باید پیش شرطی را انتخاب کنید. انتخاب پیش شرط بر تعداد تکرارها و همگرایی نهایی حل کننده تأثیر می گذارد. پیش شرطی می تواند زمان و حافظه بیشتری را نسبت به خود حل کننده تکراری واقعی مصرف کند. برای انتخاب پیش‌شرطی‌کننده، روی گره تکراری کلیک راست کرده و یکی از پیش‌شرطی‌کننده‌های زیر را از منوی زمینه انتخاب کنید:
جدول 20-8: انتخاب یک پیش شرط
پیش شرط
استفاده
چارچوب کلی
چندشبکه – چندشبکه هندسی
برای سیستم های بیضوی یا سهمی.
چندشبکه – چندشبکه جبری و تجمع هموار AMG
برای مسائل اسکالر یا مسائل چندفیزیکی جفت شده ضعیف از نوع بیضوی یا سهمی.
تجزیه دامنه (شوارتز)
برای مشکلات بزرگ در یک سیستم حافظه توزیع شده یا به عنوان جایگزینی برای حل کننده مستقیم.
پیش شرط کریلوف
برای مسائل هلمهولتز که در آن مش معیارهای Nyquist را برآورده نمی کند. می توان از آن در سطح چندشبکه درشت یا به عنوان یک نرم کننده استفاده کرد.
فاکتورسازی کامل یا تقریبی یا معکوس تقریبی
LU ناقص
برای سیستم های نامتقارن (پیش شرطی پیش فرض).
SCGS
برای روش‌های BEM و به عنوان یک پیش‌تهویه عمومی یا صاف‌تر. این مرحله راه اندازی پرهزینه دارد اما معمولاً مقیاس پذیری موازی خوبی را نشان می دهد.
پیش شرطی مستقیم
برای فیلدهای کوچک (به عنوان مثال، یک ODE)، که در آن یک حل کننده مستقیم کارآمد است.
هدف کلی نقطه ای
SOR
برای مسائل بیضی بدون صفر در مورب. معمولاً بهتر از Jacobi است و هنوز هم نسبتاً ارزان است.
ژاکوبی (مقیاس بندی مورب)
برای مدل های قطعی مثبت بزرگ.
بلوک گاوس سیدل هدف عمومی
SCGS
برای مشکلات جریان سیال با عناصر خطی.
خط SOR
برای همان کلاس مشکل برای SOR اما برای مش های کشیده/ناهمسانگرد (به عنوان مثال، مش های لایه مرزی) پذیرفته شده است. گران تر از SOR.
وانکا
برای مسائل بزرگ نامعین با صفر در مورب ماتریس سیستم.
روش های عنصر برداری
Auxiliary-Space AMG
برای مسائل RF با ارزش پیچیده و شبیه سازی های دیگر با استفاده از عناصر برداری.
ماکسول فضای کمکی (AMS)
برای مشکلات کرل-کول ناشی از معادلات ماکسول ثابت یا وابسته به زمان.
SOR گیج
برای فرمول‌بندی‌های عناصر بردار بدون اندازه‌گیری مغناطیس‌استاتیک.
وکتور SOR
برای مدل های الکترومغناطیسی بزرگ با استفاده از عناصر برداری.
روش برای شبیه سازی جریان سیال
بلوک Navier–Stokes
برای مدل های جریان سیال با استفاده از معادلات تراکم ناپذیر ناویر-استوکس در رژیم گذرا،
هر پیش شرطی تنظیمات خاص خود را دارد. برای تنظیم آنها، گره پیش شرط را انتخاب کنید تا پنجره تنظیمات آن باز شود . اگر می خواهید مدلی را بدون پیش شرط حل کنید، تمام گره های پیش شرطی را غیرفعال کنید. به طور معمول، فقط یک پیش شرط می تواند فعال باشد، و اگر بیش از یک گره پیش شرطی داشته باشید، اگر پیش شرط دیگری را فعال کنید، یک گره پیش شرط فعال غیرفعال می شود. شما می‌توانید از چندین پیش‌تهویه در یک رویکرد پیش‌تهویه‌کننده ترکیبی استفاده کنید. پیش شرط های هیبریدی را ببینید . همچنین می توان حل کننده تکراری را بدون پیش شرط با اضافه نکردن هیچ پیش شرطی یا غیرفعال کردن همه آنها اجرا کرد.
پیش‌شرطی‌کننده ناقص LU، که پیش‌شرطی‌کننده پیش‌فرض است، در زمینه کلی‌تری نسبت به بقیه کار می‌کند، اما ممکن است به دلیل زمان و حافظه مورد نیازش غیرعملی باشد. هنگامی که آنها کار می کنند، پیش شرط های چندشبکه ای همیشه ارجح هستند. پیش‌شرطی‌کننده‌های مقیاس‌گذاری مورب SOR و Jacobi از زمان و حافظه کمتری استفاده می‌کنند اما فقط از همگرایی حل‌کننده تکراری برای مسائل قطعی مثبت اطمینان می‌دهند. مسائل مربوط به صفرها در مورب به طور موثری با پیش شرط وانکا پیش شرط می شوند. برای پیش شرط مشکلات الکترومغناطیسی که از عناصر برداری برای PDE حاوی عملگر curl-curl استفاده می کنند، از پیش شرط SOR Vector استفاده کنید.
برای جزئیات بیشتر در مورد پیش‌تهویه‌کننده‌ها، پیوندهای موجود در جدول بالا را دنبال کنید.
دستورالعمل های انتخاب پیش شرط
رابط فیزیک یک پیش شرط پیش‌فرض را انتخاب می‌کند که معمولاً برای نوع مشکل، حداقل برای مدل‌های رابط تک فیزیک مناسب است. اگر پیش‌فرض خوب عمل نمی‌کند، یکی دیگر را با استفاده از دستورالعمل‌های زیر انتخاب کنید:
اگر سیستم بیضوی یا سهمی است (به مدل های بیضوی و سهموی مراجعه کنید ) از پیش شرط هندسی چندشبکه ای استفاده کنید.
اگر مشکل جریان سیال را فقط با عناصر خطی حل می کنید، پیش شرط SCGS را امتحان کنید. این تنظیم پیش فرض برای اکثر رابط های فیزیک جریان سیال است.
اگر مشکلات جریان سیال را در رژیم گذرا حل کردید، پیش‌تنظیم کننده بلوک Navier-Stokes را امتحان کنید.
اگر یک مسئله نامشخص را با صفرهای مورب ماتریس سیستم حل می کنید، مانند معادلات ناویر-استوکس، پیش شرط Vanka یا پیش شرط هندسی چندشبکه ای را با Vanka یا LU ناقص به عنوان هموارتر امتحان کنید. با تثبیت مناسب، در بسیاری از موارد می توان از SOR یا SOR Line به عنوان پیش و پس از صاف کردن GMG به جای Vanka استفاده کرد که باعث افزایش کارایی می شود. این تنظیم پیش فرض در برخی از رابط های جریان سیال است.
اگر سیستم قطعی مثبت است اما آنقدر بزرگ است که دیگر پیش‌تنظیم‌کننده‌ها حافظه ندارند، بردار SOR را صاف‌تر امتحان کنید.
اگر یک مشکل الکترومغناطیسی را با استفاده از عناصر برداری برای یک PDE حاوی عملگر curl-curl حل می‌کنید، پیش‌فرض هندسی چندشبکه‌ای را با پیش‌موتر بردار SOR و پس‌موتر بردار SOR امتحان کنید، یا پیش‌فرض بردار SOR را امتحان کنید. از طرف دیگر، اگر مشکل ثابت با ارزش واقعی یا وابسته به زمان باشد، می‌توانید پیش‌فرض هندسی چندشبکه‌ای (GMG) را با پیش‌موتور SOR و پس‌صحاف‌کننده SOR و AMS به‌عنوان حل‌کننده درشت امتحان کنید. AMS برای عناصر برداری با کمترین مرتبه طراحی شده است. برای گسسته‌سازی‌های مرتبه بالاتر، از GMG با گزینه Lower element order در ابتدا و تعداد کافی سطوح استفاده کنید، به طوری که AMS بتواند به طور موثر به عنوان یک حل‌کننده درشت استفاده شود.
پیش شرط ناقص LU را امتحان کنید، که برای همه سیستم های خطی کار می کند. با این حال، به تنظیم تحمل افت (یا نسبت پر شدن) نیاز دارد. ممکن است حافظه آن تمام شود و در بسیاری از موارد کارآمدترین پیش شرطی نیست.
اگر سیستم بیضوی یا سهمی است و سیستم یک PDE با ارزش واقعی برای یک جزء راه حل منفرد (یعنی یک مسئله اسکالر) است، می توانید پیش شرطی چندشبکه ای جبری را امتحان کنید.
به عنوان جایگزینی برای حل کننده چندشبکه و استفاده از یک حل کننده مستقیم، حل کننده تجزیه دامنه (شوارتز) می تواند یک جایگزین کارآمد در حافظه باشد و یک حل کننده مقیاس پذیر برای استفاده در سیستم حافظه توزیع شده مناسب است. تجزیه دامنه (Schur) معمولاً یک جایگزین پایدارتر اما کارآمدتر حافظه کمتر برای حل کننده تجزیه دامنه (Schwarz) است.
هنگامی که در حال حل مشکلی در یک رایانه موازی (حافظه مشترک یا توزیع شده) هستید، می توانید پیش شرط SAI یا نرم افزار را به دلیل ویژگی های مقیاس پذیری آن امتحان کنید.
برای مدل‌های کوچک، یا به‌عنوان بخشی از یک پیش‌تهویه‌کننده ترکیبی برای یک مدل چندفیزیکی که دارای یک میدان کوچک است (مانند یک ODE)، می‌توانید از پیش‌تهویه‌کننده مستقیم استفاده کنید.
پیش‌تنظیم‌کننده ناقص LU و گاهی اوقات پیش‌تهویه‌کننده‌های چندشبکه‌ای برای همگرایی سریع بدون تمام شدن حافظه نیاز به تنظیم دارند (به بخش‌های مربوط به این پیش‌تنظیم‌کننده‌ها مراجعه کنید).
درباره فاکتور آرامش
ضریب آرامش ω تا حدی ویژگی های ثبات و همگرایی یک حل کننده عددی را با تغییر طیف مقدار ویژه آن کنترل می کند. مقدار بهینه برای ضریب آرامش می تواند همگرایی را به طور قابل توجهی بهبود بخشد – به عنوان مثال، برای SOR هنگامی که به عنوان یک حل کننده استفاده می شود. با این حال، انتخاب بهینه معمولاً یک کار ظریف با پیچیدگی دلخواه است. برای پیش‌تهویه‌کننده‌ها و نرم‌کننده‌ها، انتخاب پیچیده فاکتور آرامش از اهمیت کمتری برخوردار است. مقدار ω  <  1 (کم آرامش) با محدود کردن تغییرات احتمالی در به‌روزرسانی متغیر، تأثیر نرم‌کننده یا پیش‌تهویه‌کننده را کاهش می‌دهد. بین ثبات (مقدار کوچک ω ) و پیشرفت سریع در فرآیند تکرار شونده ( ω) تعادل وجود دارد.نزدیک به 1). برخی نرم‌افزارهای چندشبکه‌ای به ω  <  1 نیاز دارند، اما مقدار پیش‌فرض معمولی 1 است. آرامش بیش از حد – یعنی 1  <  ω  <  2 – ممکن است در موقعیت‌های خاص مزایایی داشته باشد.
پیش شرط های هیبریدی
برای همه پیش‌شرطی‌کننده‌ها، می‌توانید اثر پیش‌شرطی‌کننده‌های متعدد را، چه به‌عنوان پیش‌شرطی‌کننده یا به‌عنوان صاف‌کننده، حل‌کننده درشت، یا حل‌کننده دامنه، ترکیب کنید. چنین پیش‌تهویه‌های هیبریدی می‌توانند در موارد متعددی مفید باشند. به عنوان مثال، اگر نیاز به حل یک مسئله ترکیبی چندشبکه ای دارید، می توانید نرم افزار مناسب را برای هر رابط فیزیک اعمال کنید و از جلوه ترکیبی در حلگر چندشبکه ای استفاده کنید، یا اگر رابط فیزیک به انواع مختلفی از سلسله مراتب چندشبکه ای نیاز دارد، می توانید از یک چندشبکه استفاده کنید. سلسله مراتب برای هر رابط فیزیک به عنوان پیش شرط.
شما پیش‌تهویه‌های ترکیبی را در بخش Hybridization فعال می‌کنید، که در پنجره‌های تنظیمات تمام گره‌های پیش‌تهویه‌کننده موجود است .
هیبریداسیون
نوع پیش‌شرطی‌کننده را از فهرست Use as انتخاب کنید : Single preconditioner (پیش‌فرض) را انتخاب کنید تا از پیش‌شرطی‌کننده به عنوان پیش‌شرطی‌کننده واحد برای حل‌کننده استفاده کنید. Multi preconditioner را انتخاب کنید تا امکان ایجاد دنباله ای از پیش شرطی ها فراهم شود. دنباله پیش شرطی ترکیبی با تمام مراحل پیش شرطی فعال برای حل کننده تعریف می شود. برای هر پیش‌شرطی‌کننده، می‌توانید متغیرهایی را برای اعمال پیش‌شرطی‌کننده از فهرست متغیرهای Preconditioner انتخاب کنید . برای مدل‌هایی که برخی از متغیرهای وابسته فیلدهای برداری را نشان می‌دهند، می‌توانید اجزای جداگانه را از لیست اجزای Preconditioner انتخاب کنید . همه (پیش‌فرض)، یا دستی را انتخاب کنیدبرای انتخاب از بین تمام اجزای راه حل در لیست انتخاب Preconditioner . انتخاب در لیست انتخاب Preconditioner ، انتخاب در لیست متغیرهای Preconditioner را لغو می کند .