def _calculate_phases(self, solution, t, step, int_step):
next_phases = [<NUM_LIT:0.0>] * self._num_osc;    <EOL>for index in range (<NUM_LIT:0>, self._num_osc, <NUM_LIT:1>):<EOL><INDENT>if (solution == solve_type.FAST):<EOL><INDENT>result = self._phases[index] + self._phase_kuramoto(self._phases[index], <NUM_LIT:0>, index);<EOL>next_phases[index] = self._phase_normalization(result);<EOL><DEDENT>elif ( (solution == solve_type.RK4) or (solution == solve_type.RKF45) ):<EOL><INDENT>result = odeint(self._phase_kuramoto, self._phases[index], numpy.arange(t - step, t, int_step), (index , ));<EOL>next_phases[index] = self._phase_normalization(result[len(result) - <NUM_LIT:1>][<NUM_LIT:0>]);<EOL><DEDENT>else:<EOL><INDENT>raise NameError("<STR_LIT>" + str(solution) + "<STR_LIT>");<EOL><DEDENT><DEDENT>return next_phases<EOL>
!
        @brief Calculates new phases for oscillators in the network in line with current step.

        @param[in] solution (solve_type): Type solver of the differential equation.
        @param[in] t (double): Time of simulation.
        @param[in] step (double): Step of solution at the end of which states of oscillators should be calculated.
        @param[in] int_step (double): Step differentiation that is used for solving differential equation.

        @return (list) New states (phases) for oscillators.