.. index:: pair: page; Main Elements .. _doxid-main_elements: Main Elements ============= These are the main elements in the architecture involved in the synchronization and communication between simulations: * :ref:`DataPack ` : user-defined data structures used to exchange data between engine servers and clients. They are as well the input and output of transceiver functions. * :ref:`Functions ` : user-defined Python functions that allow data exchange between different components of NRP Core. * :ref:`Transceiver Function ` (TF): user-defined Python functions which enable data exchange between engines. * :ref:`Preprocessing Function ` (PF): user-defined Python functions which enable to pre-process data coming from engines before injecting it into TFs. * :ref:`Status Function ` : user-defined Python functions that enable the exchange of data between engines and :ref:`NRP-core Python Client `. * :ref:`Engine ` : provides both an abstraction layer and an interface to integrate simulators in NRP-core. Each engine represents a process in which a concrete instance of a simulator is running. For each of them there is a client side component in the simulation loop process interfacing the engine process for simulation control and data exchange. * :ref:`Simulation Loop ` : main loop where synchronization of engines, transmission of data and execution of transceiver functions happens. .. image:: architecture_elements.png :width: 1122 :align: center :alt: Architecture overview .. toctree:: :hidden: page_datapacks.rst page_engines.rst page_nrp_functions.rst page_preprocessing_function.rst page_simulation_loop.rst page_status_function.rst page_transceiver_function.rst .. rubric:: Related Pages: | :doc:`page_datapacks` | :doc:`page_engines` | :doc:`page_nrp_functions` | :doc:`page_preprocessing_function` | :doc:`page_simulation_loop` | :doc:`page_status_function` | :doc:`page_transceiver_function`