ESPResSo
Extensible Simulation Package for Research on Soft Matter Systems
Loading...
Searching...
No Matches
core/collision_detection/BindAtPointOfCollision.hpp
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2011-2024 The ESPResSo project
3
*
4
* This file is part of ESPResSo.
5
*
6
* ESPResSo is free software: you can redistribute it and/or modify
7
* it under the terms of the GNU General Public License as published by
8
* the Free Software Foundation, either version 3 of the License, or
9
* (at your option) any later version.
10
*
11
* ESPResSo is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
* GNU General Public License for more details.
15
*
16
* You should have received a copy of the GNU General Public License
17
* along with this program. If not, see <http://www.gnu.org/licenses/>.
18
*/
19
20
#pragma once
21
22
#include <
config/config.hpp
>
23
24
#ifdef COLLISION_DETECTION
25
#ifdef VIRTUAL_SITES_RELATIVE
26
27
#include "
CollisionPair.hpp
"
28
#include "
common.hpp
"
29
30
#include "
Particle.hpp
"
31
#include "system/System.hpp"
32
33
#include <vector>
34
35
namespace
CollisionDetection
{
36
37
class
BindAtPointOfCollision
{
38
public
:
39
/// Distance at which particle are bound
40
double
distance
;
41
/// Square of distance at which particle are bound
42
double
distance_sq
;
43
/// bond type used between centers of colliding particles
44
int
bond_centers
;
45
/// bond type used between virtual sites
46
int
bond_vs
;
47
/**
48
* @brief Barycenter of the virtual site.
49
* 0=on same particle as related to,
50
* 1=on collision partner,
51
* 0.5=in the middle between the two particles
52
*/
53
double
vs_placement
;
54
/// particle type for virtual sites created on collision
55
int
part_type_vs
;
56
57
BindAtPointOfCollision
(
double
distance
,
int
bond_centers
,
int
bond_vs
,
58
double
vs_placement
,
int
part_type_vs
)
59
:
distance
{
distance
},
distance_sq
{
distance
*
distance
},
60
bond_centers
{
bond_centers
},
bond_vs
{
bond_vs
},
61
vs_placement
{
vs_placement
},
part_type_vs
{
part_type_vs
} {}
62
63
void
initialize
(
System::System
&system);
64
65
auto
cutoff
()
const
{
return
distance
; }
66
67
void
handle_collisions
(
System::System
&system,
68
std::vector<CollisionPair> &local_collision_queue);
69
70
bool
detect_collision
(
Particle
const
&p1,
Particle
const
&p2,
71
double
const
dist_sq)
const
{
72
if
(dist_sq >
distance_sq
)
73
return
false
;
74
75
return
detect_collision_common
(p1, p2,
bond_centers
);
76
}
77
};
78
79
}
// namespace CollisionDetection
80
#endif
// VIRTUAL_SITES_RELATIVE
81
#endif
// COLLISION_DETECTION
CollisionPair.hpp
Particle.hpp
CollisionDetection::BindAtPointOfCollision
Definition
core/collision_detection/BindAtPointOfCollision.hpp:37
CollisionDetection::BindAtPointOfCollision::handle_collisions
void handle_collisions(System::System &system, std::vector< CollisionPair > &local_collision_queue)
Definition
BindAtPointOfCollision.cpp:83
CollisionDetection::BindAtPointOfCollision::part_type_vs
int part_type_vs
particle type for virtual sites created on collision
Definition
core/collision_detection/BindAtPointOfCollision.hpp:55
CollisionDetection::BindAtPointOfCollision::distance
double distance
Distance at which particle are bound.
Definition
core/collision_detection/BindAtPointOfCollision.hpp:40
CollisionDetection::BindAtPointOfCollision::cutoff
auto cutoff() const
Definition
core/collision_detection/BindAtPointOfCollision.hpp:65
CollisionDetection::BindAtPointOfCollision::bond_vs
int bond_vs
bond type used between virtual sites
Definition
core/collision_detection/BindAtPointOfCollision.hpp:46
CollisionDetection::BindAtPointOfCollision::bond_centers
int bond_centers
bond type used between centers of colliding particles
Definition
core/collision_detection/BindAtPointOfCollision.hpp:44
CollisionDetection::BindAtPointOfCollision::distance_sq
double distance_sq
Square of distance at which particle are bound.
Definition
core/collision_detection/BindAtPointOfCollision.hpp:42
CollisionDetection::BindAtPointOfCollision::vs_placement
double vs_placement
Barycenter of the virtual site.
Definition
core/collision_detection/BindAtPointOfCollision.hpp:53
CollisionDetection::BindAtPointOfCollision::initialize
void initialize(System::System &system)
Definition
BindAtPointOfCollision.cpp:53
CollisionDetection::BindAtPointOfCollision::BindAtPointOfCollision
BindAtPointOfCollision(double distance, int bond_centers, int bond_vs, double vs_placement, int part_type_vs)
Definition
core/collision_detection/BindAtPointOfCollision.hpp:57
CollisionDetection::BindAtPointOfCollision::detect_collision
bool detect_collision(Particle const &p1, Particle const &p2, double const dist_sq) const
Definition
core/collision_detection/BindAtPointOfCollision.hpp:70
System::System
Main system class.
Definition
core/system/System.hpp:77
config.hpp
This file contains the defaults for ESPResSo.
CollisionDetection
Definition
ActiveProtocol.hpp:33
CollisionDetection::detect_collision_common
auto detect_collision_common(Particle const &p1, Particle const &p2, int const bond_centers)
Definition
collision_detection/common.hpp:31
common.hpp
Common functions for dipolar and charge P3M.
Particle
Struct holding all information for one particle.
Definition
Particle.hpp:395
src
core
collision_detection
BindAtPointOfCollision.hpp
Generated on Thu Dec 19 2024 02:13:16 for ESPResSo by
1.9.8