Division by 0 in MakeSPheno
Posted: 1. May 2016, 09:03
In MakeSPheno, when it is "Processing couplings for 2-loop effective potential", the replacement
can cause divisions by zero error even if the limit is well defined.
Assuming that the terms are smooth in the neighbourhood of the couplings being equal to zero, then this can be fixed with the following patch:
Code: Select all
temp = Select[temp /.subZeroGaugeLess ,#[[1,2,1]]=!=0&];
Assuming that the terms are smooth in the neighbourhood of the couplings being equal to zero, then this can be fixed with the following patch:
Code: Select all
--- a/SARAH-4.8.5/Package/SPheno/SPhenoCoupling.m
+++ b/SARAH-4.8.5/Package/SPheno/SPhenoCoupling.m
@@ -99,7 +99,7 @@ CouplingUsedForEffPot=True; (* in order to apply the correct color sum *)
listBrokenGaugeCouplings=DeleteCases[Transpose[BetaGauge][[1]],strongCoupling];
(* listBrokenGaugeCouplings=Extract[Gauge,Join[#,{4}]&/@(Position[SGauge /. A_[{b__}]\[Rule]A,#][[1]]&/@Select[SGauge /. A_[{b__}]\[Rule]A,FreeQ[Particles[SA`CurrentStates],#]&])]; *)
subZeroGaugeLess=Table[listBrokenGaugeCouplings[[i]]->0,{i,1,Length[listBrokenGaugeCouplings]}];
-temp = Select[temp /. subZeroGaugeLess,#[[1,2,1]]=!=0&];
+temp = Select[Fold[Limit[#1, #2] &, temp, subZeroGaugeLess] ,#[[1,2,1]]=!=0&];
temp=SPhenoCouplingList[temp];
CouplingUsedForEffPot=False;
@@ -110,7 +110,7 @@ WriteSPhenoAllCouplings[SPhenoCouplings4P,parametersAll4P,namesAll4P,"CouplingsF
DynamicCouplingsEffpot="3 point vertices";
AllRelevant=getAllRelevantCouplings[VertexListNonCC];
-AllRelevant = Select[AllRelevant /. subZeroGaugeLess,If[Length[#[[1]]]===3,(#[[1,2,1]]=!=0) ||( #[[1,3,1]]=!=0),#[[1,2,1]]=!=0]&];
+AllRelevant = Select[Fold[Limit[#1, #2] &, AllRelevant, subZeroGaugeLess] ,If[Length[#[[1]]]===3,(#[[1,2,1]]=!=0) ||( #[[1,3,1]]=!=0),#[[1,2,1]]=!=0]&];
temp=SPhenoCouplingList[AllRelevant];
SPhenoCouplings3P=temp[[1]];
parametersAll3P=temp[[2]];