========== Simulators ========== Continuous, discrete and hybrid simulation. .. cpp:namespace:: hysj .. cpp:namespace-push:: simulators In namespace :cpp:any:`simulators`: Continuous ========== .. cpp:namespace-push:: continuous In namespace :cpp:any:`continuous`: Problem ------- :cpp:include:`#include` .. cpp:struct:: variables .. cpp:member:: mathematics::symbol_id independent .. cpp:member:: std::vector dependent | .. cpp:struct:: problem .. cpp:member:: mathematics::program program .. cpp:member:: continuous::variables variables .. cpp:member:: mathematics::equation_ids equations .. cpp:member:: mathematics::logical_expression_ids constraints | .. cpp:struct:: valuation .. cpp:member:: real independent .. cpp:member:: std::vector> dependen | .. cpp:struct:: root .. cpp:member:: natural index .. cpp:member:: bool positive | Constraint Automaton -------------------- :cpp:include:`#include` .. cpp:struct:: constraint_automaton .. cpp:type:: state .. cpp:type:: symbol .. cpp:type:: symbols .. cpp:type:: graph .. cpp:member:: mathematics::equation_ids equations .. cpp:member:: std::vector graphs | .. cpp:function:: constraint_automaton make_constraint_automaton(const problem &) | .. cpp:function:: constraint_automaton::state start(const constraint_automaton &,const constraint_automaton::symbols &) | .. cpp:function:: constraint_automaton::state advance(const constraint_automaton &,const constraint_automaton::state &,const constraint_automaton::symbol &) | .. cpp:function:: bool is_active(const constraint_automaton &,const constraint_automaton::state &) | .. cpp:function:: coroutines::builtin::generator active(const constraint_automaton &,const constraint_automaton::state &); | Solution -------- :cpp:include:`#include` .. cpp:enum-class:: event .. rest-script:: from hysj import simulators for e in simulators.continuous.Event.__members__.values(): print(f'.. cpp:enumerator:: {e.name}') | .. cpp:struct:: step .. cpp:enum-class:: mode_tag .. rest-script:: from hysj import simulators for e in simulators.continuous.Step.ModeTag.__members__.values(): print(f'.. cpp:enumerator:: {e.name}') .. cpp:member:: mode_tag mode .. cpp:member:: real delta | .. cpp:struct:: tolerance .. cpp:type:: absolute_type = std::variant> .. cpp:member:: real relative .. cpp:member:: absolute_type absolute | .. cpp:struct:: config .. cpp:member:: continuous::tolerance tolerance .. cpp:member:: continuous::step step .. cpp:member:: std::optional stop | .. cpp:struct:: state .. cpp:member:: continuous::valuation valuation .. cpp:member:: continuous::root root .. cpp:member:: std::vector constraints .. cpp:member:: std::vector active_constraints | .. cpp:struct:: solution .. cpp:function:: constraint_automaton &constraints()const .. cpp:function:: continuous::state &state()const .. cpp:function:: continuous::config &config()const .. cpp:function:: std::optional operator()()const | .. cpp:function:: solution make_solution(problem,valuation,config) | .. cpp:namespace-pop:: Discrete ======== :cpp:include:`#include` .. cpp:namespace-push:: discrete In namespace :cpp:any:`discrete`: Automaton --------- :cpp:include:`#include` .. cpp:struct:: partial_automaton .. cpp:type:: graph_type = graphs::builtin::bincidence_graph .. cpp:type:: location_map_type = std::unordered_map .. cpp:member:: graph_type graph .. cpp:member:: location_map_type location_map | Problem ------- :cpp:include:`#include` .. cpp:type:: variable = natural .. cpp:type:: variables = std::vector .. cpp:type:: value = integer .. cpp:type:: location = std::vector .. cpp:type:: locations = std::vector | .. cpp:struct:: problem .. cpp:type:: make_symbols_type = std::function .. cpp:type:: make_target_type = std::function .. cpp:type:: is_immediate_type = std::function .. cpp:member:: make_symbols_type make_symbols .. cpp:member:: make_target_type make_target .. cpp:member:: is_immediate_type is_immediate | Solution -------- :cpp:include:`#include` .. cpp:enum-class:: event .. rest-script:: from hysj import simulators for e in simulators.discrete.Event.__members__.values(): print(f'.. cpp:enumerator:: {e.name}') | .. cpp:struct:: config | .. cpp:struct:: state .. cpp:member:: partial_automaton automaton .. cpp:member:: graphs::builtin::vertex_id vertex .. cpp:member:: std::optional edge | .. cpp:struct:: solution .. cpp:function:: discrete::state &state()const .. cpp:function:: discrete::config &config()const .. cpp:function:: std::optional operator()()const | .. cpp:function:: solution make_solution(problem,location,config) | .. cpp:namespace-pop:: Hybrid ====== :cpp:include:`#include` In namespace :cpp:any:`hybrid`: .. cpp:namespace-push:: hybrid .. cpp:struct:: config .. cpp:member:: discrete::config discrete .. cpp:member:: continuous::config continuous | .. cpp:struct:: valuation .. cpp:member:: discrete::config discrete .. cpp:member:: continuous::config continuous | .. cpp:type:: action = std::vector>; actions = std::vector | .. cpp:struct:: continuous_problem .. cpp:type:: make_equations_type = \ std::function .. cpp:type:: make_constraint_type = \ std::function .. cpp:member:: continuous::variables variables .. cpp:member:: make_equations_type make_equations .. cpp:member:: make_constraint_type make_constraint | .. cpp:struct:: problem .. cpp:type:: make_action_type = \ std::function .. cpp:member:: mathematics::program program .. cpp:member:: discrete::problem discrete .. cpp:member:: continuous_problem continuous .. cpp:member:: make_action_type make_action | .. cpp:type:: event = std::variant .. cpp:struct:: solution .. cpp:function:: discrete::solution &discrete()const .. cpp:function:: continuous::solution &continuous()const .. cpp:function:: std::optional operator()()const | .. cpp:function:: solution make_solution(problem,location,config) | .. cpp:namespace-pop:: .. cpp:namespace-pop::