      (catch Exception e
        pos-infinity))))
 
-;; Overall Energy
-
-(def *repulsive-energy-amount* 1)
-(def *attractive-energy-amount* 1)
-(def *gravitative-energy-amount* 1)
+(defn- gravitative-force
+  "Computes the n-th component of the vector of gravitative forces
+  acting on the inf-irreducible elements of layout. The vector itself
+  has 2n entries."
+  [layout inf-irrs n]
+  (throw (UnsupportedOperationException. "Not yet implemented.")))
+
+;; Overall Energy and Force
+
+(def *repulsive-amount* 1)
+(def *attractive-amount* 1)
+(def *gravitative-amount* 1)
 
 (defn- layout-energy
   "Returns the overall energy of the given layout."
   [layout additional-information]
-  (+ (* *repulsive-energy-amount* (repulsive-energy layout))
-     (* *attractive-energy-amount* (attractive-energy layout))
-     (* *gravitative-energy-amount* (gravitative-energy layout additional-information))))
-
+  (+ (* *repulsive-amount* (repulsive-energy layout))
+     (* *attractive-amount* (attractive-energy layout))
+     (* *gravitative-amount* (gravitative-energy layout additional-information))))
+
+(defn- layout-force
+  "Computes overall force _component_ of index n in the inf-irreducible elements."
+  [layout inf-irrs n additional-information]
+  (throw (UnsupportedOperationException. "Not yet implemented.")))
 
 (defn- energy-by-inf-irr-positions
   "Returns a function calculating the energy of an attribute additive

   (catch Exception e
     pos-infinity)))

;; Attractive Energy

(defn- attractive-energy
  "Computes the attractive energy of the given layout."

	   (for ~bindings
	     (double ~expr))))

;; Repulsive Energy and Force

(defn- node-line-distance
  "Returns the distance from node to the line between [x_1, y_1] and [x_2, y_2]."
