00001 #ifndef _PARALLEL_STEPPER_H_
00002 #define _PARALLEL_STEPPER_H_
00003
00004 #include <ode/ode.h>
00005
00006 #include "util.h"
00007
00008
00009
00010
00011 struct dxParallelStepParameters {
00012 int syncType;
00013 int reduceType;
00014 };
00015
00016 void dxParallelProcessIslands (dxWorld *world, dReal stepsize, dstepper_fn_t stepper);
00017
00018 void dxParallelQuickStepper (
00019 dxWorldProcessContext *context,
00020 dxWorld *world, dxBody * const *body, int nb,
00021 dxJoint * const *_joint, int _nj, dReal stepsize);
00022
00023 bool dxReallocateParallelWorldProcessContext (dxWorld *world, dReal stepsize, dmemestimate_fn_t stepperestimate);
00024
00025 size_t dxEstimateParallelStepMemoryRequirements ( dxBody * const *body, int nb, dxJoint * const *_joint, int _nj);
00026
00027 template<typename T>
00028 void compute_invM_JT (int m, const T* J, T* iMJ, int *jb,
00029 dxBody * const *body, const T* invI);
00030
00031 template<typename T>
00032 void compute_Adcfm_b (int m, T sor_w, T* J, const T* iMJ, int* jb, const T* cfm,
00033 T* Adcfm, T* b);
00034
00035
00036 #endif