این بخش راهنمایی برای حل مشکلات بزرگ آکوستیک دارد. برای مشکلات کوچکتر استفاده از حل کننده مستقیم مانند MUMPS اغلب بهترین انتخاب است. برای مشکلات بزرگتر، به خصوص در سه بعدی، تنها گزینه اغلب استفاده از یک روش تکراری مانند چندشبکه است.
• | تنظیم حل مستقیم |
• | پیشنهادات حل تکراری تولید شده به صورت خودکار |
• | لاپلاسین پیچیده شیفت برای مدلهای دامنه با فرکانس بسیار بزرگ |
• | تجزیه دامنه برای هلمهولتز در خوشه ها |
• | راه اندازی دستی پیشنهادات و تئوری حل GMG |
![]() | در مدلهای بزرگ با مش ساختاریافته، میتوانید با تغییر عناصر لاگرانژ پیشفرض به عناصر سرندیپیتی، DOF را ذخیره کنید. برای اطلاعات بیشتر به توابع شکل Lagrange و Serendipity مراجعه کنید . |
تنظیم حل مستقیم
هنگام استفاده از حلکننده مستقیم پیشفرض MUMPS، یکی از گزینههای کاهش زمان محاسبات و کاهش مصرف حافظه، فعال کردن گزینه Block low rank factorization در گره Direct solver است. این می تواند برای بسیاری از مشکلات آکوستیک فشار، حافظه و زمان محاسبات را حدود 20 تا 25 درصد کاهش دهد. این گزینه پیش فرض نیست، زیرا برای همه انواع و ترکیبات شرایط مرزی کارآمد نیست. به عنوان مثال، برای مدلهایی با کوپلینگ غیرمحلی، مانند مدلهایی با شرایط دورهای، مناسب نیست.
![]() | برای جزئیات بیشتر به بخش مستقیم در کتابچه راهنمای مرجع مولتیفیزیک COMSOL مراجعه کنید . |
![]() | برای مثالی که از فاکتورسازی رتبه پایین Block استفاده میکند ، ببینید: Test Bench Car Interior . مسیر کتابخانه برنامه: Acoustics_Module/Automotive/test_bench_car_interior |
پیشنهادات حل تکراری تولید شده به صورت خودکار
اگر حافظه حلکننده مستقیم تمام شود، اولین رویکرد ساده فعال کردن و استفاده از یکی از پیشنهادات حلکننده تکراری تولید شده خودکار است. یک نقطه شروع خوب برای این کار این است که روی گره مطالعه کلیک راست کرده و Show Default Solver را انتخاب کنید ، سپس درخت پیکربندی حل کننده را در زیر Stationary Solver یا Time-Dependent Solver گسترش دهید . پیشنهادات حل کننده تکراری از پیش تعریف شده به طور خودکار تولید می شوند. به طور پیش فرض، برای یک مدل آکوستیک فشار خالص، دامنه فرکانس ، یک حل کننده مستقیم استفاده می شود و چهار حل کننده تکراری پیشنهاد می شود (غیرفعال). برای روشن کردن یکی از این موارد، روی حل کننده کلیک راست کرده و Enable را انتخاب کنید (یا F4 را فشار دهید). چهار پیشنهاد عبارتند از:
1 | حل کننده تکراری پیشنهادی (GMRES با GMG) : از حل کننده تکراری GMRES با پیش شرط هندسی چندشبکه ای (GMG) استفاده می کند. این روش معمولا سریعتر از حل کننده مستقیم است و از حافظه کمتری برای مدل های سه بعدی متوسط تا بزرگ استفاده می کند. برای جزئیات، به تنظیم دستی پیشنهادات و نظریه حل GMG مراجعه کنید . |
2 | حل کننده تکراری پیشنهادی (FGMRES با GMG) : از حل کننده تکراری FGMRES با پیش شرط هندسی چندشبکه ای (GMG) استفاده می کند. این روش قوی تر از GMRES است، به خصوص برای مشکلاتی که تشدید تیز از خود نشان می دهند. اگر پیشنهاد GMRES همگرا نشد، پیشنهاد FGMRES را امتحان کنید. برای جزئیات، به تنظیم دستی پیشنهادات و نظریه حل GMG مراجعه کنید . |
3 | حلکننده تکراری پیشنهادی (لاپلاس جابجا شده) : برای افزایش فرکانسها، دو حلکننده تکراری پیشنهادی اول، که در بالا توضیح داده شد، در نهایت همگرایی را متوقف خواهند کرد. یک راه حل این است که از روش لاپلاسین جابجایی پیچیده (CSL یا SL) برای پیش شرطی چندشبکه استفاده کنید. روش SL به طور کلی سرعت همگرایی را برای مدل های بزرگتر افزایش می دهد. برای جزئیات، به مدلهای دامنه با فرکانس بسیار بزرگ Laplacian Shifted Complex مراجعه کنید . |
4 | حلکننده تکراری پیشنهادی (تجزیه دامنه) : این پیشنهاد آخر برای حل مدلهای بسیار بزرگی است که باید در یک خوشه اجرا شوند (با استفاده از معماری توزیعشده). عملکرد روش زمانی بهترین خواهد بود که در چندین گره استفاده شود. برای جزئیات، به تجزیه دامنه برای Helmholtz در خوشه ها مراجعه کنید . |
![]() | اگر PML در مدل حل شده با روش تکراری وجود دارد، لازم است از گزینه Polynomial scaling (پیشفرض) و 8 لایه مش توصیه شده استفاده شود. این گزینه همگرایی مناسب روش های تکراری را تضمین می کند. برای جزئیات بیشتر به بخش لایه های کاملاً منطبق (PML) مراجعه کنید . |
![]() | برای مدل هایی که با گام فرکانس بسیار خوب (با توزیع فرکانس خطی) اجرا می شوند، راه حل استفاده مجدد از گزینه مرحله قبلی خوب است. گزینه های پیش فرض خودکار (یا بله ) با ارائه یک حدس اولیه خوب برای حل کننده های تکراری به همگرایی کمک می کند. با این حال، در مدلهایی با فاصله زیاد در فرکانسهای حلشده و جایی که فرکانسها روی یک محور لگاریتمی داده میشوند، گزینه باید روی Off تنظیم شود . این تنظیم سرعت همگرایی را افزایش می دهد. |
![]() | برای مثالی که یک مدل را با استفاده از یک حل کننده تکراری حل می کند، ببینید: هدفون در گوش مصنوعی . مسیر کتابخانه برنامه: Acoustics_Module/Electroacoustic_Transducers/headphone_artificial_ear |
لاپلاسین پیچیده شیفت برای مدلهای دامنه با فرکانس بسیار بزرگ
هنگامی که فرکانس در مسئله حل شده افزایش می یابد، دو حل کننده تکراری پیشنهادی اول، که در بالا توضیح داده شد، در نهایت همگرایی را متوقف خواهند کرد. یک راه حل این است که از روش لاپلاسین جابجایی پیچیده (CSL یا SL) برای پیش شرطی چندشبکه استفاده کنید. روش SL به طور کلی سرعت همگرایی را برای مدل های بزرگتر افزایش می دهد. یک استثنا، که در آن روش SL کمکی نمی کند، در مدل هایی است که در نزدیکی تشدید با میرایی کم از مرزها حل شده اند. در اینجا، پیشنهاد پیشفرض GMG که در بالا توضیح داده شد، به احتمال زیاد بهتر کار خواهد کرد. برای یک مدل آکوستیک فشار خالص، پیشنهاد حل کننده SL به طور خودکار با تنظیمات مناسب تنظیم می شود.
راه اندازی دستی حل کننده SL
برای تنظیم دستی روش SL، درخت حل کننده را گسترش دهید و گره Multigrid را در زیر اولین پیشنهاد تکراری انتخاب کنید (پیشنهاد را فعال کنید). چک باکس Prefer the free matrix format را انتخاب کنید و سپس کادر Shifted Laplace سهم را انتخاب کنید . اکنون Physics (یک رابط آکوستیک فشار موجود در لیست) را انتخاب کنید و گزینه Manual را برای افزودن مشارکت ضعیف انتخاب کنید . در قسمت عبارت ضعیف عبارت زیر را وارد کنید:
shift*acpr.p_t*test(p)*(-i*abs(acpr.k[m])^1.5)*acpr.delta/acpr.rho_c
که در آن shift یک پارامتر بین – 1 و 1 است (با 0.5 شروع کنید). این پارامتر به عنوان یک عامل آرامش عمل می کند. اگر تگ واسط فیزیک با acpr متفاوت است ، عبارت را به روز کنید تا با تگ رابط فیزیکی مطابقت داشته باشد. عبارت ضعیف اضافه شده راه حل مشکل اصلی را اصلاح نمی کند. فقط در سطوح چندشبکه ای برای کمک به همگرایی استفاده می شود.
همین کار را باید با انتخاب کادر بررسی سهم Laplace در سطوح چندشبکه ای انجام داد . سپس گزینه Manual را انتخاب کنید و همان عبارت Weak express را اضافه کنید .
گزینه اول، مشارکت Laplace Shifted ، سهم SL را فقط در سطح ظریف مورد استفاده برای صاف کننده ها اضافه می کند. گزینه دوم، مشارکت لاپلاس جابجا شده در سطوح چندشبکه ای ، مشارکت های SL را در تمام سطوح چندشبکه ای نیز اضافه می کند.
برای بهبود بیشتر روش در فرکانسهای بسیار بالا ، گزینه روش تولید سلسله مراتب (در حالت چندشبکهای) را میتوان از ترتیب پیشفرض عناصر پایینتر ابتدا (هر) به مش درشت تغییر داد . سپس یک ضریب درشت شدن مش مناسب را وارد کنید . برای مدلهای آکوستیک مشبکشده با λ / N ، درشتشدن میتواند تا حدود N باشد . معمولاً از N = 5 استفاده کنید و ضریب درشتشدن را بین 2 و 4 تنظیم کنید.
حل کننده تکراری پیش فرض GMRES است که می تواند برای مشکلات بزرگ حافظه را مصرف کند. هنگامی که مشکل نیاز به تکرارهای زیادی دارد تا حل شود، معمولاً لازم است تعداد تکرارها را قبل از راه اندازی مجدد به 1000 افزایش دهیم. در این حالت حل کننده تکراری را می توان به TFQMR تغییر داد. این حل کننده معمولاً برای رسیدن به همگرایی به تکرارهای بیشتری نیاز دارد، اما حافظه آن ناب تر است.
یکی دیگر از گزینه های صرفه جویی در حافظه، استفاده از گزینه Block low rank factorization برای حل کننده مستقیم (هنگام استفاده از MUMPS) در زیر گره Coarse Solver است . گره حل کننده چندشبکه را برای یافتن آن گسترش دهید.
![]() | برای جزئیات بیشتر به بخش لاپلاسی پیچیده تغییر یافته برای مسائل هلمهولتز بزرگ در کتابچه راهنمای مرجع مولتیفیزیک COMSOL مراجعه کنید . |
![]() | برای مثالی که یک مدل آکوستیک فشار را با استفاده از حلکننده لاپلاسی جابجا شده حل میکند، به ورودی مدل COMSOL Application Gallery مراجعه کنید: https://www.comsol.com/model/15013 |
تجزیه دامنه برای هلمهولتز در خوشه ها
برای مدلهای بسیار بزرگی که میتوانند روی خوشههایی با گرههای زیاد حل شوند، میتوانید نسخه خاصی از تجزیه دامنه را برای معادله هلمهولتز تنظیم کنید. این روش را می توان برای استفاده از چندشبکه با روش لاپلاسین پیچیده جابجا شده و همچنین جذب مرزها برای دامنه ها تنظیم کرد.
![]() | برای جزئیات بیشتر به بخش لاپلاسی پیچیده تغییر یافته برای مسائل هلمهولتز بزرگ در کتابچه راهنمای مرجع مولتیفیزیک COMSOL مراجعه کنید . |
راه اندازی دستی پیشنهادات و تئوری حل GMG
معادله اساسی که مشکلات حل شده در آکوستیک فشار معادله هلمهولتز است. برای فرکانس های بالا (یا اعداد موج) ماتریس حاصل از گسسته سازی اجزای محدود بسیار نامشخص می شود. در چنین شرایطی، استفاده از چندشبکه هندسی (GMG) با صاف کننده های ساده مانند Jacobi یا SOR (هموارکننده پیش فرض) می تواند مشکل ساز باشد. خوشبختانه، رویکردهای قوی و کارآمد حافظه وجود دارد که بسیاری از مشکلات مربوط به حل معادله هلمهولتز را با استفاده از چندشبکه هندسی دور میزند.
هنگام استفاده از چندشبکه هندسی به عنوان حلکننده سیستم خطی همراه با هموارکنندههای ساده، معیار Nyquist باید بر روی درشتترین مش انجام شود. اگر معیار Nyquist برآورده نشود، حل کننده چندشبکه هندسی ممکن است همگرا نشود. یکی از راههای حل این مشکل استفاده از GMRES یا FGMRES به عنوان حلکننده سیستم خطی با چندشبکه هندسی بهعنوان پیششرطیکننده است. این استراتژی مورد استفاده در پیشنهادات حل کننده تکراری پیش فرض است.
به عنوان یک نقطه شروع خوب برای راه اندازی حل کننده به صورت دستی، انتخاب Show Default Solver در گره اصلی مطالعه و گسترش درخت است. به حل کننده ثابت بروید و یک گره حل تکرار شونده اضافه کنید ، به طور پیش فرض از روش GMRES استفاده می کند. پیش شرط پیش فرض LU ناقص است (به زیرگره گره تکراری مراجعه کنید )، روی گره حل کننده تکراری کلیک راست کرده و Multigrid را انتخاب کنید . حتی اگر معیار Nyquist برای مشهای درشت پیششرطیکننده چندشبکه برآورده نشود، چنین طرحی به احتمال زیاد همگرا میشود. با این حال، برای مشکلات با فرکانسهای بالا، این رویکرد ممکن است منجر به تعداد زیادی تکرار شود. سپس استفاده از یکی از موارد زیر می تواند سودمند باشد:
• | چندشبکه هندسی بهعنوان حلکننده سیستم خطی ( انتخاب حلکننده را روی Use preconditioner قرار دهید ) با GMRES بهعنوان هموارتر. در زیر گره Multigrid ، روی گرههای Presmoother و Postsmoother کلیک راست کرده و Krylov Preconditioner را با انتخاب حلکننده به GMRES انتخاب کنید . |
• | FGMRES به عنوان یک حل کننده سیستم خطی ( انتخاب حل کننده را روی FGMRES قرار دهید ) با چندشبکه هندسی به عنوان پیش شرط (که در آن GMRES به عنوان صاف کننده، مانند بالا استفاده می شود). |
استفاده از GMRES یا FGMRES به عنوان یک تکرار بیرونی و نرمتر، الزامات درشتترین مش را حذف میکند. وقتی از GMRES به عنوان نرمکننده برای پیشتنظیمکننده چندشبکه استفاده میشود، FGMRES باید برای تکرارهای بیرونی استفاده شود، زیرا چنین پیشتهویهکنندهای ثابت نیست (رجوع کنید به شماره 34 ).
فقط در صورت لزوم از GMRES به عنوان صاف کننده استفاده کنید زیرا صاف کردن GMRES روی مش های ظریف بسیار زمان بر و حافظه گیر است، به خصوص برای بسیاری از مراحل صاف کردن.
هنگام حل مشکلات بزرگ آکوستیک، گزینه های زیر، به ترتیب افزایش استحکام و نیازهای حافظه، می توانند مورد استفاده قرار گیرند:
• | اگر معیار Nyquist در درشت ترین مش برآورده شد، سعی کنید از چندشبکه هندسی به عنوان حل کننده سیستم خطی استفاده کنید ( Multigrid را به عنوان پیش شرط و حل کننده سیستم خطی را روی Use preconditioner تنظیم کنید ) با صاف کننده های پیش فرض. صاف کننده های پیش فرض سریع هستند و نیاز به حافظه کمی دارند. |
• | یک گزینه قوی تر از نقطه اول استفاده از GMRES به عنوان یک حل کننده سیستم خطی با چندشبکه هندسی به عنوان پیش شرط (جایی که نرم کننده های SOR پیش فرض استفاده می شود) است. GMRES برای ذخیره بردارهای جستجو به حافظه نیاز دارد. گاهی اوقات می توان از این گزینه با موفقیت استفاده کرد، حتی زمانی که معیار Nyquist در مش های درشت تر برآورده نشده باشد. از آنجا که GMRES به عنوان یک نرمافزار استفاده نمیشود، این گزینه ممکن است راهحلی سریعتر از دو گزینه بعدی پیدا کند، حتی اگر تعداد زیادی تکرار بیرونی برای همگرایی مورد نیاز باشد. |
• | اگر پیشنهاد بالا جواب نداد، سعی کنید از چندشبکه هندسی به عنوان حل کننده سیستم خطی با GMRES به عنوان هموارتر استفاده کنید. |
• | اگر حل کننده همچنان مشکلات همگرایی دارد، سعی کنید از FGMRES به عنوان یک حل کننده سیستم خطی با چندشبکه هندسی به عنوان پیش شرط (که در آن GMRES به عنوان هموارتر استفاده می شود) استفاده کنید. |
• | سعی کنید تا حد نیاز از سطوح چندشبکه ای برای تولید یک شبکه درشت استفاده کنید که یک روش مستقیم می تواند مشکل را بدون استفاده از مقدار قابل توجهی حافظه حل کند. |
• | اگر مش درشت هنوز برای یک حل کننده مستقیم خیلی خوب است، سعی کنید از یک حل کننده تکراری با 5 تا 10 تکرار به عنوان حل کننده درشت استفاده کنید. |
![]() | مطالعات و حل و چندشبکه در کتابچه راهنمای مرجع مولتیفیزیک COMSOL |