void 
OpenSteer::SharedPointerTest::testAssignment()
{
    // Testing assignment of shared pointers pointing to 0.
    {
        SharedPointer< SharedPointerTester< 0 > > sp0;
        SharedPointer< SharedPointerTester< 0 > > sp1( sp0 );
        CPPUNIT_ASSERT( 0 == sp0.get() );
        CPPUNIT_ASSERT( 0 == sp1.get() );
    }
    CPPUNIT_ASSERT_EQUAL( 0, SharedPointerTester< 0 >::static_counter_ );
    
    
    // Testing assignment to a shared pointer holding 0.
    {
        SharedPointerTester< 0 >* rawPointer = new SharedPointerTester< 0 >();
        SharedPointer< SharedPointerTester< 0 > > sp0;
        SharedPointer< SharedPointerTester< 0 > > sp1( rawPointer );
        SharedPointer< SharedPointerTester< 0 > > sp2( sp0 );
        
        sp0 = sp1;
        CPPUNIT_ASSERT( 2 == sp0.useCount() );
        CPPUNIT_ASSERT( 2 == sp1.useCount() );
        CPPUNIT_ASSERT_EQUAL( rawPointer, sp0.get() );
        CPPUNIT_ASSERT_EQUAL( rawPointer, sp1.get() );
        CPPUNIT_ASSERT( 0 == sp2.get() );
    }
    CPPUNIT_ASSERT_EQUAL( 0, SharedPointerTester< 0 >::static_counter_ );
    
    
    // Testing assignment that should lead to a  destruction.
    {
        SharedPointerTester< 0 >* rawPointer0 = new SharedPointerTester< 0 >();
        SharedPointerTester< 0 >* rawPointer1 = new SharedPointerTester< 0 >();
        CPPUNIT_ASSERT_EQUAL( 2, SharedPointerTester< 0 >::static_counter_ );
        
        SharedPointer< SharedPointerTester< 0 > > sp0( rawPointer0 );
        SharedPointer< SharedPointerTester< 0 > > sp1( rawPointer1 );
        sp1 = sp0;
        
        CPPUNIT_ASSERT_EQUAL( 1, SharedPointerTester< 0 >::static_counter_ );
        CPPUNIT_ASSERT( 2 == sp0.useCount() );
        CPPUNIT_ASSERT( 2 == sp1.useCount() );
        CPPUNIT_ASSERT_EQUAL( rawPointer0, sp0.get() );
        CPPUNIT_ASSERT_EQUAL( rawPointer0, sp1.get() );
    }
    CPPUNIT_ASSERT_EQUAL( 0, SharedPointerTester< 0 >::static_counter_ );
    
}
Exemple #2
0
int IconLabel::prepare(const QString &text, qreal scale, bool elided) {
  m_text = text;
  m_elided = elided;
  
  QHBoxLayout *layout = new QHBoxLayout;
  layout->setContentsMargins(0,0,0,0);
  setLayout(layout);

  m_label = new QLabel(text, this);
  QFont font = m_label->font();

  font.setPointSize(font.pointSize()*scale);
  m_label->setFont(font);
  if(!elided) 
    m_label->setWordWrap(true);
  else {
    QSizePolicy sp1(QSizePolicy::Ignored, QSizePolicy::Fixed);
    m_label->setSizePolicy(sp1);
  }

  QFontMetrics(m_label->font()).height();

  layout->addWidget(m_label, 1);
  return QFontMetrics(font).height();
}
Exemple #3
0
void testvector()
{

     std::vector<boost::shared_ptr<A> > v(10);
     
     A *pA = new A();
     
     A *pB = new A();
     
     boost::shared_ptr<A> sp1(pA);
     
     boost::shared_ptr<A> sp2(pB);
     
     std::cout<<"The Smartptr now has "<<sp1.use_count()<<" references\n";
     
     
     v[0] = sp1;
     std::cout<<"The Smartptr now has "<<sp1.use_count()<<" references\n";
     
     std::vector<boost::shared_ptr<A> > ::iterator k = v.begin();
     
     //v.erase(k);//删除第一个元素    
     //v.pop_back();
     v[0] = sp2;
     
     std::cout<<"The Smartptr now has "<<sp1.use_count()<<" references\n";
     
     // std::cout<<"vertor size :"<<v.len()<<" references\n";


}
void 
OpenSteer::SharedPointerTest::testComparisons()
{
    Super* rawSuperPointer0 = new Super();
    SharedPointer< Super > sp0( rawSuperPointer0 );
    
    Sub* rawSubPointer1 = new Sub();
    SharedPointer< Super > sp1( rawSubPointer1 );
    
    CPPUNIT_ASSERT( sp0 != sp1 );
    CPPUNIT_ASSERT( ( sp0 < sp1 ) || ( sp1 < sp0 ) );
    
    sp1 = sp0;
    
    CPPUNIT_ASSERT( sp0 == sp1 );
    CPPUNIT_ASSERT( !( sp0 < sp1 ) && !( sp1 < sp0 ) );
    
    sp0.reset();
    sp1.reset();
    
    CPPUNIT_ASSERT( sp0 == sp1 );
    // @todo Are these semantics really a good idea?
    CPPUNIT_ASSERT( ( sp0 < sp1 ) || ( sp1 < sp0 ) );
    
}
void
OpenSteer::SharedPointerTest::testInheritance()
{
    {
        Sub* rawSubPointer0 = new Sub();
        SharedPointer< Super > sp0( rawSubPointer0 );
        CPPUNIT_ASSERT_EQUAL( 1, Super::superCount_ );
    }
    CPPUNIT_ASSERT_EQUAL( 0, Super::superCount_ );
    
    {
        Super* rawSuperPointer0 = new Super();
        SharedPointer< Super > sp0( rawSuperPointer0 );
        CPPUNIT_ASSERT_EQUAL( 1, Super::superCount_ );
        CPPUNIT_ASSERT_EQUAL( 0, Sub::subCount_ );
        
        Sub* rawSubPointer0 = new Sub();
        SharedPointer< Sub > sp1( rawSubPointer0 );
        CPPUNIT_ASSERT_EQUAL( 2, Super::superCount_ );
        CPPUNIT_ASSERT_EQUAL( 1, Sub::subCount_ );
        
        
        sp0 = sp1;
        CPPUNIT_ASSERT_EQUAL( 1, Super::superCount_ );
        CPPUNIT_ASSERT_EQUAL( 1, Sub::subCount_ );
    }
    CPPUNIT_ASSERT_EQUAL( 0, Super::superCount_ );
    CPPUNIT_ASSERT_EQUAL( 0, Sub::subCount_ );
}
Exemple #6
0
void testmap()
{

    std::map<std::string, boost::shared_ptr<A> > m;
    
    A *pA = new A();
    
    A *pB = new A();
    
    boost::shared_ptr<A> sp1(pA);
    
    boost::shared_ptr<A> sp2(pB);  
    
    std::cout<<"The Smartptr now has "<<sp1.use_count()<<" references\n";
    
    
    m["1"] = sp1;
    std::cout<<"The Smartptr now has "<<sp1.use_count()<<" references\n";
    
    // std::vector<boost::shared_ptr<A> > ::iterator k = v.begin();
    
    //v.erase(k);//删除第一个元素    
    //v.pop_back();
    //v[0] = sp2;
    m["1"] = SMART_PTR_NULL_A;
    
    std::cout<<"The Smartptr now has "<<sp1.use_count()<<" references\n";
    
    // std::cout<<"vertor size :"<<v.len()<<" references\n";
    m["1"] = sp1;
    std::cout<<"The Smartptr now has "<<sp1.use_count()<<" references\n";

}
int main(int, const char * []) {
  IloEnv env;
  try {
    IloIntVarArray x(env);
    for (IloInt i = 0; i < 10; i++) {
      char name[6];
      sprintf(name, "X%ld", i);
      x.add(IloIntVar(env, 0, 100 - 2*(i / 2), name));
    }
    IloModel mdl(env);
    mdl.add(IloAllDiff(env, x));
    mdl.add(x);

    IloIntVarChooser varChooser   = ChooseSmallestCentroid(env);
    IloIntValueChooser valChooser = ChooseSmallestDistanceFromCentroid(env);
    IloSearchPhase sp1(env, x, varChooser, valChooser);

    IloIntVarEval   varEval       = Centroid(env);
    IloIntValueEval valEval       = DistanceFromCentroid(env);
    IloSearchPhase sp2(env, x, IloSelectSmallest(varEval),
                               IloSelectSmallest(valEval));

    // sp2 can have ties as two variable or values could evaluate
    // to the same values.  sp3 shows how to break these ties
    // choosing, for equivalent centroid and distance-to-centroid
    // evaluations, the lowest indexed variable in x and the
    // lowest value.
    IloVarSelectorArray selVar(env);
    selVar.add(IloSelectSmallest(varEval));
    selVar.add(IloSelectSmallest(IloVarIndex(env, x))); // break ties on index

    IloValueSelectorArray selValue(env);
    selValue.add(IloSelectSmallest(valEval));
    selValue.add(IloSelectSmallest(IloValue(env))); // break ties on smallest

    IloSearchPhase sp3(env, x, selVar, selValue);

    IloCP cp(mdl);
    cp.setParameter(IloCP::Workers, 1);
    cp.setParameter(IloCP::SearchType, IloCP::DepthFirst);
    cp.setParameter(IloCP::LogPeriod, 1);
    cp.out() << "Choosers" << std::endl;
    cp.solve(sp1);
    cp.out() << cp.domain(x) << std::endl;

    cp.out() << "Evaluators" << std::endl;
    cp.solve(sp2);
    cp.out() << cp.domain(x) << std::endl;
    cp.out() << "Evaluators (with tie-break)" << std::endl;
    cp.solve(sp3);
    cp.out() << cp.domain(x) << std::endl;

    cp.end();
  } catch (IloException & ex) {
    env.out() << "Caught: " << ex << std::endl;
  }
  env.end();
  return 0;
}
Exemple #8
0
/* main entry */
submain(int argc, char **argv)
{
	int c;

	/* get command line options */
	while ((c = getopt(argc, argv, "?")) != EOF)
	{
		/* get options */
		switch (c)
		{
		case '?':
			/* help message */
			usage(argv[0]);
			return(0);

		default:
			/* error */
			ERROR("invalid option.", EINVAL);
			usage(argv[0]);
			return(2);
		}
	}

	/* check if spectra and output file were given */
	if ((optind + 3) > argc)
	{
		ERROR("missing spectrum or output file.", EINVAL);
		usage(argv[0]);
		return(2);
	}

	/* create spectra */
	Spectrum sp1(argv[optind]);
	if ((errno = sp1.getStatus()) != OK)
	{
		ERRORS("spectrum constructor failed for spectrum.", 
			argv[optind], errno);
		exit(2);
	}
	Spectrum sp2(argv[optind+1]);
	if ((errno = sp2.getStatus()) != OK)
	{
		ERRORS("spectrum constructor failed for spectrum.", 
			argv[optind+1], errno);
		exit(2);
	}

	/* do correlation */
	Spectrum corrsp = correlation(sp1, sp2);
	
	/* write out spectrum */
	corrsp.writeSpectrum(argv[optind+2]);

	/* all done */
	return(0);
}
TEST(Test, Correction) {
  StringPiece s1(g_s1, sizeof(g_s1) - 1);
  StringPiece s2(g_s2, sizeof(g_s2) - 1);

  StringPiece sp1(g_s1, sizeof(g_s1) - 1);
  StringPiece sp2(g_s2, sizeof(g_s2) - 1);

  EXPECT_EQ(s1 == s2, sp1 == sp2);
  EXPECT_EQ(s1 != s2, sp1 != sp2);
  EXPECT_EQ(s1 < s2, sp1 < sp2);
  EXPECT_EQ(s1 <= s2, sp1 <= sp2);
  EXPECT_EQ(s1 > s2, sp1 > sp2);
  EXPECT_EQ(s1 >= s2, sp1 >= sp2);
}
Exemple #10
0
void test()
{
    boost::shared_ptr<implementation> sp1(new implementation());
    std::cout<<"The Sample now has "<<sp1.use_count()<<" references\n";

    boost::shared_ptr<implementation> sp2 = sp1;
    std::cout<<"The Sample now has "<<sp2.use_count()<<" references\n";
    
    //sp1.reset();
    std::cout<<"After Reset sp1. The Sample now has "<<sp2.use_count()<<" references\n";

    //sp2.reset();
    std::cout<<"After Reset sp2.\n";
}
Exemple #11
0
void test()
{
    boost::shared_ptr<A> sp1(new A());
    std::cout<<"The Smartptr now has "<<sp1.use_count()<<" references\n";
    
    boost::shared_ptr<A> sp2 = sp1;
    std::cout<<"The Smartptr now has "<<sp2.use_count()<<" references\n";
    
    sp1.reset();
    std::cout<<"After Reset sp1. The Smartptr now has "<<sp2.use_count()<<" references\n";
    
    sp2.reset();
    std::cout<<"After Reset sp2.\n";
}
Exemple #12
0
int main()
{
    shared_ptr<resource> sp0;
    show("empty object before reset", sp0);
    sp0.reset();
    show("empty object after reset", sp0);

    shared_ptr<resource> sp1(new resource(1));
    show("non-empty object before reset", sp1);
    sp1.reset();
    show("non-empty object after reset", sp1);

    return 0;
}
void 
OpenSteer::SharedPointerTest::testConstruction()
{
    // Testing automatic destruction of a raw pointer hold by a single 
    // shared pointer.
    CPPUNIT_ASSERT_EQUAL( 0, SharedPointerTester< 0 >::static_counter_ );
    
    SharedPointerTester< 0 >* rawPointer = new SharedPointerTester< 0 >();
    
    CPPUNIT_ASSERT_EQUAL( 1, SharedPointerTester< 0 >::static_counter_ );
    
    {
        SharedPointer< SharedPointerTester< 0 > > sp( rawPointer );
    }
    
    CPPUNIT_ASSERT_EQUAL( 0, SharedPointerTester< 0 >::static_counter_ );
    
    
    // Testing copy constructor.
    rawPointer = new SharedPointerTester< 0 >();
    
    {
        SharedPointer< SharedPointerTester< 0 > > sp0( rawPointer );
        CPPUNIT_ASSERT_EQUAL( 1, SharedPointerTester< 0 >::static_counter_ );
        CPPUNIT_ASSERT_EQUAL( static_cast<size_t>( 1 ), sp0.useCount() );
        {
                SharedPointer< SharedPointerTester< 0 > > sp1( sp0 );
                CPPUNIT_ASSERT_EQUAL( 1, SharedPointerTester< 0 >::static_counter_ );
                CPPUNIT_ASSERT_EQUAL( static_cast<size_t>( 2 ), sp0.useCount() );
                CPPUNIT_ASSERT_EQUAL( static_cast<size_t>( 2 ), sp1.useCount() );
                CPPUNIT_ASSERT_EQUAL( rawPointer, sp0.get() );
                CPPUNIT_ASSERT_EQUAL( rawPointer, sp1.get() );
        }
        CPPUNIT_ASSERT_EQUAL( 1, SharedPointerTester< 0 >::static_counter_ );
        CPPUNIT_ASSERT_EQUAL( static_cast<size_t>( 1 ), sp0.useCount() );
        CPPUNIT_ASSERT_EQUAL( rawPointer, sp0.get() );
    }
    CPPUNIT_ASSERT_EQUAL( 0, SharedPointerTester< 0 >::static_counter_ );
    
    
    // Testing construction of an empty shared pointer.
    {
        SharedPointer< SharedPointerTester< 0 > > sp0;
        CPPUNIT_ASSERT( 0 == sp0.get() );
    }

    
    CPPUNIT_ASSERT_EQUAL( 0, SharedPointerTester< 0 >::static_counter_ );
}
Exemple #14
0
void test3(){
	SharePtr<int> sp(new int(1));
	SharePtr<int> sp1(sp);
	SharePtr<int> sp5(sp);
	SharePtr<int> sp6(sp);
	SharePtr<int> sp7(sp);

	SharePtr<int> sp3(new int(2));
	SharePtr<int> sp4(sp3);
	SharePtr<int> sp8(sp3);
	SharePtr<int> sp9(sp3);
	SharePtr<int> sp10(sp3);

	//sp3 = sp1;
	//*sp3 = 20;
}
Exemple #15
0
int main(int argc, char * argv[]){
	Triangle t1(3,3,3,1,1);
	Square s1(6,2,2);
	Circle c1(7,3,3);
	Sphere sp1(10,4,4,4);
	Cube cu1(10,5,5,5);
	Tetrahedron te1(5,6,7,8,9,10,6,6,6);
	Cube cu2(5,7,7,7);
	Square s2(16,8,8);
	Circle c2(1,9,9);
	Circle c3(55,10,10);
	Square s3(3,11,11);
	Tetrahedron te2(3,3,3,3,3,3,12,12,12);
	
	Shape * arr = new Shape[12];
	arr[0] = t1;
	arr[1] = s1;
	arr[2] = c1;
	arr[3] = sp1;
	arr[4] = cu1;
	arr[5] = te1;
	arr[6] = cu2;
	arr[7] = s2;
	arr[8] = c2;
	arr[9] = c3;
	arr[10] = s3;
	arr[11] = te2;

	for(int i = 0; i < 11; ++i){
		cout << endl;
		if(arr[i].getT() == 2){
			cout << "2-D Shape Found" << endl;
			cout << "Points are: (" << arr[i].getX() << ", " << arr[i].getY() << ")" << endl;
			cout << "Area is: " << arr[i].getArea() << endl;
		}
		else{
			cout << "3-D Shape" << endl;
			cout << "At Pt: (" << arr[i].getX() << ", " << arr[i].getY() << ", " << arr[i].getZ() <<")" << endl;
			cout << "Surface Area is: " << arr[i].getSurface() << endl;
			cout << "Volume is: " << arr[i].getVolume() << endl;
		}
	}

	delete[] arr;

	return 0;
}
Exemple #16
0
int main()
{
    shared_ptr<resource> sp0(new resource(0));
    shared_ptr<resource> sp1(new resource(1));
    show("sp0 before swap", sp0);
    show("sp1 before swap", sp1);

    sp0.swap(sp1);
    show("sp0 after swap", sp0);
    show("sp1 after swap", sp1);

    swap(sp0, sp1);
    show("sp0 after second swap", sp0);
    show("sp1 after second swap", sp1);

    return 0;
}
Exemple #17
0
float calVelUpdateStepLen(const FwiParams &params,
    const float *wlt,
    const float *dobs,
    const float *derr,
    float epsil,
    const EnquistAbc2d &fmMethod,
    const ShotPosition &allSrcPos,
    const ShotPosition &allGeoPos
    )
{
  int nt = params.nt;
  int nz = params.nz;
  int nx = params.nx;
  int ng = params.ng;
  int ns = params.ns;

  std::vector<float> dcal(ng, 0); /* calculated/synthetic seismic data */
  std::vector<float> sp0(nz * nx); /* source wavefield p0 */
  std::vector<float> sp1(nz * nx); /* source wavefield p1 */
  std::vector<float> sp2(nz * nx); /* source wavefield p2 */

  std::vector<float> alpha1(ng, 0); /* numerator of alpha, length=ng */
  std::vector<float> alpha2(ng, 0); /* denominator of alpha, length=ng */

  for (int is = 0; is < ns; is++) {
    std::fill(sp0.begin(), sp0.end(), 0);
    std::fill(sp1.begin(), sp1.end(), 0);
    ShotPosition currSrcPos = allSrcPos.clip(is);

    for (int it = 0; it < nt; it++) {
      fmMethod.addSource(&sp1[0], &wlt[it], currSrcPos);
      fmMethod.stepForward(&sp0[0], &sp1[0], &sp2[0]);

      cycleSwap(sp0, sp1, sp2);

      fmMethod.recordSeis(&dcal[0], &sp0[0], allGeoPos);

      sum_alpha12(&alpha1[0], &alpha2[0], &dcal[0], &dobs[is * nt * ng + it * ng], &derr[is * ng * nt + it * ng], ng);
    }
  }

  float alpha = cal_alpha(&alpha1[0], &alpha2[0], epsil, ng);

  return alpha;
}
Exemple #18
0
int main()
{
    iset data;
    spi sp0(new int(0));
    spi sp1(new int(1));
    spi sp2(new int(2));
    spi sp3(sp1);
    spi sp4(new int(1));

    data.insert(sp0);
    data.insert(sp1);
    data.insert(sp2);
    lookup(data, sp1);
    lookup(data, sp3);
    lookup(data, sp4);

    return 0;
}
void
OpenSteer::SharedPointerTest::testSwap()
{
    Super* rawSuperPointer0 = new Super();
    SharedPointer< Super > sp0( rawSuperPointer0 );
    
    Super* rawSuperPointer1 = new Super();
    SharedPointer< Super > sp1( rawSuperPointer1 );
    
    CPPUNIT_ASSERT_EQUAL( 2, Super::superCount_ );
    
    sp0.swap( sp1 );
    
    CPPUNIT_ASSERT( rawSuperPointer0 == sp1.get() );
    CPPUNIT_ASSERT( rawSuperPointer1 == sp0.get() );
    CPPUNIT_ASSERT_EQUAL( 2, Super::superCount_ );
    
}
Exemple #20
0
//Create a triangle that contains all other vertices
Triangle createSuperTriangle(const std::vector<Vector2>& vertices)
{
	float M = vertices[0].mX;

	//Get max X and Y
	for (std::vector<Vector2>::const_iterator it = vertices.begin(); it != vertices.end(); ++it)
	{
		float xAbs = fabs(it->mX);
		float yAbs = fabs(it->mY);
		if (xAbs > M) M = xAbs;
		if (yAbs > M) M = yAbs;
	}

	//Create super triangle
	Vector2 sp1(10 * M, 0);
	Vector2 sp2(0, 10 * M);
	Vector2 sp3(-10 * M, -10 * M);

	return Triangle(sp1, sp2, sp3);
}
Exemple #21
0
void testwhile()
{
    A *pA = new A();
    boost::shared_ptr<A> sp1(pA);
    int i=0;

    while(i < 10)
    {
        i++;
        std::cout<<"begin The Smartptr now has "<<sp1.use_count()<<" references\n";
        {
             boost::shared_ptr<A> sp2 =  sp1;
             std::cout<<"in The Smartptr now has "<<sp1.use_count()<<" references\n";
        }
        std::cout<<"end The Smartptr now has "<<sp1.use_count()<<" references\n";


    }

}
Exemple #22
0
void testcopy()
{
    A *pA = new A();
    
    A *pB = new A();
    
    boost::shared_ptr<A> sp1(pA);
    
    boost::shared_ptr<A> sp2(pB);
    boost::shared_ptr<A> sp3;
    std::cout<<"testcopy The Smartptr now has "<<sp1.use_count()<<" references\n";
    
    sp3= sp1;
    std::cout<<"testcopy The Smartptr now has "<<sp1.use_count()<<" references\n";
    
    //sp3= sp2;
    
    std::cout<<"testcopy The Smartptr now has "<<sp1.use_count()<<" references\n";
    
}
int main()
{
  std::shared_ptr<int> sp1(new int(5));
  std::weak_ptr<int> wp1 = sp1;  // sp1 owns the memory.
   
  {
    std::shared_ptr<int> sp2 = wp1.lock();  // Now sp1 and sp2 own the memory.
    if (sp2)  // Always check to see if the memory still exists.
    { 
      std::cout << "Do something with sp2." << std::endl;
    }
  } // sp2 is destroyed.  Memory is owned by sp1.
   
  sp1.reset(); // Memory is deleted.
   
  std::shared_ptr<int> sp3 = wp1.lock();  // Memory is gone, so we get an empty
  if (sp3)                                // shared_ptr.
  {
    // Will not execute this.
    std::cout << "This should NOT be printed!" << std::endl;
  }
}
Exemple #24
0
void testSharePtrFree()
{
	SharedPtr<int,Free<int>> sp1((int *)malloc(sizeof(int)*10));
	SharedPtr<int,Free<int>> sp2(sp1);
}
Exemple #25
0
void testSharePtrDelete()
{
	SharedPtr<int> sp1(new int(5));
	SharedPtr<int> sp2(sp1);
}
Exemple #26
0
bool ossimImageUtil::initialize(ossimArgumentParser& ap)
{
   static const char M[] = "ossimImageUtil::initialize(ossimArgumentParser&)";
   if ( traceDebug() )
   {
      ossimNotify(ossimNotifyLevel_DEBUG) << M << " entered...\n";
   }

   bool result = true;

   if ( (ap.argc() == 1) || ap.read("-h") || ap.read("--help") )
   {
      usage(ap);

      // continue_after_init to false
      result = false;
   }
   else
   {
      //---
      // Start with clean options keyword list.
      //---
      m_kwl->clear();

      while ( 1 ) //  While forever loop...
      {
         // Used throughout below:
         std::string ts1;
         ossimArgumentParser::ossimParameter sp1(ts1);
         std::string ts2;
         ossimArgumentParser::ossimParameter sp2(ts2);

         if( ap.read("-a") || ap.read("--include-fullres") )
         {
            setCopyAllFlag( true );
            if ( ap.argc() < 2 )
            {
               break;
            }
         }

         if( ap.read("--compression-quality", sp1) )
         {
            if ( ts1.size() )
            {
               setCompressionQuality( ts1 );
            }
            if ( ap.argc() < 2 )
            {
               break;
            }
         }

         if( ap.read("--compression-type", sp1) )
         {
            if ( ts1.size() )
            {
               setCompressionType( ts1 );
            }
            if ( ap.argc() < 2 )
            {
               break;
            }
         }
         
         if( ap.read("--ch") || ap.read("--create-histogram") )
         {
            setCreateHistogramFlag( true );
            if ( ap.argc() < 2 )
            {
               break;
            }
         }
         
         if( ap.read("--chf") || ap.read("--create-histogram-fast") )
         {
            setCreateHistogramFastFlag( true );
            if ( ap.argc() < 2 )
            {
               break;
            }
         }
         
         if( ap.read("--create-histogram-r0") )
         {
            setCreateHistogramR0Flag( true );
            if ( ap.argc() < 2 )
            {
               break;
            }
         }
         
         if( ap.read("-d", sp1) )
         {
            setOutputDirectory( ts1 );
            if ( ap.argc() < 2 )
            {
               break;
            }
         }

         if( ap.read("--dump-filtered-image-list") )
         {
            setDumpFilteredImageListFlag( true );
            if ( ap.argc() < 2 )
            {
               break;
            }
         }

         if( ap.read("-i") || ap.read("--internal-overviews") )
         {
            setInternalOverviewsFlag( true );
            if ( ap.argc() < 2 )
            {
               break;
            }
         }

         if( ap.read("--of") || ap.read("--output-files") )
         {
            setOutputFileNamesFlag( true );
            if ( ap.argc() < 2 )
            {
               break;
            }
         }
         
         if( ap.read("-o") )
         {
            setCreateOverviewsFlag( true );
            if ( ap.argc() < 2 )
            {
               break;
            }
         }        
         
         if( ap.read("--ot", sp1) )
         {
            setOverviewType( ts1 );
            if ( ap.argc() < 2 )
            {
               break;
            }
         }

         if( ap.read("--override-filtered-images") )
         {
            setOverrideFilteredImagesFlag( true );
            if ( ap.argc() < 2 )
            {
               break;
            }
         }
         
         if( ap.read("-r") || ap.read("--rebuild-overviews") )
         {
            setRebuildOverviewsFlag( true );
            if ( ap.argc() < 2 )
            {
               break;
            }
         }

         if( ap.read("--rebuild-histogram") )
         {
            setRebuildHistogramFlag( true );
            if ( ap.argc() < 2 )
            {
               break;
            }
         }

         while(ap.read("--reader-prop", sp1))
         {
            if (ts1.size())
            {
               std::string key = READER_PROP_KW;
               key += ossimString::toString( getNextReaderPropIndex() ).string();
               addOption( key, ts1 );
            }
         }
         if ( ap.argc() < 2 )
         {
            break;
         }
         
         if( ap.read("--scanForMinMax" ) )
         {
            setScanForMinMax( true );
            if ( ap.argc() < 2 )
            {
               break;
            }
         }

         if( ap.read("--scanForMinMaxNull" ) )
         {
            setScanForMinMaxNull( true );
            if ( ap.argc() < 2 )
            {
               break;
            }
         }
         
         if( ap.read("-s", sp1) )
         {
            setOverviewStopDimension( ts1 );
            if ( ap.argc() < 2 )
            {
               break;
            }
         }

         if ( ap.read("-tile-size", sp1))
         {
            setTileSize( ossimString(ts1).toInt32() );
            if ( ap.argc() < 2 )
            {
               break;
            }
         }

         if( ap.read("--threads", sp1) )
         {
            m_kwl->addPair( THREADS_KW, ts1 );
            if ( ap.argc() < 2 )
            {
               break;
            }
         }

         while(ap.read("--writer-prop", sp1))
         {
            if (ts1.size())
            {
               std::string key = WRITER_PROP_KW;
               key += ossimString::toString( getNextWriterPropIndex() ).string();
               addOption( key, ts1 );
            }
         }
         if ( ap.argc() < 2 )
         {
            break;
         }

         // End of arg parsing.
         ap.reportRemainingOptionsAsUnrecognized();
         if ( ap.errors() )
         {
            ap.writeErrorMessages(ossimNotify(ossimNotifyLevel_NOTICE));
            std::string errMsg = "Unknown option...";
            throw ossimException(errMsg);
         }

         break; // Break from while forever.
         
      } // End while (forever) loop.

      if(ap.argc() > 1)
      {
         for (ossim_int32 i = 0; i < (ap.argc()-1); ++i)
         {
            ossimString kw = "file";
            kw += ossimString::toString(i);
            std::string value = ap[i+1];
            m_kwl->addPair(kw.string(), value, true);
         }
      }
      else
      {
         if ( getDumpFilterImagesFlag() )
         {
            // Caller wants to see filtered image names:
            dumpFilteredImageList();
         }
         else
         {
            usage(ap);
            result = false;
         }
      }

   } // not usage

   if ( traceDebug() )
   {
      ossimNotify(ossimNotifyLevel_DEBUG)
         << "m_kwl:\n" << *(m_kwl.get()) << "\n"
         << M << " exit result = " << (result?"true":"false")
         << "\n";
   }
   
   return result;
}
Exemple #27
0
bool ossimViewshedUtil::initialize(ossimArgumentParser& ap)
{
   // Base class first:
   if (!ossimUtility::initialize(ap))
      return false;

   std::string ts1;
   ossimArgumentParser::ossimParameter sp1(ts1);
   std::string ts2;
   ossimArgumentParser::ossimParameter sp2(ts2);
   std::string ts3;
   ossimArgumentParser::ossimParameter sp3(ts3);

   if (ap.read("--dem", sp1) || ap.read("--dem-file", sp1))
      m_demFile = ts1;

   if ( ap.read("--fov", sp1, sp2) )
   {
      m_startFov = ossimString(ts1).toDouble();
      m_stopFov = ossimString(ts2).toDouble();
      if (m_startFov < 0)
         m_startFov += 360.0;
   }

   if ( ap.read("--gsd", sp1) )
      m_gsd = ossimString(ts1).toDouble();

   if ( ap.read("--hgt-of-eye", sp1) || ap.read("--height-of-eye", sp1) )
      m_obsHgtAbvTer = ossimString(ts1).toDouble();

   if ( ap.read("--horizon", sp1) || ap.read("--horizon-file", sp1))
      m_horizonFile = ossimString(ts1);

   if ( ap.read("--lut", sp1) || ap.read("--lut-file", sp1))
      m_lutFile = ts1;

   if ( ap.read("--observer", sp1, sp2) )
   {
      m_observerGpt.lat = ossimString(ts1).toDouble();
      m_observerGpt.lon = ossimString(ts2).toDouble();
      m_observerGpt.hgt = 0.0;
   }

   if ( ap.read("--radius", sp1) )
      m_visRadius = ossimString(ts1).toDouble();

   if ( ap.read("--reticle", sp1) )
      m_reticleSize = ossimString(ts1).toInt32();

   if ( ap.read("--tbs") )
      m_threadBySector = true;

   if ( ap.read("--simulation") )
      m_simulation = true;

   if ( ap.read("--summary") )
      m_outputSummary = true;

   if ( ap.read("--size", sp1) )
      m_halfWindow = ossimString(ts1).toUInt32() / 2;

   if ( ap.read("--threads", sp1) )
      m_numThreads = ossimString(ts1).toUInt32();

   if ( ap.read("--values", sp1, sp2, sp3) )
   {
      m_visibleValue = ossimString(ts1).toUInt8();
      m_hiddenValue = ossimString(ts2).toUInt8();
      m_observerValue = ossimString(ts3).toUInt8();
   }

   // There should only be the required command line args left:
   if ( (m_observerGpt.hasNans() && (ap.argc() != 4)) ||
        (!m_observerGpt.hasNans() && (ap.argc() != 2)) )
   {
      setUsage(ap);
      return false;
   }

   // Verify minimum required args were specified:
   if (m_demFile.empty() && (m_visRadius == 0) && (m_halfWindow == 0))
   {
      ossimNotify(ossimNotifyLevel_WARN)
                  << "ossimViewshedUtil::initialize ERR: Command line is underspecified."
                  << std::endl;
      setUsage(ap);
      return false;
   }

   // Parse the required command line params:
   int ap_idx = 1;
   if (m_observerGpt.hasNans())
   {
      m_observerGpt.lat =  ossimString(ap[1]).toDouble();
      m_observerGpt.lon =  ossimString(ap[2]).toDouble();
      m_observerGpt.hgt =  0;
      ap_idx = 3;
   }
   m_filename = ap[ap_idx];

   return initializeChain();
}
Exemple #28
0
void run()
{
    const Real world_size(1e-6);
    const Position3 edge_lengths(world_size, world_size, world_size);
    const Real volume(world_size * world_size * world_size);

    const Integer N(60);

    const std::string D("1e-12"), radius("2.5e-9");
    // const Real kD(
    //     4 * M_PI * (2 * std::atof(D.c_str())) * (2 * std::atof(radius.c_str())));

    const Real kd(0.1), U(0.5);
    const Real ka(kd * volume * (1 - U) / (U * U * N));

#if (STYPE == EGFRD_MODE) || (STYPE == BD_MODE)
    const Real k2(ka), k1(kd);
#else
    const Real k2(ka * kD / (ka + kD));
    const Real k1(k2 * kd / ka);
#endif

    Species sp1("A", radius, D), sp2("B", radius, D), sp3("C", radius, D);
    ReactionRule rr1(create_unbinding_reaction_rule(sp1, sp2, sp3, k1)),
        rr2(create_binding_reaction_rule(sp2, sp3, sp1, k2));

    boost::shared_ptr<NetworkModel> model(new NetworkModel());
    model->add_species_attribute(sp1);
    model->add_species_attribute(sp2);
    model->add_species_attribute(sp3);
    model->add_reaction_rule(rr1);
    model->add_reaction_rule(rr2);

    boost::shared_ptr<GSLRandomNumberGenerator>
        rng(new GSLRandomNumberGenerator());
    rng->seed(time(NULL));

#if STYPE == EGFRD_MODE
    const Integer matrix_size(3);
    boost::shared_ptr<world_type> world(
        new world_type(world_size, matrix_size, rng));
#elif STYPE == BD_MODE
    boost::shared_ptr<world_type> world(new world_type(edge_lengths, rng));
#elif STYPE == ODE_MODE
    boost::shared_ptr<world_type> world(new world_type(volume));
#else // STYPE == GILLESPIE_MODE
    boost::shared_ptr<world_type> world(new world_type(volume, rng));
#endif

    world->add_molecules(sp1, N);

    simulator_type sim(model, world);

#if STYPE == BD_MODE
    sim.set_dt(1e-3);
#endif

    Real next_time(0.0), dt(0.02);
    // sim.save_hdf5_init(std::string("mapk.hdf5"));
    std::cout << sim.t()
              << "\t" << world->num_molecules(sp1)
              << "\t" << world->num_molecules(sp2)
              << "\t" << world->num_molecules(sp3)
              << std::endl;
    for (unsigned int i(0); i < 100; ++i)
    {
        next_time += dt;
        while (sim.step(next_time)) {}

        std::cout << sim.t()
                  << "\t" << world->num_molecules(sp1)
                  << "\t" << world->num_molecules(sp2)
                  << "\t" << world->num_molecules(sp3)
                  << std::endl;
        // sim.save_hdf5();
    }
}
Exemple #29
0
int main(int argc, char **argv)
{
    // Traits typedefs
    // {{{
    // typedef ::World< ::CyclicWorldTraits<Real> > world_type;
    // typedef EGFRDSimulator< ::EGFRDSimulatorTraitsBase<world_type> >
    //     simulator_type;
    typedef ecell4::egfrd::EGFRDWorld world_type;
    typedef ecell4::egfrd::EGFRDSimulator simulator_type;
    typedef simulator_type::multi_type multi_type;
    // }}}

    // Constants
    // {{{
    const ecell4::Real L(1e-6);
    const ecell4::Real3 edge_lengths(L, L, L);
    const ecell4::Integer3 matrix_sizes(3, 3, 3);
    const ecell4::Real volume(L * L * L);
    const ecell4::Integer N(60);
    const ecell4::Real kd(0.1), U(0.5);
    const ecell4::Real ka(kd * volume * (1 - U) / (U * U * N));
    const ecell4::Real k2(ka), k1(kd);
    const ecell4::Integer dissociation_retry_moves(3);
    // }}}

    boost::shared_ptr<ecell4::NetworkModel>
        model(new ecell4::NetworkModel());

    // add ::SpeciesType to ::ParticleModel
    // {{{
    ecell4::Species sp1(
        std::string("A"), std::string("2.5e-09"), std::string("1e-12"));
    model->add_species_attribute(sp1);

    ecell4::Species sp2(
        std::string("B"), std::string("2.5e-09"), std::string("1e-12"));
    model->add_species_attribute(sp2);

    ecell4::Species sp3(
        std::string("C"), std::string("2.5e-09"), std::string("1e-12"));
    model->add_species_attribute(sp3);
    // }}}

    // ReactionRules
    // {{{
    // A -> B + C   k1
    // {{{
    ecell4::ReactionRule rr1(
        ecell4::create_unbinding_reaction_rule(sp1, sp2, sp3, k1));
    model->add_reaction_rule(rr1);
    // }}}

    // B + C -> A   k2
    // {{{
    ecell4::ReactionRule rr2(
        ecell4::create_binding_reaction_rule(sp2, sp3, sp1, k2));
    model->add_reaction_rule(rr2);
    // }}}
    // }}}

    // Random Number Generator (Instanciate and Initialize)
    // {{{
    // boost::shared_ptr<ecell4::GSLRandomNumberGenerator>
    boost::shared_ptr<ecell4::RandomNumberGenerator>
        rng(new ecell4::GSLRandomNumberGenerator());
    rng->seed((unsigned long int)0);
    // rng->seed(time(NULL));
    // }}}

    // World Definition
    // {{{
    boost::shared_ptr<world_type>
        world(new world_type(edge_lengths, matrix_sizes, rng));
    world->bind_to(model);
    // }}}

    // add ecell4::Species( ::SpeciesInfo) to ::World
    // {{{
    // world->add_species(ecell4::Species("A"));
    // world->add_species(ecell4::Species("B"));
    // world->add_species(ecell4::Species("C"));
    // }}}

    // Thorow particles into world at random
    // {{{
    world->add_molecules(ecell4::Species("A"), N);

    typedef std::vector<std::pair<ecell4::ParticleID, ecell4::Particle> >
        particle_id_pair_list;
    const particle_id_pair_list particles(world->list_particles());
    for (particle_id_pair_list::const_iterator i(particles.begin());
        i != particles.end(); ++i)
    {
        const ecell4::Real3 pos((*i).second.position());
        std::cout << "(" << pos[0] << pos[1] << pos[2] << ")" << std::endl;
    }
    // }}}

    // Logger Settings
    // {{{
    boost::shared_ptr< ::LoggerManager> logger_mng(
        new ::LoggerManager("dummy", ::Logger::L_WARNING));
    ::LoggerManager::register_logger_manager(
        "ecell.EGFRDSimulator", logger_mng);
    // }}}

    // EGFRDSimulator instance generated
    // {{{
    boost::shared_ptr<simulator_type> sim(
        new simulator_type(world, model, dissociation_retry_moves));
    // sim->paranoiac() = true;
    sim->initialize();
    // }}}

    // Simulation Executed
    // {{{
    ecell4::Real next_time(0.0), dt(0.02);
    std::cout << sim->t() << "\t"
        << world->num_molecules_exact(sp1) << "\t"
        << world->num_molecules_exact(sp2) << "\t"
        << world->num_molecules_exact(sp3) << "\t" << std::endl;
    // for (int i(0); i < 10; i++)
    // for (int i(0); i < 100; i++)
    for (int i(0); i < 100; i++)
    {
        next_time += dt;
        while (sim->step(next_time))
        {
            // if (sim->last_reactions().size() > 0)
            // {
            //     std::cout << sim->t() << "\t"
            //         << world->num_molecules_exact(sp1) << "\t"
            //         << world->num_molecules_exact(sp2) << "\t"
            //         << world->num_molecules_exact(sp3) << "\t" << std::endl;
            // }
        }

        std::cout << sim->t() << "\t"
            << world->num_molecules_exact(sp1) << "\t"
            << world->num_molecules_exact(sp2) << "\t"
            << world->num_molecules_exact(sp3) << "\t" << std::endl;
    }
    // }}}

    // world->save("test.h5");

    // Statistics
    // {{{
    int num_single_steps_per_type[simulator_type::NUM_SINGLE_EVENT_KINDS];
    num_single_steps_per_type[simulator_type::SINGLE_EVENT_REACTION]
        = sim->num_single_steps_per_type(simulator_type::SINGLE_EVENT_REACTION);
    num_single_steps_per_type[simulator_type::SINGLE_EVENT_ESCAPE]
        = sim->num_single_steps_per_type(simulator_type::SINGLE_EVENT_ESCAPE);

    std::cout << (boost::format("%1%: %2% \n")
        % "SINGLE_EVENT_REACTION"
        % num_single_steps_per_type[simulator_type::SINGLE_EVENT_REACTION]);
    std::cout << (boost::format("%1%: %2% \n")
        % "SINGLE_EVENT_ESCAPE"
        % num_single_steps_per_type[simulator_type::SINGLE_EVENT_ESCAPE]);

    std::cout << (boost::format("%1%: %2% \n")
        % "PAIR_EVENT_SINGLE_REACTION_0"
        % sim->num_pair_steps_per_type(
            simulator_type::PAIR_EVENT_SINGLE_REACTION_0));
    std::cout << (boost::format("%1%: %2% \n")
        % "PAIR_EVENT_SINGLE_REACTION_1"
        % sim->num_pair_steps_per_type(
            simulator_type::PAIR_EVENT_SINGLE_REACTION_1));
    std::cout << (boost::format("%1%: %2% \n")
        % "PAIR_EVENT_COM_ESCAPE"
        % sim->num_pair_steps_per_type(simulator_type::PAIR_EVENT_COM_ESCAPE));
    std::cout << (boost::format("%1%: %2% \n")
        % "PAIR_EVENT_IV_UNDETERMINED"
        % sim->num_pair_steps_per_type(
            simulator_type::PAIR_EVENT_IV_UNDETERMINED));
    std::cout << (boost::format("%1%: %2% \n")
        % "PAIR_EVENT_IV_ESCAPE"
        % sim->num_pair_steps_per_type(simulator_type::PAIR_EVENT_IV_ESCAPE));
    std::cout << (boost::format("%1%: %2% \n")
        % "PAIR_EVENT_IV_REACTION"
        % sim->num_pair_steps_per_type(simulator_type::PAIR_EVENT_IV_REACTION));

    std::cout << (boost::format("%1%: %2% \n")
        % "NONE" % sim->num_multi_steps_per_type(multi_type::NONE));
    std::cout << (boost::format("%1%: %2% \n")
        % "ESCAPE" % sim->num_multi_steps_per_type(multi_type::ESCAPE));
    std::cout << (boost::format("%1%: %2% \n")
        % "REACTION" % sim->num_multi_steps_per_type(multi_type::REACTION));
    // }}}

    // {
    //     boost::scoped_ptr<world_type>
    //         world2(new world_type(ecell4::Real3(1, 2, 3), ecell4::Integer3(3, 6, 9)));
    //     std::cout << "edge_lengths:" << world2->edge_lengths()[0] << " " << world2->edge_lengths()[1] << " " << world2->edge_lengths()[2] << std::endl;
    //     std::cout << "matrix_sizes:" << world2->matrix_sizes()[0] << " " << world2->matrix_sizes()[1] << " " << world2->matrix_sizes()[2] << std::endl;
    //     std::cout << "num_particles: " << world2->num_particles() << std::endl;

    //     world2->load("test.h5");
    //     std::cout << "edge_lengths:" << world2->edge_lengths()[0] << " " << world2->edge_lengths()[1] << " " << world2->edge_lengths()[2] << std::endl;
    //     std::cout << "matrix_sizes:" << world2->matrix_sizes()[0] << " " << world2->matrix_sizes()[1] << " " << world2->matrix_sizes()[2] << std::endl;
    //     std::cout << "num_particles: " << world2->num_particles() << std::endl;
    // }

    return 0;
}
Exemple #30
0
void LinearSMCimproved::predictionPerturbation(const SiconosVector& xTk, SimpleMatrix& CBstar)
{
  if (_us->normInf() < _alpha)
  {
    if (_inDisceteTimeSlidingPhase)
    {
      SiconosVector& up = *_up;
      if (_measuredPert->full())
      {
        if (_measuredPert->size() > 1)
        {
          _measuredPert->rotate(_measuredPert->end()-1);
          _predictedPert->rotate(_predictedPert->end()-1);
        }
      }
      else
      {
        // inject new vector in the case where the measurement vector is not full.
        SP::SiconosVector sp1(new SiconosVector(_us->size(), 0));
        SP::SiconosVector sp2(new SiconosVector(_us->size(), 0));
        _measuredPert->push_front(sp1);
        _predictedPert->push_front(sp2);
      }

      // inject new measured value and also perturbation prediction
      SiconosVector& predictedPertC = *(*_predictedPert)[0];
      SiconosVector& measuredPertC = *(*_measuredPert)[0];

      // Cp_k = s_k + Cp_k-tilde
      prod(*_Csurface, xTk, measuredPertC);
      measuredPertC += *(*_predictedPert)[std::min((unsigned int)1, (unsigned int)_predictedPert->size()-1)];

      // compute prediction
      switch(_measuredPert->size()-1)
      {
        case 0:
          predictedPertC = measuredPertC;
          break;
        case 1:
          predictedPertC = 2*measuredPertC - *(*_measuredPert)[1];
          break;
        case 2:
          predictedPertC = 3*measuredPertC - 3*(*(*_measuredPert)[1]) + *(*_measuredPert)[2];
          break;
        default:
          RuntimeException::selfThrow("LinearSMCimproved::predictionPerturbation: unknown order " + _measuredPert->size());
      }

      // Compute the control to counteract the perturbation
      up = predictedPertC;
      up *= -1;
      CBstar.PLUForwardBackwardInPlace(up);

      // project onto feasible set
      double norm = up.norm2();
      if (norm > _ubPerturbation)
      {
        up *= _ubPerturbation/norm;
        predictedPertC *= _ubPerturbation/norm;
      }
   }
    else
      _inDisceteTimeSlidingPhase = true;
  }
  else if (_inDisceteTimeSlidingPhase)
  {
    _inDisceteTimeSlidingPhase = false;
    _up->zero();
  }
}