نرم افزار لمپس چیست و چه کاربردی دارد؟ + معرفی منابع یادگیری LAMMPS
در این مطلب قصد داریم در مورد نرم افزار لمپس که یک نرم افزار شبیه سازی دینامیک مولکولی است صحبت کنیم. لمپس یک نرم افزار رایگان و عمومی است و دانلود این نرم افزار به راحتی از وبسایت لمپس امکان پذیر است. در این مطلب بعد از آشنایی اولیه با این نرم افزار سعی میکنیم چندین کاربرد و مثال را در آن بررسی کنیم.
دلیل اهمیت شبیه سازی مولکولی چیست؟
شبیهسازیهای کامپیوتری به این امید انجام میشوند که خواص مجموعه مولکولها از نظر ساختار و برهم کنشهای میکروسکوپی بین آنها درک و بررسی شوند. این شبیه سازی به عنوان مکمل آزمایشهای معمولی است و ما را قادر میسازد تا چیزی که به روشهای دیگر یافت نمیشود را در مورد این ساختار بیاموزیم. دو خانواده اصلی تکنیک شبیهسازی مولکولی عبارت از دینامیک مولکولی (MD) و مونت کارلو (MC) هستند.
علاوه بر این طیف وسیعی از تکنیکهای ترکیبی وجود دارد که ویژگیهای هر دو شبیه سازی را ترکیب میکند. در این مطلب ما بر روی دینامیک مولکولی تمرکز میکنیم. مزیت آشکار MD نسبت به MC این است که خواص پویا و دینامیک سیستم را از جمله ضرایب انتقال، پاسخهای وابسته به زمان به اختلالات، خواص رئولوژیکی و طیفها را بررسی میکند.
شبیه سازیهای کامپیوتری به عنوان پلی بین مقیاسهای طول و زمان میکروسکوپی و دنیای ماکروسکوپی آزمایشگاهی عمل میکند و کمک میکند تا در مورد برهم کنشهای بین مولکولی حدسهای دقیقتری بزنیم.
پیشبینیهای ناشی از این شبیهسازیها دقیق هستند به این معنا که میتوان آنها را به دلخواه و با توجه به محدودیتهایی که به دلیل سیستم رایانه ما برای شبیه سازیها وجود دارد، دقیق کرد.
همچنین این شبیهسازیها جزئیاتی در مورد حجم مولکولی را نیز نشان میدهد، به عنوان مثال نشان دادن پیوند بین ضریب نفوذ و تابع خود همبستگی سرعت (اندازه گیری آزمایشگاهی اول آسان و دومی بسیار سخت است) یکی از این شبیهسازیها است. شبیهسازیها به معنای دیگر به عنوان اتصالی بین نظریه و آزمایش عمل میکنند و میتوان یک نظریه را با انجام شبیه سازی با استفاده از مدل آزمایش کرد. همچنین میتوان مدل را با نتایج تجربی مقایسه کرد. به علاوه میتوان شبیه سازیهایی را در رایانه انجام داد که در آزمایشگاه دشوار یا غیرممکن است (به عنوان مثال آزمایش در دمای شدید یا فشار بالا).
در نهایت ممکن است بخواهیم اندازه گیریهای مستقیم روی مواد خاص انجام دهیم که در این صورت یک مدل خوب از فعل و انفعالات مولکولی ضروری است. هدف از پویایی مولکولی این است که میزان برازش و حدس و گمان در این فرآیند را به حداقل رساند. از سوی دیگر ممکن است به پدیدههایی با ماهیت نسبتاً عمومی علاقه مند باشیم یا فقط بخواهیم بین نظریههای خوب و بد مولکولی تمایز قائل شویم. در مورد اهداف از این دست نیاز به داشتن یک مدل مولکولی کاملاً واقع گرایانه نیاز نیست و یک مدل مولکولی که حاوی فیزیک ضروری مسئله باشد نیز کافی است. در ادامه انواع برهمکنشهای مولکولی را معرفی میکنیم.
برهمکنش مولکولی چیست؟
شبیه سازی دینامیک مولکولی شامل محاسبات عددی و راه حلهای گام به گام معادلات کلاسیکی حرکت است که میتواند برای یک سیستم اتمی ساده نوشته شود و بدین ترتیب داریم:
برای این منظور باید بتوانیم نیروهایی را که بر اتمها عمل میکنند محاسبه کنیم. این نیروها معمولاً از یک انرژی پتانسیل مشتق میشوند که نشان دهنده مجموعه کامل مختصات اتمی 3N هستند. در این بخش بر روی تابع تمرکز میکنیم و برای سادگی، کار خود را به توصیف اتمی محدود میکنیم. گاهی اوقات در شبیه سازیهای سیستمهای ماده متراکم مایل به در نظر گرفتن واحدهای صلب غیر کروی هستیم که درجات آزادی چرخشی دارند.
پتانسیل بدون پیوند یا غیرپیوندی چیست؟
قسمت غیرپیوندی انرژی پتانسیل نشان دهنده برهمکنش بین اتمها است که به صورت سنتی به صورت تک ذرهای، دو ذرهای و غیره هستند تعریف میشود:
$$\large \mathcal{U}_{non-bonded}(r^N)=\sum_i u(r_i)+\sum_i\sum_{j>i}v(r_i,r_j)+ .\ .\ .\ $$
عبارت u (r) نشان دهنده یک میدان پتانسیل خارجی یا اثرات دیوارههای محفظه است و اثر آن معمولاً در شبیه سازیهای پریودیک سیستمهای حجمی کاهش مییابد. همچنین در این حالت معمولاً تمرکز بر پتانسیل بین جفت ذرات و نادیده گرفتن فعل و انفعالات بین سه تاییها و مرتبه بالاتر است. منابع گستردهای در مورد نحوه وجود این پتانسیلها وجود دارد که به صورت تجربی تعیین شده یا از نظر تئوری مدل میشوند.
در برخی شبیه سازی پیچیده سیالات، استفاده از سادهترین مدلهایی که نمایانگر فیزیک اساسی مسئله هستند کافی است. در این قسمت باید بر پتانسیلهای پیوسته و متغیر متمرکز شویم (اگرچه پتانسیلهای ناپیوسته مانند کرههای سخت و کروی نیز نقش دارند). پتانسیل لنارد-جونز فرم متداولی است که این شکل از پتانسیل را دارند:
که این پتانسیل شامل متغیرهای یعنی شعاع و یعنی عمق چاه است. این پتانسیل اولین بار برای مطالعه آرگون مایع استفاده شد و در تصویر (2) میتوان نتایج این مطالعه را دید. برای کاربردهایی که نسبت به برهمکنشهای جاذبه نسبت به اثرات حجم حذف شده که ساختار مولکولی را تعیین میکند توجه کمتری وجود دارد، ممکن است پتانسیل در موقعیت مینیمم خود کاهش یابد و به سمت بالا منتقل شود که معمولاً مدل WCA نامیده شود. اگر بارهای الکترواستاتیک وجود داشته باشند، پتانسیلهای مناسب کولن را اضافه میکنیم که عبارتند از:
در رابطه بالا و بار الکتریکی و ضریب گذردهی فضا است. مدیریت صحیح نیروهای دوربرد در شبیه سازی در شبیه سازی پلی الکترولیت بسیار مهم و اساسی است.
پتانسیل پیوندی چیست؟
برای سیستمهای مولکولی، به سادگی مولکول ها را از پتانسیلهای محل شکل ساختار مرحله به مرحله مانند معادله لنارد-جونز میسازیم. به طور معمول، از یک محاسبه کوانتوم شیمیایی تک مولکولی برای برآورد چگالی الکترون در سراسر مولکول استفاده میشود، که ممکن است با توزیع بارهای جزئی از طریق معادله پتانسیل کولمب یا به طور دقیقتر با توزیع چند قطبی الکترواستاتیک مدل شود. برای مولکولها همچنین باید برهمکنشهای پیوند درون مولکولی را در نظر بگیریم.
ساده ترین مدل مولکولی در این حالت به شکل زیر است:
ساختار در تصویر (3) نشان داده شده است. به طور معمول قیدهای شامل جدایی بین جفت اتمهای مجاور است که در معادله بالا آن را در یک فرم هارمونیک با تفکیک تعادلی مشخص در نظر گرفتهایم در حالی که این حالت تنها حالت موجود نیست. زاویههای انحراف بین بردارهای پیوند پشت سرهم مانند و و غیره برقرار است و بنابراین شامل سه مختصات اتم است.
که است. معمولاً این عبارت در جابجایی زاویهای از نوع تعادل درجه دوم است اگر چه از توابع پریودیک نیز استفاده میشود. زاویههای گشتاوری بر اساس سه پیوند متصل تعریف شده است و بنابراین دارای چهار مختصات اتمی به صورت زیر است:
که و بردار یکه بر روی صفحهای است که توسط هر جفت قید ایجاد میشود. به طور معمول پتانسیل گشتاوری شامل بسط تابع پریودیکی از مرتبه است. بدین ترتیب برای شبیه سازی دینامیک مولکولی ابتدا یک پیکربندی اولیه از اتمها و مولکولها را در نظر میگیریم سپس بین این ذرات یک میدان نیرو یا پتانسیل در نظر میگیریم که پتانسیل مناسبی باشد و متناسب با خاصیتی باشد که میخواهیم آن را اندازه گیری کنیم. سپس یک سرعت اولیه بین اتمها در نظر گرفته میشود و با توجه به پتانسیلی که تعریف میکنیم یک نیرو بین ذرات وجود دارد که در یک گام زمانی کوچک با هم برهمکنش دارند و بعد از این گام زمانی موقعیت و سرعت اتمها تغییر میکند. بدین ترتیب با توجه به موقعیت و سرعت جدید، موقعیت اتمها عوض میشود و به همین ترتیب گامها ادامه پیدا میکنند تا سیستم به تعادل برسد و در نهایت خواصی که مورد نظر ما است را میتوانیم محاسبه کنیم.
لمپس چیست؟
لمپس یا LAMMPS که مخفف Large-scale Atomic/Molecular Massively Parallel Simulator است یک کد شبیه ساز کلاسیکی دینامیک مولکولی است که بر مدل سازی مواد پایه ریزی شده است. این کد در آزمایشگاههای ملی ساندیا که در آمریکا واقع است و وابسته به موسسه انرژی است، توسعه داده شد. بزرگترین و مهمترین حمایت کننده این کد دپارتمان انرژی آمریکا (DOE) است. لمپس یک شبیه ساز با دسترسی آزاد یا Open Source است.
وبسایت لمپس (+) اطلاعات مختلفی در مورد کد را جمع آوری کرده است که شامل نسخه آنلاین کد و فروم آنلاین (+) است که کاربر میتواند سوالات خود را آنجا مطرح کند و پاسخ خود را توسط توسعه دهندگان کد و دیگر کاربران دریافت کند. همچنین کاربر میتواند تمام تغییرات و توسعههای داده شده در کد لمپس را در وبسایت گیت هاب (+) نیز پیگیری کند.
نویسندگان کد لمپس چه کسانی هستند؟
اولین توسعه دهندگان و نویسندگان لمپس پنج نفر از دانشگاههای ساندیا و تمپل بودند. بعد از آن افراد مختلف با تخصصهای مختلف در توسعه این کد با گروه لمپس همراه شدند تا بتوانند کاربردهای تخصصیتر را برای لمپس توسعه دهند. با این حال اولین توسعه دهندگان این کد «استیو پلیمپتون» (Steve Plimpton)، «آیدان تامپسون» (Aidan Thompson)، «استان مور» (Stan Moore)، «اکسل کوهلمیر» (Axel Kohlmeyer) و «ریچارد برگر» (Richard Berger) بودند.
نصب نرم افزار لمپس چگونه است؟
کد لمپس ورژنهای متفاوتی دارد که نام ورژنها به تاریخی که آن ورژن در دسترس عموم قرار گرفته معروف است. ورژنها به طور پیوسته و هر زمان مشکلی از کد علت یابی و مرتفع میشود، معرفی میشوند. لمپس را میتوان در سیستم عامل لینوکس، مک یا ویندوز نصب کرد و از آن استفاده کرد. در ادامه روش نصب را در این سه سیستم عامل توضیح میدهیم:
نصب نرم افزار لمپس در اوبونتو لینوکس چگونه است؟
برای نصب یک آرشیو مناسب شخصی بر روی لینوکس در ابتدا به صورت زیر عمل کنید:
1$ sudo add-apt-repository ppa:gladky-anton/lammps
2$ sudo add-apt-repository ppa:openkim/latest
3$ sudo apt-get update
سپس برای نصب لمپس دستور زیر را اجرا کنید:
1$ sudo apt-get install lammps-stable
این دستور یک فایل اجرایی به نام lmp_stable را در سیستم شما قرار میدهد که میتواند به شیوه معمول برای اجرای اسکریپتهای ورودی مورد استفاده قرار گیرد:
1$ lmp_stable -in in.lj
برای آپدیت لمپس به آخرین ورژن به صورت زیر عمل کنید:
1$ sudo apt-get update
این دستور پکیجهای دیگر روی سیستم شما را نیز آپدیت میکند. برای دریافت یک کپی از مثالها و منابع نرم افزار دستور زیر را اجرا کنید:
1$ sudo apt-get install lammps-stable-doc
بدین ترتیب دو فایل در آدرسهای /usr/share/doc/lammps-stable-doc/doc و /usr/share/doc/lammps-doc/examples را خواهید داشت. برای این که لمپس را از سیستم خود پاک کنید، دستور زیر را اجرا کنید:
1$ sudo apt-get remove lammps-stable
نصب نرم افزار لمپس در مک چگونه است؟
برای نصب لمپس در مک ابتدا Homebrew را در سیستم خود نصب کنید. این نرم افزار برای نصب مواردی استفاده میشود که اپل از آنها پشتیبانی نمیکند. برای نصب Homebrew دستور زیر را در صفحه دستور یا Command بنویسید:
1$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
پس از نصب Homebrew دستور زیر را اجرا کنید:
1% brew install lammps
با این دستور تمام فایلها و مثالهای لمپس در سیستم شما نصب خواهند شد.
نصب نرم افزار لمپس در ویندوز چگونه است؟
برای نصب لمپس بر روی سیستم خود در این وبسایت (+) و در قسمت Installing LAMMPS on Windows با توجه به ورژن و مشخصات سیستم خود میتوانید نرم افزار را دانلود کنید. برای دانلود بر روی فولدری با نام LAMMPS-64bit-latest.exe کلیک کنید. بر روی فایل exe دانلود شده کلیک کنید و مراحل نصب را طی کنید تا نرم افزار لمپس بر روی سیستم شما نصب شود. فایل نصب شده شامل تمام مثالهای حل شده در نرم افزار لمپس است که به یادگیری این نرم افزار به شما بسیار کمک میکند.
اجرای مثال crack در نرم افزار لمپس
این مثال مربوط به یک گرافن است که در داخل آن یک ترک ایجاد شده است. در داخل هر فولدر مثال یک فایل دستوری با پسوند in و یک فایل اجرایی نیز در فولدر bin به نام lmp.exe وجود دارد. برای اجرای مثال به فولدر crack در آدرس زیر بروید:
1LAMMPS 64-bit 30Jul2021 > Examples > crack
سپس فولدر in.crack.lmp را در Notepad باز کنید. در این فایل اطلاعات ورودی برای گرافنی که در آن یک ترک ایجاد شده است را مشاهده میکنید. برای اجرای این مثال در ویندوز پنجره cmd را باز کنید و با دستور cd به مکانی که فولدر in.crack وجود دارد، بروید.
وقتی در cmd مکان فولدر crack که قصد اجرای آن را داریم به وجود آمد با اجرای دستور زیر میتوانیم این برنامه را اجرا کنیم:
1lmp -in in.crack.lmp
lmp برای فراخوانی برنامه و in.crack.lmp نام فولدری است که قصد اجرای آن را داریم. در نتیجه این مثال در نرم افزار لمپس اجرا میشود و محاسبات انجام شده را میتوانید در فایل log ایجاد شده در مثال مورد نظر مشاهده کنید. اگر فایل log را باز کنید در ابتدا تاریخ اجرای برنامه را خواهید دید و در ادامه آن کمیتهای ترمودینامیکی محاسبه شده مانند گام زمانی، دما، انرژی پتانسیل، کل انرژی، فشار و حجم وجود دارند.
دقت کنید ممکن است دستور اجرای لمپس ویندوز در ورژنهای مختلف متفاوت باشد. برای مثال دستور اجرا در ورژن 2019 لمپس lmp-serial بود در حالی که در نسخه 2020 lmp است. این موضوع و تغییرات را میتوانید در فایل راهنمای لمپس که به صورت آنلاین در اینجا موجود است بررسی کنید.
برای مثالهای مختلف نرم افزار لمپس میتوان دید که مثالهای ما ممکن است فقط یک فایل دستوری و یک فایل اجرایی نباشند. ممکن است ما پیکربندی اولیه خود را در جایی دیگر ساخته باشیم و بعد آن را فراخوانی کنیم، یا مثالهایی که پیکربندی اولیه را خوانده و پتانسیل بین آنها تعریف میکنیم و در حین اجرای برنامه آنها را فراخوانی میکند.
نرم افزار لمپس را میتوانیم به صورت موازی نیز نصب کنیم. بدین منظور در این قسمت (+) با توجه به سیستم مورد استفاده خود نسخه 32 یا 64 بیتی را دانلود میکنیم و بعد از انجام مراحل مختلف نصب، با استفاده از دو دستور زیر میتوانیم لمپس را به صورت موازی اجرا کنیم:
1mpiexec -localonly 4 lmp -in in.file
2mpiexec -np 4 lmp -in in.file
ساختار کد ورودی لمپس و دستورات آن چگونه است؟
به طور کلی ساختار کد ورودی لمپس شامل چند قسمت است که آنها را در ادامه معرفی میکنیم.
- قسمت آغازین یا قالب بندی: در این قسمت واحدها، ابعاد، شرایط مرزی و نوع شبیه سازی مشخص میشود. همان طور که در آزمایشگاه میدانیم با چه مادهای کار میکنیم این موضوع در شبیه سازی نیز باید مشخص باشد.
- در قسمت بعد شرایط اولیه سیستم را مشخص میکنیم، یعنی مقدار سرعت، جرم و ساختار را مشخص میکنیم.
- سپس یک پتانسیل برهمکنشی مناسب برای اتمها در نظر میگیریم. در مورد مولکولها چیزی که شبیه سازی را متمایز میکند ساختار اتمها و سپس پتانسیلی است که باعث برهمکنش بین اتمها میشود.
- در قسمت بعد حل معادلات حرکت و انتگرال گیری مهم است که از آنسامبلهای NVT و NPT استفاده میکنیم.
- در نهایت کمیت مورد نظر یا خروجی محاسبه میشود و ما از طریق کمیتهای میکروسکوپی میتوانیم کمیتهای ماکروسکوپی را استخراج کنیم.
تصویر بالا ساختار کد ورودی در لمپس است که از چهار قسمت اصلی تشکیل شده است. قسمت اول شامل مقداردهی اولیه است، سپس تعریف سیستم یعنی ساختار و پتانسیل قرار دارد. در ادامه تنظیمات شبیه سازی را انجام میدهیم و درنهایت دستورات مربوط به اجرای شبیه سازی قرار دارد که جزئیات آنها را در ادامه معرفی میکنیم.
مقداردهی اولیه
پارامترهای تنظیمات اولیه باید قبل از اتمها تعریف شوند یا از یک فایل فراخوانی شوند. این دستورات مربوط به واحدها، ابعاد، نیوتن، پردازندهها، مرز، تصحیح گر اتم و استایل اتم است. اگر پارامترهای میدان نیرو در فایلهایی که فراخوانی میشوند مورد استفاده قرار گیرند، این دستورات به نرم افزار لمپس میگویند که چه نوع میدان نیرویی از انواع pair_style، bond_style، angle_style، dihedral_style و improper_style مورد استفاده قرار گیرند.
تعریف سیستم
سه راه برای تعریف سلول شبیه سازی و فضای ذخیره برای اطلاعات میدان نیرو وجود دارد که آن را با اتمها در لمپس پر میکند. این دادهها را میتوان از طریق (1) یک فایل داده یا (2) یک فایل شروع مجدد از طریق دستورات READ_DATA یا READ_RESTART خواند. همچنین این فایلها میتوانند حاوی اطلاعات توپولوژی مولکولی باشند. به علاوه میتوان (3) یک سلول شبیه سازی ایجاد کرد و آن را با اتمها بر روی یک شبکه (بدون توپولوژی مولکولی) با استفاده از این دستورات Lattice، Region، Create_box، Create_atoms یا Read_Dump پر کرد. کل مجموعه اتمها را میتوان برای شبیه سازیهای بزرگتر با استفاده از دستور replicate تکرار کرد.
تنظیمات مربوط به شبیه سازی
هنگامی که اتمها و توپولوژی مولکولی تعریف میشوند، تنظیمات مختلف نظیر ضرایب میدان نیرو، پارامترهای شبیه سازی، گزینههای خروجی و موارد دیگر را میتوان مشخص کرد. ضرایب میدان نیرو توسط دستورات Pair_Coeff، Bond_Coeff، Zenar_Coeff، Dihedral_Coeff، Improper_Coeff، Kspace_Style، Dielectric و Special_bonds تنظیم میشوند. همچنین پارامترهای مختلف شبیه سازی توسط این دستورات تعریف میشوند: neighbor, neigh_modify, group, timestep, reset_timestep, run_style, min_style, min_modify.
ثابتها انواع شرایط مرزی از نوع ادغام زمان و گزینههای تشخیص را به مسئله اعمال میکنند. دستور ثابتها به شکلهای مختلف در مسئله میآید. محاسبات مختلف را می توان برای اجرا در طی یک شبیه سازی با استفاده از دستورات compute, compute_modify و variable مشخص کرد. گزینههای خروجی نیز توسط دستورات thermo، dump و restart تنظیم میشوند.
اجرای شبیه سازی
شبیه سازی دینامیک مولکولی با استفاده از فرمان run اجرا میشود. به حداقل رساندن انرژی (استاتیک مولکولی) با استفاده از دستور minimize صورت میگیرد. شبیه سازی موازی نیز (replica-exchange) میتواند با استفاده از دستور temper اجرا شود.
برای هر دستور نرم افزار لمپس دارای ساختار مشخص و محدودیتهای مربوط به آن دستور است. برای یادگیری ساختار هر دستور در وبسایت لمپس و از قسمت Documentation فایل Manual را دانلود میکنیم. در این فایل میتوان دید که هر دستور، توضیحات، ساختار و محدودیتهای آن به طور جداگانه بررسی شده است. همچنین انواع دستورات لمپس و جزئیات آنها را میتوانید به صورت آنلاین در اینجا مطالعه کنید.
جمعبندی
در این مطلب در مورد دینامیک مولکولی و شبیه ساری دینامیک مولکولی در نرم افزار لمپس صحبت کردیم. در ابتدا مروری بر دینامیک مولکولی و شبیه سازی دینامیک مولکولی انجام دادیم سپس به معرفی نرم افزار لمپس پرداختیم. در ادامه نحوه نصب نرم افزار لمپس را در سیستم عاملهای مختلف نشان دادیم و یک مثال ساده را در این نرم افزار اجرا کردیم. در نهایت نیز ویدیوهای آموزشی فرادرس در زمینه شبیه سازی دینامیک مولکولی را معرفی کردیم.