13 def __call__(dimension: int) -> HamiltonianDefinition:
14 mass = symbols(
"mass")
15 coupling_constant = symbols(
"coupling_constant")
16 coupling_power = symbols(
"coupling_power")
18 pi = symbols(f
"pi0:{dimension}")
20 metric_sign = [-1] + [1] * (dimension - 1)
23 + sum(metric_sign[i] * pi[i] ** 2
for i
in range(dimension))
24 ) - coupling_constant * phi**coupling_power / gamma(coupling_power + 1)
26 return HamiltonianDefinition(
27 namespace=
"similie::physics::scalar_field",
28 struct_name=
"ScalarFieldWithPowerCouplingHamiltonian",
29 parameters=[
"mass",
"coupling_constant",
"coupling_power"],
30 hamiltonian=hamiltonian,
32 template_parameters=[
"class TemporalIndex",
"class... SpatialIndex"],