virtual void fire()
  {
    Real hkrd = 
      ( 1 + ( S1.getMolarConc() / KiMgATP ) + 
	( (S0.getMolarConc() * 7 / 3) / KiGlc ) + 
	( ( S1.getMolarConc() * (S0.getMolarConc() * 7 / 3) ) / ( KiGlc * KmMgATP ) ) +
	( P1.getMolarConc() / KiMgADP ) +
	( P0.getMolarConc() / KiGlc6P ) +
	( ( P1.getMolarConc() * P0.getMolarConc() ) / ( KiGlc6P * KmMgADP ) ) +
	( ( E1.getMolarConc() * (S0.getMolarConc() * 7 / 3) ) / ( KdiB23PG * KiGlc ) ) +
	( ( E2.getMolarConc() * (S0.getMolarConc() * 7 / 3) ) / ( KdiGlc16P2 * KiGlc ) ) +
	( ( P0.getMolarConc() * (S0.getMolarConc() * 7 / 3) ) / ( KdiGlc6P * KiGlc ) ) +
	( ( E3.getMolarConc() * (S0.getMolarConc() * 7 / 3) ) / ( KdiGSH * KiGlc ) ) );

    // fix me: * voli?

    Real GG = E3.getMolarConc()/E4.getMolarConc();
    Real velocity =
      (GG/(K_GSSG + GG)) * ( HK / hkrd *
	( ( theKcatf * (S0.getMolarConc() * 7 / 3) * S1.getMolarConc() ) / 
	  ( KiGlc * KmMgATP ) -
	  ( theKcatr * P0.getMolarConc() * P1.getMolarConc() ) /
	  ( KiGlc6P * KmMgADP ) ) );
    
    //velocity = velocity * getSuperSystem()->getSize() * N_A * ( 20.0 / 7.0 );
    velocity = velocity * getSuperSystem()->getSize() * N_A;
    setFlux( velocity );

  }
  virtual void fire(){
    


    Real GG = E3.getMolarConc()/E4.getMolarConc();
    Real velocity = GG/(K_GSSG + GG);
     Real ActCo = E0.getVariable()->getValue();

    if( ActCo == 0 ){
      
      velocity = ConstAct;
      
    }
    
    else{
      
      Real NADP = 1000000 * S0.getVariable()->getMolarConc();
      Real G6P = 1000000 * S1.getVariable()->getMolarConc();
      Real NADPH = 1000000 * P1.getVariable()->getMolarConc();
      Real ATP = 1000000 * E1.getVariable()->getMolarConc();
      Real DPG = 1000000 * E2.getVariable()->getMolarConc();
        
      Real L = 1 + G6P / K_G6P;
      Real M = 1 + NADP * L / K_NADP + NADPH / K_NADPH + ATP 
	/ K_ATP + DPG / K_DPG;
      velocity *= Vm * ( NADP * G6P / ( K_NADP * K_G6P ) ) / M;
      
      velocity *= ActCo / 1000 / 1000000;
      
      velocity *= N_A * S0.getVariable()->getSuperSystem()->getSize();
    }

    setFlux( velocity );
    
  }
  virtual void fire(){

    Real PO2 = S0.getVariable()->getValue();  
    Real dammy = P0.getVariable()->getValue();
    Real TAG   = E0.getVariable()->getValue();

    Real pk0;
    Real pk1;


    if ( TAG == 0 )
      {
	pk1=0;
	pk0=k0;
      }
    else
      {
	pk0=0;
	pk1=k1;
      }
    
    Real velocity = ((pk0 - pk1)*(PO2-base));
    
    setFlux(velocity);
 
  }
  virtual void fire(){

    Real PO2 = S0.getVariable()->getValue();  
    Real dammy = P0.getVariable()->getValue();
    Real TAG   = E0.getVariable()->getValue();

    Real pk0;
    Real pk1;


    if ( TAG == 0 )
      {
	pk1=0;
	pk0=k0;
      }
    else
      {
	pk0=0;
	pk1=k1;
      }
    

    //   std::cout << "k0=" << k0 << std::endl;
    //    std::cout << "k1=" << k1 << std::endl;
    //    std::cout << "PO2=" << PO2 << std::endl;
    //    std::cout << "dammy=" << dammy << std::endl;

    //    Real velocity = (pk0 * (PO2-base) - pk1 * dammy);

    Real velocity = ((pk0 - pk1)*(PO2-base));
    
    setFlux(velocity);
 
  }
示例#5
0
	virtual void fire()
	{
	  Real _SizeN_A = getSuperSystem()->getSizeN_A();

	  Real delta1 = (1.0 + F6P->getMolarConc()*1000.0 / KPFK_F6P) * (1.0 + ATP->getMolarConc()*1000.0 / KPFK_ATP)+ ADP->getMolarConc()*1000.0 / KPFK_ADP + FBP->getMolarConc()*1000.0 / KPFK_FBP * (1.0 + ADP->getMolarConc()*1000.0 / KPFK_ADP);

	  Real delta2 = (1.0 + F6P->getMolarConc()*1000.0 / KPFK_F6P2) * (1.0 + ATP->getMolarConc()*1000.0 / KPFK_ATP2)+ ADP->getMolarConc()*1000.0 / KPFK_ADP2 + FBP->getMolarConc()*1000.0 / KPFK_FBP2 * (1.0 + ADP->getMolarConc()*1000.0 / KPFK_ADP2);

	  Real alpha = KPFK_F6P * KPFK_ATP / KPFK_F6P2 / KPFK_ATP2;
	  Real L = Lo_PFK * pow(((1.0+ATP->getMolarConc()*1000.0/KPFK_iATP) / (1.0 + d_PFK * ATP->getMolarConc()*1000.0/KPFK_iATP)) * ((1.0 + e_PFK * AMP->getMolarConc()*1000.0/KPFK_aAMP) / (1.0 + AMP->getMolarConc()*1000.0/KPFK_aAMP)), 4);
	  
	  Real VPFK_maxr = VPFK_maxf->getValue() * KPFK_ADP * KPFK_FBP / KPFK_ATP / KPFK_F6P / KPFK_eq;
	  
	  Real PFK_a = (1.0 + alpha * L * pow(delta2/delta1, 3))*(VPFK_maxf->getValue() * ATP->getMolarConc()*1000.0 * F6P->getMolarConc()*1000.0 /(KPFK_ATP * KPFK_F6P) - VPFK_maxr * ADP->getMolarConc()*1000.0 * FBP->getMolarConc()*1000.0 /(KPFK_ADP * KPFK_FBP));
	  Real PFK_b = delta1 * (1.0 + L * pow(delta2/delta1, 4));
	  
	  setFlux( GX->getValue() * _SizeN_A * PFK_a / PFK_b / 60000.0 /1000.0);

	  //	  setFlux(PFK_a / PFK_b );
	  //V_PFK.setValue(PFK_a / PFK_b / unit);
	  
	  // ducky

	  // T->setValue( Tt->getValue() - TCa->getValue() - TCaCB->getValue() - TCB->getValue() );
	}
  virtual void fire(){
    
    Real velocity = 1;
    
    Real ActCo = E0.getVariable()->getValue();
    
    if( ActCo == 0 ){
      
      velocity = ConstAct;
	
    }
    
    else{
      
      Real IN = 1000 * S0.getVariable()->getMolarConc();
      Real EX = 1000 * P0.getVariable()->getMolarConc();
      
      velocity = Vm * ( ( IN / ( Km + IN ) )- ( EX / ( Km + EX ) ) );
      velocity *= N_A * S0.getVariable()->getSuperSystem()->getSize();
      velocity *= ActCo / 1000 / 1000 / 3600;
      velocity *= SW;
    }

    setFlux( velocity );
    
  }
示例#7
0
  virtual void fire(){
  
    Real velocity = 1;
  
    Real ActCo = E0.getVariable()->getValue();
    
    if( ActCo == 0 ){
      
      velocity = ConstAct;
      
    }
    
    else{

      Real A = 1000 * S0.getVariable()->getMolarConc();
      Real B = 1000 * S1.getVariable()->getMolarConc();
      Real C = 1000 * S2.getVariable()->getMolarConc();
      
      Real M = A * B * C / (alpha * KmA * KmB * KmC);
      Real N = 1 + A / KmA + A * B / (KmA * KmB) + A * C / (KmA * KmC) + 
	A * B * C/ (alpha * KmA * KmB * KmC);

      velocity *= Vmf * N_A * S0.getVariable()->getSuperSystem()->getSize();
    	      
      velocity *= M / N;

      velocity *= ActCo / 1000 / 1000 / 3600;
      
    }

    setFlux( velocity );

  }
示例#8
0
	virtual void fire()
	{
	  Real _SizeN_A = getSuperSystem()->getSizeN_A();	  

	  Real VGPA_maxr = VGPA_maxf->getValue() * KGPA_GLYb * KGPA_iG1P / KGPA_iGLYf / KGPA_Pi / KGPA_eq;

	  Real GPA_a= VGPA_maxf->getValue() * (GLY->getMolarConc()*1000.0 * Pi->getMolarConc()*1000.0 / KGPA_iGLYf / KGPA_Pi ) - VGPA_maxr * (GLY->getMolarConc()*1000.0 * G1P->getMolarConc()*1000.0 / KGPA_GLYb / KGPA_iG1P);

	  Real GPA_b= 1.0 + GLY->getMolarConc()*1000.0 / KGPA_iGLYf + Pi->getMolarConc()*1000.0 / KGPA_iPi + GLY->getMolarConc()*1000.0 / KGPA_iGLYb + G1P->getMolarConc()*1000.0 / KGPA_iG1P + GLY->getMolarConc()*1000.0 * Pi->getMolarConc()*1000.0 / (KGPA_GLYf * KGPA_iPi) + GLY->getMolarConc()*1000.0 * G1P->getMolarConc()*1000.0 /(KGPA_GLYb * KGPA_iG1P) ;
	  
	  Real V_GPA = GPA_a / GPA_b;

	  Real VGPB_maxr = VGPB_maxf->getValue() * KGPB_iGLYb * KGPB_G1P / KGPB_iGLYf / KGPB_Pi / KGPB_eq;

	  Real GPB_a = (pow(AMP->getMolarConc()*1000.0, nH_GPB)/ KGPB_AMP) * (VGPB_maxf->getValue() * (GLY->getMolarConc()*1000.0 * Pi->getMolarConc()*1000.0 /(KGPB_iGLYf * KGPB_Pi)) - VGPB_maxr * (GLY->getMolarConc()*1000.0 * G1P->getMolarConc()*1000.0/(KGPB_iGLYb * KGPB_G1P)));

	  Real GPB_b = (1.0 + pow(AMP->getMolarConc()*1000.0, nH_GPB)/ KGPB_AMP) * ( 1.0 + GLY->getMolarConc()*1000.0 / KGPB_iGLYf + Pi->getMolarConc()*1000.0 / KGPB_iPi + GLY->getMolarConc()*1000.0 / KGPB_iGLYb + G1P->getMolarConc()*1000.0 / KGPB_iG1P + GLY->getMolarConc()*1000.0 * Pi->getMolarConc()*1000.0 / (KGPB_iGLYf * KGPB_Pi) + GLY->getMolarConc()*1000.0 * G1P->getMolarConc()*1000.0 /(KGPB_iGLYb * KGPB_G1P) );
	  	  
	  Real V_GPB = GPB_a / GPB_b;

       	  setFlux( GX->getValue() * _SizeN_A * ( V_GPA * frac_a->getValue() + V_GPB * frac_b->getValue()) / 60000.0 / 1000.0);

	  //	  setFlux( V_GPA * frac_a->getValue() + V_GPB * frac_b->getValue());
	  //	  setFlux(GPB_a / GPB_b );

	  //	  setFlux(GPA_a / GPA_b );


	  //V_GPA.setValue(GPA_a / GPA_b / unit);
	  
	  // ducky

	  // T->setValue( Tt->getValue() - TCa->getValue() - TCaCB->getValue() - TCB->getValue() );
	}
  virtual void fire()
  {
    Real L = ( pow( pow( 10, -1 * E0.getValue() ) / Ka, n ) *
	       pow( 1 + E1.getMolarConc() / KTATP, 4 ) *
	       pow( 1 + E2.getMolarConc() / KTMg, 4 ) *
	       pow( 1 + E3.getMolarConc() / KTB23PG, 4 ) ) /
      ( pow( 1 + ( S0.getMolarConc() / KmFru6P ) + ( P0.getMolarConc() / KmFru16P2 ), 4 ) *
	pow( 1 + E4.getMolarConc() / KRAMP, 4 ) *
	pow( 1 + E5.getMolarConc() / KRPhos, 4 ) *
	pow( 1 + E6.getMolarConc() / KRGlc16P2, 4 ) );

    Real pfkrd = 1 + ( S0.getMolarConc() / KmFru6P ) +
      ( S1.getMolarConc() / KmMgATP ) +
      ( ( S0.getMolarConc() * S1.getMolarConc() ) / ( KmFru6P * KmMgATP ) ) +
      ( P0.getMolarConc() / KmFru16P2 ) +
      ( P1.getMolarConc() / KmMgADP ) +
      ( ( P0.getMolarConc() * P1.getMolarConc() ) / ( KmFru16P2 * KmMgADP ) );

    Real velocity = ( C0.getMolarConc() / ( ( 1 + L ) * pfkrd ) ) * 
      ( ( kcatf * S0.getMolarConc() * S1.getMolarConc() ) / ( KmFru6P * KmMgATP ) -
	//note: use book model.
	( kcatf * P0.getMolarConc() * P1.getMolarConc() ) / ( KmFru16P2 * KmMgADP ) );

    velocity = velocity * getSuperSystem()->getSize() * N_A * E7.getValue()/1000;

    Real GG = E8.getMolarConc()/E9.getMolarConc();
    velocity *= GG/(K_GSSG + GG);
    setFlux( velocity );

  }
示例#10
0
  virtual void fire()
    {
      Real aVelocity( k );

      aVelocity *= C0.getValue();

      setFlux( aVelocity );
    }
  virtual void fire()
  {
    Real velocity = k8* S0.getMolarConc() - k9 * P0.getMolarConc();

    velocity = velocity * getSuperSystem()->getSize() * N_A;

    setFlux( velocity );

  }
示例#12
0
    virtual void fire()
      {
	Real E( C0.getMolarConc() );
	
	Real V( -1 * V1 * E );
	V /= K1 + E;
	V *= 1E-018 * N_A;
	
	setFlux( V );
      }
    virtual void fire()
    {
        Real velocity = theK1 * S0.getMolarConc() * S1.getMolarConc() - k2 * P0.getMolarConc();

        velocity = velocity * getSuperSystem()->getSize() * N_A;

        velocity = velocity * E1.getValue() / 1000;

        setFlux( velocity );

    }
  virtual void fire()
  {

    Real velocity = Kma * S0.getMolarConc() -
      Kmd * P0.getMolarConc();

    velocity = velocity * getSuperSystem()->getSize() * N_A;

    velocity = velocity * E0.getValue() / 1000;

    setFlux( velocity );

  }
  virtual void fire()
  {
    Real velocity = k * S0.getMolarConc();

    velocity = velocity * getSuperSystem()->getSize() * N_A;

    if(velocity < 0)
      {
	velocity = 0;
      }

    setFlux( velocity );

  }
  virtual void fire()
  {

    Real pgmrd = 1 + ( S0.getMolarConc() / KmP3GA ) + 
      ( P0.getMolarConc() / KmP2GA );
    
    Real velocity = ( PGM / pgmrd ) * 
      ( ( ( kcatf * S0.getMolarConc() ) / KmP3GA ) -
	( ( kcatr * P0.getMolarConc() ) / KmP2GA ) ); 

    velocity = velocity * getSuperSystem()->getSize() * N_A;

    setFlux( velocity );

  }
    virtual void fire()
    {
        const Real S( S0.getVariable()->getMolarConc() );
        const Real P( P0.getVariable()->getMolarConc() );

        const Real KmP_S( KmP * S );
        const Real KmS_P( KmS * P );

        Real velocity( KcF * KmP_S );
        velocity -= KcR * KmS_P;
        velocity *= C0.getVariable()->getValue(); 

        velocity /= KmS_P + KmP_S + KmSP;

        setFlux( velocity );
    }
示例#18
0
	virtual void fire()
	{
	  Real _SizeN_A = getSuperSystem()->getSizeN_A();

	  Real VPGLM_maxr = VPGLM_maxf->getValue() * KPGLM_G6P / KPGLM_G1P / KPGLM_eq;

	  Real PGLM_a = VPGLM_maxf->getValue() * G1P->getMolarConc()*1000.0 / KPGLM_G1P - VPGLM_maxr * G6P->getMolarConc()*1000.0 / KPGLM_G6P;

	  Real PGLM_b = 1.0 + G1P->getMolarConc()*1000.0 / KPGLM_G1P + G6P->getMolarConc()*1000.0 / KPGLM_G6P;

	  setFlux( GX->getValue() * _SizeN_A * PGLM_a / PGLM_b / 60000.0 /1000.0);
	  //	  setFlux(PGLM_a / PGLM_b );
	  //V_PGLM.setValue(PGLM_a / PGLM_b / unit);
	  
	  // T->setValue( Tt->getValue() - TCa->getValue() - TCaCB->getValue() - TCB->getValue() );
	}
    virtual void fire()
    {
        double currTime(getStepper()->getCurrentTime());
        //std::cout << theVariableReferenceVector[0].getVariable()->getID() << std::endl;
        if(currTime > 1000)
          { 
            double currValue(theVariableReferenceVector[0].getValue());
            double diffValue(currValue-prevValue);
            if(diffValue*diffValue >= 
               theVariableReferenceVector[0].getCoefficient()*
               theVariableReferenceVector[0].getCoefficient()
               && currValue != prevValue)
              {
                double interval(currTime-prevTime);
                totalInterval += interval;
                ++intervalCnt;
                std::cout << currTime << " " << getID() << " averageInterval:"
                  << totalInterval/intervalCnt << std::endl;
                prevTime = currTime;
                prevValue = currValue;
              }
          }
        else
          {
            prevTime = currTime;
          }
              
        
        Real velocity( k * N_A );
        velocity *= getSuperSystem()->getSize();

        for( VariableReferenceVector::const_iterator s(
                theVariableReferenceVector.begin() );
             s != theZeroVariableReferenceIterator; ++s )
        {
            VariableReference const& aVariableReference( *s );
            Integer aCoefficient( aVariableReference.getCoefficient() );
            do
            {
                ++aCoefficient;
                velocity *= aVariableReference.getVariable()->getMolarConc();
            }
            while( aCoefficient != 0 );
        }

        setFlux(velocity);
    }
示例#20
0
	virtual void fire()
	{
	  Real _SizeN_A = getSuperSystem()->getSizeN_A();

	  //	  Real VPGI_maxf = VPGI_maxr * KPGI_G6P * KPGI_eq / KPGI_F6P;
	  Real VPGI_maxf = VPGI_maxr->getValue() * KPGI_G6P * KPGI_eq / KPGI_F6P;

	  //	  Real PGI_a = VPGI_maxf * G6P->getValue() / KPGI_G6P - VPGI_maxr * F6P->getValue() / KPGI_F6P;
	  Real PGI_a = VPGI_maxf * G6P->getMolarConc()*1000.0 / KPGI_G6P - VPGI_maxr->getValue() * F6P->getMolarConc()*1000.0 / KPGI_F6P;

	  Real PGI_b = 1.0 + G6P->getMolarConc()*1000.0 / KPGI_G6P + F6P->getMolarConc()*1000.0 / KPGI_F6P;

	  setFlux( GX->getValue() * _SizeN_A * PGI_a / PGI_b / 60000.0 / 1000.0);
	  //	  setFlux(PGI_a / PGI_b );
	  //V_PGI.setValue(PGI_a / PGI_b / unit);
	  
	  // T->setValue( Tt->getValue() - TCa->getValue() - TCaCB->getValue() - TCB->getValue() );
	}
void MassActionProcess::fire()
{ 
  if(theSpace == 0)
    {
      Species* aSpecies(NULL);
      for(VariableReferenceVector::iterator
          i(theVariableReferenceVector.begin());
          i != theVariableReferenceVector.end(); ++i)
        {
          Variable* aVariable((*i).getVariable()); 
          aSpecies = theSpatiocyteStepper->getSpecies(aVariable);
          if(aSpecies != NULL)
            {
              break;
            }
        }
      if(aSpecies->getIsVolume())
        {
          theSpace = aSpecies->getCompartment()->actualVolume;
          cout << "Mass Action Volume:" << theSpace << endl;
        }
      else
        {
          theSpace = aSpecies->getCompartment()->actualArea;
          cout << "Mass Action Area:" << theSpace << endl;
        }
    }
  double velocity(k);
  velocity *= theSpace;
  for(VariableReferenceVector::iterator
      s(theVariableReferenceVector.begin());
      s != theZeroVariableReferenceIterator; ++s)
    {
      VariableReference aVariableReference(*s);
      long int aCoefficient(aVariableReference.getCoefficient());
      do
        {
          ++aCoefficient;
          velocity *= aVariableReference.getVariable()->getValue()/theSpace;
        }
      while(aCoefficient != 0); 
    } 
  setFlux(velocity);
}
示例#22
0
	virtual void fire()
	{
	  Real _SizeN_A = getSuperSystem()->getSizeN_A();

	  Real VGAPDH_maxr = VGAPDH_maxf->getValue() * KGAPDH_13BPG * KGAPDH_NADH / KGAPDH_GAP / KGAPDH_NAD / KGAPDH_Pi / KGAPDH_eq;

	  Real GAPDH_a = VGAPDH_maxf->getValue() * GAP->getMolarConc()*1000.0 * NAD->getMolarConc()*1000.0 * Pi->getMolarConc()*1000.0 / (KGAPDH_GAP * KGAPDH_NAD * KGAPDH_Pi) - VGAPDH_maxr * BPG13->getMolarConc()*1000.0 * NADH->getMolarConc()*1000.0 / (KGAPDH_13BPG * KGAPDH_NADH);

	  Real GAPDH_b = 1.0 + GAP->getMolarConc()*1000.0 / KGAPDH_GAP + NAD->getMolarConc()*1000.0 / KGAPDH_NAD + Pi->getMolarConc()*1000.0 / KGAPDH_Pi + GAP->getMolarConc()*1000.0 * NAD->getMolarConc()*1000.0 / (KGAPDH_GAP * KGAPDH_NAD) + GAP->getMolarConc()*1000.0 * NAD->getMolarConc()*1000.0 * Pi->getMolarConc()*1000.0 / (KGAPDH_GAP * KGAPDH_NAD * KGAPDH_Pi) + BPG13->getMolarConc()*1000.0 / KGAPDH_13BPG + NADH->getMolarConc()*1000.0 / KGAPDH_NADH + BPG13->getMolarConc()*1000.0 * NADH->getMolarConc()*1000.0/(KGAPDH_13BPG * KGAPDH_NADH);
	  
	  setFlux( GX->getValue() * _SizeN_A * GAPDH_a / GAPDH_b / 60000.0 /1000.0);

	  //	  setFlux(GAPDH_a / GAPDH_b );
	  //V_GAPDH.setValue(GAPDH_a / GAPDH_b / unit);
	  
	  // ducky

	  // T->setValue( Tt->getValue() - TCa->getValue() - TCaCB->getValue() - TCB->getValue() );
	}
示例#23
0
  virtual void fire(){
    
    Real velocity = 1;
    
    Real ActCo = E0.getVariable()->getValue();    
    
    Real PYR = 1000000 * S0.getVariable()->getMolarConc();
    Real NADH = 1000000 * S1.getVariable()->getMolarConc();
    Real LAC = 1000000 * P0.getVariable()->getMolarConc();
    Real NAD = 1000000 * P1.getVariable()->getMolarConc();
    Real pH = E1.getVariable()->getValue();    
    

  Real NADHi = NADH/KiNADH;
  Real NADi = NAD/KiNAD;
  Real PYRai = PYR/KiaPYR;
  Real PYRbi = PYR/KibPYR;
  Real PYRm = PYR/KmPYR;
  Real LACm = LAC/KmLAC;
  Real LACi = LAC/KiLAC;

  Real NADHmi = KmNADH/KiNADH;
  Real NADmi = KmNAD/KiNAD; 



  
  Real L = (Kcatf * NADHi * PYRm ) - (Kcatr * NADi * LACm);
  
  Real MM = 1 + PYRm*NADHmi + LACm*NADmi;
  
  Real M = MM *(1+ PYRbi) + NADHi + NADi + NADHi*PYRm + 
    NADHi*LACm*NADmi + NADi*LACm*NADHmi + LACm*NADi + NADHi*PYRm*LACi + 
    PYRai*LACm*NADi;

  velocity *= L/M; 
    
    velocity *= C0.getVariable()->getValue(); 
    velocity *= ActCo / 1000;
    setFlux( velocity );
    
  }
示例#24
0
    virtual void fire()
    {
        boost::python::handle<> aHandle(
            PyEval_EvalCode(
                reinterpret_cast< PyCodeObject* >( theCompiledExpression.get() ),
                theGlobalNamespace.ptr(), theLocalNamespace.ptr() ) );

        boost::python::object aResultObject( aHandle );
        
        // do not use extract<double> for efficiency
        if( ! PyFloat_Check( aResultObject.ptr() ) )
        {
            THROW_EXCEPTION_INSIDE( SimulationError, 
                             asString() + ": "
                             "The expression gave a non-float object." );
        }

        const Real aFlux( PyFloat_AS_DOUBLE( aResultObject.ptr() ) );

        setFlux( aFlux );
    }
	virtual void fire()
	{
	  Real _SizeN_A = getSuperSystem()->getSizeN_A();

	  Real VCK_maxf = VCK_maxr->getValue() / KCK_iATP / KCK_Cr / KCK_eq * KCK_iADP * KCK_PCr;
	  //	  Real VCK_maxf = VCK_maxr->getValue() * KCK_iATP * KCK_Cr * KCK_eq / KCK_iADP / KCK_PCr; ducky 140414

	  Real CK_a = VCK_maxr->getValue() * ATP->getMolarConc()*1000.0 * Cr->getMolarConc()*1000.0 / (KCK_iATP * KCK_Cr) - VCK_maxf * ADP->getMolarConc()*1000.0 * PCr->getMolarConc()*1000.0 / (KCK_iADP * KCK_PCr);

	  Real CK_b = 1.0 + ADP->getMolarConc()*1000.0 / KCK_iADP + PCr->getMolarConc()*1000.0 / KCK_iPCr + ADP->getMolarConc()*1000.0 * PCr->getMolarConc()*1000.0 / (KCK_iADP * KCK_PCr) + ATP->getMolarConc()*1000.0 / KCK_iATP + Cr->getMolarConc()*1000.0 / KCK_Cr + ATP->getMolarConc()*1000.0 * Cr->getMolarConc()*1000.0 / (KCK_iATP * KCK_Cr);
	  
	  setFlux(GX->getValue() * _SizeN_A * CK_a / CK_b / 60000.0 /1000.0);
	  
	  //	  Real V_CK = 16.05 * PCr->getMolarConc()*1000.0 * ADP->getMolarConc()*1000.0 - 9.67e-6 * ATP->getMolarConc()*1000.0 * Cr->getMolarConc()*1000.0;
	  //	  setFlux(V_CK * _SizeN_A / 60000.0 / 1000.0);
	  //	  setFlux(CK_a / CK_b );
	  //V_CK.setValue(CK_a / CK_b / unit);
	  
	  // ducky

	  // T->setValue( Tt->getValue() - TCa->getValue() - TCaCB->getValue() - TCB->getValue() );
	}
  virtual void fire()
  {
    
    Real velocity( k * N_A );
    velocity *= getSuperSystem()->getSize();

    for( VariableReferenceVector::const_iterator
	   s( theVariableReferenceVector.begin() );
	 s != theZeroVariableReferenceIterator; ++s )
      {
	VariableReference aVariableReference( *s );
	Integer aCoefficient( aVariableReference.getCoefficient() );
	do {
	  ++aCoefficient;
	  velocity *= aVariableReference.getMolarConc();
	} while( aCoefficient != 0 );
	
      }
    
    setFlux(velocity);
    
  }
示例#27
0
    virtual void fire()
    {
Real Gln_o( Gln_o1->getMolarConc() );
 Real Gln_i( Gln_i2->getMolarConc() );
Real Na_o( Na_o3->getMolarConc() );
Real Na_i( Na_i4->getMolarConc() );
Real His_o( His_o5->getMolarConc() );
Real His_i( His_i6->getMolarConc() );
//Real size(getSuperSystem()->getSize());


Real velocityf = ( (Vmax * Gln_o * Na_o) / 
	( (Gln_o + Km_Gln * (His_o/Ki_His + 1) ) * (Na_o + Km_Na) ) );
 velocityf *= Gln_o1->getSuperSystem()->getSize()*N_A;

Real velocityr = ( (Vmax * Gln_i * Na_i) / 
	( (Gln_i + Km_Gln * (His_i/Ki_His + 1) ) * (Na_i + Km_Na) ) );
 velocityr *=  Gln_i2->getSuperSystem()->getSize()*N_A;
Real velocity = velocityf - velocityr;
//std::cout <<"velocity="<<velocity<<"\n";
setFlux(velocity);

      }
示例#28
0
    virtual void fire()
    {
        Real S0Concentration = S0.getMolarConc();
        Real S1Concentration = S1.getMolarConc();
        Real P0Concentration = P0.getMolarConc();
        Real P1Concentration = P1.getMolarConc();
        
        Real Denom =
            + KcR * KmS1 * S0Concentration 
            + KcR * KmS0 * S1Concentration 
            + KmP1 * P0Concentration * KcF_Keq_Inv
            + KmP0 * P1Concentration * KcF_Keq_Inv
            + KcR * S0Concentration * S1Concentration
            + KmP1 * S0Concentration * P0Concentration * KcF_Keq_Inv / KiS0 
            + P0Concentration * P1Concentration * KcF_Keq_Inv
            + KcR * KmS0 * S1Concentration * P1Concentration / KiP1;
        
        Real velocity = KcF * KcR * C0.getValue()
            * ( S0Concentration * S1Concentration 
                    - P0Concentration * P1Concentration / Keq ) / Denom;

        setFlux( velocity );
    }
示例#29
0
  virtual void fire(){
    
    Real velocity = 1;
    Real ActCo = E0.getVariable()->getValue();
    
    
    if( ActCo == 0 ){ 
      
      velocity = ConstAct;
      
    }
    
    else{

      velocity = C0.getVariable()->getValue(); 

      Real A =  S0.getVariable()->getMolarConc();
      Real B =  S1.getVariable()->getMolarConc();
      Real P =  P0.getVariable()->getMolarConc();
      Real Q =  P1.getVariable()->getMolarConc();
      Real R =  P2.getVariable()->getMolarConc();

      Real D = D1 + D2 * A + D3 * B + D4 * P + D5 * R + D6 * A * B 
	+ D7 * A * P + D8 * B * R + D9 * P * Q + D10 * P * R + D11 * Q * R 
	+ D12 * A * B * P + D13 * A * B * Q + D14 * A * P * Q 
	+ D15 * B * Q * R + D16 * P * Q * R + D17 * A * B * P * Q 
	+ D18 * B * P * Q * R;

      velocity *= ( N1 * A * B - N2 * P * Q * R ) / D;

      velocity *= ActCo / 1000;

    }

    setFlux( velocity );
    
  }
示例#30
0
    virtual void fire()
    {
Real AS( AS1->getMolarConc() );
 Real Fum( Fum2->getMolarConc() );
Real Arg( Arg3->getMolarConc() );
Real ASL( ASL4->getMolarConc() );
Real size(ASL4->getSuperSystem()->getSize());
Real velocity = ( (k1 * k3 * k5 * AS) - (k2 * k4 * k6 * Fum * Arg) ) * ASL; 

// -> M/s^3

Real DENOM = ( k5 * (k2 + k3) ) + ( AS * k1 * (k3 + k5) )
	    + ( Fum * k2 * k4 ) + ( Arg * k6 * (k2 + k3) )
	    + ( Fum * Arg * k4 * k6 ) + ( AS * Fum * k1 * k4 );
	      
// -> 1/s^2

velocity /= DENOM;

velocity*=size*N_A;
//std::cout <<"velocity="<<velocity<<"\n";
setFlux(velocity);

      }