ต่อจากครั้งที่แล้ว http://www.sakngoi.com/?p=275
มาถึงเรื่องการควบคุมความดันของระบบครับ 🙂 ในโปรแกรม NAMD การควบคุมความดันให้คงที่มีหลายวิธีครับเช่น
๑) Berendsen pressure bath coupling
๒) Extended system method
๓) Langevin Piston Algorithm
๔) Nosé-Hoover constant pressure method
[latexpage]
วิธีที่ ๑
ไอเดียก็คล้ายกับวิธี weak coupling with a heat bath สำหรับการควบคุมอุณหภูมิครับ (แต่เป็น pressure bath แทน) โดยที่อัตราการเปลี่ยนของความดันคือ
\begin{eqnarray*}
\frac{dP(t)}{dt} &=& \frac{1}{\tau_P}\left(P_{bath}-P(t)\right)\nonumber
\end{eqnarray}
โดย $\tau_P$ คือ coupling constant, $P_{bath}$ คือความดันของ bath โดยที่ปริมาตรของ simulation box จะถูกคูณด้วย $\lambda$
\begin{eqnarray*}
\lambda&=&1-\kappa\frac{\delta t}{\tau_P}\left(P-P_{bath}\right)\nonumber
\end{eqnarray}
ใน NAMD ก็ต้องเซ็ต BerendsenPressure เป็น on ก่อน ส่วน BerendsenPressureTarget คือความดันที่ต้องการและ BerendsenPressureRelaxationTime ก็คือ Relaxation time
วิธีที่๒-๔ ไปหาอ่านเอานะครับ 😛
ใน NAMD จะมีวิธีควบคุมความดันที่เป็นการรวมเอาวิธีที่๓กับ๔เข้าด้วยกัน ซึ่งถ้าต้องการใช้วิธีที่ว่านี้ก็ต้องเซ็ต LangevinPiston เป็น on โดย LangevinPistonTarget กับ LangevinPistonTemp ก็เป็นความดันกับอุณหภูมิที่ต้องการตามลำดับครับ
ในการทำ MD นั้นนอกเหนือจากการควบคุมอุณหภูมิกับความดันแล้วยังต้องคำนึงถึงเรื่องอื่นๆอีกเช่น
1) ระบบที่สนใจจริงๆในธรรมชาติมันมีหลายอนุภาคหรือดูเหมือนไม่มีขอบหรือที่สิ้นสุด เราก็สามารถที่จะลดขนาดของการคำนวณระบบใหญ่ๆนี้ได้โดยใช้เทคนิค periodic boundary conditions โดยมันก็เป็นการ copy ระบบที่เราย่อมาแล้วนำไปวางต่อทุกทิศทาง เช่นถ้าระบบของเราเป็นกล่อง(cell) เทคนิคนี้ก็เหมือนเอาตัวcopyกล่องนี้ไปวางรอบทั้งหกด้าน ใน NAMD การเซ็ตตำแหน่งหรือขนาดของกล่องก็คือ cellOrigin กับ cellBasisVector1(2,3)
2) electrostatic potential ลองไปดูเพิ่มเติมเรื่อง Ewald method ซึ่งเป็นวิธีที่ช่วยคิด potentialนี้ครับ ใน NAMD ถ้าจะใช้ Ewald method ก็คือ PME (Particle-Mesh Ewald) มันก็จะมีkeywords ที่เกี่ยวข้องเช่น PMETolerance, PMEGridSizeX(Y,Z) และ PMEInterpOrder
3) บางที่เราอาจจะลดเวลาที่ใช้ในการคำนวณได้โดยการใช้เทคนิค SHAKE เพื่อfixขนาดของพันธะที่อีกข้างเป็นอะตอมเบาๆเช่นไฮโดรเจนไม่ต้องสั่นมาก ถ้าจะใช้เทคนิคนี้ใน NAMD ก็ลองดูที่ rigidBonds, rigidTolerance, rigidInterations
4) ในกรณีที่ระบบของเรามีน้ำ ก็อาจจะต้องดูด้วยว่าจะใช้โมเดลของน้ำอันไหน (http://en.wikipedia.org/wiki/Water_model) ในกรณีของเรานี้ใช้ TIP3P ครับ
ต่อ ครับ 😛 http://www.sakngoi.com/?p=473