Robotran C Documentation
mbs_rk4.h
Go to the documentation of this file.
1 
17 #ifndef MBS_RK4_H_INCLUDED
18 #define MBS_RK4_H_INCLUDED
19 
20 #include "mbs_data.h"
21 #include "integrator.h"
22 #include "mbs_dirdyn.h"
23 #include "useful_functions.h"
24 #include "mbs_dirdyn_struct.h"
25 #include "mbs_project_interface.h"
26 #include "MBSfun.h"
27 
31 typedef struct MbsDirdynRK4
32 {
33  double *yt;
34  double *dyt;
35  double *dym;
36 
37 } MbsDirdynRK4;
38 
44 void initialize_rk4(MbsData *mbs_data, MbsDirdyn *mbs_dd);
45 
55 int loop_rk4(double t0, double tf, MbsData *mbs_data, MbsDirdyn *mbs_dd);
56 
62 void finish_rk4(MbsData *mbs_data, MbsDirdyn *mbs_dd);
63 
71 void error_rk4(MbsData *mbs_data, MbsDirdyn *dd, int err);
72 
73 #endif // MBS_RK4_H_INCLUDED
loop_rk4
int loop_rk4(double t0, double tf, MbsData *mbs_data, MbsDirdyn *mbs_dd)
Integrate the motion from t0 to tf.
Definition: mbs_rk4.c:34
MbsDirdynOptions::flag_precise_dynamics
int flag_precise_dynamics
= 1 to call the direct dynamics at the beginning of each time step of integration.
Definition: mbs_dirdyn_struct.h:112
useful_functions.h
mbs_dirdyn.h
MbsData::tsim
double tsim
The time value.
Definition: mbs_data.h:208
MbsDirdyn::y
double * y
Pointer to the state vector, this is a dvec_0 of size nState.
Definition: mbs_dirdyn_struct.h:153
mbs_data.h
MbsDirdyn::nState
int nState
size of the state vector
Definition: mbs_dirdyn_struct.h:152
mbs_dirdyn_struct.h
get_dvec_0
double * get_dvec_0(int l_v)
create (with memory allocation) a vector (length l_v) of doubles, starting at index 0
Definition: mbs_1D_array.c:880
MbsDirdyn::yd
double * yd
Pointers to the derivative vector (dvec_0) of size nState.
Definition: mbs_dirdyn_struct.h:160
mbs_project_interface.h
MbsDirdynRK4::dym
double * dym
allocated saved derivative vector
Definition: mbs_rk4.h:35
MbsDirdynRK4::dyt
double * dyt
allocated derivative vector
Definition: mbs_rk4.h:34
MbsDirdyn::yout
double * yout
Allocation of a vector (dvec_0) of size nState.
Definition: mbs_dirdyn_struct.h:155
mbs_fct_dirdyn
int mbs_fct_dirdyn(double tsim, double y[], double dydt[], MbsData *s, MbsDirdyn *dd)
direct dynamics derivative computation
Definition: mbs_dirdyn.c:1067
MbsDirdynRK4::yt
double * yt
allocated state vector
Definition: mbs_rk4.h:33
MBSfun.h
MbsDirdyn::integrator_struct
void * integrator_struct
pointer to store integrator structure
Definition: mbs_dirdyn_struct.h:183
rk4
int rk4(double y[], double dydx[], int n, double x, double h, double yout[], int(*derivs)(double, double[], double[], MbsData *, MbsDirdyn *), MbsData *s, MbsDirdyn *dd)
Runge Kutta 4 integrator implementation Given values for the variables y[1..n] and their derivatives ...
Definition: rk4.c:21
initialize_rk4
void initialize_rk4(MbsData *mbs_data, MbsDirdyn *mbs_dd)
Initialize all needed fields in MbsDirdyn for RK4 integrator.
Definition: mbs_rk4.c:19
user_dirdyn_loop
void user_dirdyn_loop(MbsData *mbs_data, MbsDirdyn *mbs_dd)
user own loop functions
Definition: user_dirdyn.c:46
MbsDirdyn::tsim
double tsim
current simulation time
Definition: mbs_dirdyn_struct.h:149
mbs_msg
void mbs_msg(char *msg,...)
Send a message.
Definition: mbs_message.c:76
MbsDirdynRK4
Runge-Kutta 4 structure for dirdyn.
Definition: mbs_rk4.h:31
initialize_rk4
void initialize_rk4(MbsData *mbs_data, MbsDirdyn *mbs_dd)
Initialize all needed fields in MbsDirdyn for RK4 integrator.
Definition: mbs_rk4.c:19
save_realtime_update
int save_realtime_update(MbsDirdyn *dd, MbsData *mbs_data)
update the real-time and saving modules if requested
Definition: mbs_dirdyn.c:1146
mbs_message.h
MbsData
Definition: mbs_data.h:149
DIRDYN_INTEGRATOR_WAYPOINT_TIME_ERROR_max
#define DIRDYN_INTEGRATOR_WAYPOINT_TIME_ERROR_max
Definition: mbs_dirdyn_struct.h:32
finish_rk4
void finish_rk4(MbsData *mbs_data, MbsDirdyn *mbs_dd)
Finalize and clear memory allocated for RK4 integrator.
Definition: mbs_rk4.c:108
MbsDirdynOptions
Structure defining the option of a direct dynamic.
Definition: mbs_dirdyn_struct.h:38
integrator.h
This header defines specific integrators functions in C.
MbsData::flag_stop
int flag_stop
stop the simulation. For dirdyn, equil, invdyn and solvekin only.
Definition: mbs_data.h:298
finish_rk4
void finish_rk4(MbsData *mbs_data, MbsDirdyn *dd)
Finalize and clear memory allocated for RK4 integrator.
Definition: mbs_rk4.c:108
MbsDirdynOptions::flag_solout_wp
int flag_solout_wp
1 to call solout only at required waypoints (only if flag_waypoint activated), default = 0
Definition: mbs_dirdyn_struct.h:122
MbsDirdyn
General structure of the direct dynamic module.
Definition: mbs_dirdyn_struct.h:144
MbsDirdyn::dt
double dt
current integration step size
Definition: mbs_dirdyn_struct.h:150
mbs_rk4.h
This header defines global functions for Runge Kutta 4 integrator in C.
error_rk4
void error_rk4(MbsData *mbs_data, MbsDirdyn *dd, int err)
If an error occurs during time integration, this function prints the error message and call finish_rk...
Definition: mbs_rk4.c:124
MbsDirdyn::options
MbsDirdynOptions * options
structure defining the option of a direct dynamic
Definition: mbs_dirdyn_struct.h:146
error_rk4
void error_rk4(MbsData *mbs_data, MbsDirdyn *dd, int err)
If an error occurs during time integration, this function prints the error message and call finish_rk...
Definition: mbs_rk4.c:124
loop_rk4
int loop_rk4(double t0, double tf, MbsData *mbs_data, MbsDirdyn *mbs_dd)
Integrate the motion from t0 to tf.
Definition: mbs_rk4.c:34