def METHOD_NAME(self):
    """
    Testing ELC against the analytic solution for an infinitely large
    simulation box with dielectric contrast on the bottom of the box,
    which can be calculated analytically with image charges.
    """
    self.system.part.add(pos=self.system.box_l / 2., q=self.q[0])
    self.system.part.add(pos=self.system.box_l / 2. + [0, 0, self.distance],
                         q=-self.q[0])
    self.system.box_l = [self.box_l, self.box_l, self.box_l + self.elc_gap]
    self.system.cell_system.set_regular_decomposition(
        use_verlet_lists=True)
    self.system.periodicity = [True, True, True]
    prefactor = 2.0
    p3m = self.p3m_class(prefactor=prefactor, accuracy=self.accuracy,
                         mesh=[58, 58, 70], cao=4)
    elc = espressomd.electrostatics.ELC(actor=p3m,
                                        gap_size=self.elc_gap,
                                        maxPWerror=self.accuracy,
                                        delta_mid_bot=self.delta_mid_bot,
                                        delta_mid_top=self.delta_mid_top)
    self.system.electrostatics.solver = elc
    elc_forces, elc_energy = self.scan()
    # ANALYTIC SOLUTION
    charge_reshaped = prefactor * np.square(self.q.reshape(-1, 1))
    analytic_forces = charge_reshaped * (1 / self.distance ** 2 + self.delta_mid_bot * (
        1 / np.square(2 * self.zPos) - 1 / np.square(2 * self.zPos + self.distance)))
    analytic_energy = charge_reshaped * (-1 / self.distance + self.delta_mid_bot * (1 / (
        4 * self.zPos) - 1 / (2 * self.zPos + self.distance) + 1 / (4 * (self.zPos + self.distance))))
    np.testing.assert_allclose(elc_energy, analytic_energy, atol=1e-4)
    np.testing.assert_allclose(elc_forces, analytic_forces, atol=1e-4,
                               rtol=self.rtol)