imp
doc
wiki
download
groups
imp at salilab.org | contact
Main Page
Modules
Class Index
Methods and Variables
Class Hierarchy
Macros
Related Pages
build
include
IMP
core
ExcludedVolumeRestraint.h
Go to the documentation of this file.
1
/**
2
* \file core/ExcludedVolumeRestraint.h
3
* \brief A prevent spheres from inter-penetrating
4
*
5
* Copyright 2007-2012 IMP Inventors. All rights reserved.
6
*/
7
8
#ifndef IMPCORE_EXCLUDED_VOLUME_RESTRAINT_H
9
#define IMPCORE_EXCLUDED_VOLUME_RESTRAINT_H
10
11
#include "core_config.h"
12
13
#include "internal/remove_pointers.h"
14
#include <IMP/internal/InternalPairsRestraint.h>
15
#include "internal/CoreClosePairContainer.h"
16
#include "
rigid_bodies.h
"
17
#include <
IMP/PairContainer.h
>
18
#include <
IMP/SingletonContainer.h
>
19
#include <
IMP/Restraint.h
>
20
#include <
IMP/UnaryFunction.h
>
21
#include <
IMP/Refiner.h
>
22
#include "
RigidClosePairsFinder.h
"
23
#include <
IMP/core/SphereDistancePairScore.h
>
24
25
IMPCORE_BEGIN_NAMESPACE
26
27
//! Prevent a set of particles and rigid bodies from inter-penetrating
28
/** Given an arbitrary collection of particles and rigid bodies, this
29
restraint prevents the particles from interpenetrating. Such restraints
30
are also known as steric clash restraints.
31
32
\note If any of the rigid bodies don't have radii, an appropriate radius
33
will be added. Note, to take advantage of this, the RigidBody
34
must be in the container before the Restraint is added to the model.
35
36
\note Changing the set of particles in the SingletonContainer is not
37
currently supported after the first evaluate call.
38
39
\note Currently the radius of all particles is assumed to be constant
40
*/
41
class
IMPCOREEXPORT
ExcludedVolumeRestraint
:
public
Restraint
42
{
43
base::OwnerPointer<SingletonContainer>
sc_;
44
mutable
ParticleIndexPairs cur_list_;
45
mutable
bool
was_bad_;
46
mutable
bool
initialized_;
47
ObjectKey
key_;
48
IMP::OwnerPointer<SoftSpherePairScore>
ssps_;
49
// moved stuff
50
mutable
ParticleIndexes rbs_;
51
mutable
ParticleIndexes xyzrs_;
52
mutable
IMP::compatibility::map<ParticleIndex, ParticleIndexes>
constituents_;
53
double
slack_;
54
mutable
algebra::Transformation3Ds rbs_backup_;
55
mutable
algebra::Vector3Ds
xyzrs_backup_;
56
57
void
reset_moved()
const
;
58
void
initialize()
const
;
59
int
get_if_moved()
const
;
60
void
fill_list()
const
;
61
double
fill_list_if_good(
double
max)
const
;
62
ExcludedVolumeRestraint
(
SingletonContainerInput
sc,
63
SoftSpherePairScore
*ssps,
64
ObjectKey
ok,
double
slack=10);
65
public
:
66
/** The SingletonContainer contains a set of XYZR particles and RigidMembers.
67
68
The spring constant used is k.*/
69
ExcludedVolumeRestraint
(
SingletonContainerInput
sc,
70
double
k=1,
double
slack=10,
71
std::string name=
"ExcludedVolumeRestraint%1%"
);
72
73
#if !defined(IMP_DOXYGEN) && !defined(SWIG)
74
double
unprotected_evaluate_if_good
(
DerivativeAccumulator
*da,
75
double
max)
const
;
76
#endif
77
IMP_RESTRAINT
(
ExcludedVolumeRestraint
);
78
Restraints
do_create_decomposition
()
const
;
79
Restraints
do_create_current_decomposition
()
const
;
80
IMP_LIST
(
public
, PairFilter, pair_filter,
81
PairPredicate
*, PairPredicates);
82
};
83
84
85
IMPCORE_END_NAMESPACE
86
87
#endif
/* IMPCORE_EXCLUDED_VOLUME_RESTRAINT_H */
Generated on Tue May 22 2012 23:33:14 for IMP by
doxygen
1.8.1