void main () { /* information for model and integration of ODEs*/ /* new statements and braces*/ float rs=0.5; while (ENDTIME<= 160000000) { rs=0.0; } /* end of new statements and braces, except rs=0.5 is removed from below float statement*/ float ct, st, s2t, dmp, dp0, dp1, dp2, dpn, mp2, p02, p12, p22, pn2, fi=0.0, tytime_on=0.0, timer_off=0.0, t_ran_on=0.0, t_ran_off=0.0, kran, r1=6.0, r2=3.0, r3=6.0, r4=3.0, rd=1.5, rm=0.3 ; /* initial concetrations nM */ float mp, p0, p1, p2, pn, max1=1.0, max2=1.0, max3=1.0, mp1=2.0, pn1=2.2, p01=2.5, p11=2.1, p21=2.5, mpij, mp12, mp23, mp34, mp45, pnij, pn12, pn23, pn34, pn45, p0ij, p012, p023, p034, p045, p1ij, p112, p123, p134, p145, p2ij, p212, p223, p234, p245; int t=0, sch=1, ITERATION=1; float dt=1.0/BETA; /* this makes dt = 0.00005*/ long id = PERT_SEED; long *idum; float sign=1.0; char filename[300]; FILE *gg; gg = fopen("22mar07v2.dat", "w"); /*change filename here*/ idum=&id; /* Time Loop */ t=0; /*square wave generator*/ while (t++ < ENDTIME) { if (tytime_on <= (12.0 + t_ran_on*bandwidth) && sch == 1) { fi=mp_max; tytime_on = tytime_on + dt; } else if (tytime_on > (12.0 + t_ran_on*bandwidth) && sch==1) { tytime_on = 0.0; sch=2; t_ran_off = gasdev(idum); while (t_ran_off <-2.0 || t_ran_off > 2.0) t_ran_off = gasdev(idum); } if (timer_off <= (12.0 + t_ran_off*bandwidth) && sch == 2) { fi=mp_min; timer_off = timer_off + dt; } else if (timer_off > (12.0 + t_ran_off*bandwidth) && sch==2) { timer_off = 0.0; sch=1; t_ran_on = gasdev(idum); while (t_ran_on <-2.0 || t_ran_on > 2.0) t_ran_on = gasdev(idum); /* fprintf(stderr, "%f %f \n", kran, t_ran_on);*/ } /*step for Runge Kutta Method*/ mp=mp1; pn=pn1; p0=p01; p1=p11; p2=p21; /*ODEs for step one of Runge Kutta Method*/ mpij = (rs+fi)*(pow(Ki,n))/(pow(Ki,n) + pow(pn, n)) - rm*(mp/(Km + mp)); pnij = k1*p2 - k2*pn; p0ij = ks*mp - r1*(p0/(K1+p0)) + r2*(p1/(K2+p1)); p1ij = r1*(p0/(K1+p0)) - r2*(p1/(K2+p1)) - r3*(p1/(K3+p1)) + r4*(p2/(K4+p2)); p2ij = r3*(p1/(K3+p1)) - r4*(p2/(K4+p2)) - rd*(p2/(Kd+p2)) - k1*p2 + k2*pn; /* printf ( "%f %f %f %f %f %f\n", t*dt, mpij*1000, pnij*1000, p0ij*1000, p1ij*1000, p2ij*1000); */ /*step for Runge Kutta Method*/ mp12=dt*mpij; pn12=dt*pnij; p012=dt*p0ij; p112=dt*p1ij; p212=dt*p2ij; mp=mp1+mp12; pn=pn1+pn12; p0=p01+p012; p1=p11+p112; p2=p21+p212; /*ODEs for step two of Runge Kutta Method*/ mpij = (rs+fi)*(pow(Ki,n))/(pow(Ki,n) + pow(pn, n)) - rm*(mp/(Km + mp)); pnij = k1*p2 - k2*pn; p0ij = ks*mp - r1*(p0/(K1+p0)) + r2*(p1/(K2+p1)); p1ij = r1*(p0/(K1+p0)) - r2*(p1/(K2+p1)) - r3*(p1/(K3+p1)) + r4*(p2/(K4+p2)); p2ij = r3*(p1/(K3+p1)) - r4*(p2/(K4+p2)) - rd*(p2/(Kd+p2)) - k1*p2 + k2*pn; /* printf ( "%f %f %f %f %f %f\n", t*dt, mpij*1000, pnij*1000, p0ij*1000, p1ij*1000, p2ij*1000); */ /*step for Runge Kutta Method*/ mp23=dt*mpij; pn23=dt*pnij; p023=dt*p0ij; p123=dt*p1ij; p223=dt*p2ij; mp=mp1+mp23; pn=pn1+pn23; p0=p01+p023; p1=p11+p123; p2=p21+p223; /*ODEs for step three of Runge Kutta Method*/ mpij = (rs+fi)*(pow(Ki,n))/(pow(Ki,n) + pow(pn, n)) - rm*(mp/(Km + mp)); pnij = k1*p2 - k2*pn; p0ij = ks*mp - r1*(p0/(K1+p0)) + r2*(p1/(K2+p1)); p1ij = r1*(p0/(K1+p0)) - r2*(p1/(K2+p1)) - r3*(p1/(K3+p1)) + r4*(p2/(K4+p2)); p2ij = r3*(p1/(K3+p1)) - r4*(p2/(K4+p2)) - rd*(p2/(Kd+p2)) - k1*p2 + k2*pn; /* printf ( "%f %f %f %f %f %f\n", t*dt, mpij*1000, pnij*1000, p0ij*1000, p1ij*1000, p2ij*1000); */ /*step for Runge Kutta Method*/ mp34=dt*mpij; pn34=dt*pnij; p034=dt*p0ij; p134=dt*p1ij; p234=dt*p2ij; mp=mp1+mp34; pn=pn1+pn34; p0=p01+p034; p1=p11+p134; p2=p21+p234; /*ODEs for step four of Runge Kutta Method*/ mpij = (rs+fi)*(pow(Ki,n))/(pow(Ki,n) + pow(pn, n)) - rm*(mp/(Km + mp)); pnij = k1*p2 - k2*pn; p0ij = ks*mp - r1*(p0/(K1+p0)) + r2*(p1/(K2+p1)); p1ij = r1*(p0/(K1+p0)) - r2*(p1/(K2+p1)) - r3*(p1/(K3+p1)) + r4*(p2/(K4+p2)); p2ij = r3*(p1/(K3+p1)) - r4*(p2/(K4+p2)) - rd*(p2/(Kd+p2)) - k1*p2 + k2*pn; /* printf ( "%f %f %f %f %f %f\n", t*dt, mpij*1000, pnij*1000, p0ij*1000, p1ij*1000, p2ij*1000);*/ /*step for Runge Kutta Method*/ mp45=dt*mpij; pn45=dt*pnij; p045=dt*p0ij; p145=dt*p1ij; p245=dt*p2ij; /* Runge Kutta Method */ mp2=mp1 + (mp12 +2.0*mp23 +2.0*mp34 +mp45)/6.0 ; pn2=pn1 + (pn12 +2.0*pn23 +2.0*pn34 +pn45)/6.0 ; p02=p01 + (p012 +2.0*p023 +2.0*p034 +p045)/6.0 ; p12=p11 + (p112 +2.0*p123 +2.0*p134 +p145)/6.0 ; p22=p21 + (p212 +2.0*p223 +2.0*p234 +p245)/6.0 ; if (mp2>LOW_LIMIT) mp1=mp2; else mp1=LOW_LIMIT; if (pn2>LOW_LIMIT) pn1=pn2; else pn1=LOW_LIMIT; if (p02>LOW_LIMIT) p01=p02; else p01=LOW_LIMIT; if (p12>LOW_LIMIT) p11=p12; else p11=LOW_LIMIT; if (p22>LOW_LIMIT) p21=mp2; else p21=LOW_LIMIT; /* if(t>10000000) { if(!(t%2)) { max3=max2; max2=max1; max1=pn1; if (max2>max1 && max2>max3) { fprintf (gg, "%f %f\n, t_on, max2); } } } */ if(!(t%200000)) printf ("%f %f %f %f\n", t*dt, mp1, pn1, p01); if (!(t%1000)) { fprintf (gg, "%f %f %f %f %f %f %f\n", t*dt, mp1, pn1, p01, p11, p21, fi); } } /* end t */ /* end main*/ }