Pteros  2.0
Molecular modeling library for human beings!
bilayer.h
1 /*
2  *
3  * This source code is part of
4  * ******************
5  * *** Pteros ***
6  * ******************
7  * molecular modeling library
8  *
9  * Copyright (c) 2009-2013, Semen Yesylevskyy
10  *
11  * This program is free software; you can redistribute it and/or
12  * modify it under the terms of Artistic License:
13  *
14  * Please note, that Artistic License is slightly more restrictive
15  * then GPL license in terms of distributing the modified versions
16  * of this software (they should be approved first).
17  * Read http://www.opensource.org/licenses/artistic-license-2.0.php
18  * for details. Such license fits scientific software better then
19  * GPL because it prevents the distribution of bugged derivatives.
20  *
21 */
22 
23 
24 #ifndef BILAYER_H
25 #define BILAYER_H
26 
27 #include "pteros/core/system.h"
28 #include "pteros/core/selection.h"
30 
31 namespace pteros {
32 
33 struct Bilayer_point_info {
35  int monolayer;
37  float surf_dist1, surf_dist2;
39  float center_dist;
41  Eigen::Vector3f normal;
43  Eigen::Vector3f center;
45  float thickness;
47  Eigen::Vector3f proj1, proj2;
49  std::shared_ptr<Selection> spot1_ptr, spot2_ptr;
50  void print();
51 };
52 
53 class Bilayer {
54 public:
55  Bilayer(){};
56  Bilayer(Selection& sel, std::string head_marker_atom, float d = 2.0);
57  void create(Selection& sel, std::string head_marker_atom, float d = 2.0);
59  Bilayer_point_info point_info(Eigen::Vector3f& point);
60 protected:
61  Selection* bilayer_ptr;
62  Selection mono1,mono2; // Monolayers
63  std::vector<Selection> surf; // Marker surfaces
64  int spot_size;
65 };
66 
67 /*
68 float point_in_membrane(Eigen::Vector3f& point, Selection& head_markers, float d,
69  const Eigen::Vector3i& pbc_dims = Eigen::Vector3i::Ones());
70 */
71 }
72 
73 #endif
Pteros namespace.
Definition: options.cpp:32