Ejemplo n.º 1
0
int EO_rIG_tExp::agg_dyn(long double dt, long double t)
// E' il cuore della classe ogni batterio implementa questo in modo diverso.
{
    
    
    if (salto_==1) {
        
        long double sigma_x=f_sigma();
        long double lambda_star=lambda_r+dt*f_lambda()+sigma_x*deltaW_ec(dt);
        
        bool condition_salto
        =  (exp(-2*(barriera_r-lambda_r)*(barriera_r-lambda_star)/(dt*pow(sigma_x,2)))>=unifRand()) 
        || (lambda_r>barriera_r) ;
        if (condition_salto) 
        {
            {            
                barriera_r=reset_barrier();
                lambda_r=0.0;
                return salto_=0;
            }
        }
        else{ lambda_r=lambda_star; }
        
    }else if(salto_==-1){
        lambda_t+=dt/tau_t;
        if (lambda_t>=barriera_t) {
            //            barriera_t=min(Exp_dist(),1.5);
            barriera_t=reset_barrier_t();
            lambda_t=0.0;
            return salto_=2;
        }
    }
    return salto_;    
}
Ejemplo n.º 2
0
EO_rIG_tExp::EO_rIG_tExp(const EO_rIG_tExp& modello):EO_rExp_tExp(modello){
    Tipo_batterio = modello.Tipo_batterio;
    codice_batterio=modello.codice_batterio;
    barriera_r=reset_barrier();
    tipo_sigma=modello.tipo_sigma;
    B_0=modello.B_0;
    B_1=modello.B_1;
    B_2=modello.B_2;
}
Ejemplo n.º 3
0
void EO_rIG_tExp::reset_par(){
    
    EO_rExp_tExp::reset_par();
    
    Tipo_batterio = "EO-rIG-tExp";
    barriera_r=reset_barrier();
    B_0=1.6;
    
}
Ejemplo n.º 4
0
void CV_rIG_tExp::reset_par(){
    
    CV_rExp_tExp::reset_par();
    
    Tipo_batterio = "CV-rIG-tExp";
    barriera_r=reset_barrier();
    B_0=1.6;
    
}
Ejemplo n.º 5
0
// primitive barrier function.  all cores call this.
void waiton_barrier(barrier_t* barrier)
{
	uint8_t local_ready = barrier->ready;

	spin_lock_irqsave(&barrier->lock);
	barrier->current_count--;
	if (barrier->current_count) {
		spin_unlock_irqsave(&barrier->lock);
		while (barrier->ready == local_ready)
			cpu_relax();
	} else {
		spin_unlock_irqsave(&barrier->lock);
		reset_barrier(barrier);
		wmb();
		barrier->ready++;
	}
}
Ejemplo n.º 6
0
EO_rIG_tExp::EO_rIG_tExp():EO_rExp_tExp(){
    Tipo_batterio = "EO-rIG-tExp";
    codice_batterio = EcoliType::EO_REXP_RIG_TEXP;
    barriera_r=reset_barrier();
    B_0=1.6;
}
Ejemplo n.º 7
0
int CV_rIG_tExp::agg_dyn(long double dt, long double t)
// E' il cuore della classe ogni batterio implementa questo in modo diverso.
{
    
//    cout << "Q_max(CV_rIG_tExp::agg_dyn) = "<< s_lambda_r.Q_max << endl;

//    cout << "m = " << m[0] << "," << m[1] << "," << m[2] << endl;
//    cout << "Q = " << Q << endl;
    
    if (salto_==1) {
        
        long double sigma_x=f_sigma();
        long double lambda_star=lambda_r+dt*f_lambda()+sigma_x*deltaW_ec(dt);
        
//        if (lambda_r>barriera_r) {            
//            cout << "t = " << t << endl;
//            cout << "l_r = " << lambda_r << endl;
//            cout << "b_r = " << barriera_r << endl;
//            
//        }
        
        bool condition_salto
            =  (exp(-2*(barriera_r-lambda_r)*(barriera_r-lambda_star)/(dt*pow(sigma_x,2)))>=unifRand_ec())
            || (lambda_r>barriera_r) ;
//            || (exp(-2*(barriera_r_inf-lambda_r)*(barriera_r_inf-lambda_star)/(dt*pow(sigma_x,2)))>=unifRand()) 
//            || (lambda_r<barriera_r_inf);
        
        
        
        if (condition_salto) 
        {
//            if ((t-t_r<t_min)) {
//                
//                cout << "*******************************\n";
//                cout << "t = " << t << endl;
//                cout << "t-t_r = " << t-t_r << endl;
//                
//                if (Q>=0) {
//                    if (unifRand()<probIG_t_minQp) 
//                    {
//                        barriera_r=1;
//                        lambda_r=0.0;
//                        return salto_=0; 
//                    }else{ lambda_r=0.0; }
//                }else{
//                    if (unifRand()<probIG_t_minQn) 
//                    {
//                        barriera_r=1;
//                        lambda_r=0.0;
//                        return salto_=0; 
//                    }else { lambda_r=0.0; }
//                }
//   
//            }
//            else
            {            
                barriera_r=reset_barrier();
                lambda_r=0.0;
                return salto_=0;
            }
        }
        else{ lambda_r=lambda_star; }
        
    }else if(salto_==-1){
        lambda_t+=dt/tau_t;
        if (lambda_t>=barriera_t) {
//            barriera_t=min(Exp_dist(),1.5);
            barriera_t=reset_barrier_t();
            lambda_t=0.0;
            return salto_=2;
        }
    }
    return salto_;    
}
Ejemplo n.º 8
0
CV_rIG_tExp::CV_rIG_tExp():CV_rExp_tExp(){
    Tipo_batterio = "CV-rIG-tExp";
    codice_batterio = EcoliType::CV_RIG_TEXP;
    barriera_r=reset_barrier();
    B_0=1.6;
}