Module openrtdynamics2.lang.system_context

Expand source code
from .diagram_core.system import System
from . import signal_interface as si


current_simulation_context = None
simulation_stack = []
counter_of_created_systems = 1000

def init_simulation_context():
    global simulation_stack
    global current_simulation_context
    global counter_of_created_systems

    current_simulation_context = None
    simulation_stack = []
    counter_of_created_systems = 1000


def generate_subsystem_name():
    """
        automatically created unique name for a system
    """
    global counter_of_created_systems

    name = 'Subsystem' + str(counter_of_created_systems)
    counter_of_created_systems += 1

    return name

def push_simulation_context(sim):
    global simulation_stack
    global current_simulation_context

    current_simulation_context = sim
    simulation_stack.append(sim)

def pop_simulation_context():
    global simulation_stack
    global current_simulation_context

    old_context = simulation_stack.pop()

    if not len(simulation_stack) == 0:
        new_context = simulation_stack[-1]
    else:
        new_context = None

    current_simulation_context = new_context

    return new_context


def get_system_context():
    global current_simulation_context
    return current_simulation_context

def enter_system(name : str = 'simulation', upper_level_system = None):
    """
        create a new system and activate it in the context
    """
    # new simulation
    system = System(upper_level_system, name)

    # register this subsystem to the parent system
    if get_system_context() is not None:
        get_system_context().append_subsystem( system )

    push_simulation_context(system)

    return system

def enter_subsystem(name : str):
    """
        create a new subsystem in the current system context and activate it in the context
    """
    return enter_system(name, get_system_context())

def leave_system():
    return pop_simulation_context()

def clear():
    """
        clear the context
    """
    init_simulation_context()

def set_primary_outputs(output_signals, names = None):

    if names is not None:
        for i in range(0,len(names)):
            output_signals[i].set_name_raw( names[i] )

    get_system_context().set_primary_outputs( si.unwrap_list( output_signals ) )

def append_primay_ouput(output_signal, export_name : str = None):
    """
        add an output to the current system
    """

    if export_name is not None:
        output_signal.set_name_raw(export_name)

    get_system_context().append_primay_ouput(output_signal.unwrap)
    

Functions

def append_primay_ouput(output_signal, export_name: str = None)

add an output to the current system

Expand source code
def append_primay_ouput(output_signal, export_name : str = None):
    """
        add an output to the current system
    """

    if export_name is not None:
        output_signal.set_name_raw(export_name)

    get_system_context().append_primay_ouput(output_signal.unwrap)
def clear()

clear the context

Expand source code
def clear():
    """
        clear the context
    """
    init_simulation_context()
def enter_subsystem(name: str)

create a new subsystem in the current system context and activate it in the context

Expand source code
def enter_subsystem(name : str):
    """
        create a new subsystem in the current system context and activate it in the context
    """
    return enter_system(name, get_system_context())
def enter_system(name: str = 'simulation', upper_level_system=None)

create a new system and activate it in the context

Expand source code
def enter_system(name : str = 'simulation', upper_level_system = None):
    """
        create a new system and activate it in the context
    """
    # new simulation
    system = System(upper_level_system, name)

    # register this subsystem to the parent system
    if get_system_context() is not None:
        get_system_context().append_subsystem( system )

    push_simulation_context(system)

    return system
def generate_subsystem_name()

automatically created unique name for a system

Expand source code
def generate_subsystem_name():
    """
        automatically created unique name for a system
    """
    global counter_of_created_systems

    name = 'Subsystem' + str(counter_of_created_systems)
    counter_of_created_systems += 1

    return name
def get_system_context()
Expand source code
def get_system_context():
    global current_simulation_context
    return current_simulation_context
def init_simulation_context()
Expand source code
def init_simulation_context():
    global simulation_stack
    global current_simulation_context
    global counter_of_created_systems

    current_simulation_context = None
    simulation_stack = []
    counter_of_created_systems = 1000
def leave_system()
Expand source code
def leave_system():
    return pop_simulation_context()
def pop_simulation_context()
Expand source code
def pop_simulation_context():
    global simulation_stack
    global current_simulation_context

    old_context = simulation_stack.pop()

    if not len(simulation_stack) == 0:
        new_context = simulation_stack[-1]
    else:
        new_context = None

    current_simulation_context = new_context

    return new_context
def push_simulation_context(sim)
Expand source code
def push_simulation_context(sim):
    global simulation_stack
    global current_simulation_context

    current_simulation_context = sim
    simulation_stack.append(sim)
def set_primary_outputs(output_signals, names=None)
Expand source code
def set_primary_outputs(output_signals, names = None):

    if names is not None:
        for i in range(0,len(names)):
            output_signals[i].set_name_raw( names[i] )

    get_system_context().set_primary_outputs( si.unwrap_list( output_signals ) )