/* Function: mdlOutputs ======================================================= * */ static void mdlOutputs(SimStruct *S, int_T tid) { const real_T *phi = (const real_T*) ssGetInputPortSignal(S,0); const real_T *cAStartNom = (const real_T*) ssGetInputPortSignal(S,1); const real_T *dCALiftNom = (const real_T*) ssGetInputPortSignal(S,2); real_T *lift = (real_T *)ssGetOutputPortRealSignal(S,0); const int_T p_width0 = mxGetNumberOfElements(PARAM_DEF0(S)); const int_T p_width1 = mxGetNumberOfElements(PARAM_DEF1(S)); const int_T p_width2 = mxGetNumberOfElements(PARAM_DEF2(S)); const int_T p_width3 = mxGetNumberOfElements(PARAM_DEF3(S)); const int_T p_width4 = mxGetNumberOfElements(PARAM_DEF4(S)); const int_T p_width5 = mxGetNumberOfElements(PARAM_DEF5(S)); const int_T p_width6 = mxGetNumberOfElements(PARAM_DEF6(S)); const int_T p_width7 = mxGetNumberOfElements(PARAM_DEF7(S)); const int_T p_width8 = mxGetNumberOfElements(PARAM_DEF8(S)); const real_T *liftMax = (const real_T *)mxGetData(PARAM_DEF0(S)); const real_T *cAStartRef = (const real_T *)mxGetData(PARAM_DEF1(S)); const real_T *dCALiftUp = (const real_T *)mxGetData(PARAM_DEF2(S)); const real_T *dCALiftDown = (const real_T *)mxGetData(PARAM_DEF3(S)); const real_T *dCALiftTopRef = (const real_T *)mxGetData(PARAM_DEF4(S)); const real_T *cAVVUpRef = (const real_T *)mxGetData(PARAM_DEF5(S)); const real_T *cAVVDownRef = (const real_T *)mxGetData(PARAM_DEF6(S)); const real_T *liftUpRef = (const real_T *)mxGetData(PARAM_DEF7(S)); const real_T *liftDownRef = (const real_T *)mxGetData(PARAM_DEF8(S)); GetExhVVLift_Outputs_wrapper(phi, cAStartNom, dCALiftNom, lift, liftMax, p_width0, cAStartRef, p_width1, dCALiftUp, p_width2, dCALiftDown, p_width3, dCALiftTopRef, p_width4, cAVVUpRef, p_width5, cAVVDownRef, p_width6, liftUpRef, p_width7, liftDownRef, p_width8); }
/* Function: mdlOutputs ======================================================= * */ static void mdlOutputs(SimStruct *S, int_T tid) { const real_T *pCyl = (const real_T*) ssGetInputPortSignal(S,0); const real_T *tempCyl = (const real_T*) ssGetInputPortSignal(S,1); const real_T *vCyl = (const real_T*) ssGetInputPortSignal(S,2); const real_T *omega = (const real_T*) ssGetInputPortSignal(S,3); const real_T *tempWall = (const real_T*) ssGetInputPortSignal(S,4); real_T *dQ = (real_T *)ssGetOutputPortRealSignal(S,0); const int_T p_width0 = mxGetNumberOfElements(PARAM_DEF0(S)); const int_T p_width1 = mxGetNumberOfElements(PARAM_DEF1(S)); const int_T p_width2 = mxGetNumberOfElements(PARAM_DEF2(S)); const int_T p_width3 = mxGetNumberOfElements(PARAM_DEF3(S)); const real_T *stroke = (const real_T *)mxGetData(PARAM_DEF0(S)); const real_T *B = (const real_T *)mxGetData(PARAM_DEF1(S)); const real_T *cAlpha = (const real_T *)mxGetData(PARAM_DEF2(S)); const real_T *nCyl = (const real_T *)mxGetData(PARAM_DEF3(S)); EngCylHeatTransfer_Outputs_wrapper(pCyl, tempCyl, vCyl, omega, tempWall, dQ, stroke, p_width0, B, p_width1, cAlpha, p_width2, nCyl, p_width3); }
static void mdlInitializeSizes(SimStruct *S) { const real_T *P1 = mxGetData(PARAM_DEF3(S)); const real_T *P2 = mxGetData(PARAM_DEF2(S)); DECL_AND_INIT_DIMSINFO(outputDimsInfo); ssSetNumSFcnParams(S, NPARAMS); /* Number of expected parameters */ #if defined(MATLAB_MEX_FILE) if (ssGetNumSFcnParams(S) == ssGetSFcnParamsCount(S)) { if (ssGetErrorStatus(S) != NULL) { return; } } else { return; /* Parameter mismatch will be reported by Simulink */ } #endif ssSetNumContStates(S, NUM_CONT_STATES); ssSetNumDiscStates(S, NUM_DISC_STATES); if (!ssSetNumInputPorts(S, NUM_INPUTS)) return; if (!ssSetNumOutputPorts(S, NUM_OUTPUTS)) return; /* Output Port 0 */ outputDimsInfo.width = *P1; ssSetOutputPortDimensionInfo(S, 0, &outputDimsInfo); ssSetOutputPortMatrixDimensions( S ,0, *P1, *P2); ssSetOutputPortFrameData(S, 0, OUT_0_FRAME_BASED); ssSetOutputPortDataType(S, 0, SS_UINT8); ssSetOutputPortComplexSignal(S, 0, OUTPUT_0_COMPLEX); /* Output Port 1 */ outputDimsInfo.width = *P1; ssSetOutputPortDimensionInfo(S, 1, &outputDimsInfo); ssSetOutputPortMatrixDimensions( S ,1, *P1, *P2); ssSetOutputPortFrameData(S, 1, OUT_1_FRAME_BASED); ssSetOutputPortDataType(S, 1, SS_UINT8); ssSetOutputPortComplexSignal(S, 1, OUTPUT_1_COMPLEX); /* Output Port 2 */ outputDimsInfo.width = *P1; ssSetOutputPortDimensionInfo(S, 2, &outputDimsInfo); ssSetOutputPortMatrixDimensions( S ,2, *P1, *P2); ssSetOutputPortFrameData(S, 2, OUT_2_FRAME_BASED); ssSetOutputPortDataType(S, 2, SS_UINT8); ssSetOutputPortComplexSignal(S, 2, OUTPUT_2_COMPLEX); ssSetNumSampleTimes(S, 1); ssSetNumRWork(S, 0); ssSetNumIWork(S, 0); ssSetNumPWork(S, 0); ssSetNumModes(S, 0); ssSetNumNonsampledZCs(S, 0); /* Take care when specifying exception free code - see sfuntmpl_doc.c */ ssSetOptions(S, (SS_OPTION_EXCEPTION_FREE_CODE | SS_OPTION_WORKS_WITH_CODE_REUSE)); }
/* Function: mdlOutputs ======================================================= * */ static void mdlOutputs(SimStruct *S, int_T tid) { const uint32_T *in0 = (const uint32_T*) ssGetInputPortSignal(S,0); const uint32_T *in1 = (const uint32_T*) ssGetInputPortSignal(S,1); const uint32_T *in2 = (const uint32_T*) ssGetInputPortSignal(S,2); const uint32_T *in3 = (const uint32_T*) ssGetInputPortSignal(S,3); uint32_T *adder_out = (uint32_T *)ssGetOutputPortRealSignal(S,0); uint32_T *DBG_in01 = (uint32_T *)ssGetOutputPortRealSignal(S,1); uint32_T *DBG_in012 = (uint32_T *)ssGetOutputPortRealSignal(S,2); const int_T p_width0 = mxGetNumberOfElements(PARAM_DEF0(S)); const int_T p_width1 = mxGetNumberOfElements(PARAM_DEF1(S)); const int_T p_width2 = mxGetNumberOfElements(PARAM_DEF2(S)); const int_T p_width3 = mxGetNumberOfElements(PARAM_DEF3(S)); const uint32_T *in_bitwidth = (const uint32_T *)mxGetData(PARAM_DEF0(S)); const uint32_T *in_fp_position = (const uint32_T *)mxGetData(PARAM_DEF1(S)); const uint32_T *out_bitwidth = (const uint32_T *)mxGetData(PARAM_DEF2(S)); const uint32_T *out_fp_position = (const uint32_T *)mxGetData(PARAM_DEF3(S)); SDFPAdder4_Outputs_wrapper(in0, in1, in2, in3, adder_out, DBG_in01, DBG_in012, in_bitwidth, p_width0, in_fp_position, p_width1, out_bitwidth, p_width2, out_fp_position, p_width3); }
/* Function: mdlInitializeConditions ======================================== * Abstract: * Initialize the states */ static void mdlInitializeConditions(SimStruct *S) { #define MDL_INITIALIZE_CONDITIONS /* Function: mdlInitializeConditions ============================ * Abstract: * Initialize both continuous states to zero */ real_T *xC = ssGetContStates(S); const real_T *fs = (const real_T *)mxGetData(PARAM_DEF0(S)); const real_T *m0 = (const real_T *)mxGetData(PARAM_DEF5(S)); const real_T *E0 = (const real_T *)mxGetData(PARAM_DEF6(S)); const real_T *mb0 = (const real_T *)mxGetData(PARAM_DEF7(S)); const real_T *V0 = (const real_T *)mxGetData(PARAM_DEF8(S)); const real_T *alpha = (const real_T *)mxGetData(PARAM_DEF3(S)); real_T *p_prev = (real_T*) ssGetDWork(S,0); real_T *Tu_prev = (real_T*) ssGetDWork(S,1); real_T *Fu_prev = (real_T*) ssGetDWork(S,2); real_T *Ru_prev = (real_T*) ssGetDWork(S,3); real_T *uu_prev = (real_T*) ssGetDWork(S,4); real_T *Cvu_prev = (real_T*) ssGetDWork(S,5); real_T *Tb_prev = (real_T*) ssGetDWork(S,6); real_T *Fb_prev = (real_T*) ssGetDWork(S,7); real_T *Rb_prev = (real_T*) ssGetDWork(S,8); real_T *ub_prev = (real_T*) ssGetDWork(S,9); real_T *Cvb_prev = (real_T*) ssGetDWork(S,10); real_T *mCyl_prev = (real_T*) ssGetDWork(S,11); real_T *mbCyl_prev = (real_T*) ssGetDWork(S,12); real_T *VCyl_prev = (real_T*) ssGetDWork(S,13); real_T *mu_prev = (real_T*) ssGetDWork(S,14); real_T *mub_prev = (real_T*) ssGetDWork(S,15); real_T *Vu_prev = (real_T*) ssGetDWork(S,16); real_T *QCyl_prev = (real_T*) ssGetDWork(S,17); real_T *HCyl_prev = (real_T*) ssGetDWork(S,18); real_T *WCyl_prev = (real_T*) ssGetDWork(S,19); real_T *mfb_prev = (real_T*) ssGetDWork(S,20); real_T *mMix_prev = (real_T*) ssGetDWork(S,21); real_T *mbb0 = (real_T*) ssGetDWork(S,22); real_T *ResetMix = (real_T*) ssGetDWork(S,23); xC[0] = m0[0]; xC[1] = mb0[0]; xC[2] = V0[0]; xC[3] = 0; xC[4] = 0; xC[5] = E0[0]; xC[6] = 0; GetPTFV1(m0[0],mb0[0],E0[0],V0[0],300,287,2.1386e5,718.7,fs[0], p_prev,Tu_prev,Fu_prev); Ru_prev[0] = 287; uu_prev[0] = E0[0]/m0[0]; Cvu_prev[0] = 718.7221; Tb_prev[0] = Tu_prev[0]; Fb_prev[0] = Fu_prev[0]; Rb_prev[0] = 287; ub_prev[0] = E0[0] / m0[0]; Cvb_prev[0] = 718.7221; mCyl_prev[0] = m0[0]; mbCyl_prev[0] = mb0[0]; VCyl_prev[0] = V0[0]; mu_prev[0] = m0[0]*(1-alpha[0]); mub_prev[0] = mb0[0]*(1-alpha[0]); Vu_prev[0] = V0[0]*(1-alpha[0]); QCyl_prev[0] = 0; HCyl_prev[0] = E0[0]; WCyl_prev[0] = 0; mfb_prev[0] = 0; mMix_prev[0] = 0; mbb0[0] = 0; ResetMix[0] = 1; }
/* Function: mdlUpdate ====================================================== * Abstract: * This function is called once for every major integration time step. * Discrete states are typically updated here, but this function is useful * for performing any tasks that should only take place once per * integration step. */ static void mdlUpdate(SimStruct *S, int_T tid) { const real_T *FComb = (const real_T*) ssGetInputPortSignal(S,7); const real_T *phi = (const real_T*) ssGetInputPortSignal(S,8); const real_T *combState = (const real_T*) ssGetInputPortSignal(S,9); real_T *p = (real_T *)ssGetOutputPortRealSignal(S,0); real_T *Tu = (real_T *)ssGetOutputPortRealSignal(S,1); real_T *Fu = (real_T *)ssGetOutputPortRealSignal(S,2); real_T *Vu = (real_T *)ssGetOutputPortRealSignal(S,3); real_T *Tb = (real_T *)ssGetOutputPortRealSignal(S,4); real_T *Fb = (real_T *)ssGetOutputPortRealSignal(S,5); real_T *Vb = (real_T *)ssGetOutputPortRealSignal(S,6); const real_T *xC = ssGetContStates(S); real_T *p_prev = (real_T*) ssGetDWork(S,0); real_T *Tu_prev = (real_T*) ssGetDWork(S,1); real_T *Fu_prev = (real_T*) ssGetDWork(S,2); real_T *Ru_prev = (real_T*) ssGetDWork(S,3); real_T *uu_prev = (real_T*) ssGetDWork(S,4); real_T *Cvu_prev = (real_T*) ssGetDWork(S,5); real_T *Tb_prev = (real_T*) ssGetDWork(S,6); real_T *Fb_prev = (real_T*) ssGetDWork(S,7); real_T *Rb_prev = (real_T*) ssGetDWork(S,8); real_T *ub_prev = (real_T*) ssGetDWork(S,9); real_T *Cvb_prev = (real_T*) ssGetDWork(S,10); real_T *mCyl_prev = (real_T*) ssGetDWork(S,11); real_T *mbCyl_prev = (real_T*) ssGetDWork(S,12); real_T *VCyl_prev = (real_T*) ssGetDWork(S,13); real_T *mu_prev = (real_T*) ssGetDWork(S,14); real_T *mub_prev = (real_T*) ssGetDWork(S,15); real_T *Vu_prev = (real_T*) ssGetDWork(S,16); real_T *QCyl_prev = (real_T*) ssGetDWork(S,17); real_T *HCyl_prev = (real_T*) ssGetDWork(S,18); real_T *WCyl_prev = (real_T*) ssGetDWork(S,19); real_T *mfb_prev = (real_T*) ssGetDWork(S,20); real_T *mMix_prev = (real_T*) ssGetDWork(S,21); real_T *mb0 = (real_T*) ssGetDWork(S,22); real_T *ResetMix = (real_T*) ssGetDWork(S,23); const int_T p_width0 = mxGetNumberOfElements(PARAM_DEF0(S)); const int_T p_width1 = mxGetNumberOfElements(PARAM_DEF1(S)); const int_T p_width2 = mxGetNumberOfElements(PARAM_DEF2(S)); const int_T p_width3 = mxGetNumberOfElements(PARAM_DEF3(S)); const int_T p_width4 = mxGetNumberOfElements(PARAM_DEF4(S)); const int_T p_width9 = mxGetNumberOfElements(PARAM_DEF9(S)); const real_T *fs = (const real_T *)mxGetData(PARAM_DEF0(S)); const real_T *DPhiMix = (const real_T *)mxGetData(PARAM_DEF1(S)); const real_T *phiMix0 = (const real_T *)mxGetData(PARAM_DEF2(S)); const real_T *alpha = (const real_T *)mxGetData(PARAM_DEF3(S)); const real_T *hn = (const real_T *)mxGetData(PARAM_DEF4(S)); const real_T *nStroke = (const real_T *)mxGetData(PARAM_DEF9(S)); ThdynCVNV2Zone_Update_wrapper(phi,FComb,combState,p,Tu,Fu,Vu,Tb,Fb,Vb, xC,p_prev,Tu_prev,Fu_prev,Ru_prev,uu_prev,Cvu_prev, Tb_prev,Fb_prev,Rb_prev,ub_prev,Cvb_prev, mCyl_prev,mbCyl_prev,VCyl_prev,QCyl_prev,HCyl_prev,WCyl_prev, mu_prev,mub_prev,Vu_prev,mfb_prev, mMix_prev,mb0,ResetMix, fs,p_width0,DPhiMix,p_width1,phiMix0,p_width2, alpha,p_width3,hn,p_width4,nStroke,p_width9); }