Example #1
0
// #################################################################
// 物体に働く力の履歴の出力
void History::printHistoryForce(FILE* fp, const REAL_TYPE* force)
{
  fprintf(fp, "%8d %14.6e", step, printTime());
  fprintf(fp, " %12.4e  %12.4e  %12.4e", printForce(force[0]), printForce(force[1]), printForce(force[2]) );
  
  fprintf(fp, "\n");
  fflush(fp);
}
Example #2
0
//-----------------------------------------------------------------------//
void CIO::readForceFile(const string & strFile)
{
   ifstream ifFileStream;
   
   // open the file with name strParamFile
   ifFileStream.open(strFile.c_str());
   
   // if the file doesnt exists, exit 
   if (!ifFileStream.is_open()) throw CUnknownIOFile(strFile);   

   string strLine, strSubLine;

   while (!ifFileStream.eof()) // skip comments and empty lines till the header
   {
      getline(ifFileStream,strLine);      

      strSubLine = removeSpace(strLine); 

      if (0 == strSubLine.compare(0,1,"")) continue; // ignore possible empty lines      

      if ('!' != strLine[0]) break; // header
   } 

   if ( 0 == strLine.find("atom__res_radius") || 0 == strLine.find("atom__resnumbc_radius_") )
      cout << "\n" << "atom radii read from file " << strFile << "\n"; 
   else if ( 0 == strLine.find("atom__res_charge") || 0 == strLine.find("atom__resnumbc_charge_") )
      cout << "\n" << "atomic charges read from file " << strFile << "\n";
   else
      throw CUnknownForceFileHeader(strFile,strLine);

   ifFileStream.clear(); ifFileStream.seekg(0); // rewind

   while (!ifFileStream.eof()) // skip and print comments (start with !) till the header
   {
      getline(ifFileStream,strLine);      

      strSubLine = removeSpace(strLine); 

      if (0 == strSubLine.compare(0,1,"")) continue; // ignore possible empty lines      

      if ('!' != strLine[0]) break; // header
      
      cout << strLine << endl; // print comments
   }

   // determine file format 

   // isPK = false:
   // atom(a6),residue(a3),radius(f8.4): aaaaaarrrfff.ffff
   // isPK = true:
   // atom(a6),residue(a3),residue_number(a4),subunit(a1),radius(f8.4):
   // aaaaaarrrnnnncfff.ffff 
   if (0 == strLine.find("atom__res_radius") || 0 == strLine.find("atom__resnumbc_radius_"))
   {
      if (0 == strLine.find("atom__res_radius")) 
      {
         readFileInNotPKFormat(ifFileStream,SIZEFILE);  
   
#ifdef DEBUG_IO_SIZE
         printForce(SIZEFILE);
#endif   
      }
      else if (0 == strLine.find("atom__resnumbc_radius_")) 
      {
         cout << "reading pK style radius file \n";
         readFileInPKFormat(ifFileStream,SIZEFILE);

#ifdef DEBUG_IO_SIZE
         printForce(SIZEFILE);
#endif
      }
    
      iRadiusNum = prgas.size(); // # of entries in radius file
      cout << "# of radius parameter records: \t\t" << iRadiusNum << "\n";      
   }     
   else // 0 == strLine.find("atom__res_charge") ||  
        // 0 == strLine.find("atom__resnumbc_charge_")
   {
      if (0 == strLine.find("atom__res_charge"))
      {  
         readFileInNotPKFormat(ifFileStream,CHARGEFILE);     

#ifdef DEBUG_IO_CHARGE
         printForce(CHARGEFILE);
#endif
      }
      else if (0 == strLine.find("atom__resnumbc_charge_"))
      {
         cout << "reading pK style charge file \n";
         readFileInPKFormat(ifFileStream,CHARGEFILE);

#ifdef DEBUG_IO_CHARGE
         printForce(CHARGEFILE);
#endif
      }
      
      iCrgNum = prgac.size(); // # of entries in charge file
      cout << "# of charge parameter records: \t\t" << iCrgNum << "\n";         
   }   

   ifFileStream.close();
}