void Bead_ParticleSet::CopyToBead(Bead& b,vector<TrialWaveFunction*> &Psi) { assert(R.size()==b.R.size()); assert(b.Drift.size()==Drift.size()); assert(BeadSignWgt.size()==b.BeadSignWgt.size()); assert(Gradients.size()==b.Gradients.size()); assert(Laplacians.size()==b.Laplacians.size()); assert(b.Action.size()==Action.size()); copy(BeadSignWgt.begin(),BeadSignWgt.end(),b.BeadSignWgt.begin()); for(int i=0; i<Gradients.size(); i++) *(b.Gradients[i]) = *Gradients[i]; for(int i=0; i<Laplacians.size(); i++) *(b.Laplacians[i])=*Laplacians[i]; for(int i=0; i<DriftVectors.size(); i++) *(b.DriftVectors[i]) = *DriftVectors[i]; b.TransProb[0]=TransProb[0]; b.TransProb[1]=TransProb[1]; for (int ipsi=0;ipsi<nPsi;ipsi++) for (int i=0;i<3;i++) b.Action(ipsi,i)=Action(ipsi,i); // b.Action=Action; b.Drift=Drift; b.R=R; b.Properties=Properties; b.Tau_eff = Tau_eff; b.ScaleDrift = ScaleDrift; }
void Bead_ParticleSet::CopyFromBead(Bead& b,vector<TrialWaveFunction*> &Psi) { assert(R.size()==b.R.size()); assert(BeadSignWgt.size()==b.BeadSignWgt.size()); assert(Gradients.size()==b.Gradients.size()); assert(Laplacians.size()==b.Laplacians.size()); assert(b.Action.size()==Action.size()); assert(b.Drift.size()==Drift.size()); R=b.R; copy(b.BeadSignWgt.begin(),b.BeadSignWgt.end(),BeadSignWgt.begin()); for(int i=0; i<b.Gradients.size(); i++) *Gradients[i] = *(b.Gradients[i]); for(int i=0; i<b.Laplacians.size(); i++) *Laplacians[i] = *(b.Laplacians[i]); for(int i=0; i<b.DriftVectors.size(); i++) *DriftVectors[i] = *(b.DriftVectors[i]); TransProb[0]=b.TransProb[0]; TransProb[1]=b.TransProb[1]; for (int ipsi=0;ipsi<nPsi;ipsi++) for (int i=0;i<3;i++) Action(ipsi,i)=b.Action(ipsi,i); // Action=b.Action; Drift=b.Drift; Tau_eff=b.Tau_eff; ScaleDrift = b.ScaleDrift; Properties=b.Properties; }
void Face::putBead(const Bead& bead) { NS_LOG_INFO (">> Bead: " << bead.getName()); shared_ptr<const Bead> beadPtr; try { beadPtr = bead.shared_from_this(); } catch (const bad_weak_ptr& e) { NS_LOG_INFO("Face::put WARNING: the supplied Data should be created using make_shared<Data>()"); beadPtr = make_shared<Bead>(bead); } m_impl->m_scheduler.scheduleEvent(time::seconds(0), [=] { m_impl->asyncPutBead(beadPtr); }); }
void AppFace::sendBead(const Bead& bead) { NS_LOG_FUNCTION(this << &bead); this->emitSignal(onSendBead, bead); // to decouple callbacks Simulator::ScheduleNow(&App::OnBead, m_app, bead.shared_from_this()); }
int main(int argc, char** argv){ double T; int R; double dt; int steps; double J; double Q; double Q2; double phi0; double tau0; double omega0; bool fail = 0; /* ---------------------------------------- / Robust variable sized input (start) /---------------------------------------- */ try{ if (argc < 2 || sscanf(argv[1],"%d",&steps) != 1){ fail = 1; } if (argc >= 3 && !fail){ if (sscanf(argv[2], "%lf", &dt) != 1){ fail = 1; } } else dt = .01; if (argc >= 4 && !fail){ if (sscanf(argv[3], "%lf", &J) != 1){ fail = 1; } } else J = 1.0; if (argc >= 5 && !fail){ if (sscanf(argv[4], "%lf", &Q) != 1){ fail = 1; } } else Q = 12.5; if (argc >= 6 && !fail){ if (sscanf(argv[5], "%lf", &Q2)!= 1){ fail = 1; } } else Q2 = 20.0; if (argc >= 7 && !fail){ if (sscanf(argv[6], "%lf", &T) != 1){ fail = 1; } } else T = 1.0; if (argc >= 8 && !fail){ if (sscanf(argv[7], "%d", &R) != 1){ fail = 1; } } else R = 32; if (argc >= 9 && !fail){ if (sscanf(argv[8], "%lf", &phi0) != 1){ fail = 1; } } else phi0 = .001; if (argc >= 10 && !fail){ if (sscanf(argv[9], "%lf", &tau0) != 1){ fail = 1; } } else tau0 = .001; if (argc >= 11&& !fail){ if (sscanf(argv[10], "%lf", &omega0) != 1){ fail = 1; } } else omega0 = .001; if (fail){ cout << printf("Use the following format: ./beads.o steps (dt) (J) (Q) (Q2) (T) (R) (phi0) (tau0) (omega0)\n **Note: the arguments in parentheses are optional.\n"); exit(1); } /* ---------------------------------------- / Robust variable sized input (end) /---------------------------------------- */ Bead b (phi0, tau0, omega0, dt); b.changeTrackSet(T,R,J,Q,Q2); for (int i = 0 ; i < steps ; i++){ b.heun_step(T,R,J,Q,Q2); } b.cout_phase(b.decide_phase()); return 0; }