Ejemplo n.º 1
0
double calc_growth(double a)
{
   double t1, t2;
   
   t1 = INTEGRATE(dtda3, 0.0, a, a/10., 1e-8);
   t2 = calc_a_dot(a)/a;
   
   return(2.5 * simu.omega0 * t1 * t2);
}
Ejemplo n.º 2
0
/*==========================================================================
 * calc_super_t: calculate super_t(a) via integration
 *==========================================================================*/
double calc_super_t(double a)
{
   double  super_t;
   double  dsuper_tda(double);
   
   super_t = (double) INTEGRATE(dsuper_tda, a, (double)1.0, (double)0.1*a, (double)1.e-5);
   
   return(-super_t);
}
Ejemplo n.º 3
0
/*==========================================================================
 * calc_t: calculate t(a) via integration
 *==========================================================================*/
double calc_t(double a)
{
   double  t;
   double  dtda(double);
   
   t = (double) INTEGRATE(dtda, (double)0.0, a, (double)0.1*a, (double)1.e-5);
   
   return(t);
}
Ejemplo n.º 4
0
int main()
{
KPP_REAL dval[NSPEC];
int i;
 
/* ---- TIME VARIABLES ------------------ */

  RTOLS = 1e-3;
  TSTART = 3600*12;
  TEND = TSTART + 3600*24*5;
  DT = 3600.;
  TEMP = 236.21;

  Initialize();
      
  for( i = 0; i < NVAR; i++ ) {
    RTOL[i] = RTOLS;
    ATOL[i] = 1.0;
  }
  STEPMIN = 0.01;
  STEPMAX = 900;
      
/* ********** TIME LOOP **************************** */

  InitSaveData();

  printf("\n%7s %7s   ", "done[%]", "Time[h]");
  for( i = 0; i < NMONITOR; i++ )  
    printf( "%8s  ", SPC_NAMES[MONITOR[i]] );
  for( i = 0; i < NMASS; i++ )  
    printf( "(%6s)  ", SMASS[i] );
  
  TIME = TSTART;
  while (TIME <= TEND) {
    GetMass( C, dval );
    printf("\n%6.1f%% %7.2f   ", (TIME-TSTART)/(TEND-TSTART)*100, TIME/3600 );
    for( i = 0; i < NMONITOR; i++ ) 
      printf( "%9.3e  ", C[ MONITOR[i] ]/CFACTOR );
    for( i = 0; i < NMASS; i++ ) 
      printf( "%9.3e  ", dval[i]/CFACTOR );
    
    SaveData();

    INTEGRATE( TIME , TIME+DT );
    TIME += DT;
  }

/* *********** END TIME LOOP *********************** */

  printf("\n");
  CloseSaveData();

    return 0; /*didnt return anything initially */

}
Ejemplo n.º 5
0
double collapse(double age0, double acc)
{
   double age, omega0_safe, omega_ta, omax, omin;
   double dtda_ta(double);
   
   /* this routine (ab-)uses COMMON variable simu.omega0 */
   omega0_safe = simu.omega0;
   
   age  = (double)-1.;
   omax = omax0;
   omin = omin0;
   
   while( fabs(age-age0) > acc*age0 && omax-omin > acc*simu.omega0)
     {
      simu.omega0 = (double)0.5*(omax+omin);
      
      age = INTEGRATE(dtda_ta, (double)0., (double)1., (double)0.1, acc);
      
      if (age > age0)
         omin = simu.omega0;
      else
         omax = simu.omega0;
      
      
     }
   
#ifdef VERBOSE
   if (omax == omax0 || omin == omin0)
     {
      fprintf(stderr,"WARNING: presumed bounds for omega are inadequate in COLLAPSE.\n");
      fprintf(stderr,"WARNING: omax=%g,omax0=%g,omin=%g,omin0=%g\n",(omax),(omax0),(omin),(omin0));
     }
#endif
  
//   fprintf(stderr, "age0 = %f, age = %f\n", age0, age);
//   fprintf(stderr, "omega0 = %f\n", simu.omega0);
//   
//   FILE *fp;
//   fp = fopen ("por.dat", "w");
//   for(simu.omega0 = 0; simu.omega0 <= 20; simu.omega0+=.1)
//   {
//     age = INTEGRATE(dtda_ta, (double)0., (double)1., (double)0.1, acc);
//     fprintf(fp, "%f  %f\n", simu.omega0, age);
//   }
  
   /* get back original value */
   omega_ta    = simu.omega0;
   simu.omega0 = omega0_safe;
   
   return (omega_ta);
}
Ejemplo n.º 6
0
void main()
{
KPP_REAL rtols;
KPP_REAL Tstart, Tend, DT;
FILE * fp;
int i;
 
/* ---- TIME VARIABLES ------------------ */

  rtols = 1e-3;
  for( i = 0; i < NVAR; i++ ) {
    RTOL[i] = rtols;
    ATOL[i] = 1E-18;
  }
     
  Initialize();
      
  fp = fopen("Extrapd.m", "w");
  fprintf( fp, "ed=[\n");
       
  Tstart = 3600*12;
  Tend = Tstart + 3600*24*5;
  STEPMIN = 0.001;
  STEPMAX = 900;
  DT = 3600.;
  TEMP = 236.21;
      
/* -- BELOW THIS LIMIT USE TAYLOR INSTEAD OF EXP --- */
/* ********** TIME LOOP **************************** */

  TIME = Tstart;
  while (TIME <= Tend) {

    printf("\nMonitor: ");
    for( i = 0; i < NMONITOR; i++ ) 
      printf( "%12.8g  ", C[ MONITOR[i] ]/CFACTOR );

    fprintf( fp, "\n%6.1f ", (TIME-Tstart)/3600.0 );
    for( i = 0; i < NLOOKAT; i++ ) 
      fprintf( fp, "%24.16e ", C[ LOOKAT[i] ]/CFACTOR );

    INTEGRATE( DT );
  }

/* *********** END TIME LOOP *********************** */

  fprintf(fp, "\n];");
  fclose( fp );
  printf("\n");
}
Ejemplo n.º 7
0
void saprc99(double *conc, double temp, double tstart, double tend, double dt)
{
  C = conc;
  VAR = &C[0];
  FIX = &C[74];
 
  TEMP = temp;      //236.21;
  
  TSTART = tstart;  //3600*12;
  TEND = tend;      //TSTART + 3600*24*5;
  DT = dt;          //3600.;
  
  TIME = TSTART;
  while (TIME <= TEND) 
  {
    INTEGRATE( TIME , TIME+DT );
    TIME += DT;
  }

}