ssSetStateAbsTol

Установите абсолютную погрешность, используемый решателем с переменным шагом для определенного непрерывного состояния S-функции.

Синтаксис

void ssSetStateAbsTol(SimStruct *S, const int_T idx, const Real_T val)

Аргументы

S

SimStruct, представляющий блок S-Function.

idx

Индекс, представляющий непрерывное состояние S-функции. Этот индекс находится в областях значений от 0 на n-1 где n - количество непрерывных состояний в S-функции.

val

Значение абсолютной погрешности. Значение должно быть положительным действительным скаляром.

Описание

Используйте, чтобы задать абсолютные погрешности, используемые для непрерывных состояний S-функции решателем переменной-шага для текущей симуляции.

Примечание

Абсолютные погрешности не назначены для решателей с фиксированным шагом. Поэтому вы никогда не должны вызывать этот макрос, пока не проверьте, что симуляция использует решатель с переменным шагом. Можно использовать ssIsVariableStepSolver чтобы определить, использует ли модель решатель переменного шага.

Языки

C, C++

Пример

/*
 * Set the absolute tolerances based on the parameters
 */
static void mdlStart(SimStruct *S)
{
    const real_T absTol0 = ( mxGetPr(ssGetSFcnParam(S,0)) )[0];
    const real_T absTol1 = ( mxGetPr(ssGetSFcnParam(S,1)) )[0];
    
    /* Absolute tolerance is not used by fixed-step solvers
     * Therefore every call to absolute tolerance API must be guarded
     */

    if ( ssIsVariableStepSolver(S) ) {
        ssSetStateAbsTol(S, 0, absTol0);    
        ssSetStateAbsTol(S, 1, absTol1);    
    }
}

Смотрите S-функцию sfun_atol.c используется в sfcndemo_sfun_atol для полного примера, который использует эту функцию.

Введенный в R2011a