ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/oopseDocs/oopseDoc.tex
(Generate patch)

Comparing trunk/oopseDocs/oopseDoc.tex (file contents):
Revision 3395 by gezelter, Fri May 16 14:25:26 2008 UTC vs.
Revision 3403 by gezelter, Fri May 30 18:16:59 2008 UTC

# Line 498 | Line 498 | are SD and CG. Either {\tt ensemble} or {\tt minimizer
498   {\tt minimizer} & string & Chooses a minimizer & Possible minimizers
499   are SD and CG. Either {\tt ensemble} or {\tt minimizer} must be specified. \\
500   {\tt ensemble} & string & Sets the ensemble. & Possible ensembles are
501 < NVE, NVT, NPTi, NPAT, NPTf, and NPTxyz.  Either {\tt ensemble}
501 > NVE, NVT, NPTi, NPAT, NPTf, NPTxyz, and LD.  Either {\tt ensemble}
502   or {\tt minimizer} must be specified. \\
503   {\tt dt} & fs & Sets the time step. & Selection of {\tt dt} should be
504   small enough to sample the fastest motion of the simulation. ({\tt
# Line 1905 | Line 1905 | NPTxyz & approximate isobaric-isothermal & {\tt ensemb
1905    & (with changes to box shape) & \\
1906   NPTxyz & approximate isobaric-isothermal & {\tt ensemble = NPTxyz;} \\
1907   &  (with separate barostats on each box dimension) & \\
1908 + LD & Langevin Dynamics & {\tt ensemble = LD;} \\
1909 + &  (approximates the effects of an implicit solvent) & \\
1910   \end{tabular}
1911   \end{center}
1912  
# Line 2369 | Line 2371 | simulations).
2371   for use with liquid simulations, or in cases where there is
2372   orientational anisotropy in the system (i.e. in lipid bilayer
2373   simulations).
2374 +
2375 + \section{Langevin Dynamics (LD)\label{LDRB}}
2376 +
2377 + {\sc oopse} implements a Langevin integrator in order to perform
2378 + molecular dynamics simulations in implicit solvent environments.  This
2379 + can result in substantial performance gains when the detailed dynamics
2380 + of the solvent is not important. Since {\sc oopse} also handles rigid
2381 + bodies of arbitrary composition and shape, the Langevin integrator is
2382 + by necessity somewhat more complex than in other simulation packages.
2383 +
2384 + Consider the Langevin equations of motion in generalized coordinates
2385 + \begin{equation}
2386 + {\bf M} \dot{{\bf V}}(t) = {\bf F}_{s}(t) +
2387 + {\bf F}_{f}(t)  + {\bf F}_{r}(t)
2388 + \label{LDGeneralizedForm}
2389 + \end{equation}
2390 + where ${\bf M}$ is a $6 \times 6$ diagonal mass matrix (which
2391 + includes the mass of the rigid body as well as the moments of inertia
2392 + in the body-fixed frame) and ${\bf V}$ is a generalized velocity,
2393 + ${\bf V} =
2394 + \left\{{\bf v},{\bf \omega}\right\}$. The right side of
2395 + Eq.~\ref{LDGeneralizedForm} consists of three generalized forces: a
2396 + system force (${\bf F}_{s}$), a frictional or dissipative force (${\bf
2397 + F}_{f}$) and a stochastic force (${\bf F}_{r}$). While the evolution
2398 + of the system in Newtonian mechanics is typically done in the lab
2399 + frame, it is convenient to handle the dynamics of rigid bodies in
2400 + body-fixed frames. Thus the friction and random forces on each
2401 + substructure are calculated in a body-fixed frame and may converted
2402 + back to the lab frame using that substructure's rotation matrix (${\bf
2403 + Q}$):
2404 + \begin{equation}
2405 + {\bf F}_{f,r} =
2406 + \left( \begin{array}{c}
2407 + {\bf f}_{f,r} \\
2408 + {\bf \tau}_{f,r}
2409 + \end{array} \right)
2410 + =
2411 + \left( \begin{array}{c}
2412 + {\bf Q}^{T} {\bf f}^{~b}_{f,r} \\
2413 + {\bf Q}^{T} {\bf \tau}^{~b}_{f,r}
2414 + \end{array} \right)
2415 + \end{equation}
2416 + The body-fixed friction force, ${\bf F}_{f}^{~b}$, is proportional to
2417 + the (body-fixed) velocity at the center of resistance
2418 + ${\bf v}_{R}^{~b}$ and the angular velocity ${\bf \omega}$
2419 + \begin{equation}
2420 + {\bf F}_{f}^{~b}(t) = \left( \begin{array}{l}
2421 + {\bf f}_{f}^{~b}(t) \\
2422 + {\bf \tau}_{f}^{~b}(t) \\
2423 + \end{array} \right) =  - \left( \begin{array}{*{20}c}
2424 +   \Xi_{R}^{tt} & \Xi_{R}^{rt} \\
2425 +   \Xi_{R}^{tr} & \Xi_{R}^{rr}    \\
2426 + \end{array} \right)\left( \begin{array}{l}
2427 + {\bf v}_{R}^{~b}(t) \\
2428 + {\bf \omega}(t) \\
2429 + \end{array} \right),
2430 + \end{equation}
2431 + while the random force, ${\bf F}_{r}$, is a Gaussian stochastic
2432 + variable with zero mean and variance,
2433 + \begin{equation}
2434 + \left\langle {{\bf F}_{r}(t) ({\bf F}_{r}(t'))^T } \right\rangle  =
2435 + \left\langle {{\bf F}_{r}^{~b} (t) ({\bf F}_{r}^{~b} (t'))^T } \right\rangle  =
2436 + 2 k_B T \Xi_R \delta(t - t'). \label{eq:randomForce}
2437 + \end{equation}
2438 + $\Xi_R$ is the $6\times6$ resistance tensor at the center of
2439 + resistance.  
2440 +
2441 + For atoms and ellipsoids, there are good approximations for this
2442 + tensor that are based on Stokes' law.  For arbitrary rigid bodies, the
2443 + resistance tensor must be pre-computed before Langevin dynamics can be
2444 + used.  The {\sc oopse} distribution contains a utitilty program called
2445 + Hydro that performs this computation.
2446 +
2447 + Once this tensor is known for a given {\tt integrableObject},
2448 + obtaining a stochastic vector that has the properties in
2449 + Eq. (\ref{eq:randomForce}) can be done efficiently by carrying out a
2450 + one-time Cholesky decomposition to obtain the square root matrix of
2451 + the resistance tensor,
2452 + \begin{equation}
2453 + \Xi_R = {\bf S} {\bf S}^{T},
2454 + \label{eq:Cholesky}
2455 + \end{equation}
2456 + where ${\bf S}$ is a lower triangular matrix.\cite{Schlick2002} A
2457 + vector with the statistics required for the random force can then be
2458 + obtained by multiplying ${\bf S}$ onto a random 6-vector ${\bf Z}$ which
2459 + has elements chosen from a Gaussian distribution, such that:
2460 + \begin{equation}
2461 + \langle {\bf Z}_i \rangle = 0, \hspace{1in} \langle {\bf Z}_i \cdot
2462 + {\bf Z}_j \rangle = \frac{2 k_B T}{\delta t} \delta_{ij},
2463 + \end{equation}
2464 + where $\delta t$ is the timestep in use during the simulation. The
2465 + random force, ${\bf F}_{r}^{~b} = {\bf S} {\bf Z}$, can be shown to have the
2466 + correct properties required by Eq. (\ref{eq:randomForce}).
2467 +
2468 + The equation of motion for the translational velocity of the center of
2469 + mass (${\bf v}$) can be written as
2470 + \begin{equation}
2471 + m \dot{{\bf v}} (t) =  {\bf f}_{s}(t) + {\bf f}_{f}(t) +
2472 + {\bf f}_{r}(t)
2473 + \end{equation}
2474 + Since the frictional and random forces are applied at the center of
2475 + resistance, which generally does not coincide with the center of mass,
2476 + extra torques are exerted at the center of mass. Thus, the net
2477 + body-fixed torque at the center of mass, $\tau^{~b}(t)$,
2478 + is given by
2479 + \begin{equation}
2480 + \tau^{~b} \leftarrow \tau_{s}^{~b} + \tau_{f}^{~b} + \tau_{r}^{~b} + {\bf r}_{MR} \times \left( {\bf f}_{f}^{~b} + {\bf f}_{r}^{~b} \right)
2481 + \end{equation}
2482 + where ${\bf r}_{MR}$ is the vector from the center of mass to the center of
2483 + resistance. Instead of integrating the angular velocity in lab-fixed
2484 + frame, we consider the equation of motion for the angular momentum
2485 + (${\bf j}$) in the body-fixed frame
2486 + \begin{equation}
2487 + \frac{\partial}{\partial t}{\bf j}(t) = \tau^{~b}(t)
2488 + \end{equation}
2489 + By embedding the friction and random forces into the the total force
2490 + and torque, {\sc oopse} integrates the Langevin equations of motion
2491 + for a rigid body of arbitrary shape in a velocity-Verlet style 2-part
2492 + algorithm, where $h = \delta t$:
2493 +
2494 + {\tt move A:}
2495 + \begin{align*}
2496 + {\bf v}\left(t + h / 2\right)  &\leftarrow  {\bf v}(t)
2497 +    + \frac{h}{2} \left( {\bf f}(t) / m \right), \\
2498 + %
2499 + {\bf r}(t + h) &\leftarrow {\bf r}(t)
2500 +    + h  {\bf v}\left(t + h / 2 \right), \\
2501 + %
2502 + {\bf j}\left(t + h / 2 \right)  &\leftarrow {\bf j}(t)
2503 +    + \frac{h}{2} {\bf \tau}^{~b}(t), \\
2504 + %
2505 + {\bf Q}(t + h) &\leftarrow \mathrm{rotate}\left( h {\bf j}
2506 +    (t + h / 2) \cdot \overleftrightarrow{\mathsf{I}}^{-1} \right).
2507 + \end{align*}
2508 + In this context, $\overleftrightarrow{\mathsf{I}}$ is the diagonal
2509 + moment of inertia tensor, and the $\mathrm{rotate}$ function is the
2510 + reversible product of the three body-fixed rotations,
2511 + \begin{equation}
2512 + \mathrm{rotate}({\bf a}) = \mathsf{G}_x(a_x / 2) \cdot
2513 + \mathsf{G}_y(a_y / 2) \cdot \mathsf{G}_z(a_z) \cdot \mathsf{G}_y(a_y
2514 + / 2) \cdot \mathsf{G}_x(a_x /2),
2515 + \end{equation}
2516 + where each rotational propagator, $\mathsf{G}_\alpha(\theta)$,
2517 + rotates both the rotation matrix ($\mathbf{Q}$) and the body-fixed
2518 + angular momentum (${\bf j}$) by an angle $\theta$ around body-fixed
2519 + axis $\alpha$,
2520 + \begin{equation}
2521 + \mathsf{G}_\alpha( \theta ) = \left\{
2522 + \begin{array}{lcl}
2523 + \mathbf{Q}(t) & \leftarrow & \mathbf{Q}(0) \cdot \mathsf{R}_\alpha(\theta)^T, \\
2524 + {\bf j}(t) & \leftarrow & \mathsf{R}_\alpha(\theta) \cdot {\bf
2525 + j}(0).
2526 + \end{array}
2527 + \right.
2528 + \end{equation}
2529 + $\mathsf{R}_\alpha$ is a quadratic approximation to the single-axis
2530 + rotation matrix.  For example, in the small-angle limit, the
2531 + rotation matrix around the body-fixed x-axis can be approximated as
2532 + \begin{equation}
2533 + \mathsf{R}_x(\theta) \approx \left(
2534 + \begin{array}{ccc}
2535 + 1 & 0 & 0 \\
2536 + 0 & \frac{1-\theta^2 / 4}{1 + \theta^2 / 4}  & -\frac{\theta}{1+
2537 + \theta^2 / 4} \\
2538 + 0 & \frac{\theta}{1+ \theta^2 / 4} & \frac{1-\theta^2 / 4}{1 +
2539 + \theta^2 / 4}
2540 + \end{array}
2541 + \right).
2542 + \end{equation}
2543 + All other rotations follow in a straightforward manner. After the
2544 + first part of the propagation, the forces and body-fixed torques are
2545 + calculated at the new positions and orientations.  The system forces
2546 + and torques are derivatives of the total potential energy function
2547 + ($U$) with respect to the rigid body positions (${\bf r}$) and the
2548 + columns of the transposed rotation matrix ${\bf Q}^T = \left({\bf
2549 + u}_x, {\bf u}_y, {\bf u}_z \right)$:
2550  
2551 + {\tt Forces:}
2552 + \begin{align*}
2553 + {\bf f}_{s}(t + h) & \leftarrow
2554 +    - \left(\frac{\partial U}{\partial {\bf r}}\right)_{{\bf r}(t + h)} \\
2555 + %
2556 + {\bf \tau}_{s}(t + h) &\leftarrow {\bf u}(t + h)
2557 +    \times \frac{\partial U}{\partial {\bf u}} \\
2558 + %
2559 + {\bf v}^{b}_{R}(t+h) & \leftarrow \mathbf{Q}(t+h) \cdot \left({\bf v}(t+h) + {\bf \omega}(t+h) \times {\bf r}_{MR} \right) \\
2560 + %
2561 + {\bf f}_{R,f}^{b}(t+h) & \leftarrow - \Xi_{R}^{tt} \cdot
2562 + {\bf v}^{b}_{R}(t+h) - \Xi_{R}^{rt} \cdot {\bf \omega}(t+h) \\
2563 + %
2564 + {\bf \tau}_{R,f}^{b}(t+h) & \leftarrow - \Xi_{R}^{tr} \cdot
2565 + {\bf v}^{b}_{R}(t+h) - \Xi_{R}^{rr} \cdot {\bf \omega}(t+h) \\
2566 + %
2567 + Z & \leftarrow  {\tt GaussianNormal}(2 k_B T / h, 6) \\
2568 + {\bf F}_{R,r}^{b}(t+h) & \leftarrow {\bf S} \cdot Z \\
2569 + %
2570 + {\bf f}(t+h) & \leftarrow {\bf f}_{s}(t+h) + \mathbf{Q}^{T}(t+h)
2571 + \cdot \left({\bf f}_{R,f}^{~b} + {\bf f}_{R,r}^{~b} \right) \\
2572 + %
2573 + \tau(t+h) & \leftarrow \tau_{s}(t+h) + \mathbf{Q}^{T}(t+h) \cdot \left(\tau_{R,f}^{~b} + \tau_{R,r}^{~b} \right) + {\bf r}_{MR} \times \left({\bf f}_{f}(t+h) + {\bf f}_{r}(t+h) \right) \\
2574 + \tau^{~b}(t+h) & \leftarrow \mathbf{Q}(t+h) \cdot \tau(t+h) \\
2575 + \end{align*}
2576 + Frictional (and random) forces and torques must be computed at the
2577 + center of resistance, so there are additional steps required to find
2578 + the body-fixed velocity (${\bf v}_{R}^{~b}$) at this location.  Mapping
2579 + the frictional and random forces at the center of resistance back to
2580 + the center of mass also introduces an additional term in the torque
2581 + one obtains at the center of mass.
2582  
2583 + Once the forces and torques have been obtained at the new time step,
2584 + the velocities can be advanced to the same time value.
2585 +
2586 + {\tt move B:}
2587 + \begin{align*}
2588 + {\bf v}\left(t + h \right)  &\leftarrow  {\bf v}\left(t + h / 2
2589 + \right)
2590 +    + \frac{h}{2} \left( {\bf f}(t + h) / m \right), \\
2591 + %
2592 + {\bf j}\left(t + h \right)  &\leftarrow {\bf j}\left(t + h / 2
2593 + \right)
2594 +    + \frac{h}{2} {\bf \tau}^{~b}(t + h) .
2595 + \end{align*}
2596 +
2597 + The viscosity of the implicit solvent must be specified using the {\tt
2598 + viscosity} keyword in the meta-data file if the Langevin integrator is
2599 + selected. For simple particles (spheres and ellipsoids), no further
2600 + parameters are necessary.  Since there are no analytic solutions for
2601 + the resistance tensors for composite rigid bodies, the approximate
2602 + tensors for these objects must also be specified in order to use
2603 + Langevin dynamics.  The meta-data file must therefore point to another
2604 + file which contains the information about the hydrodynamic properties
2605 + of all complex rigid bodies being used during the simulation.  The
2606 + {\tt HydroPropFile} keyword is used to specify the name of this
2607 + file. A {\tt HydroPropFile} should be precalculated using the Hydro
2608 + program that is included in the {\sc oopse} distribution.
2609 +
2610 + \begin{longtable}[c]{ABG}
2611 + \caption{Meta-data Keywords: Required parameters for the Langevin integrator}
2612 + \\
2613 + {\bf keyword} & {\bf units} & {\bf use}  \\ \hline
2614 + \endhead
2615 + \hline
2616 + \endfoot
2617 + {\tt viscosity} & centipoise & Sets the value of viscosity of the implicit
2618 + solvent  \\
2619 + {\tt targetTemp} & K & Sets the target temperature of the system.
2620 + This parameter must be specified to use Langevin dynamics. \\
2621 + {\tt HydroPropFile} & string & Specifies the name of the resistance
2622 + tensor (usually a {\tt .diff} file) which is precalculated by {\tt
2623 + Hydro}. This keyworkd is not necessary if the simulation contains only
2624 + simple bodies (spheres and ellipsoids). \\
2625 + {\tt beadSize} & $\mbox{\AA}$ & Sets the diameter of the beads to use
2626 + when the {\tt RoughShell} model is used to approximate the resistance
2627 + tensor.
2628 + \label{table:ldParameters}
2629 + \end{longtable}
2630 +
2631   \section{\label{sec:constraints}Constraint Methods}
2632  
2633   \subsection{\label{oopseSec:rattle}The {\sc rattle} Method for Bond
# Line 3215 | Line 3472 | The options available for SimpleBuilder are as follows
3472      &  {\tt -{}-nz=INT}            &  number of unit cells in z
3473   \end{longtable}
3474  
3475 + \section{\label{oopseSec:Hydro}Hydro}
3476 + {\tt Hydro} generates resistance tensor ({\tt .diff}) files which are
3477 + required when using the Langevin integrator using complex rigid
3478 + bodies.  {\tt Hydro} supports two approximate models: the {\tt
3479 + BeadModel} and {\tt RoughShell}.  Additionally, {\tt Hydro} can
3480 + generate resistance tensor files using analytic solutions for simple
3481 + shapes. To generate a {\tt }.diff file, a meta-data file is needed as
3482 + the input file. Since the resistance tensor depends on these
3483 + quantities, the {\tt viscosity} of the solvent and the temperature
3484 + ({\tt targetTemp}) of the system must be defined in meta-data file. If
3485 + the approximate model in use is the {\tt RoughShell} model the {\tt
3486 + beadSize} (the diameter of the small beads used to approximate the
3487 + surface of the body) must also be specified.
3488 +
3489 + The options available for Hydro are as follows:
3490 + \begin{longtable}[c]{|EFG|}
3491 + \caption{Hydro Command-line Options}
3492 + \\ \hline
3493 + {\bf option} & {\bf verbose option} & {\bf behavior} \\ \hline
3494 + \endhead
3495 + \hline
3496 + \endfoot
3497 +  -h& {\tt -{}-help}               & Print help and exit\\
3498 +  -V& {\tt -{}-version}            & Print version and exit\\
3499 +  -i& {\tt -{}-input=filename}     & input MetaData (md) file\\
3500 +  -o& {\tt -{}-output=STRING}      & Output file name\\
3501 +   &  {\tt -{}-model=STRING}     & hydrodynamics model (supports both
3502 + {\tt RoughShell} and {\tt BeadModel})\\
3503 +  -b&  {\tt -{}-beads}            & generate the beads only,
3504 + hydrodynamic calculations will not be performed (default=off)\\
3505 + \end{longtable}
3506 +
3507 +
3508   \chapter{\label{oopseSec:parallelization} Parallel Simulation Implementation}
3509  
3510   Although processor power is continually improving, it is still

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines