IMP Reference Guide  develop.ba5ef9f91e,2024/02/26 The Integrative Modeling Platform
IMP::atom::Diffusion Class Reference

A decorator for a diffusing particle with a diffusion coefficient. More...

#include <IMP/atom/Diffusion.h>

Inheritance diagram for IMP::atom::Diffusion:

## Detailed Description

A decorator for a diffusing particle with a diffusion coefficient.

Diffusion is used to decorate a particle with XYZ coordinates (since it inhertis from XYZ) and a translational diffusion coefficient D. D is specified in units of $$A^2/fs$$, and it is used by eg IMP's Brownian dynamics simulator. It can be set explicitly or inferred implicitly from the radius.

1 ## \example atom/Diffusion_decorator.py
2 # This is a simple example using the Diffusion decorator to set the coordinates
3 # and translational diffusion coefficient of some particles
4
5 import IMP
6 import IMP.core
7 import IMP.atom
8 import IMP.algebra
9 import sys
10
11 C0=[0,1,2] # in A
12 C1=[1,2,3] # in A
13 D1 = 3.0 # in A^2/fs
14 R0=5 # in A
15 IMP.setup_from_argv(sys.argv, "Diffusion decorator example")
16 m = IMP.Model()
17
18 # Setup a diffusion particle with an implicitly-set diffusion coefficient
19 # using the Stokes-Einstein equation, treating radius as the Stokes radius
21 xyzr0 = IMP.core.XYZR.setup_particle(m, p0,
22  IMP.algebra.Sphere3D(C0, R0))
24 print("D automatically set to {:.2e} A^2/fs for radius {:.1f} A"
26
27 # Explicitly change the diffusion coefficient:
28 d0.set_diffusion_coefficient(d0.get_diffusion_coefficient()/2.0)
29 print("D reset to {:.2e} A^2/fs".format(d0.get_diffusion_coefficient()))
30
31 # Setup a diffusion particle with an explicitly-set diffusion coefficient
33 d1 = IMP.atom.Diffusion.setup_particle(m, p1, C1, D1)
34 print("D explicitly set to {:.2e} A^2/fs for coordinates {} A"
35  .format(d1.get_diffusion_coefficient(), d1.get_coordinates()))
RigidBodyDiffusion
BrownianDynamics

Definition at line 36 of file Diffusion.h.

## Public Member Functions

Diffusion (::IMP::Model *m,::IMP::ParticleIndex id)

double get_diffusion_coefficient () const
get diffusion coefficient in $$A^2/fs$$ More...

void set_diffusion_coefficient (double d)
set diffusion coefficient in $$A^2/fs$$ More...

void show (std::ostream &out=std::cout) const

Public Member Functions inherited from IMP::core::XYZ
XYZ (::IMP::Model *m,::IMP::ParticleIndex id)

void add_to_derivative (int i, Float v, DerivativeAccumulator &d)

void add_to_derivatives (const algebra::Vector3D &v, DerivativeAccumulator &d)
Add the vector v to the derivative vector of the x,y,z coordinates. More...

Float get_coordinate (int i) const
Get the ith coordinate. More...

const algebra::Vector3Dget_coordinates () const
Convert it to a vector. More...

bool get_coordinates_are_optimized () const
Get whether the coordinates are optimized. More...

Float get_derivative (int i) const

algebra::Vector3D get_derivatives () const
Get the vector of derivatives accumulated by add_to_derivatives(). More...

algebra::Vector3D get_vector_to (const XYZ &b) const
Get the vector from this particle to another. More...

Float get_x () const

Float get_y () const

Float get_z () const

void set_coordinate (unsigned int i, Float v)
set the ith coordinate More...

void set_coordinates (const algebra::Vector3D &v)
set all coordinates from a vector More...

void set_coordinates_are_optimized (bool tf) const
Set whether the coordinates are optimized. More...

void set_x (Float t)

void set_y (Float t)

void set_z (Float t)

void show (std::ostream &out=std::cout) const

Public Member Functions inherited from IMP::Decorator
bool get_is_valid () const
Returns true if constructed with a non-default constructor. More...

Modelget_model () const
Returns the Model containing the particle. More...

Particleget_particle () const
Returns the particle decorated by this decorator. More...

ParticleIndex get_particle_index () const
Returns the particle index decorated by this decorator. More...

operator Particle * () const

operator ParticleIndex () const

Particleoperator-> () const

## Static Public Member Functions

static FloatKey get_diffusion_coefficient_key ()
Get the D key. More...

static bool get_is_setup (const IMP::ParticleAdaptor &p)

static bool get_is_setup (Model *m, ParticleIndex p)
Return true if the particle is an instance of Diffusion. More...

static Diffusion setup_particle (Model *m, ParticleIndex pi, Float D)
Setup the particle with the specified diffusion coefficient. More...

static Diffusion setup_particle (IMP::ParticleAdaptor pa, Float D)

static Diffusion setup_particle (IMP::ParticleAdaptor pa, algebra::Vector3D v, Float D)

static Diffusion setup_particle (Model *m, ParticleIndex pi, algebra::Vector3D v, Float D)
Setup the particle with the specified coordinates and diffusion coefficient. More...

static Diffusion setup_particle (Model *m, ParticleIndex pi)

Static Public Member Functions inherited from IMP::core::XYZ
static FloatKey get_coordinate_key (unsigned int i)

static bool get_is_setup (const IMP::ParticleAdaptor &p)

static bool get_is_setup (Model *m, ParticleIndex pi)

static const FloatKeysget_xyz_keys ()
Get a vector containing the keys for x,y,z. More...

static XYZ setup_particle (Model *m, ParticleIndex pi)

static XYZ setup_particle (IMP::ParticleAdaptor pa, algebra::Vector3D v)

static XYZ setup_particle (Model *m, ParticleIndex pi, algebra::Vector3D v)

Protected Member Functions inherited from IMP::Decorator
Decorator (Model *m, ParticleIndex pi)

## Member Function Documentation

 double IMP::atom::Diffusion::get_diffusion_coefficient ( ) const

get diffusion coefficient in $$A^2/fs$$

Definition at line 107 of file Diffusion.h.

Here is the call graph for this function:

 static FloatKey IMP::atom::Diffusion::get_diffusion_coefficient_key ( )
static

Get the D key.

 static bool IMP::atom::Diffusion::get_is_setup ( Model * m, ParticleIndex p )
static

Return true if the particle is an instance of Diffusion.

Definition at line 97 of file Diffusion.h.

Here is the call graph for this function:

 void IMP::atom::Diffusion::set_diffusion_coefficient ( double d )

set diffusion coefficient in $$A^2/fs$$

Definition at line 102 of file Diffusion.h.

Here is the call graph for this function:

 static Diffusion IMP::atom::Diffusion::setup_particle ( IMP::ParticleAdaptor pa, Float D )
static
Returns
a Diffusion object that decorates the particle specified by pa
setup_particle(m, pi, D )

Definition at line 76 of file Diffusion.h.

 static Diffusion IMP::atom::Diffusion::setup_particle ( Model * m, ParticleIndex pi, Float D )
static

Setup the particle with the specified diffusion coefficient.

If the particle does not have coordinates, it is decorated as XYZ and its coordinates are set to [0,0,0], otherwise the coordinates remain the same.

Returns
a Diffusion object that decorates particle pi

Definition at line 76 of file Diffusion.h.

 static Diffusion IMP::atom::Diffusion::setup_particle ( Model * m, ParticleIndex pi, algebra::Vector3D v, Float D )
static

Setup the particle with the specified coordinates and diffusion coefficient.

Returns
a Diffusion object that decorates particle pi

Definition at line 78 of file Diffusion.h.

 static Diffusion IMP::atom::Diffusion::setup_particle ( IMP::ParticleAdaptor pa, algebra::Vector3D v, Float D )
static
Returns
a Diffusion object that decorates the particle specified by pa
setup_particle(m, p, v , D )

Definition at line 78 of file Diffusion.h.

 static Diffusion IMP::atom::Diffusion::setup_particle ( IMP::ParticleAdaptor pa )
static
Returns
a Diffusion object that decorates the particle specified by pa
setup_particle(m, p)

Definition at line 94 of file Diffusion.h.

 static Diffusion IMP::atom::Diffusion::setup_particle ( Model * m, ParticleIndex pi )
static

Setup the particle with a diffusion coefficient automatically inferred from its radius using the Stokes-Einstein equation. The diffusion coefficient is computed implicitly using the Stokes-Einstein equation by calling IMP::atom::get_einstein_diffusion_coefficient(R), where the Stokes radius R is core::XYZR::get_radius() and the temperature is the default IMP temperature of 297.15K.

Note
If the simulation temperature or particle radius change, the diffusion coefficient must be changed explicitly e.g., using set_diffusion_coefficient()
This constructor can be used only on particles that have a radius field, e.g. decorated as IMP::core::XYZR.
Returns
a Diffusion object that decorates particle pi

Definition at line 94 of file Diffusion.h.

The documentation for this class was generated from the following file: