1 #include "iSGPAR.h"
2 
3 #include "mathutilities.h"
4 
5 using namespace ProtoMol::Report;
6 
7 namespace ProtoMol {
8 
9   //_________________________________________________________________ iSGPAR
10   const Real iSGPAR::Nonbonded::SIGMA_CHARMM19_TO_CHARMM28(pow(2.0,-5.0/6.0));
11   const Real iSGPAR::Nonbonded::SIGMA_CHARMM28_TO_CHARMM19(pow(2.0, 5.0/6.0));
12 
clear()13   void iSGPAR::clear() {
14     bonds.clear();
15     angles.clear();
16     dihedrals.clear();
17     impropers.clear();
18     nonbondeds.clear();
19     nbfixs.clear();
20     hbonds.clear();
21   }
22 
23 
24   //_________________________________________________________________globals
operator <<(MyStreamer & OS,const iSGPAR::Bond & p)25   MyStreamer& operator<< (MyStreamer& OS, const iSGPAR::Bond & p) {
26     OS <<p.number<<","<<p.atom1<<","<<p.atom2;
27 
28     for (unsigned int i=0; i<p.forceConstant.size(); i++)
29       OS <<","<<p.forceConstant[i]<<","<<p.distance[i];
30     return OS;
31   }
32 
operator <<(MyStreamer & OS,const iSGPAR::Angle & p)33   MyStreamer& operator<< (MyStreamer& OS, const iSGPAR::Angle & p) {
34     OS <<p.number<<","<<p.atom1<<","<<p.atom2<<","<<p.atom3;
35 
36     for (unsigned int i=0; i<p.forceConstant.size(); i++)
37       OS<<","<<p.forceConstant[i]<<","<<p.angleval[i]<<","<<p.ub_flag<<","<<p.k_ub[i]<<","<<p.r_ub[i];
38     return OS;
39   }
40 
operator <<(MyStreamer & OS,const iSGPAR::Dihedral & p)41   MyStreamer& operator<< (MyStreamer& OS, const iSGPAR::Dihedral & p) {
42     OS <<p.number<<","<<p.atom1<<","<<p.atom2<<","<<p.atom3<<","<<p.atom4;
43 
44     for (unsigned int i=0; i<p.forceConstant.size(); i++) {
45       OS<<","<<p.multiplicity[i];
46       for(unsigned int j=0;j<p.forceConstant[i].size();++j)
47 	OS << ","<<p.forceConstant[i][j];
48       for(unsigned int j=0;j<p.periodicity[i].size();++j)
49 	OS << ","<<p.periodicity[i][j];
50       for(unsigned int j=0;j<p.phaseShift[i].size();++j)
51 	OS << ","<<p.phaseShift[i][j];
52     }
53     return OS;
54   }
55 
operator <<(MyStreamer & OS,const iSGPAR::Improper & p)56   MyStreamer& operator<< (MyStreamer& OS, const iSGPAR::Improper & p) {
57     OS <<p.number<<","<<p.atom1<<","<<p.atom2<<","<<p.atom3<<","<<p.atom4;
58     for (unsigned int i=0; i<p.forceConstant.size(); i++)
59       OS<<","<<p.forceConstant[i]<< ","<<p.periodicity[i]<<","<<p.phaseShift[i];
60     return OS;
61   }
62 
operator <<(MyStreamer & OS,const iSGPAR::Nonbonded & p)63   MyStreamer& operator<< (MyStreamer& OS, const iSGPAR::Nonbonded & p) {
64     OS <<p.number<<","<<p.atom;
65     for (unsigned int i=0; i<p.epsilon.size(); i++)
66       OS<<","<<p.polarizability[i]<<","<<p.epsilon[i]<<","<<p.sigma[i]<<","<<p.negative[i]<< ","
67 	<<p.vdw[i]<<","<<p.polarizability2[i]<<","<<p.epsilon14[i]<<","<<p.sigma14[i]<<","<<p.negative2[i];
68     return OS;
69   }
70 
operator <<(MyStreamer & OS,const iSGPAR::Nbfix & p)71   MyStreamer& operator<< (MyStreamer& OS, const iSGPAR::Nbfix & p) {
72     OS <<p.number<<","<<p.atom1<<","<<p.atom2<<","<<p.a<<","<<p.b<<","<<p.a14<< ","<<p.b14;
73     return OS;
74   }
75 
operator <<(MyStreamer & OS,const iSGPAR::Hbond & p)76   MyStreamer& operator<< (MyStreamer& OS, const iSGPAR::Hbond & p) {
77     OS <<p.number<<","<<p.atom1<<","<<p.atom2<<","<<p.emin<<","<<p.rmin;
78     return OS;
79   }
80 }
81