Пример #1
0
int main()
{ T2 *ag;
	T1 *aux;
	FILE*f;
	char id[61],ocupatie[50],annastere[3];
	int na;

	printf("Nume fisier: ", id);
	fflush(stdin); gets(id);


	f = fopen(id, "rt");
	if (!f) { printf("Eroare deschidere fisier %s\n", id); getch(); return -1; }
	fscanf(f, "%i", &na); /* citeste numar analize */
	ag = Aloc(20, na);
	if(!ag){ printf("Eroare alocare"); getch(); return -2; }
	ag->nc = Cit(f, ag);
	fclose(f);
	if (ag->nc == 0){ printf("Fisier vid!!!\n"); getch(); return -3;}
	printf("%i persoane\n", ag->nc);
	Afi(ag);
	qsort(ag->a1, ag->nc, sizeof(T1), Ord);

	annastere[2]='\0';
	printf("\nIntroduceti anul nasterii:");
	scanf("%s",annastere);
	printf("Introduceti ocupatia:");
	scanf("%s",ocupatie);
	int nr;


	nr = Functie1(ag,annastere,ocupatie);
	if (nr<0) printf("Eroare");
	else printf("s-au scris %i linii",nr);





	/*  printf("\n Dupa sortare \n\n");
	    for(aux = ag->a1; aux < ag->a1 + ag->nc; aux++){
	    printf("%c%c: %s  %c%c,%i \n",aux->cj[13],aux->cj[14], aux->id ,aux->cj[2],aux->cj[3], aux->gs);

	    } printez dupa sortare cu functia afi */

	// Elib(&ag);
	printf("\nSfarsit program\n");
	getch();
}
Пример #2
0
void WFMCSingleOMP::resetRun()
{
  ///Set up a PropertyHistory for the energy to be recorded
  Eindex=0;
  MCWalkerConfiguration::iterator Cit(W.begin()), Cit_end(W.end());
  Eindex = (*Cit)->addPropertyHistory(nSteps);
  Cit++;
  while (Cit!=Cit_end)
  {
    (*Cit)->addPropertyHistory(nSteps);
    Cit++;
  }
  makeClones(W,Psi,H);
  //determine dump period for walkers
  int samples_tot=W.getActiveWalkers()*nBlocks*nSteps*myComm->size();
  myPeriod4WalkerDump=(nTargetSamples>0)?samples_tot/nTargetSamples:Period4WalkerDump;
  //fall back to the default
  if (myPeriod4WalkerDump==0)
    myPeriod4WalkerDump=Period4WalkerDump;
  if (QMCDriverMode[QMC_WARMUP])
    myPeriod4WalkerDump=nBlocks*nSteps;
  int samples_th=nTargetSamples/myComm->size()/NumThreads;
  for (int ip=0; ip<NumThreads; ++ip)
  {
    wClones[ip]->clearEnsemble();
    wClones[ip]->setNumSamples(samples_th);
  }
  app_log() << "  Samples are dumped at every " << myPeriod4WalkerDump << " step " << endl;
  app_log() << "  Total Sample Size =" << nTargetSamples
            << "\n  Sample size per node per thread = " << samples_th << endl;
  app_log() << "  Warmup Steps " << myWarmupSteps << endl;
  if (Movers.empty())
  {
    Movers.resize(NumThreads,0);
    branchClones.resize(NumThreads,0);
    estimatorClones.resize(NumThreads,0);
    Rng.resize(NumThreads,0);
    int nwtot=(W.getActiveWalkers()/NumThreads)*NumThreads;
    FairDivideLow(nwtot,NumThreads,wPerNode);
    app_log() << "  Initial partition of walkers ";
    std::copy(wPerNode.begin(),wPerNode.end(),ostream_iterator<int>(app_log()," "));
    app_log() << endl;
    #pragma omp parallel for
    for (int ip=0; ip<NumThreads; ++ip)
    {
      estimatorClones[ip]= new EstimatorManager(*Estimators);//,*hClones[ip]);
      estimatorClones[ip]->resetTargetParticleSet(*wClones[ip]);
      estimatorClones[ip]->setCollectionMode(false);
      Rng[ip]=new RandomGenerator_t(*(RandomNumberControl::Children[ip]));
      hClones[ip]->setRandomGenerator(Rng[ip]);
      branchClones[ip] = new BranchEngineType(*branchEngine);
      if (reweight=="yes")
        Movers[ip]=new WFMCUpdateAllWithReweight(*wClones[ip],*psiClones[ip],*hClones[ip],*Rng[ip],nSteps,Eindex);
      else
        if (UseDrift == "yes")
          Movers[ip]=new VMCUpdateAllWithDrift(*wClones[ip],*psiClones[ip],*hClones[ip],*Rng[ip]);
        else
          Movers[ip]=new VMCUpdateAll(*wClones[ip],*psiClones[ip],*hClones[ip],*Rng[ip]);
    }
  }
  #pragma omp parallel  for
  for (int ip=0; ip<NumThreads; ++ip)
  {
    Movers[ip]->put(qmcNode);
    Movers[ip]->resetRun(branchClones[ip],estimatorClones[ip]);
    Movers[ip]->initWalkers(W.begin()+wPerNode[ip],W.begin()+wPerNode[ip+1]);
    for (int prestep=0; prestep<myWarmupSteps; ++prestep)
      Movers[ip]->advanceWalkers(W.begin()+wPerNode[ip],W.begin()+wPerNode[ip+1],true);
  }
  myWarmupSteps=0;
  //Used to debug and benchmark opnemp
  //#pragma omp parallel for
  //    for(int ip=0; ip<NumThreads; ip++)
  //    {
  //      Movers[ip]->benchMark(W.begin()+wPerNode[ip],W.begin()+wPerNode[ip+1],ip);
  //    }
}