9 #ifndef IMPATOM_DIFFUSION_H
10 #define IMPATOM_DIFFUSION_H
12 #include <IMP/atom/atom_config.h>
16 #include <IMP/kernel/internal/constants.h>
21 IMPATOM_BEGIN_NAMESPACE
35 "Particle must already be an XYZ particle");
41 do_setup_particle(m, pi, D);
54 return m->get_has_attribute(get_diffusion_coefficient_key(), p);
56 void set_diffusion_coefficient(
double d) {
57 get_particle()->set_value(get_diffusion_coefficient_key(), d);
60 return get_particle()->get_value(get_diffusion_coefficient_key());
63 static FloatKey get_diffusion_coefficient_key();
66 IMPATOM_DEPRECATED_METHOD_DECL(2.1)
69 IMPATOM_DEPRECATED_METHOD_DECL(2.1)
73 IMPATOMEXPORT
double get_diffusion_coefficient_from_cm2_per_second(
double din);
90 get_rotational_diffusion_coefficient_key());
92 void set_rotational_diffusion_coefficient(
double d)
const {
93 return get_particle()->set_value(get_rotational_diffusion_coefficient_key(),
99 return m->get_has_attribute(get_rotational_diffusion_coefficient_key(), p);
103 static FloatKey get_rotational_diffusion_coefficient_key();
106 IMP_DECORATORS(RigidBodyDiffusion, RigidBodyDiffusions, Diffusions);
108 IMPATOM_END_NAMESPACE
#define IMP_DECORATOR_SETUP_2(Name, FirstArgumentType, first_argument_name,SecondArgumentType, second_argument_name)
Particle * get_particle() const
#define IMP_DECORATOR_METHODS(Name, Parent)
static XYZ setup_particle(kernel::Model *m, ParticleIndex pi)
#define IMP_USAGE_CHECK(expr, message)
A runtime test for incorrect usage of a class or method.
static bool get_is_setup(kernel::Model *m, kernel::ParticleIndex p)
Return true if the particle is an instance of an Diffusion.
double get_rotational_diffusion_coefficient(const algebra::Rotation3Ds &displacements, double dt)
#define IMP_DECORATOR_SETUP_0(Name)
A decorator for a particle with x,y,z coordinates.
double Float
Basic floating-point value (could be float, double...)
void add_attribute(TypeKey attribute_key, ParticleIndex particle, Type value)
static bool get_is_setup(kernel::Model *m, kernel::ParticleIndex p)
Return true if the particle is an instance of an Diffusion.
double get_diffusion_coefficient(const algebra::Vector3Ds &displacements, double dt)
A decorator for a diffusing particle.
#define IMP_DECORATOR_SETUP_1(Name, FirstArgumentType, first_argument_name)
Decorator for a sphere-like particle.
#define IMP_DECORATORS(Name, PluralName, Parent)
Define the types for storing sets of decorators.
Key< 0, true > FloatKey
The type used to identify float attributes in the Particles.
Class for storing model, its restraints, constraints, and particles.