void Scene::save(const QString& filename) const { std::vector<Point> points; collect_visible_points(points); if (filename.contains(".dat", Qt::CaseInsensitive)) { save_dat(filename, points); return; } if (filename.contains(".txt", Qt::CaseInsensitive)) { save_txt(filename, points); return; } if (filename.contains(".eps", Qt::CaseInsensitive)) { save_eps(filename); return; } std::cout << red << "try (.dat, .txt, .eps) file format" << white << std::endl; }
/* * Save scene to file */ int scene::save(char *p_dir, char *p_file, SCENE_TYPE type) { int ret = 0; switch(type) { case SCENE_B2M: ret = save_b2m(p_dir,p_file); break; case SCENE_3DS: ret = save_3ds(p_dir,p_file); break; case SCENE_TXT: ret = save_txt(p_dir,p_file); break; } return(ret); }
vector<ComputationalCell> calc_init_cond(const Tessellation& tess, const FermiTable& eos, const InitialData& id, const Shape2D& cd) { save_txt("pressure_reference.txt",create_pressure_reference(eos,id)); vector<ComputationalCell> res(static_cast<size_t>(tess.GetPointNo())); const Interpolator density_interpolator(id.radius_mid, id.density_list); const Interpolator temperature_interpolator(id.radius_mid, id.temperature_list); const Interpolator velocity_interpolator(id.radius_list, id.velocity_list); map<string,Interpolator*> tracer_intepolators; for(map<string,vector<double> >::const_iterator it= id.tracers_list.begin(); it!=id.tracers_list.end(); ++it) tracer_intepolators[it->first] = new Interpolator(id.radius_mid, it->second); for(size_t i=0;i<res.size();++i){ res.at(i).density = id.density_list.back(); res.at(i).velocity = Vector2D(0,0); res.at(i).stickers["ghost"] = true; for(map<string,Interpolator*>::const_iterator it= tracer_intepolators.begin(); it!=tracer_intepolators.end(); ++it) res.at(i).tracers[it->first] = 0; res.at(i).tracers["He4"] = 1; res.at(i).pressure = eos.dt2p(res.at(i).density, id.temperature_list.back(), res.at(i).tracers); const Vector2D r = tess.GetCellCM(static_cast<int>(i)); const double radius = abs(r); /* if(radius<id.radius_list.front() || radius>id.radius_list.back()) continue; */ if(!cd(r)) continue; res.at(i).stickers["ghost"] = false; const double density = density_interpolator(radius); const double temperature = temperature_interpolator(radius); const double velocity = velocity_interpolator(radius); for(map<string,Interpolator*>::const_iterator it= tracer_intepolators.begin(); it!=tracer_intepolators.end(); ++it) res.at(i).tracers[it->first] = (*(it->second))(radius); const double pressure = eos.dt2p(density, temperature, res.at(i).tracers); res.at(i).density = density; res.at(i).pressure = pressure; res.at(i).velocity = r*velocity/radius; } for(map<string,Interpolator*>::iterator it= tracer_intepolators.begin(); it!=tracer_intepolators.end(); ++it) delete it->second; return res; }
main() { int i,n,k; int quit = 0,choice; ElmType key; char s[12]; FILE *f1,*f2; Llist *root,*p; newLlist(&root); while(quit == 0) { choice = menu(); switch(choice) { case 1: printf("How may people do you want to add? "); scanf("%d",&n); for(i = 0; i < n; i++) { key = makeData(); addLast(&root,key); } rmenu(); break; case 2: printList(root); rmenu(); break; case 3: printf("The position you want to delete: "); scanf("%d",&k); if(k < n && k > 0) delNode(&root,k); else printf("\nEnter position k(k >0 and k< %d) again.\n",n); rmenu(); break; case 4: printf("The position you want to insert: "); scanf("%d",&k); if(k < n && k > 0) { key = makeData(); addBefore(&root,k,key); } else printf("\nEnter position k(k >0 and k<= %d)again.\n",n); rmenu(); break; case 5: printf("The number you want to find: "); scanf("%s",s); p = search(root,s); if(p == NULL) printf("This number is n't in the list.\n"); else printf(" + Name: %s\n + Email: %s\n",p->key.name,p->key.mail); rmenu(); break; case 6: f1 = fopen("contact.txt","w"); f2 = fopen("contact.dat","wb"); save_txt(root,f1); saveDat(root,f2); fclose(f1); fclose(f2); rmenu(); break; case 7: LlistFree(root); printf("Have funny times!!\n"); quit++; break; default: printf("Please choose from 1 to 7.\n"); } } return 0; }