clwainwright / CosmoTransitions

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

Low vev issue for 2nd-order phase transition #31

Closed nicobenincasa closed 2 years ago

nicobenincasa commented 3 years ago

Hello,

In transitionFinder.secondOrderTrans, it is written the following: rdict['low_vev'] = rdict['high_vev'] = high_phase.X[0] Instead, I would write for rdict['low_vev'] the following: rdict['low_vev'] = low_phase.X[-1].

Indeed, in the case where I encounter this problem, I get from getPhases() the following: {0: Phase(key=0, X=[[246.1 1.723e-08], ..., [159 5.111e-10]], T=[0, ..., 124.3], dXdT=[[0 -0], ..., [-3.765 -1.815e-09]], 1: Phase(key=1, X=[[-2.774e-05 85.45], ..., [-9.095e-07 1.805]], T=[97.18, ..., 195.9], dXdT=[[7.368e-05 -0.1567], ..., [7.58e-08 -114.6]], 2: Phase(key=2, X=[[-3.3e-06 -0.0004679], ..., [1.482e-10 2.056e-08]], T=[196, ..., 1000], dXdT=[[7.227e-08 0.04722], ..., [-3.333e-13 -5.087e-11]]}.

Next from calcTcTrans() I get {'Tcrit': 195.95176635278509, 'low_vev': array([-3.30010242e-06, -4.67890908e-04]), 'high_vev': array([-3.30010242e-06, -4.67890908e-04]), 'low_phase': 1, 'high_phase': 2, 'action': 0.0, 'instanton': None, 'trantype': 2, 'Delta_rho': 0.0} where we clearly see that 'low_vev' and 'high_vev' are identical while 'low phase' and 'high_phase' are different. Therefore if I want to know in which direction was the transition I will get (0,0)->(0,0) instead of (0,0) -> (0, phi2). (Of course, it is technically ok to have identical low_vev and high_vev since this is a 2nd-order (and thus smooth) phase transition, so the position of the true vacuum will start to evolve from the position of the false one.)