clwainwright / CosmoTransitions

A package for analyzing finite or zero-temperature cosmological phase transitions driven by single or multiple scalar fields.
MIT License
25 stars 19 forks source link

Incorrect nucleation temperature #4

Closed PhysicsBaker closed 7 years ago

PhysicsBaker commented 7 years ago

Hi Max,

I'm having a problem where it seems that cosmotransitions is returning an incorrect nucleation temperature. I think the issue is related to Nikita's closed issue.

When I extract S_3 / T from cosmotransitions and plot it as a function of T I get a 'U' shape, similar to that on Thomas Konstandin 'Tunnel probability' and 'Effective model' slides here: https://indico.cern.ch/event/367218/contributions/867645/attachments/730035/1001752/seminar_v3.pdf

Physics wise, I think the phase transition should happen at the highest T for which S_3 / T < 140. However, cosmotransitions returns the lowest T. When I run findAllTransitions() on my model it returns

Tracing phase starting at x = [ 2.46897564e+02 1.08843929e-05] ; t = 0.0 Tracing minimum up traceMinimum t0 = 0 ...................................... Tracing phase starting at x = [ 1.03336990e-05 7.85294117e+01] ; t = 160.798047076 Tracing minimum down traceMinimum t0 = 160.798 ................ Tracing minimum up traceMinimum t0 = 160.798 .......... Tunneling from phase 1 to phase 0 at T=0 high_vev = [ 1.71292948e-06 8.01430724e+01] low_vev = [ 2.46897553e+02 4.47880524e-07] Path deformation converged. 14 steps. fRatio = 1.52553e-02 Path deformation converged. 1 steps. fRatio = 1.12174e-02 Action = 899.508455384 , T = 0.0 Tunneling from phase 1 to phase 0 at T=0.00025 high_vev = [ -1.04758247e-06 8.01430723e+01] low_vev = [ 2.46897552e+02 -1.33137054e-07] Path deformation converged. 14 steps. fRatio = 1.52553e-02 Path deformation converged. 1 steps. fRatio = 1.12174e-02 Action = 899.508119181 , T = 0.00025 Tunneling from phase 1 to phase 0 at T=0.0005 high_vev = [ 1.54123341e-07 8.01430720e+01] low_vev = [ 2.46897552e+02 4.82574080e-07] Path deformation converged. 14 steps. fRatio = 1.52553e-02 Path deformation converged. 1 steps. fRatio = 1.12174e-02 ...

so we can see that it is starting the tunnelling calculation from T = 0 and working upwards. This would be fine if, as you mention in your reply to Nikita, S_3 / T is monotonically increasing, but for my model that doesn't seem to be the case.

Can you confirm if it is likely that cosmotransitions is indeed making a mistake here, or is there something I'm missing? If it is making a mistake, is there a method you would suggest to follow to fix it? For instance, is there a way to get it to work downwards from the critical temperature?

Many thanks,

Michael

clwainwright commented 7 years ago

Hi Mike,

It's been a while since I've looked at this, but the intention was definitely to find the correct higher temperature in situations like this. The critical section of code is in transitionFinder.tunnelFromPhase(), in particular line 843. If it runs into a situation where S3/T is bigger than 140 at both Tmax and Tmin, it should attempt to find a new Tmin somewhere in between where S3/T is in fact at its minimum. It will then use that new minimum as the baseline for finding the point at which S3/T first drops below 140. I'm not sure why it would be returning the lower of the two temperatures instead.

If you provide a reproducible test case I should be able to dig into it some more.

Best wishes, Max

PhysicsBaker commented 7 years ago

Hi Max,

Thanks again for your swift reply. The problem seems to be with the new Tmax that's found by transitionFinder._maxTCritForPhase(), if f(a) and f(b) have the same sign. In my case, Tmax is getting set to 0. I think I've tracked down the cause of the problem to the function transitionFinder._potentialDiffForPhase().

Line 722 is currently

    V1 = V(start_phase.valAt(T),T)

whereas I think it should be

    V1 = V(phase.valAt(T),T)

Do you agree?

If I make this change, cosmoTransitions finds the correct, higher, nucleation temperature in my case.

Best,

Michael

clwainwright commented 7 years ago

That definitely looks like a bug. Thanks for catching it. I've pushed a commit with the offending line swapped out.