@@ 414-449 (lines=36) @@ | ||
411 | @brief Aplly rules for start_iteration and stop_iteration parameters. |
|
412 | ||
413 | @param[in] start_iteration (uint): The first iteration that is used for calculation. |
|
414 | @param[in] stop_iteration (uint): The last iteration that is used for calculation. |
|
415 | ||
416 | @return (tuple) New the first iteration and the last. |
|
417 | ||
418 | """ |
|
419 | if (start_iteration is None): |
|
420 | start_iteration = len(self) - 1; |
|
421 | ||
422 | if (stop_iteration is None): |
|
423 | stop_iteration = start_iteration + 1; |
|
424 | ||
425 | return (start_iteration, stop_iteration); |
|
426 | ||
427 | ||
428 | ||
429 | class sync_visualizer: |
|
430 | """! |
|
431 | @brief Visualizer of output dynamic of sync network (Sync). |
|
432 | ||
433 | """ |
|
434 | ||
435 | @staticmethod |
|
436 | def show_output_dynamic(sync_output_dynamic): |
|
437 | """! |
|
438 | @brief Shows output dynamic (output of each oscillator) during simulation. |
|
439 | ||
440 | @param[in] sync_output_dynamic (sync_dynamic): Output dynamic of the Sync network. |
|
441 | ||
442 | @see show_output_dynamics |
|
443 | ||
444 | """ |
|
445 | ||
446 | draw_dynamics(sync_output_dynamic.time, sync_output_dynamic.output, x_title = "t", y_title = "phase", y_lim = [0, 2 * 3.14]); |
|
447 | ||
448 | ||
449 | @staticmethod |
|
450 | def show_output_dynamics(sync_output_dynamics): |
|
451 | """! |
|
452 | @brief Shows several output dynamics (output of each oscillator) during simulation. |
|
@@ 380-411 (lines=32) @@ | ||
377 | def calculate_local_order_parameter(self, oscillatory_network, start_iteration = None, stop_iteration = None): |
|
378 | """! |
|
379 | @brief Calculates local order parameter. |
|
380 | @details Local order parameter or so-called level of local or partial synchronization is calculated by following expression: |
|
381 | ||
382 | \f[ |
|
383 | r_{c}=\left | \sum_{i=0}^{N} \frac{1}{N_{i}} \sum_{j=0}e^{ \theta_{j} - \theta_{i} } \right |; |
|
384 | \f] |
|
385 | ||
386 | where N - total amount of oscillators in the network and \f$N_{i}\f$ - amount of neighbors of oscillator with index \f$i\f$. |
|
387 | ||
388 | @param[in] oscillatory_network (sync): Sync oscillatory network whose structure of connections is required for calculation. |
|
389 | @param[in] start_iteration (uint): The first iteration that is used for calculation, if 'None' then the last iteration is used. |
|
390 | @param[in] stop_iteration (uint): The last iteration that is used for calculation, if 'None' then 'start_iteration' + 1 is used. |
|
391 | ||
392 | @return (list) List of levels of local (partial) synchronization (local order parameter evolution). |
|
393 | ||
394 | """ |
|
395 | ||
396 | (start_iteration, stop_iteration) = self.__get_start_stop_iterations(start_iteration, stop_iteration); |
|
397 | ||
398 | if (self._ccore_sync_dynamic_pointer is not None): |
|
399 | network_pointer = oscillatory_network._ccore_network_pointer; |
|
400 | return wrapper.sync_dynamic_calculate_local_order(self._ccore_sync_dynamic_pointer, network_pointer, start_iteration, stop_iteration); |
|
401 | ||
402 | sequence_local_order = []; |
|
403 | for index in range(start_iteration, stop_iteration): |
|
404 | sequence_local_order.append(order_estimator.calculate_local_sync_order(self.output[index], oscillatory_network)); |
|
405 | ||
406 | return sequence_local_order; |
|
407 | ||
408 | ||
409 | def __get_start_stop_iterations(self, start_iteration, stop_iteration): |
|
410 | """! |
|
411 | @brief Aplly rules for start_iteration and stop_iteration parameters. |
|
412 | ||
413 | @param[in] start_iteration (uint): The first iteration that is used for calculation. |
|
414 | @param[in] stop_iteration (uint): The last iteration that is used for calculation. |