void GofRZ::processHistogram() { int nPairs = getNPairs(); RealType volume = info_->getSnapshotManager()->getCurrentSnapshot()->getVolume(); RealType pairDensity = nPairs / volume * 2.0; for(unsigned int i = 0 ; i < histogram_.size(); ++i){ RealType rLower = i * deltaR_; RealType rUpper = rLower + deltaR_; RealType volSlice = NumericConstant::PI * deltaZ_ * (( rUpper * rUpper ) - ( rLower * rLower )); RealType nIdeal = volSlice * pairDensity; for (unsigned int j = 0; j < histogram_[i].size(); ++j){ avgGofr_[i][j] += histogram_[i][j] / nIdeal; } } }
void GofR::processHistogram() { int nPairs = getNPairs(); RealType volume = info_->getSnapshotManager()->getCurrentSnapshot()->getVolume(); RealType pairDensity = nPairs /volume * 2.0; RealType pairConstant = ( 4.0 * NumericConstant::PI * pairDensity ) / 3.0; for(unsigned int i = 0 ; i < histogram_.size(); ++i){ RealType rLower = i * deltaR_; RealType rUpper = rLower + deltaR_; RealType volSlice = ( rUpper * rUpper * rUpper ) - ( rLower * rLower * rLower ); RealType nIdeal = volSlice * pairConstant; avgGofr_[i] += histogram_[i] / nIdeal; } }
void GofRTheta::processHistogram() { int nPairs = getNPairs(); RealType volume = info_->getSnapshotManager()->getCurrentSnapshot()->getVolume(); RealType pairDensity = nPairs /volume; RealType pairConstant = ( 4.0 * NumericConstant::PI * pairDensity ) / (3.0 * (double)nAngleBins_ ); for(unsigned int i = 0 ; i < histogram_.size(); ++i){ RealType rLower = i * deltaR_; RealType rUpper = rLower + deltaR_; RealType volSlice = ( rUpper * rUpper * rUpper ) - ( rLower * rLower * rLower ); RealType nIdeal = volSlice * pairConstant; for (unsigned int j = 0; j < histogram_[i].size(); ++j){ avgGofr_[i][j] += histogram_[i][j] / nIdeal; } } }
void TwoDGofR::processHistogram() { int nPairs = getNPairs(); Mat3x3d hmat = info_->getSnapshotManager()->getCurrentSnapshot()->getHmat(); RealType volume = hmat(0,0) * hmat(1,1) * deltaZ_; RealType pairDensity = nPairs /volume * 2.0; RealType pairConstant = (NumericConstant::PI * pairDensity); for(unsigned int i = 0 ; i < histogram_.size(); ++i){ RealType rLower = i * deltaR_; RealType rUpper = rLower + deltaR_; RealType volSlice = deltaZ_ * (( rUpper*rUpper ) - ( rLower*rLower )); RealType nIdeal = volSlice * pairConstant; avgTwoDGofR_[i] += histogram_[i] / nIdeal; } }
//===========================================================================// void ATM_Instance::readInstance(string & fileNameA, string & fileNameD, string & fileNameAD){ string atm, date; int a, d, ad, n_ad; double K, B; ifstream isA, isD, isAD; ifstream isA2, isD2; //MSVS bug? char dummy[10000]; const int maxLine = 10000; //--- //--- File format (.../Decomp/data/ATM) //--- //--- dataA.txt: //--- a K[a] //--- dataD.txt: //--- d B[d] //--- dataAD.txt: //--- a d a[a,d] b[a,d] c[a,d] d[a,d] e[a,d] //--- //--- //--- open file streams //--- UtilOpenFile(isA, fileNameA.c_str()); UtilOpenFile(isD, fileNameD.c_str()); UtilOpenFile(isAD, fileNameAD.c_str()); //--- //--- get number of atms //--- printf("Reading %s\n", fileNameA.c_str()); m_nAtms = 0; isA.getline(dummy, maxLine); while(!isA.eof()){ isA >> atm; if(isA.eof()) break; isA >> K; m_nAtms++; } isA.close(); //--- //--- get number of dates //--- printf("Reading %s\n", fileNameD.c_str()); m_nDates = 0; isD.getline(dummy, maxLine); while(!isD.eof()){ isD >> date; if(isD.eof()) break; isD >> B; m_nDates++; } isD.close(); //--- //--- allocate memory for storage of coefficients //--- open enough space as if dense //--- n_ad = m_nAtms * m_nDates; m_a_ad = new double[n_ad]; m_b_ad = new double[n_ad]; m_c_ad = new double[n_ad]; //(=-b) m_d_ad = new double[n_ad]; m_e_ad = new double[n_ad]; m_w_ad = new double[n_ad]; m_B_d = new double[m_nDates]; m_K_a = new double[m_nAtms]; assert(m_a_ad && m_b_ad && m_c_ad && m_d_ad && m_e_ad && m_w_ad && m_B_d && m_K_a); //--- //--- get data for atms //--- UtilOpenFile(isA2, fileNameA.c_str()); UtilOpenFile(isD2, fileNameD.c_str()); m_nAtms = 0; isA2.getline(dummy, maxLine); while(!isA2.eof()){ isA2 >> atm; if(isA2.eof()) break; m_strToIntAtms.insert(make_pair(atm, m_nAtms)); m_intToStrAtms.push_back(atm); isA2 >> m_K_a[m_nAtms]; m_nAtms++; } isA2.close(); //--- //--- get data for dates //--- m_nDates = 0; isD2.getline(dummy, maxLine); while(!isD2.eof()){ isD2 >> date; if(isD2.eof()) break; m_strToIntDates.insert(make_pair(date, m_nDates)); m_intToStrDates.push_back(date); isD2 >> m_B_d[m_nDates]; m_nDates++; } isD2.close(); //--- //--- get data for ATMS x DATES (we don't have data for all pairs) //--- printf("Reading %s\n", fileNameAD.c_str()); map<string,int>::iterator mi; isAD.getline(dummy, maxLine); while(!isAD.eof()){ isAD >> atm >> date; if(isAD.eof()) break; //get a,d index for this pair mi = m_strToIntAtms.find(atm); if(mi == m_strToIntAtms.end()){ printf("ERROR atm not found: %s\n", atm.c_str()); } assert(mi != m_strToIntAtms.end()); a = mi->second; mi = m_strToIntDates.find(date); if(mi == m_strToIntDates.end()){ printf("ERROR dates not found: %s\n", date.c_str()); } assert(mi != m_strToIntDates.end()); d = mi->second; ad = getIndexAD(a,d); m_pairsAD.push_back(ad); isAD >> m_a_ad[ad]; isAD >> m_b_ad[ad]; isAD >> m_c_ad[ad]; isAD >> m_d_ad[ad]; isAD >> m_e_ad[ad]; isAD >> m_w_ad[ad]; //printf("ad=%d atm=%s date=%s a=%g b=%g c=%g d=%g e=%g w=%g\n", // ad, atm.c_str(), date.c_str(), // m_a_ad[ad], // m_b_ad[ad], // m_c_ad[ad], // m_d_ad[ad], // m_e_ad[ad], // m_w_ad[ad]); } isAD.close(); printf("Number of ATMS = %d\n", getNAtms()); printf("Number of Dates = %d\n", getNDates()); printf("Number of Pairs = %d\n", getNPairs()); }