261{
262
263 const gsl_odeiv2_step_type * T = gsl_odeiv2_step_rk4;
264
265
266 gsl_odeiv2_step *
s = gsl_odeiv2_step_alloc(T, NumberOfRGEs);
267
268
269
270
271 gsl_odeiv2_control * c = gsl_odeiv2_control_y_new(1e-6, 0.0);
272
273
274 gsl_odeiv2_evolve * e = gsl_odeiv2_evolve_alloc(NumberOfRGEs);
275
276
278
279
280 double t1 = Q1*log(10.0);
281 double t2 = Q2*log(10.0);
282 double tNLOuni = NLOuniscale*log(10.0);
283
284
285 double InitialStepSize = 1e-6;
286
287
288 while (t1 < t2)
289 {
290 int status = gsl_odeiv2_evolve_apply (e, c,
s, &RGEsystem, &t1, t2, &InitialStepSize, InitialValues);
291 if(status != GSL_SUCCESS) break;
292
293
294 if(
RGEcheckGTHDM(InitialValues,t1,Rpeps,tNLOuni) != 0)
break;
295 }
296
297 gsl_odeiv2_evolve_free (e);
298 gsl_odeiv2_control_free (c);
299 gsl_odeiv2_step_free (
s);
300
301
302 return t1/log(10.0);
303}
int RGEsGTHDM(double t, const double y[], double beta[], void *flags)
int RGEcheckGTHDM(const double InitialValues[], const double t1, const double Rpeps, const double tNLOuni)
int JacobianGTHDM(double t, const double y[], double *dfdy, double dfdt[], void *order)