void PointwiseAvgIlana::Observe(const DataBox& box, const double /* TimeForDumpFiles */, const std::string& FirstColumnInDatFiles) const { DataBoxAccess boxA(box, "Observers::PointwiseAvgIlana::Observe"); const Domain& D = boxA.Get<Domain>("Domain"); // find total of points in domain, and number of points double sum = 0.0; int numpts = 0; for(int sd=0;sd<D.Size();++sd) { const Tensor<DataMesh>& Input = boxA[sd].Get<Tensor<DataMesh> >(mInput); for(Tensor<DataMesh>::const_iterator i=Input.begin();i!=Input.end();++i) { for(int j=0;j<(*i).Size();++j) sum += (*i)[j]; // asterisk means a pointer to i numpts += (*i).Size(); } } sum = MPreduceAdd(sum,D.Communicator()); numpts = MPreduceAdd(numpts,D.Communicator()); // Output the average if(D.Communicator().Rank()==0) { std::ofstream out(mFileName.c_str(),std::ios::app); out << FirstColumnInDatFiles << " " << sum/numpts << std::endl; } }
int main(int argc,char** argv) { clientResetScene(); SimdMatrix3x3 basisA; basisA.setIdentity(); SimdMatrix3x3 basisB; basisB.setIdentity(); objects[0].m_worldTransform.setBasis(basisA); objects[1].m_worldTransform.setBasis(basisB); SimdPoint3 points0[3]={SimdPoint3(1,0,0),SimdPoint3(0,1,0),SimdPoint3(0,0,1)}; SimdPoint3 points1[5]={SimdPoint3(1,0,0),SimdPoint3(0,1,0),SimdPoint3(0,0,1),SimdPoint3(0,0,-1),SimdPoint3(-1,-1,0)}; BoxShape boxA(SimdVector3(1,1,1)); BoxShape boxB(SimdVector3(0.5,0.5,0.5)); //ConvexHullShape hullA(points0,3); //hullA.setLocalScaling(SimdVector3(3,3,3)); //ConvexHullShape hullB(points1,4); //hullB.setLocalScaling(SimdVector3(4,4,4)); objects[0].m_collisionShape = &boxA;//&hullA; objects[1].m_collisionShape = &boxB;//&hullB; CollisionDispatcher dispatcher; //SimpleBroadphase broadphase; SimdVector3 worldAabbMin(-1000,-1000,-1000); SimdVector3 worldAabbMax(1000,1000,1000); AxisSweep3 broadphase(worldAabbMin,worldAabbMax); collisionWorld = new CollisionWorld(&dispatcher,&broadphase); collisionWorld->AddCollisionObject(&objects[0]); collisionWorld->AddCollisionObject(&objects[1]); return glutmain(argc, argv,screenWidth,screenHeight,"Collision Interface Demo"); }
int main(int argc,char** argv) { setCameraDistance(20.f); tr[0].setOrigin(SimdVector3(0.0013328250f,8.1363249f,7.0390840f)); tr[1].setOrigin(SimdVector3(0.00000000f,9.1262732f,2.0343180f)); //tr[0].setOrigin(SimdVector3(0,0,0)); //tr[1].setOrigin(SimdVector3(0,10,0)); SimdMatrix3x3 basisA; basisA.setValue(0.99999958f,0.00022980258f,0.00090992288f, -0.00029313788f,0.99753088f,0.070228584f, -0.00089153741f,-0.070228823f,0.99753052f); SimdMatrix3x3 basisB; basisB.setValue(1.0000000f,4.4865553e-018f,-4.4410586e-017f, 4.4865495e-018f,0.97979438f,0.20000751f, 4.4410586e-017f,-0.20000751f,0.97979438f); tr[0].setBasis(basisA); tr[1].setBasis(basisB); SimdVector3 boxHalfExtentsA(1.0000004768371582f,1.0000004768371582f,1.0000001192092896f); SimdVector3 boxHalfExtentsB(3.2836332321166992f,3.2836332321166992f,3.2836320400238037f); BoxShape boxA(boxHalfExtentsA); BoxShape boxB(boxHalfExtentsB); shapePtr[0] = &boxA; shapePtr[1] = &boxB; SimdTransform tr; tr.setIdentity(); return glutmain(argc, argv,screenWidth,screenHeight,"Collision Demo"); }
void PointwiseAvg::Observe(const DataBox& box, const double /* TimeForDumpFiles */, const std::string& FirstColumnInDatFiles) const { // Compute average DataBoxAccess boxA(box,"Observers::PointwiseAvg::Observe"); const Domain& D = boxA.Get<Domain>("Domain"); double average = 0.0; for(int sd=0;sd<D.Size();++sd) { const Tensor<DataMesh>& Input = boxA[sd].Get<Tensor<DataMesh> >(mInput); for(Tensor<DataMesh>::const_iterator i=Input.begin();i!=Input.end();++i) { average += Input(*i); } } average = MPreduceMax(average,D.Communicator()); // Output the norm if(D.Communicator().Rank()==0) { std::ofstream out(mFileName.c_str(),std::ios::app); out << FirstColumnInDatFiles << " " << average << std::endl; } }
void Max::Observe(const DataBox& box, const double /* TimeForDumpFiles */, const std::string& FirstColumnInDatFiles) const { // Compute norm DataBoxAccess boxA(box,"Observers::Max::Observe"); // #2. const Domain& D = boxA.Get<Domain>("Domain"); // #3. double norm = 0.0; for(int sd=0; sd<D.Size(); ++sd) { const Tensor<DataMesh>& Input = boxA[sd].Get<Tensor<DataMesh> >(mInput); // #4. for(Tensor<DataMesh>::const_iterator i=Input.begin(); i!=Input.end(); ++i) { // #5. const double tmp = ::Max(*i); // #6. if(tmp>norm) norm = tmp; } } norm = MPreduceMax(norm,D.Communicator()); // #7. // Output the norm // #8. if(D.Communicator().Rank()==0) { std::ofstream out(mFileName.c_str(),std::ios::app); // #9. out << FirstColumnInDatFiles << " " << norm << std::endl; } }