Programming scicos blocks
fr - eng
C_utils - Utilities C functions

### Contents

- C_utils - Utilities C functions
  - Module
  - Description
  - Authors

### Module

- Scicos

### Description

The scicos_block4.h header provides some utilities functions to interact with the simulator in the C computational functions.

- void do_cold_restart();
  This function forces the solver to do a cold restart. It should be used in situations where the block creates a non smooth signal. Note that in most situations, non smooth situations are detected by zero-crossings and this function is not needed. This block is used in very exceptional situations.

- int get_phase_simulation();
  That function returns an integer which says if the simulator is realizing time domain integration. It can returns :
  - 1 : The simulator is on a discrete activation time.
  - 2 : The simulator is realizing a continuous time domain integration.

- double get_scicos_time();
  That function returns the current time of simulator.

- int get_block_number();
  That function returns an integer : the block index in the compiled structure. Each block in the simulated diagram have a single index, and blocks are numbered from 1 to nblk (the total number of blocks in the compiled structure).

- void set_block_error(int);
  Function to set a specific error during the simulation for the current block. If it is used, then after the execution of the computational function of the block, the simulator will end and will return an error message associated to the number given in the integer argument.
  The following calls are allowed :
  - set_block_error(-1); : the block has been called with input out of its domain,
  - set_block_error(-2); : singularity in a block,
  - set_block_error(-3); : block produces an internal error,
  - set_block_error(-16); : cannot allocate memory in block.

- void end_scicos_sim();
  A very specific function to set the current time of the simulator to the final time integration.
  Only expert user should use this function.

- void set_pointer_xproperty(int* pointer);
  This function set a vector of integer to inform the type (algebraic or differential) of the continuous state variables of the block.

- void * scicos_malloc(size_t);
  That function must be used to do allocation of scicos pointers inside a C computational function and in particular for `flag`=4 for the work pointer `*block->work`.

- void scicos_free(void *p);
  That function must be used to free scicos pointers inside a C computational function and in particular for `flag`=5 for the work pointer `*block->work`.

### Authors

- Alan Layec INRIA
- Ramine Nikoukhah INRIA