ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/staticProps/PairCorrType.cpp
Revision: 803
Committed: Fri Oct 10 17:10:22 2003 UTC (20 years, 9 months ago) by mmeineke
File size: 3022 byte(s)
Log Message:
removed the props directory, and moved everything over to staticProps

File Contents

# User Rev Content
1 mmeineke 803 #include <iostream>
2     #include <cstdlib>
3     #include <cstring>
4    
5     #include "simError.h"
6     #include "PairCorrType.hpp"
7    
8    
9     PairCorrType::PairCorrType( char* key1, char* key2, int theNatoms,
10     int theNbins ){
11    
12     nBins = theNbins;
13    
14     strcpy( atom1, key1 );
15     strcpy( atom2, key2 );
16    
17     isSelfSelf = false;
18     if( !strcmp( atom1, atom2 ) ) isSelfSelf = true;
19    
20     strcpy( corrType, "Donkey" );
21    
22     nAtoms = theNatoms;
23    
24     isAtom1 = new bool[nAtoms];
25     isAtom2 = new bool[nAtoms];
26    
27     jArray = NULL;
28    
29     correlateMe = false;
30     isInitialized = false;
31    
32     }
33    
34     PairCorrType::~PairCorrType(){
35    
36     delete[] isAtom1;
37     delete[] isAtom2;
38    
39     }
40    
41     void PairCorrType::initCorr( double theLengthScale, atomName* theNames ){
42     int i;
43    
44     lengthScale = theLengthScale;
45     delR = lengthScale / nBins;
46    
47     nAtoms1 = 0;
48     nAtoms2 = 0;
49    
50     for( i=0; i<nAtoms; i++){
51    
52     isAtom1[i] = !strcmp( atom1, theNames[i].name );
53     if( isAtom1[i] ) nAtoms1++;
54     isAtom2[i] = !strcmp( atom2, theNames[i].name );
55     if( isAtom2[i] ) nAtoms2++;
56     }
57    
58     if( !strcmp( atom1, "_ALL_" ) ){
59     for(i=0;i<nAtoms;i++)isAtom1[i] = true;
60     nAtoms1 = nAtoms;
61     }
62    
63     if( !strcmp( atom2, "_ALL_" ) ){
64     for(i=0;i<nAtoms;i++)isAtom2[i] = true;
65     nAtoms2 = nAtoms;
66     }
67    
68     if(!nAtoms1){
69     sprintf( painCave.errMsg,
70     "\n"
71     "Atom \"%s\" was not found in the dump file by pair corelation:\n"
72     " %s < %s - %s >\n",
73     atom1,
74     corrType,
75     atom1,
76     atom2 );
77     painCave.isFatal = 1;
78     simError();
79     }
80    
81     if(!nAtoms2){
82     sprintf( painCave.errMsg,
83     "\n"
84     "Atom \"%s\" was not found in the dump file by pair corelation:\n"
85     " %s < %s - %s >\n",
86     atom2,
87     corrType,
88     atom1,
89     atom2 );
90     painCave.isFatal = 1;
91     simError();
92     }
93    
94     isInitialized = true;
95     }
96    
97     void PairCorrType::setFrameVolume( double theVolume ){
98    
99     volume = theVolume;
100    
101     if( isSelfSelf ) pairDensity = nAtoms1 * (nAtoms1 - 1) / volume;
102     else pairDensity = nAtoms1 * nAtoms2 / volume;
103    
104     pairConstant = ( 4.0 * M_PI * pairDens ) / 3.0;
105    
106     }
107    
108     bool PairCorrType::matchI( int i ){
109    
110     if( !isInitialized ){
111     sprintf( painCave.errMsg,
112     "Attempt to MatchI in <%s of %s - %s> before identity arrays"
113     " were initialized.\n",
114     corrType,
115     atom1,
116     atom2 );
117     painCave.isFatal = 1;
118     simError();
119     }
120    
121     identI = -1;
122    
123     if( isAtom1[i] ){
124    
125     correlateMe = true;
126     identI = IS_A;
127     jArray = isAtom2;
128     return true;
129     }
130    
131     if( isAtom2[i] ){
132    
133     correlateMe = true;
134     identI = IS_B;
135     jArray = isAtom1;
136     return true;
137     }
138    
139     correlateMe = false;
140     jArray = NULL;
141     return false;
142     }
143    
144     bool PairCorrType::matchJ( int j ){
145    
146     if( !isInitialized ){
147     sprintf( painCave.errMsg,
148     "Attempt to MatchJ in <%s of %s - %s> before identity arrays"
149     " were initialized.\n",
150     corrType,
151     atom1,
152     atom2 );
153     painCave.isFatal = 1;
154     simError();
155     }
156    
157     if( correlateMe ){
158    
159     if( jArray[j] ) return true;
160     }
161    
162     correlateMe = false;
163     jArray = NULL;
164     return false;
165    
166     }