Docker-in-Docker (DinD) capabilities of public runners deactivated. More info

Commit 062b4f93 authored by Grégoire Uhlrich's avatar Grégoire Uhlrich
Browse files

Massless state in diagonalization + goldstone mass fixed + rotation stays on same fields

parent 3c6778d2
......@@ -40,7 +40,7 @@ class __data_alloc {
public:
std::map<Type, data_alloc> DATA;
std::map<Type, data_alloc> DATA{};
void record(Type type,
Time const& time)
......
This diff is collapsed.
......@@ -10,7 +10,7 @@ DYNAMICLIBRARY = libmarty.so
LTVERSION = 2.15
CXXDEBUG = $(CXX) -g # -D DEBUG
CXXFLAGS = $(MARTY_CXX_FLAGS) -Wall -Wextra -Wpedantic -std=c++17 -O3 -fPIC -Wfatal-errors
CXXFLAGS = $(MARTY_CXX_FLAGS) -Wall -Wextra -Wpedantic -std=c++17 -O3 -fPIC -Wfatal-errors -DDEBUGLOG
SRCDIR = src
HEADDIR = include
......@@ -35,9 +35,10 @@ GSLCBLASLIB = lib/libgslcblas.a
MAKE = /usr/bin/make
MODELDIR = models/include
SGLDIR = sgl/include
INCPATH = -I.. -I./$(HEADDIR) -I$(MODELDIR) -I../csl/$(HEADDIR)\
-I../jsonparser/$(HEADDIR) -I../grafed/$(HEADDIR)\
-I../jsonparser/$(HEADDIR) -I../grafed/$(HEADDIR) -I$(SGLDIR)\
-I../dependencies/LoopTools-2.15/include
LIBPATH = -L../dependencies/LoopTools-2.15/build
INCLIBPATH = $(INCPATH) $(LIBPATH)
......@@ -69,6 +70,10 @@ jsonOBJDEBUG = $(jsonSRC:../jsonparser/$(SRCDIR)/%.cpp=../jsonparser/$(OBJDIR)/%
modelSRC = $(wildcard models/src/*.cpp)
modelOBJ = $(modelSRC:models/src/%.cpp=models/obj/%.o)
modelOBJDEBUG = $(modelSRC:models/src/%.cpp=models/obj/%_debug.o)
sglSRC = $(wildcard sgl/src/*.cpp)
sglOBJ = $(sglSRC:sgl/src/%.cpp=sgl/obj/%.o)
sglOBJDEBUG = $(sglSRC:sgl/src/%.cpp=sgl/obj/%_debug.o)
BIN = $(subst .cpp,.x, $(subst $(PROGDIR)/,,$(PROG)))
BINDEBUG = $(subst .cpp,_debug.x,$(subst $(PROGDIR)/,,$(PROG)))
......@@ -79,7 +84,7 @@ all: lib release debug
marty: lib
lib: $(OBJ) $(OBJDEBUG) $(LIBDIR)/$(STATICLIBRARY) $(LIBDIR)/$(DYNAMICLIBRARY)\
$(modelOBJ) $(modelOBJDEBUG)
$(modelOBJ) $(modelOBJDEBUG) $(sglOBJDEBUG)
install:
mkdir -p $(INSTALLDIR)/include/marty
echo "#include \"marty/marty.h\"" >> $(INSTALLDIR)/include/marty.h
......@@ -105,7 +110,7 @@ $(OBJDIR)/%.o: $(SRCDIR)/%.cpp
$(PROGOBJDIR)/%.o: $(PROGDIR)/%.cpp
$(CXX) $(CXXFLAGS) -o $@ -c $< $(INCPATH)
%.x: $(PROGOBJDIR)/%.o $(OBJ) $(cslOBJ) $(jsonOBJ) $(drawerOBJ) $(modelOBJ)
%.x: $(PROGOBJDIR)/%.o $(OBJ) $(cslOBJ) $(jsonOBJ) $(drawerOBJ) $(modelOBJ) $(sglOBJ)
$(CXX) $(CXXFLAGS) -o $(BINDIR)/$@ $^ $(LIBPATH) $(LIBS)
......@@ -117,15 +122,15 @@ $(PROGOBJDIR)/%_debug.o: $(PROGDIR)/%.cpp
$(CXXDEBUG) $(CXXFLAGS) -o $@ -c $< $(INCPATH)
%_debug.x:$(PROGOBJDIR)/%_debug.o $(OBJDEBUG) $(cslOBJDEBUG) $(jsonOBJDEBUG) \
$(drawerOBJDEBUG) $(modelOBJDEBUG)
$(drawerOBJDEBUG) $(modelOBJDEBUG) $(sglOBJDEBUG)
$(CXXDEBUG) $(CXXFLAGS) -o $(BINDIR)/$@ $^ $(LIBPATH) $(LIBS)
# Library compilations
$(LIBDIR)/$(STATICLIBRARY): $(OBJ)
ar rcs $@ $(OBJ) $(cslOBJ) $(jsonOBJ) $(drawerOBJ) $(modelOBJ)
ar rcs $@ $(OBJ) $(cslOBJ) $(jsonOBJ) $(drawerOBJ) $(modelOBJ) $(sglOBJ)
$(LIBDIR)/$(DYNAMICLIBRARY): $(OBJ)
$(CXX) $(CXXFLAGS) -shared -o $@ $(OBJ) $(cslOBJ) $(jsonOBJ) $(drawerOBJ)\
$(modelOBJ) $(LIBPATH) $(LIBS)
$(modelOBJ) $(sglOBJ) $(LIBPATH) $(LIBS)
clean:
......
......@@ -30,9 +30,10 @@ GSLCBLASLIB = lib/libgslcblas.a
MAKE = /usr/bin/make
MODELDIR = models/include
SGLDIR = sgl/include
INCPATH = -I.. -I./$(HEADDIR) -I$(MODELDIR) -I../csl/$(HEADDIR)\
-I../jsonparser/$(HEADDIR) -I../grafed/$(HEADDIR)\
-I../jsonparser/$(HEADDIR) -I../grafed/$(HEADDIR) -I$(SGLDIR)\
-I../dependencies/LoopTools-2.15/include
LIBPATH = -L../dependencies/LoopTools-2.15/build
INCLIBPATH = $(INCPATH) $(LIBPATH)
......@@ -64,6 +65,10 @@ jsonOBJDEBUG = $(jsonSRC:../jsonparser/$(SRCDIR)/%.cpp=../jsonparser/$(OBJDIR)/%
modelSRC = $(wildcard models/src/*.cpp)
modelOBJ = $(modelSRC:models/src/%.cpp=models/obj/%.o)
modelOBJDEBUG = $(modelSRC:models/src/%.cpp=models/obj/%_debug.o)
sglSRC = $(wildcard sgl/src/*.cpp)
sglOBJ = $(sglSRC:sgl/src/%.cpp=sgl/obj/%.o)
sglOBJDEBUG = $(sglSRC:sgl/src/%.cpp=sgl/obj/%_debug.o)
BIN = $(subst .cpp,.x, $(subst $(PROGDIR)/,,$(PROG)))
BINDEBUG = $(subst .cpp,_debug.x,$(subst $(PROGDIR)/,,$(PROG)))
......@@ -74,7 +79,7 @@ all: lib release debug
marty: lib
lib: $(OBJ) $(OBJDEBUG) $(LIBDIR)/$(STATICLIBRARY) $(LIBDIR)/$(DYNAMICLIBRARY)\
$(modelOBJ) $(modelOBJDEBUG)
$(modelOBJ) $(modelOBJDEBUG) $(sglOBJDEBUG)
install:
mkdir -p $(INSTALLDIR)/include/marty
echo "#include \"marty/marty.h\"" >> $(INSTALLDIR)/include/marty.h
......@@ -100,7 +105,7 @@ $(OBJDIR)/%.o: $(SRCDIR)/%.cpp
$(PROGOBJDIR)/%.o: $(PROGDIR)/%.cpp
$(CXX) $(CXXFLAGS) -o $@ -c $< $(INCPATH)
%.x: $(PROGOBJDIR)/%.o $(OBJ) $(cslOBJ) $(jsonOBJ) $(drawerOBJ) $(modelOBJ)
%.x: $(PROGOBJDIR)/%.o $(OBJ) $(cslOBJ) $(jsonOBJ) $(drawerOBJ) $(modelOBJ) $(sglOBJ)
$(CXX) $(CXXFLAGS) -o $(BINDIR)/$@ $^ $(LIBPATH) $(LIBS)
......@@ -112,15 +117,15 @@ $(PROGOBJDIR)/%_debug.o: $(PROGDIR)/%.cpp
$(CXXDEBUG) $(CXXFLAGS) -o $@ -c $< $(INCPATH)
%_debug.x:$(PROGOBJDIR)/%_debug.o $(OBJDEBUG) $(cslOBJDEBUG) $(jsonOBJDEBUG) \
$(drawerOBJDEBUG) $(modelOBJDEBUG)
$(drawerOBJDEBUG) $(modelOBJDEBUG) $(sglOBJDEBUG)
$(CXXDEBUG) $(CXXFLAGS) -o $(BINDIR)/$@ $^ $(LIBPATH) $(LIBS)
# Library compilations
$(LIBDIR)/$(STATICLIBRARY): $(OBJ)
ar rcs $@ $(OBJ) $(cslOBJ) $(jsonOBJ) $(drawerOBJ) $(modelOBJ)
ar rcs $@ $(OBJ) $(cslOBJ) $(jsonOBJ) $(drawerOBJ) $(modelOBJ) $(sglOBJ)
$(LIBDIR)/$(DYNAMICLIBRARY): $(OBJ)
$(CXX) $(CXXFLAGS) -shared -o $@ $(OBJ) $(cslOBJ) $(jsonOBJ) $(drawerOBJ)\
$(modelOBJ) $(LIBPATH) $(LIBS)
$(modelOBJ) $(sglOBJ) $(LIBPATH) $(LIBS)
clean:
......
......@@ -190,6 +190,10 @@ class FeynmanIntegral: public csl::AbstractMultiFunc {
return loopToolsId;
}
std::vector<size_t> const &getIntegralIndices() const {
return integralIndices;
}
bool isIndexed() const override { return false; }
void print(int mode = 0,
......
......@@ -166,7 +166,8 @@ public:
std::vector<mty::Particle> const &fields,
std::vector<mty::Particle> const &newFields,
std::vector<std::vector<csl::Expr>> const &rotation,
bool diagonalizeMasses = false
bool diagonalizeMasses = false,
int nMassLessFields = 0
);
void rotateFields(
......@@ -175,24 +176,28 @@ public:
std::vector<std::vector<csl::Expr>> const &rotation1,
std::vector<mty::Particle> const &fields2,
std::vector<mty::Particle> const &newFields2,
std::vector<std::vector<csl::Expr>> const &rotation2
std::vector<std::vector<csl::Expr>> const &rotation2,
int nMassLessFields = 0
);
std::vector<mty::Particle> rotateFields(
void rotateFields(
std::vector<mty::Particle> const &fields,
bool diagonalizeMasses = false
bool diagonalizeMasses = false,
int nMassLessFields = 0
);
std::vector<mty::Particle> birotateFields(
void birotateFields(
std::vector<mty::Particle> const &fields1,
std::vector<mty::Particle> const &fields2
std::vector<mty::Particle> const &fields2,
int nMassLessFields = 0
);
void rotateFields(
std::initializer_list<std::string> fields,
std::initializer_list<std::string> newFields,
std::vector<std::vector<csl::Expr>> const &rotation,
bool diagonalizeMasses = false
bool diagonalizeMasses = false,
int nMassLessFields = 0
);
void rotateFields(
......@@ -201,17 +206,20 @@ public:
std::vector<std::vector<csl::Expr>> const &rotation1,
std::initializer_list<std::string> fields2,
std::initializer_list<std::string> newFields2,
std::vector<std::vector<csl::Expr>> const &rotation2
std::vector<std::vector<csl::Expr>> const &rotation2,
int nMassLessFields = 0
);
std::vector<mty::Particle> rotateFields(
void rotateFields(
std::initializer_list<std::string> fields,
bool diagonalizeMasses = false
bool diagonalizeMasses = false,
int nMassLessFields = 0
);
std::vector<mty::Particle> birotateFields(
void birotateFields(
std::initializer_list<std::string> fields1,
std::initializer_list<std::string> fields2
std::initializer_list<std::string> fields2,
int nMassLessFields = 0
);
void applyUnitaryCondition(
......
......@@ -199,12 +199,10 @@ namespace mty {
Bilinear{p1, p4, {c1_A}},
Bilinear{p3, p2, {c1_B}}
});
std::cout << "BEFORE EOM" << std::endl;
newBilinears.back().first.print();
newBilinears.back().second.print();
newBilinears.back().first.applyEOM();
newBilinears.back().second.applyEOM();
std::cout << "AFTER EOM" << std::endl;
newBilinears.back().first.print();
newBilinears.back().second.print();
}
......
......@@ -163,12 +163,14 @@ csl::Expr DiracSpace::calculateTrace(csl::vector_expr tensors) const
return sum_s(terms);
}
}
if (tensors.empty())
if (tensors.empty()) {
return csl::int_s(dim);
}
expandAbbreviations(tensors);
for (const auto& t : tensors)
if (!isGammaTensor(t))
if (!isGammaTensor(t)) {
return prod_s(tensors, true);
}
size_t count = countGammaMult(tensors);
if (count % 2 == 1) {
return CSL_0;
......
......@@ -1766,9 +1766,7 @@ FeynmanIntegral::FeynmanIntegral(IntegralType t_type,
"Expected " + toString(nArgumentsForIntegral(type)) + " arguments"
" for integral of type " + toString(type) + ", "
+ toString(t_argument.size()) + " given.");
if (loopToolsId == -1) {
integralIndices = t_indices;
}
integralIndices = t_indices;
argument = t_argument;
}
......
......@@ -46,6 +46,7 @@ Insertion::Insertion(csl::Expr const& t_field)
expression = t_field;
incoming = field_ptr->isIncoming();
particle = field_ptr->isParticle();
onShell = field_ptr->isOnShell();
}
Insertion::Insertion(std::string_view name)
......@@ -107,6 +108,7 @@ csl::Expr Insertion::getExpression() const
insert_ptr->setExternal(true);
insert_ptr->setIncoming(incoming);
insert_ptr->setParticle(particle);
insert_ptr->setOnShell(onShell);
expression = insertion;
return insertion;
......
......@@ -500,7 +500,9 @@ void ModelBuilder::rotateFields(
std::vector<mty::Particle> const& fields,
std::vector<mty::Particle> const& newFields,
std::vector<std::vector<csl::Expr>> const& rotation,
bool diagonalizeMasses)
bool diagonalizeMasses,
int nMassLessFields
)
{
checksRotation(fields, newFields, rotation);
addParticles(newFields, false);
......@@ -529,6 +531,9 @@ void ModelBuilder::rotateFields(
rotation,
fullMassMatrix
);
for (int i = 0; i < nMassLessFields; ++i) {
newFields[i]->setMass(CSL_0);
}
}
applyUnitaryCondition(rotation);
}
......@@ -539,7 +544,8 @@ void ModelBuilder::rotateFields(
std::vector<std::vector<csl::Expr>> const& rotation1,
std::vector<mty::Particle> const& fields2,
std::vector<mty::Particle> const& newFields2,
std::vector<std::vector<csl::Expr>> const& rotation2
std::vector<std::vector<csl::Expr>> const& rotation2,
int nMassLessFields
)
{
checksRotation(fields1, newFields1, rotation1);
......@@ -577,11 +583,17 @@ void ModelBuilder::rotateFields(
rotation2,
fullMassMatrix
);
for (int i = 0; i < nMassLessFields; ++i) {
newFields1[i]->setMass(CSL_0);
newFields2[i]->setMass(CSL_0);
}
}
std::vector<mty::Particle> ModelBuilder::rotateFields(
std::vector<mty::Particle> const& fields,
bool diagonalizeMasses)
void ModelBuilder::rotateFields(
std::vector<mty::Particle> const& fields,
bool diagonalizeMasses,
int nMassLessFields
)
{
std::vector<mty::Particle> newFields(fields.size());
for (size_t i = 0; i != fields.size(); ++i)
......@@ -612,14 +624,18 @@ std::vector<mty::Particle> ModelBuilder::rotateFields(
);
}
}
rotateFields(fields, newFields, mixing, diagonalizeMasses);
return newFields;
rotateFields(fields, newFields, mixing, diagonalizeMasses, nMassLessFields);
for (size_t i = 0; i != newFields.size(); ++i) {
replace(newFields[i], fields[i]->getInstance());
if (diagonalizeMasses)
fields[i]->setMass(newFields[i]->getMass());
}
}
std::vector<mty::Particle> ModelBuilder::birotateFields(
void ModelBuilder::birotateFields(
std::vector<mty::Particle> const& fields1,
std::vector<mty::Particle> const& fields2
std::vector<mty::Particle> const& fields2,
int nMassLessFields
)
{
std::vector<mty::Particle> newFields1(fields1.size());
......@@ -666,18 +682,24 @@ std::vector<mty::Particle> ModelBuilder::birotateFields(
}
}
rotateFields(fields1, newFields1, mixing1,
fields2, newFields2, mixing2);
fields2, newFields2, mixing2,
nMassLessFields);
applyUnitaryCondition(mixing1);
applyUnitaryCondition(mixing2);
newFields1.insert(newFields1.end(), newFields2.begin(), newFields2.end());
return newFields1;
for (size_t i = 0; i != newFields1.size(); ++i) {
replace(newFields1[i], fields1[i]->getInstance());
fields1[i]->setMass(newFields1[i]->getMass());
replace(newFields2[i], fields2[i]->getInstance());
fields2[i]->setMass(newFields2[i]->getMass());
}
}
void ModelBuilder::rotateFields(
std::initializer_list<std::string> fields,
std::initializer_list<std::string> newFields,
std::vector<std::vector<csl::Expr>> const &rotation,
bool diagonalizeMasses
bool diagonalizeMasses,
int nMassLessFields
)
{
if (fields.size() == 0)
......@@ -691,7 +713,13 @@ void ModelBuilder::rotateFields(
for (const auto &name : newFields)
newFields_p.push_back(fields_p[0]->generateSimilar(name));
rotateFields(fields_p, newFields_p, rotation, diagonalizeMasses);
rotateFields(
fields_p,
newFields_p,
rotation,
diagonalizeMasses,
nMassLessFields
);
}
void ModelBuilder::rotateFields(
......@@ -700,7 +728,8 @@ void ModelBuilder::rotateFields(
std::vector<std::vector<csl::Expr>> const &rotation1,
std::initializer_list<std::string> fields2,
std::initializer_list<std::string> newFields2,
std::vector<std::vector<csl::Expr>> const &rotation2
std::vector<std::vector<csl::Expr>> const &rotation2,
int nMassLessFields
)
{
if (fields1.size() == 0 or fields2.size() == 0)
......@@ -723,13 +752,15 @@ void ModelBuilder::rotateFields(
rotateFields(
fields1_p, newFields1_p, rotation1,
fields2_p, newFields2_p, rotation2
fields2_p, newFields2_p, rotation2,
nMassLessFields
);
}
std::vector<mty::Particle> ModelBuilder::rotateFields(
void ModelBuilder::rotateFields(
std::initializer_list<std::string> fields,
bool diagonalizeMasses
bool diagonalizeMasses,
int nMassLessFields
)
{
std::vector<mty::Particle> fields_p;
......@@ -737,12 +768,13 @@ std::vector<mty::Particle> ModelBuilder::rotateFields(
for (const auto &name : fields)
fields_p.push_back(getParticle(name));
return rotateFields(fields_p, diagonalizeMasses);
rotateFields(fields_p, diagonalizeMasses, nMassLessFields);
}
std::vector<mty::Particle> ModelBuilder::birotateFields(
void ModelBuilder::birotateFields(
std::initializer_list<std::string> fields1,
std::initializer_list<std::string> fields2
std::initializer_list<std::string> fields2,
int nMassLessFields
)
{
std::vector<mty::Particle> fields1_p;
......@@ -755,7 +787,7 @@ std::vector<mty::Particle> ModelBuilder::birotateFields(
for (const auto &name : fields2)
fields2_p.push_back(getParticle(name));
return birotateFields(fields1_p, fields2_p);
birotateFields(fields1_p, fields2_p, nMassLessFields);
}
void ModelBuilder::applyUnitaryCondition(
......@@ -842,11 +874,11 @@ void ModelBuilder::doPromoteToGoldstone(
mty::partialMinko(+mu, X)*gaugeBoson(_mu, X))
* (mty::partialMinko(+nu, X)*gaugeBoson(_nu, X)));
addLagrangianTerm(
factor * m*m*xi
-factor * m*m*xi
* csl::GetComplexConjugate((*goldstone)(indices, X))
* (*goldstone)(indices, X));
addLagrangianTerm(
- factor * m
factor * m
* csl::GetComplexConjugate(gaugeBoson(_mu, X))
* (mty::partialMinko(+mu, X)*(*goldstone)(indices, X)),
true);
......@@ -2023,6 +2055,9 @@ void ModelBuilder::applyDiagonalizationData(
masses.emplace_back(
csl::LibraryGenerator::regularName(p->getMass()->getName())
);
if (masses.back().empty()) {
masses.back() = "m_" + p->getName();
}
}
for (size_t i = 0; i != initMix.size1(); ++i)
for (size_t j = 0; j != initMix.size2(); ++j) {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment