Пример #1
0
  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;
    }
  }
Пример #2
0
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");
}
Пример #3
0
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");
}
Пример #4
0
  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;
    }
  }
Пример #5
0
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;
    }
}