⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c5_lmdap_library_ncs.c

📁 m files for SIAM book, Numerical Computing with MATLAB
💻 C
📖 第 1 页 / 共 5 页
字号:
  c5_tjcalc = (real_T *)ssGetInputPortSignal(chartInstance->S, 7);
  c5_tjcalc1 = (real_T *)ssGetInputPortSignal(chartInstance->S, 6);
  c5_Nofjets = (real_T *)ssGetInputPortSignal(chartInstance->S, 0);
  c5_ton = (real_T *)ssGetOutputPortSignal(chartInstance->S, 3);
  c5_Firefct1 = (real_T *)ssGetInputPortSignal(chartInstance->S, 2);
  c5_e = (real_T (*)[2])ssGetInputPortSignal(chartInstance->S, 1);
  _SFD_CS_CALL(STATE_ENTER_DURING_FUNCTION_TAG,0);
  _SFD_CT_CALL(TRANSITION_BEFORE_PROCESSING_TAG,5);
  if(CV_TRANSITION_EVAL(5U, (_SFD_CCP_CALL(5,0,(((*c5_e)[1] > 0.0)!=0)) != 0) &&
    (_SFD_CCP_CALL(5,1,((*c5_Firefct1 > 0.0)!=0)) != 0))
   != 0U != 0) {
    _SFD_CT_CALL(TRANSITION_ACTIVE_TAG,5);
    _SFD_CS_CALL(STATE_ENTER_EXIT_FUNCTION_TAG,0);
    chartInstance->c5_tp_Coast_region_2 = 0U;
    _SFD_CS_CALL(STATE_INACTIVE_TAG,0);
    _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,0);
    chartInstance->c5_is_c5_LMdap_Library_NCS = (uint8_T)c5_IN_Fire_region_1;
    _SFD_CS_CALL(STATE_ACTIVE_TAG,2);
    chartInstance->c5_tp_Fire_region_1 = 1U;
    *c5_jets = -(*c5_Nofjets);
    _SFD_DATA_RANGE_CHECK(*c5_jets, 0U);
    *c5_ton = *c5_tjcalc + *c5_tjcalc1;
    _SFD_DATA_RANGE_CHECK(*c5_ton, 3U);
  }
  _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,0);
}

static void c5_Coast_region_1(SFc5_LMdap_Library_NCSInstanceStruct
 *chartInstance)
{
  real_T *c5_Firefct2;
  real_T *c5_Nofjets;
  real_T *c5_jets;
  real_T *c5_tjcalc;
  real_T *c5_tjcalc1;
  real_T *c5_ton;
  real_T (*c5_e)[2];
  c5_jets = (real_T *)ssGetOutputPortSignal(chartInstance->S, 1);
  c5_tjcalc = (real_T *)ssGetInputPortSignal(chartInstance->S, 7);
  c5_tjcalc1 = (real_T *)ssGetInputPortSignal(chartInstance->S, 6);
  c5_Nofjets = (real_T *)ssGetInputPortSignal(chartInstance->S, 0);
  c5_ton = (real_T *)ssGetOutputPortSignal(chartInstance->S, 3);
  c5_Firefct2 = (real_T *)ssGetInputPortSignal(chartInstance->S, 4);
  c5_e = (real_T (*)[2])ssGetInputPortSignal(chartInstance->S, 1);
  _SFD_CS_CALL(STATE_ENTER_DURING_FUNCTION_TAG,3);
  _SFD_CT_CALL(TRANSITION_BEFORE_PROCESSING_TAG,22);
  if(CV_TRANSITION_EVAL(22U, (_SFD_CCP_CALL(22,0,(((*c5_e)[1] < 0.0)!=0)) != 0)
    && (_SFD_CCP_CALL(22,1,((*c5_Firefct2 < 0.0)!=0)) != 0
     )) != 0U != 0) {
    _SFD_CT_CALL(TRANSITION_ACTIVE_TAG,22);
    _SFD_CS_CALL(STATE_ENTER_EXIT_FUNCTION_TAG,3);
    chartInstance->c5_tp_Coast_region_1 = 0U;
    _SFD_CS_CALL(STATE_INACTIVE_TAG,3);
    _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,3);
    chartInstance->c5_is_c5_LMdap_Library_NCS = (uint8_T)c5_IN_Fire_region_2;
    _SFD_CS_CALL(STATE_ACTIVE_TAG,4);
    chartInstance->c5_tp_Fire_region_2 = 1U;
    *c5_jets = *c5_Nofjets;
    _SFD_DATA_RANGE_CHECK(*c5_jets, 0U);
    *c5_ton = *c5_tjcalc - *c5_tjcalc1;
    _SFD_DATA_RANGE_CHECK(*c5_ton, 3U);
  }
  _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,3);
}

static void c5_Fire_region_2(SFc5_LMdap_Library_NCSInstanceStruct *chartInstance)
{
  real_T *c5_ton;
  real_T *c5_Coastfct2;
  real_T *c5_enable;
  real_T *c5_Nofjets;
  real_T *c5_jets;
  real_T *c5_tjcalc;
  real_T *c5_tjcalc1;
  real_T (*c5_e)[2];
  c5_jets = (real_T *)ssGetOutputPortSignal(chartInstance->S, 1);
  c5_tjcalc = (real_T *)ssGetInputPortSignal(chartInstance->S, 7);
  c5_tjcalc1 = (real_T *)ssGetInputPortSignal(chartInstance->S, 6);
  c5_enable = (real_T *)ssGetOutputPortSignal(chartInstance->S, 2);
  c5_Coastfct2 = (real_T *)ssGetInputPortSignal(chartInstance->S, 5);
  c5_Nofjets = (real_T *)ssGetInputPortSignal(chartInstance->S, 0);
  c5_ton = (real_T *)ssGetOutputPortSignal(chartInstance->S, 3);
  c5_e = (real_T (*)[2])ssGetInputPortSignal(chartInstance->S, 1);
  _SFD_CS_CALL(STATE_ENTER_DURING_FUNCTION_TAG,4);
  _SFD_CT_CALL(TRANSITION_BEFORE_PROCESSING_TAG,13);
  if(CV_TRANSITION_EVAL(13U, (int32_T)_SFD_CCP_CALL(13,0,((*c5_ton < 2.0 *
       chartInstance->c5_delt)!=0))) != 0U != 0) {
    if(sf_debug_transition_conflict_check_enabled()) {
      unsigned int transitionList[2];
      unsigned int numTransitions=1;
      transitionList[0] = 13;
      sf_debug_transition_conflict_check_begin();
      if(((*c5_e)[1] > 0.0) && (*c5_Coastfct2 > 0.0)) {
        transitionList[numTransitions] = 9;
        numTransitions++;
      }
      sf_debug_transition_conflict_check_end();
      if(numTransitions>1) {
        _SFD_TRANSITION_CONFLICT(&(transitionList[0]),numTransitions);
      }
    }
    _SFD_CT_CALL(TRANSITION_ACTIVE_TAG,13);
    *c5_enable = 1.0;
    _SFD_DATA_RANGE_CHECK(*c5_enable, 9U);
    _SFD_CT_CALL(TRANSITION_BEFORE_PROCESSING_TAG,6);
    if(CV_TRANSITION_EVAL(6U, (int32_T)_SFD_CCP_CALL(6,0,((*c5_ton >
         chartInstance->c5_tmin)!=0))) != 0U != 0) {
      _SFD_CT_CALL(TRANSITION_ACTIVE_TAG,6);
      chartInstance->c5_count = 2.0;
      _SFD_DATA_RANGE_CHECK(chartInstance->c5_count, 7U);
      _SFD_CS_CALL(STATE_ENTER_EXIT_FUNCTION_TAG,4);
      chartInstance->c5_tp_Fire_region_2 = 0U;
      chartInstance->c5_is_c5_LMdap_Library_NCS = (uint8_T)c5_IN_NO_ACTIVE_CHILD;
      _SFD_CS_CALL(STATE_INACTIVE_TAG,4);
      _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,4);
      chartInstance->c5_is_c5_LMdap_Library_NCS = (uint8_T)c5_IN_Skip_a_Sample_2;
      _SFD_CS_CALL(STATE_ACTIVE_TAG,1);
      chartInstance->c5_tp_Skip_a_Sample_2 = 1U;
      chartInstance->c5_count = chartInstance->c5_count - 1.0;
      _SFD_DATA_RANGE_CHECK(chartInstance->c5_count, 7U);
    } else {
      _SFD_CT_CALL(TRANSITION_BEFORE_PROCESSING_TAG,2);
      _SFD_CT_CALL(TRANSITION_ACTIVE_TAG,2);
      *c5_enable = 0.0;
      _SFD_DATA_RANGE_CHECK(*c5_enable, 9U);
      _SFD_CS_CALL(STATE_ENTER_EXIT_FUNCTION_TAG,4);
      chartInstance->c5_tp_Fire_region_2 = 0U;
      chartInstance->c5_is_c5_LMdap_Library_NCS = (uint8_T)c5_IN_NO_ACTIVE_CHILD;
      _SFD_CS_CALL(STATE_INACTIVE_TAG,4);
      _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,4);
      chartInstance->c5_is_c5_LMdap_Library_NCS = (uint8_T)c5_IN_Coast_region_2;
      _SFD_CS_CALL(STATE_ACTIVE_TAG,0);
      chartInstance->c5_tp_Coast_region_2 = 1U;
      *c5_jets = 0.0;
      _SFD_DATA_RANGE_CHECK(*c5_jets, 0U);
      *c5_ton = 0.0;
      _SFD_DATA_RANGE_CHECK(*c5_ton, 3U);
      *c5_enable = 0.0;
      _SFD_DATA_RANGE_CHECK(*c5_enable, 9U);
    }
  } else {
    _SFD_CT_CALL(TRANSITION_BEFORE_PROCESSING_TAG,9);
    if(CV_TRANSITION_EVAL(9U, (_SFD_CCP_CALL(9,0,(((*c5_e)[1] > 0.0)!=0)) != 0)
      && (_SFD_CCP_CALL(9,1,((*c5_Coastfct2 > 0.0)!=0)) != 0))
     != 0U != 0) {
      _SFD_CT_CALL(TRANSITION_ACTIVE_TAG,9);
      _SFD_CS_CALL(STATE_ENTER_EXIT_FUNCTION_TAG,4);
      chartInstance->c5_tp_Fire_region_2 = 0U;
      _SFD_CS_CALL(STATE_INACTIVE_TAG,4);
      _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,4);
      chartInstance->c5_is_c5_LMdap_Library_NCS = (uint8_T)c5_IN_Coast_region_2;
      _SFD_CS_CALL(STATE_ACTIVE_TAG,0);
      chartInstance->c5_tp_Coast_region_2 = 1U;
      *c5_jets = 0.0;
      _SFD_DATA_RANGE_CHECK(*c5_jets, 0U);
      *c5_ton = 0.0;
      _SFD_DATA_RANGE_CHECK(*c5_ton, 3U);
      *c5_enable = 0.0;
      _SFD_DATA_RANGE_CHECK(*c5_enable, 9U);
    } else {
      _SFD_CT_CALL(TRANSITION_BEFORE_PROCESSING_TAG,14);
      _SFD_CT_CALL(TRANSITION_ACTIVE_TAG,14);
      _SFD_CS_CALL(STATE_ENTER_EXIT_FUNCTION_TAG,4);
      chartInstance->c5_tp_Fire_region_2 = 0U;
      _SFD_CS_CALL(STATE_INACTIVE_TAG,4);
      _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,4);
      chartInstance->c5_is_c5_LMdap_Library_NCS = (uint8_T)c5_IN_Fire_region_2;
      _SFD_CS_CALL(STATE_ACTIVE_TAG,4);
      chartInstance->c5_tp_Fire_region_2 = 1U;
      *c5_jets = *c5_Nofjets;
      _SFD_DATA_RANGE_CHECK(*c5_jets, 0U);
      *c5_ton = *c5_tjcalc - *c5_tjcalc1;
      _SFD_DATA_RANGE_CHECK(*c5_ton, 3U);
    }
  }
  _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,4);
}

static void init_script_number_translation(uint32_T c5_machineNumber, uint32_T
 c5_chartNumber)
{
}

const mxArray *sf_c5_LMdap_Library_NCS_get_eml_resolved_functions_info(void)
{
  const mxArray *c5_nameCaptureInfo = NULL;
  c5_nameCaptureInfo = NULL;
  sf_mex_assign(&c5_nameCaptureInfo, sf_mex_create(NULL, "nameCaptureInfo", 0,
    0U, 1U, 2, 0, 1));
  return c5_nameCaptureInfo;
}

static void init_test_point_addr_map(SFc5_LMdap_Library_NCSInstanceStruct
 *chartInstance)
{
  chartInstance->c5_testPointAddrMap[0] = &chartInstance->c5_count;
  chartInstance->c5_testPointAddrMap[1] = &chartInstance->c5_tp_Coast_region_1;
  chartInstance->c5_testPointAddrMap[2] = &chartInstance->c5_tp_Coast_region_2;
  chartInstance->c5_testPointAddrMap[3] = &chartInstance->c5_tp_Fire_region_1;
  chartInstance->c5_testPointAddrMap[4] = &chartInstance->c5_tp_Fire_region_2;
  chartInstance->c5_testPointAddrMap[5] = &chartInstance->c5_tp_Skip_a_Sample_1;
  chartInstance->c5_testPointAddrMap[6] = &chartInstance->c5_tp_Skip_a_Sample_2;
  chartInstance->c5_testPointAddrMap[7] = &chartInstance->c5_tp_Start;
  chartInstance->c5_testPointAddrMap[8] =
    &chartInstance->c5_tp_Wait_for_stable_rate;
}

static void **get_test_point_address_map(SFc5_LMdap_Library_NCSInstanceStruct
 *chartInstance)
{
  return &chartInstance->c5_testPointAddrMap[0];
}

static rtwCAPI_ModelMappingInfo
*get_test_point_mapping_info(SFc5_LMdap_Library_NCSInstanceStruct *chartInstance)
{
  return &chartInstance->c5_testPointMappingInfo;
}

static void init_dsm_address_info(SFc5_LMdap_Library_NCSInstanceStruct
 *chartInstance)
{
}

/* SFunction Glue Code */
static void init_test_point_mapping_info(SimStruct *S);
void sf_c5_LMdap_Library_NCS_get_check_sum(mxArray *plhs[])
{
  ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(1812582305U);
  ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(3669507377U);
  ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(3681109533U);
  ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(529047913U);
}

mxArray *sf_c5_LMdap_Library_NCS_get_autoinheritance_info(void)
{
  const char *autoinheritanceFields[] =
  {"checksum","inputs","parameters","outputs"};
  mxArray *mxAutoinheritanceInfo =
  mxCreateStructMatrix(1,1,4,autoinheritanceFields);
  {
    mxArray *mxChecksum = mxCreateDoubleMatrix(4,1,mxREAL);
    double *pr = mxGetPr(mxChecksum);
    pr[0] = (double)(1325420091U);
    pr[1] = (double)(1016604680U);
    pr[2] = (double)(3208558491U);
    pr[3] = (double)(3002036755U);
    mxSetField(mxAutoinheritanceInfo,0,"checksum",mxChecksum);
  }
  {
    const char *dataFields[] = {"size","type","complexity"};
    mxArray *mxData = mxCreateStructMatrix(1,8,3,dataFields);
    {
      mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL);
      double *pr = mxGetPr(mxSize);
      pr[0] = (double)(1);
      pr[1] = (double)(1);
      mxSetField(mxData,0,"size",mxSize);
    }
    {
      const char *typeFields[] = {"base","aliasId","fixpt"};
      mxArray *mxType = mxCreateStructMatrix(1,1,3,typeFields);
      mxSetField(mxType,0,"base",mxCreateDoubleScalar(10));
      mxSetField(mxType,0,"aliasId",mxCreateDoubleScalar(0));
      mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL));
      mxSetField(mxData,0,"type",mxType);
    }
    mxSetField(mxData,0,"complexity",mxCreateDoubleScalar(0));
    {
      mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL);
      double *pr = mxGetPr(mxSize);
      pr[0] = (double)(2);
      pr[1] = (double)(1);
      mxSetField(mxData,1,"size",mxSize);
    }
    {
      const char *typeFields[] = {"base","aliasId","fixpt"};
      mxArray *mxType = mxCreateStructMatrix(1,1,3,typeFields);
      mxSetField(mxType,0,"base",mxCreateDoubleScalar(10));
      mxSetField(mxType,0,"aliasId",mxCreateDoubleScalar(0));
      mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL));
      mxSetField(mxData,1,"type",mxType);
    }
    mxSetField(mxData,1,"complexity",mxCreateDoubleScalar(0));
    {
      mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL);
      double *pr = mxGetPr(mxSize);
      pr[0] = (double)(1);
      pr[1] = (double)(1);
      mxSetField(mxData,2,"size",mxSize);
    }
    {
      const char *typeFields[] = {"base","aliasId","fixpt"};
      mxArray *mxType = mxCreateStructMatrix(1,1,3,typeFields);
      mxSetField(mxType,0,"base",mxCreateDoubleScalar(10));
      mxSetField(mxType,0,"aliasId",mxCreateDoubleScalar(0));
      mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL));
      mxSetField(mxData,2,"type",mxType);
    }
    mxSetField(mxData,2,"complexity",mxCreateDoubleScalar(0));
    {
      mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL);
      double *pr = mxGetPr(mxSize);
      pr[0] = (double)(1);
      pr[1] = (double)(1);
      mxSetField(mxData,3,"size",mxSize);
    }
    {
      const char *typeFields[] = {"base","aliasId","fixpt"};
      mxArray *mxType = mxCreateStructMatrix(1,1,3,typeFields);
      mxSetField(mxType,0,"base",mxCreateDoubleScalar(10));
      mxSetField(mxType,0,"aliasId",mxCreateDoubleScalar(0));
      mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL));
      mxSetField(mxData,3,"type",mxType);
    }
    mxSetField(mxData,3,"complexity",mxCreateDoubleScalar(0));
    {
      mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL);
      double *pr = mxGetPr(mxSize);
      pr[0] = (double)(1);
      pr[1] = (double)(1);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -