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

How to define path_pts (array_like) in full.tunneling() #34

Open hanipasha13 opened 1 year ago

hanipasha13 commented 1 year ago

I am using CosmoTransition to get the action and tunneling of an MSSM potential with 3 scalar fields, and I write my potential in full-tunneling () example. In this regard, I have two questions: First, to substitute path_pts (array_like), should I have an array with three points that my fields are? I would like to ask you that when I substitute path_pts (array_like) in full.tunneling(), should I have an array with three points that my fields are? For example, the metastable min is when all of them are 0, and the lower one is when (h=3, L=1.5, tau=1.5), so I write it like this : [3,1.5,1.5], [0,0,0], but I get an error that:

raise PotentialError("V(phi_metaMin) <= V(phi_absMin); " cosmoTransitions.tunneling1D.PotentialError: ('V(phi_metaMin) <= V(phi_absMin); tunneling cannot occur.', 'stable, not metastable').

But here the potential at first point is -31 which is lower than the potential at 0. I don't know if my points are wrong or the way I write path_pts and if I should change other parts of the code in the case of 3 fields.

Second, in this example, I think the default is calculating action for finite temperature, but I need to change it to 0-temperature, How can I do this?

clwainwright commented 1 year ago

If you just want to initialize the path as a straight line between your two minima—which is totally reasonable—then yes you should write it as fullTunneling(path_pts=[[3,1.5,1.5], [0,0,0]], ...). It's hard to know why you would be hitting the PotentialError without digging into it a little deeper. Do you hit the error right away, or only have after a few steps of deformation? You might want to set some breakpoints in the code so you can figure out what's going on and visualize it.

To take a finite-temperature potential and pass it in at zero temperature for the pathDeformation module, just use a partial function or lambda. E.g., V = partial(model.V, T=0)