For many purposes it is helpful to know when inflation ends, given a set of initial conditions. Currently PyT.backEvolve() supplies some of this functionality, but doesn't return the exact time at which epsilon first exceeds unity.
This set of commits sets up a new PyTransport module method, findEndOfInflation(), with signature
where initial_conditions is a set of initial conditions for the fields and their velocities (as would be passed to backEvolve()), params is a list of parameter values, tols is a list of tolerances, NStart labels the e-folding time corresponding to initial_conditions, and DeltaN optionally specifies the width of the search window. If DeltaN is omitted then the search window defaults to 10,000 e-folds.
The function returns None if epsilon does not exceed unity anywhere in the search region, or if the field- or parameter-vectors were the incorrect length. (Perhaps it would be more desirable to distinguish these cases by raising an exception? But returning None if inflation continues throughout the search window seems conceptually the right thing to do.) If inflation does end then it returns the first time at which epsilon > 1. The uncertainty in the determination is roughly the current stepper stride length, which should typically be acceptable.
Example
Nstart = 0.0
Nend = PyT.findEndOfInflation(fields, params, tols, Nstart)
if Nend is not None:
print 'end of inflation detected at N = {v}'.format(v=Nend)
else:
print 'end of inflation not detected within search window'
yields
$ python test.py
end of inflation detected at N = 79.1013626167
For many purposes it is helpful to know when inflation ends, given a set of initial conditions. Currently
PyT.backEvolve()
supplies some of this functionality, but doesn't return the exact time at which epsilon first exceeds unity.This set of commits sets up a new PyTransport module method,
findEndOfInflation()
, with signaturewhere
initial_conditions
is a set of initial conditions for the fields and their velocities (as would be passed tobackEvolve()
),params
is a list of parameter values,tols
is a list of tolerances,NStart
labels the e-folding time corresponding toinitial_conditions
, andDeltaN
optionally specifies the width of the search window. IfDeltaN
is omitted then the search window defaults to 10,000 e-folds.The function returns
None
if epsilon does not exceed unity anywhere in the search region, or if the field- or parameter-vectors were the incorrect length. (Perhaps it would be more desirable to distinguish these cases by raising an exception? But returningNone
if inflation continues throughout the search window seems conceptually the right thing to do.) If inflation does end then it returns the first time at whichepsilon > 1
. The uncertainty in the determination is roughly the current stepper stride length, which should typically be acceptable.Example
yields