ssGetPWork doesnt work in callbacks mdlInitializeSizes and mdlInitializeSampleTimes

Hello to everyone,
can somebody tell me why in sfunctions I can not store an object in the callbacks mdlInitializeSizes and mdlInitializeSampleTimes? It works in all the other callback.
the code looks like this
static void mdlInitializeSizes(SimStruct *S)
{
ssSetNumPWork(S, 1); // or ssSetNumPWork(S, DYNAMICALLY_SIZED);
.....
ssGetPWork(S)[0] = (void *) new MyClass;
}
Thank you!
G.

Answers (1)

I don't believe that work vectors are even allocated until after mdlSetWorkWidths - mdlInitializeSizes and mdlInitializeSampleTimes are in the initialization stage of the S-function where attributes of work vectors can be set (like the number of work vectors, their widths, etc.) which can later be used for allocation.
Is there a reason you'd like to initialize your work vectors so early?

2 Comments

Thanks for your replay.
In my s-function the initialization depends on the parameters in input. In particular the parameters are manipulated by a method of a class. I would be nice instantiate an object of the class and store it once since I will use it in the other callbacks.
In that case, ssSetUserData and ssGetUserData might be more appropriate.

Sign in to comment.

Categories

Find more on Creating, Deleting, and Querying Graphics Objects in Help Center and File Exchange

Products

Asked:

on 16 Feb 2011

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!