9 #ifndef IMPATOM_DIFFUSION_H
10 #define IMPATOM_DIFFUSION_H
12 #include <IMP/atom/atom_config.h>
16 #include <IMP/internal/constants.h>
21 IMPATOM_BEGIN_NAMESPACE
43 p->add_attribute(get_diffusion_coefficient_key(), D);
54 "Particle must already be an XYZ particle");
55 p->add_attribute(get_diffusion_coefficient_key(), D);
66 return XYZ::particle_is_instance(p)
67 && p->has_attribute(get_diffusion_coefficient_key());
72 return m->get_has_attribute(get_diffusion_coefficient_key(), p);
75 void set_d(
double d) {
76 set_diffusion_coefficient(d);
78 double get_d()
const {
82 void set_diffusion_coefficient(
double d) {
83 get_particle()->set_value(get_diffusion_coefficient_key(), d);
86 return get_particle()->get_value(get_diffusion_coefficient_key());
89 static FloatKey get_diffusion_coefficient_key();
93 IMPATOMEXPORT
double get_diffusion_coefficient_from_cm2_per_second(
double din);
113 ->get_value(get_rotational_diffusion_coefficient_key());
115 void set_rotational_diffusion_coefficient(
double d)
const {
117 ->set_value(get_rotational_diffusion_coefficient_key(), d);
122 return XYZ::particle_is_instance(p)
123 && p->has_attribute(get_rotational_diffusion_coefficient_key());
128 return m->get_has_attribute(get_rotational_diffusion_coefficient_key(), p);
132 static FloatKey get_rotational_diffusion_coefficient_key();
136 IMP_DECORATORS(RigidBodyDiffusion, RigidBodyDiffusions, Diffusions);
138 IMPATOM_END_NAMESPACE