/* menu */ void cmpdir (void) { register struct file *f, *of; register dir *d, *od; struct file *end, *oend; int cmp; d = left; od = right; end = d->d.cat + d->d.num; oend = od->d.cat + od->d.num; for (of=od->d.cat; of<oend; ++of) if ((of->mode & S_IFMT) == (unsigned) S_IFREG) of->tag = 1; for (f=d->d.cat; f<end; ++f) if ((f->mode & S_IFMT) == (unsigned) S_IFREG) f->tag = 1; for (f=d->d.cat, of=od->d.cat; of<oend; ++of) { while ((cmp = compfile (f, of)) < 0) if (++f >= end) goto breakloop; if (! of->tag || ! f->tag) continue; if (cmp || f->size != of->size) continue; if (cmpfil (d->d.cwd, f->name, od->d.cwd, of->name)) f->tag = of->tag = 0; } breakloop: counttag (d); counttag (od); }
int Readparams::read(int argc, char *argv[]){ namespace po = boost::program_options; po::options_description desc("Options"); desc.add_options() ("infile1", po::value<std::string>()->required(),"input file 1") ("infile2", po::value<std::string>(),"input file 2") ("o,o", po::value<std::string>()->default_value("save.hdf5"),"output file") ("n,n", po::value<int>(&nPoints)->default_value(16384),"no. of integration points") ("i,i", po::value<std::string>()->default_value("init.hdf5"),"File with initial positions") ("N,N", po::value<int>(&Npart), "no. of particles to integrate") ("e,e", po::value<double>( &endTime)->default_value(5e18), "End time of integration in s") ("Firstpass,F", po::value<bool> () -> default_value(false), "First or second pass") //("dt,dt", po::value<double>(& dt) -> default_value(3e13), "Time Step") ("verbose,v", po::value<bool> (& verbose) -> default_value(false), "Verbosity") ("test,", po::value<bool> (& test) -> default_value(false), "Write test potentials") ("tol,", po::value<double>(& tol) -> default_value(1e-12), "Relative tolerance for integration"); po::positional_options_description positionalOptions; positionalOptions.add("infile1",1); positionalOptions.add("infile2",1); po::variables_map vm; po::store(po::command_line_parser(argc,argv).options(desc).positional(positionalOptions).run(),vm); po::notify(vm); infilename1=strdup(vm["infile1"].as<std::string>().c_str()); initfilename=strdup(vm["i"].as<std::string>().c_str()); outfilename=strdup(vm["o"].as<std::string>().c_str()); saveint = nPoints / NumSavepoints; /* Print some info */ std::cout << "Output file is: " << vm["o"].as<std::string>() << "\n"; std::cout << "No. of time points/ save points = " << nPoints <<","<< NumSavepoints <<"\n"; std::cout << "Save Interval = " << saveint << "\n"; std::cout << "Rtol = " << tol << "\n"; std::cout << "NLIM,LLIM,NDIM=" << NLIM <<","<< LLIM << "," << NDIM << "\n"; std::cout << "G="<< GRAVITY << "\n" << "\n"; if (vm.count("infile2")){ std::cout << "2 coefficient files given, 2 component model assumed\n"; NumComponents=2; twocomp=true; infilename2=strdup(vm["infile2"].as<std::string>().c_str()); } firstpass=vm["Firstpass"].as<bool>(); std::ofstream compfile("components.param"); if (compfile.is_open()){ if (vm.count("infile2")) compfile << "2"; else compfile << "1"; compfile.close(); } return 0; }