Celsius Thermomether::read() const { auto&& device = ifstream( mDevice ); string line; vector< string > lines; while( getline( device, line ) ) lines.emplace_back( line ); if( lines.size() == 2 ) { if( lines[0].find( string{"YES"} ) != string::npos ) { static const string m{"t="}; auto pos = lines[1].find( m ); if( pos != string::npos ) { auto temp_str = lines[ 1 ].substr( pos + m.size() ); auto temp = stold( temp_str ); return { temp / 1000.0L }; } } } throw runtime_error{"Unable to read time"}; }
void MainWindow::onInterpolButtonClick() { try { dataManager->setInterpolPoint(stold(interpolPoint->get_text())); dataManager->interpolation(); resultLabel->set_text(dataManager->getResult()); interpolLabel->set_markup(dataManager->getFactors()); } catch (EmptyData const& e) { statusBar->set_label(e.what()); } catch (DuplicateNode const& e) { statusBar->set_label(e.what()); } }
void PositionData::pushline() { string inBuffer; string inData; std::getline(*this, inBuffer, '\t'); inData = stripQuotes(inBuffer); //int pos = atoi(inData.data()); intPosition.push_back(atoi(inData.data())); position.push_back(inData.data()); std::getline(*this, inBuffer, '\t'); inData = stripQuotes(inBuffer); if (inData[0] > 'Z') inData[0] = inData[0] - ('a' -'A'); refBase.push_back(inData.data()); std::getline(*this, inBuffer, '\t'); inData = stripQuotes(inBuffer); intCoverage.push_back(atoi(inData.data())); coverage.push_back(inData.data()); std::getline(*this, inBuffer, '\t'); inData = stripQuotes(inBuffer); quality.push_back(inData.data()); std::getline(*this, inBuffer, '\t'); inData = stripQuotes(inBuffer); if (inData[0] > 'Z') inData[0] = inData[0] - ('a' -'A'); psnp.push_back(inData.data()); std::getline(*this, inBuffer, '\t'); inData = stripQuotes(inBuffer); intPsnpCount.push_back(atoi(inData.data())); psnpCount.push_back(inData.data()); std::getline(*this, inBuffer, '\t'); inData = stripQuotes(inBuffer); psnpFrequ.push_back(inData.data()); std::getline(*this, inBuffer, '\n'); inData = stripQuotes(inBuffer); pValue.push_back(inData.data()); //long double ld = stold(inData.c_str()); ldPValue.push_back(stold(inData.c_str())); linesRead++; }
int main(int argc, char* argv[]) { int BoxX { }, BoxY { }, BoxZ { }, TypeA { }, TypeB { }, Arms { }; long int Steps_Start { }, Steps_Total { }, Steps_Output { }; double Temperature { }, Lambda { }, Shear { }, StepSize { }; bool MPC_on {false}; string s_para { }; stringstream ss_para { }, ss_para_new { }; Thermostat *thermostat{}; Hydrodynamics *hydrodynamics{}; s_para = std::string(argv[1]); if (!file_exists(s_para)) { std::cout << "input file does not exist"; return 1; } std::string find_this = "end_config"; std::string::size_type i = s_para.find(find_this); std::cout << i << std::endl; if (i != std::string::npos){ s_para.erase(i, find_this.length()); s_para.erase(0, i); } find_this = "./results/"; i = s_para.find(find_this); if (i != std::string::npos){ s_para.erase(i, find_this.length()); } find_this = ".pdb"; i = s_para.find(find_this); if (i != std::string::npos) s_para.erase(i, find_this.length()); ss_para << s_para; std::cout << s_para << std::endl; std::cout << find_parameter(s_para, "Shear") << std::endl; BoxX = stoi(find_parameter(s_para,"Lx")); BoxY = stoi(find_parameter(s_para,"Ly")); BoxZ = stoi(find_parameter(s_para,"Lz")); TypeA = stoi(find_parameter(s_para,"A")); TypeB = stoi(find_parameter(s_para,"B")); Arms = stoi(find_parameter(s_para,"Arms")); Steps_Start = stol(find_parameter(s_para,"run")); Temperature = stod(find_parameter(s_para,"T")); Shear = stod(find_parameter(s_para, "Shear")); Lambda = stod(find_parameter(s_para,"Lambda")); StepSize = stod(argv[2]); Steps_Total = Steps_Start + stold(argv[3]); Steps_Output = stold(argv[4]); if (find_parameter(s_para, "MPC").compare("ON") == 0) { MPC_on = true; } std::cout << "blubb" << std::endl; int arg { }; while (arg < argc) { if (strcmp(argv[arg], "MPC") == 0) { MPC_on = true; std::cout << arg << std::endl; if (arg +1 < argc) Shear = stod(argv[arg+1]); arg++; break; } arg++; } if (argc >= 8) { BoxX = stod(argv[5]); BoxY = stod(argv[6]); BoxZ = stod(argv[7]); } std::cout << "Type A: " << TypeA << " Type B: " << TypeB << " Arms: " << Arms << " Lambda: " << Lambda << std::endl; std::cout << "Temperature: " << Temperature << std::endl; std::cout << "Box Size: " << BoxX << " " << BoxY << " " << BoxZ << std::endl; std::cout << "Step Size: " << StepSize << std::endl; std::cout << "Start at: " << Steps_Start << " Stop at: " << Steps_Total << " Output every: " << Steps_Output << std::endl; if (MPC_on) { std::cout << "MPC is turned ON with shear rate: " << Shear << std::endl; } else std::cout << "MPC is turned OFF" << std::endl; ss_para_new.str(std::string()); ss_para_new.precision(0); ss_para_new << "_Star"; ss_para_new << "_A" << TypeA; ss_para_new << "_B" << TypeB; ss_para_new << "_Arms" << Arms; ss_para_new << "_Lx" << BoxX; ss_para_new << "_Ly" << BoxY; ss_para_new << "_Lz" << BoxZ; ss_para_new.precision(3); ss_para_new << "_Lambda" << Lambda; ss_para_new << "_T" << Temperature; ss_para_new << "_run" << scientific << Steps_Total; if (MPC_on) ss_para_new << "_MPCON_Shear" << Shear; else ss_para_new << "_MPCOFF"; ofstream statistic_file { }; FILE* config_file { }; string oldname = "./results/statistics"+ss_para.str()+".dat"; string newname = "./results/statistics"+ss_para_new.str()+".dat"; std::cout << oldname << std::endl; std::cout << newname << std::endl; rename(oldname.c_str(), newname.c_str()); string statistic_file_name = newname; oldname = "./results/config"+ss_para.str()+".pdb"; newname = "./results/config"+ss_para_new.str()+".pdb"; rename(oldname.c_str(), newname.c_str()); string config_file_name = newname; statistic_file.open(statistic_file_name, ios::out | ios::app); config_file = fopen(config_file_name.c_str(), "a"); Box box(BoxX, BoxY, BoxZ, Temperature, Lambda); if (argc > 1 && strcmp(argv[1], "Chain") == 0) { box.add_chain(TypeA, TypeB, 10.); std::cout << "building a chain" << std::endl; } else { box.add_star(std::string(argv[1]), TypeA, TypeB, Arms, 10.); std::cout << "building a star" << std::endl; } if (MPC_on) { thermostat = new Thermostat_None{ box, StepSize }; hydrodynamics = new MPC{box, Temperature, Shear}; } else { thermostat = new Andersen{box, StepSize, Temperature, 1999}; hydrodynamics = new Hydrodynamics_None{box}; } if (MPC_on) hydrodynamics -> initialize(); clock_t begin = clock(); std::cout << thermostat -> info() << std::endl; box.print_molecules(std::cout); for (long int n = Steps_Start + 1; n <= Steps_Total; ++n) { if (!(n%Steps_Output)) { thermostat -> propagate(true); std::cout << n << " "; box.print_Epot(std::cout); box.print_Ekin(std::cout); if (MPC_on) std::cout << hydrodynamics -> calculateCurrentTemperature() << " "; else box.print_Temperature(std::cout); std::list<unsigned> patches = box.calculate_patches(); int number_of_patches {0}; double av_patch_size {0.0}; for (auto& element : patches) { if (element > 1) { number_of_patches++; av_patch_size += element; } //std::cout << element << ' '; } if (number_of_patches > 0) av_patch_size /= number_of_patches; Matrix3d gyr_tensor = box.calculate_gyration_tensor(); std::cout << '\n'; box.print_PDB(config_file, n); statistic_file << n << " "; box.print_Epot(statistic_file); box.print_Ekin(statistic_file); box.print_Temperature(statistic_file); box.print_radius_of_gyration(statistic_file); statistic_file << number_of_patches << " " << av_patch_size << " "; for (int i = 0; i < gyr_tensor.size(); i++) { statistic_file << *(gyr_tensor.data()+i) << " "; } statistic_file << "\n"; //std::cout << '\n'; } else thermostat -> propagate(false); if (MPC_on && !(n%100)) { hydrodynamics -> step(0.1); } } FILE* end_config_file { }; string end_config_file_name = "./results/end_config"+ss_para_new.str()+".pdb"; end_config_file = fopen(end_config_file_name.c_str(), "w"); box.print_PDB(end_config_file, Steps_Total); clock_t end = clock(); //box.print_molecules(std::cout); std::cout << "time: " << double(end-begin)/CLOCKS_PER_SEC << std::endl; }
void Network::convertObjectEvents(CPacket packet, std::vector<ObjectEvents*>* eventList){ //cout << "packet type : " << packet.packet_type << endl; switch (packet.packet_type) { case INIT_CONNECTION: { ObjectEvents * e = new ObjectEvents(INIT_CONNECTION); string packetInfoStr = ""; int i; for (i = 0;; i++) { if (packet.data[i] != '\n') packetInfoStr += packet.data[i]; else { break; } } string name = packetInfoStr; //cout << name << endl; e->setName(packetInfoStr); //cout << e->getName() << endl; eventList->push_back(e); break; } case MOVE_LEFT: { ObjectEvents * e = new ObjectEvents(MOVE_LEFT); string packetInfoStr = ""; int i; for (i = 0;; i++) { if (packet.data[i] != '\n') packetInfoStr += packet.data[i]; else { break; } } //cout << packet.data << endl; //cout << "recieved string "<< packetInfoStr << endl; int cid = stoi(packetInfoStr); //cout << "recived cid = " << cid << endl; e->setCid(cid); eventList->push_back(e); break; } case MOVE_RIGHT: { //cout << "Move Right" << endl; ObjectEvents * e = new ObjectEvents(MOVE_RIGHT); string packetInfoStr = ""; int i; for (i = 0;; i++) { if (packet.data[i] != '\n') packetInfoStr += packet.data[i]; else { break; } } unsigned int cid = stoul(packetInfoStr); e->setCid(cid); eventList->push_back(e); break; } case MOVE_BACKWARD: { //cout << "Move Backward" << endl; ObjectEvents * e = new ObjectEvents(MOVE_BACKWARD); string packetInfoStr = ""; int i; for (i = 0;; i++) { if (packet.data[i] != '\n') packetInfoStr += packet.data[i]; else { break; } } unsigned int cid = stoul(packetInfoStr); e->setCid(cid); eventList->push_back(e); break; } case MOVE_FORWARD: { // cout << "Move Forward" << endl; ObjectEvents * e = new ObjectEvents(MOVE_FORWARD); string packetInfoStr = ""; int i; for (i = 0;; i++) { if (packet.data[i] != '\n') packetInfoStr += packet.data[i]; else { break; } } unsigned int cid = stoul(packetInfoStr); e->setCid(cid); eventList->push_back(e); break; break; } //case MOVE_UP: { // ObjectEvents * e = new ObjectEvents(MOVE_UP); // string packetInfoStr = ""; // int i; // for (i = 0;; i++) // { // if (packet.data[i] != '\n') // packetInfoStr += packet.data[i]; // else // { // break; // } // } // unsigned int cid = stoul(packetInfoStr); // e->setCid(cid); // eventList->push_back(e); // break; //} //case MOVE_DOWN: { // ObjectEvents * e = new ObjectEvents(MOVE_DOWN); // string packetInfoStr = ""; // int i; // for (i = 0;; i++) // { // if (packet.data[i] != '\n') // packetInfoStr += packet.data[i]; // else // { // break; // } // } // unsigned int cid = stoul(packetInfoStr); // e->setCid(cid); // eventList->push_back(e); // break; //} case SHOOT:{ ObjectEvents * e = new ObjectEvents(SHOOT); string packetInfoStr = ""; int i; for (i = 0;; i++) { if (packet.data[i] != '\n') packetInfoStr += packet.data[i]; else { break; } } unsigned int cid = stoul(packetInfoStr); e->setCid(cid); eventList->push_back(e); break; } case SUICIDE:{ ObjectEvents * e = new ObjectEvents(SUICIDE); string packetInfoStr = ""; int i; for (i = 0;; i++) { if (packet.data[i] != '\n') packetInfoStr += packet.data[i]; else { break; } } unsigned int cid = stoul(packetInfoStr); e->setCid(cid); eventList->push_back(e); break; } case BOOST: { ObjectEvents * e = new ObjectEvents(BOOST); string packetInfoStr = ""; int i; for (i = 0;; i++) { if (packet.data[i] != '\n') packetInfoStr += packet.data[i]; else { break; } } unsigned int cid = stoul(packetInfoStr); e->setCid(cid); eventList->push_back(e); break; } case BUILD_ROBOT: { //cout << "Received Build Robot Packet" << endl; ObjectEvents * e = new ObjectEvents(BUILD_ROBOT); string parseData = string(packet.data); //cout << parseData << endl; vector<string> splitByObject = vector<string>(); splitByObject.push_back(""); for (int i = 0; i < parseData.length(); i++) { //split by newline, each newline //cout << parseData.length() << endl; if (parseData[i] != '\n') splitByObject[splitByObject.size() - 1] += parseData[i]; else { splitByObject.push_back(""); } } //pop last empty string splitByObject.pop_back(); unsigned int cid; //cout << "splitSize" << splitByObject.size() << endl; for (int i = 0; i < splitByObject.size(); i++) { string objectInfo = splitByObject[i]; //split by space to get the information for each object size_t pos = 0; string token; /* while ((pos = objectInfo.find(" ")) != string::npos) { token = objectInfo.substr(0, pos); std::cout << token << std::endl; objectInfo.erase(0, pos + 1); } */ //CID pos = objectInfo.find(" "); token = objectInfo.substr(0, pos); //std::cout << token << std::endl; cid = stoul(token); e->setCid(cid); //cout << cid << endl; objectInfo.erase(0, pos + 1); //Object ID pos = objectInfo.find(" "); token = objectInfo.substr(0, pos); //std::cout << token << std::endl; unsigned int objId = stoul(token); objectInfo.erase(0, pos + 1); //position pos = objectInfo.find(" "); token = objectInfo.substr(0, pos); // std::cout << token << std::endl; float xPos = stold(token); objectInfo.erase(0, pos + 1); pos = objectInfo.find(" "); token = objectInfo.substr(0, pos); //std::cout << token << std::endl; float yPos = stold(token); objectInfo.erase(0, pos + 1); pos = objectInfo.find(" "); token = objectInfo.substr(0, pos); //std::cout << token << std::endl; float zPos = stold(token); objectInfo.erase(0, pos + 1); //rotation pos = objectInfo.find(" "); token = objectInfo.substr(0, pos); // std::cout << token << std::endl; float xRot = stold(token); objectInfo.erase(0, pos + 1); pos = objectInfo.find(" "); token = objectInfo.substr(0, pos); //std::cout << token << std::endl; float yRot = stold(token); objectInfo.erase(0, pos + 1); pos = objectInfo.find(" "); token = objectInfo.substr(0, pos); //std::cout << token << std::endl; float zRot = stold(token); objectInfo.erase(0, pos + 1); //block type pos = objectInfo.find(" "); token = objectInfo.substr(0, pos); // std::cout << token << std::endl; float block_type = stold(token); objectInfo.erase(0, pos + 1); //contraints pos = objectInfo.find(" "); token = objectInfo.substr(0, pos); //std::cout << token << std::endl; float below = stold(token); objectInfo.erase(0, pos + 1); pos = objectInfo.find(" "); token = objectInfo.substr(0, pos); // std::cout << token << std::endl; float left = stold(token); objectInfo.erase(0, pos + 1); pos = objectInfo.find(" "); token = objectInfo.substr(0, pos); //std::cout << token << std::endl; float right = stold(token); objectInfo.erase(0, pos + 1); pos = objectInfo.find(" "); token = objectInfo.substr(0, pos); //std::cout << token << std::endl; float front = stold(token); objectInfo.erase(0, pos + 1); pos = objectInfo.find(" "); token = objectInfo.substr(0, pos); //std::cout << token << std::endl; float back = stold(token); objectInfo.erase(0, pos + 1); //stats pos = objectInfo.find(" "); token = objectInfo.substr(0, pos); ////std::cout << token << std::endl; int money = stold(token); objectInfo.erase(0, pos + 1); btQuaternion* q = convertEulerToQuaternion(xRot, yRot, zRot); GameObj* object; if (objId == 0) { object = new Robot((int)cid, "No Name"); object->setId(cid); object->setX(xPos); object->setY(yPos); object->setZ(zPos); object->setqX(q->getX()); object->setqY(q->getY()); object->setqZ(q->getZ()); object->setqW(q->getW()); object->setType(BOX); ((Robot*)object)->setCurrMoney(money); ((Robot*)object)->setWidth(3); ((Robot*)object)->setHeight(1); ((Robot*)object)->setDepth(3); } else { //cout << "not robot y: " << rotations.y() << " w " << rotations.w() << endl; object = new GOBox(xPos, yPos, zPos, q->getX(), q->getY(), q->getZ(), q->getW(), 10, 1, 1, 1); } delete q; object->setBlockType(block_type); object->setBuildID(objId); object->setBelowID(below); object->setLeftID(left); object->setRightID(right); object->setFrontID(front); object->setBackID(back); e->roboBuild.push_back(object); } splitByObject.clear(); eventList->push_back(e); break; } default:{ printf("error in packet types\n"); break; } } }
long double operator()(const std::string& s) { return stold(s); }