32 |
|
|
33 |
|
#ifndef TYPES_CHARMMTORSIONTYPE_HPP |
34 |
|
#define TYPES_CHARMMTORSIONTYPE_HPP |
35 |
+ |
#include <algorithm> |
36 |
+ |
#include <cassert> |
37 |
+ |
#include <vector> |
38 |
|
|
39 |
|
#include "types/TorsionType.hpp" |
40 |
|
namespace oopse { |
41 |
|
|
42 |
< |
struct CharmmTorsionParameter { |
43 |
< |
double kchi; |
44 |
< |
int n; |
45 |
< |
double delta; |
46 |
< |
}; |
47 |
< |
|
42 |
> |
struct CharmmTorsionParameter { |
43 |
> |
double kchi; |
44 |
> |
int n; |
45 |
> |
double delta; |
46 |
> |
}; |
47 |
> |
|
48 |
> |
class SamePeriodicityFunctor { |
49 |
> |
public: |
50 |
> |
SamePeriodicityFunctor(int n) : n_(n) {} |
51 |
> |
bool operator()(CharmmTorsionParameter p) { |
52 |
> |
return p.n == n_; |
53 |
> |
} |
54 |
> |
|
55 |
> |
private: |
56 |
> |
int n_; |
57 |
> |
}; |
58 |
|
/** |
59 |
|
* @class CharmmTorsionType CharmmTorsionType.hpp "types/CharmmTorsionType.hpp" |
60 |
|
*/ |
64 |
|
|
65 |
|
void setCharmmTorsionParameter(CharmmTorsionParameter param) { |
66 |
|
|
67 |
< |
assert(param.n >=0); |
67 |
> |
assert(param.n >= 0 && param.n < 6); |
68 |
|
|
69 |
< |
std::vector<CharmmTorsionParameter> i ; |
70 |
< |
i = std::find(parameter_.begin(), parameter_.end(), ); |
69 |
> |
std::vector<CharmmTorsionParameter>::iterator i ; |
70 |
> |
i = std::find_if(parameter_.begin(), parameter_.end(), SamePeriodicityFunctor(param.n)); |
71 |
|
|
72 |
|
if (i != parameter_.end()) { |
73 |
|
std::cerr << "a parameter set with " << param.n <<" is already there" << std::endl; |