📄 tau_damp.c
字号:
*/
mlfAssign(
&F_6b,
mclMtimes(
mclMtimes(mclVv(R_6b, "R_6b"), mclVv(R_w6, "R_w6")),
mclVv(F_6w, "F_6w")));
/*
*
* % moments on 6 with pole in b wrt b
* M_6bb=vp(veh.P6_b,F_6b);
*/
mlfAssign(
&M_6bb,
mclFeval(
mclValueVarargout(),
mlxVp,
mclVe(mlfIndexRef(mclVsa(veh, "veh"), ".P6_b")),
mclVv(F_6b, "F_6b"),
NULL));
/*
*
* t6=[F_6b;M_6bb];
*/
mlfAssign(
&t6, mlfVertcat(mclVv(F_6b, "F_6b"), mclVv(M_6bb, "M_6bb"), NULL));
/*
*
* % --------------------------------------------------------------
* % forces on FIN 7
*
* % fin7 rotation matrix
* R_7b=[cos(de(7)) 0 sin(de(7)); 0 -1 0; sin(de(7)) 0 -cos(de(7))];
*/
mlfAssign(
&R_7b,
mlfVertcat(
mlfHorzcat(
mclVe(mlfCos(mclVe(mclIntArrayRef1(mclVsa(de, "de"), 7)))),
_mxarray12_,
mclVe(mlfSin(mclVe(mclIntArrayRef1(mclVsa(de, "de"), 7)))),
NULL),
_mxarray19_,
mlfHorzcat(
mclVe(mlfSin(mclVe(mclIntArrayRef1(mclVsa(de, "de"), 7)))),
_mxarray12_,
mclUminus(mclVe(mlfCos(mclVe(mclIntArrayRef1(mclVsa(de, "de"), 7))))),
NULL),
NULL));
/*
*
* % relative velocity of fin7 middle point wrt c in b
* v_7cb=vr(1:3)+vp(vr(4:6),veh.P7_b);
*/
mlfAssign(
&v_7cb,
mclPlus(
mclVe(
mclArrayRef1(
mclVsa(vr, "vr"), mlfColon(_mxarray6_, _mxarray7_, NULL))),
mclVe(
mclFeval(
mclValueVarargout(),
mlxVp,
mclVe(
mclArrayRef1(
mclVsa(vr, "vr"), mlfColon(_mxarray8_, _mxarray9_, NULL))),
mclVe(mlfIndexRef(mclVsa(veh, "veh"), ".P7_b")),
NULL))));
/*
*
* % relative velocity of fin7 middle point wrt c in 7
* v_7c7=R_7b'*v_7cb;
*/
mlfAssign(
&v_7c7,
mclMtimes(mlfCtranspose(mclVv(R_7b, "R_7b")), mclVv(v_7cb, "v_7cb")));
/*
*
* % attack angle
* a7=atan2(v_7c7(3),v_7c7(1));
*/
mlfAssign(
&a7,
mlfAtan2(
mclVe(mclIntArrayRef1(mclVsv(v_7c7, "v_7c7"), 3)),
mclVe(mclIntArrayRef1(mclVsv(v_7c7, "v_7c7"), 1))));
/*
*
* % fin7 wind frame rotation matrix
* R_w7=[cos(a7) 0 -sin(a7); 0 1 0; sin(a7) 0 cos(a7)];
*/
mlfAssign(
&R_w7,
mlfVertcat(
mlfHorzcat(
mclVe(mlfCos(mclVv(a7, "a7"))),
_mxarray12_,
mclUminus(mclVe(mlfSin(mclVv(a7, "a7")))),
NULL),
_mxarray16_,
mlfHorzcat(
mclVe(mlfSin(mclVv(a7, "a7"))),
_mxarray12_,
mclVe(mlfCos(mclVv(a7, "a7"))),
NULL),
NULL));
/*
*
* % cl and cd computation
* [cl,cd]=a2clcd(a7);
*/
mlfAssign(&cl, mlfA2clcd(&cd, mclVv(a7, "a7")));
/*
*
* % damping forces on 7 wrt w
* F_7w=-0.5*veh.rho*veh.st*(v_7c7(1)^2+v_7c7(3)^2)*[cd; 0; cl];
*/
mlfAssign(
&F_7w,
mclMtimes(
mclMtimes(
mclFeval(
mclValueVarargout(),
mlxMtimes,
mclFeval(
mclValueVarargout(),
mlxMtimes,
_mxarray18_,
mclVe(mlfIndexRef(mclVsa(veh, "veh"), ".rho")),
NULL),
mclVe(mlfIndexRef(mclVsa(veh, "veh"), ".st")),
NULL),
mclPlus(
mclMpower(
mclVe(mclIntArrayRef1(mclVsv(v_7c7, "v_7c7"), 1)), _mxarray5_),
mclMpower(
mclVe(mclIntArrayRef1(mclVsv(v_7c7, "v_7c7"), 3)), _mxarray5_))),
mlfVertcat(mclVv(cd, "cd"), _mxarray12_, mclVv(cl, "cl"), NULL)));
/*
*
* % damping forces on 7 wrt b
* F_7b=R_7b*R_w7*F_7w;
*/
mlfAssign(
&F_7b,
mclMtimes(
mclMtimes(mclVv(R_7b, "R_7b"), mclVv(R_w7, "R_w7")),
mclVv(F_7w, "F_7w")));
/*
*
* % moments on 7 with pole in b wrt b
* M_7bb=vp(veh.P7_b,F_7b);
*/
mlfAssign(
&M_7bb,
mclFeval(
mclValueVarargout(),
mlxVp,
mclVe(mlfIndexRef(mclVsa(veh, "veh"), ".P7_b")),
mclVv(F_7b, "F_7b"),
NULL));
/*
*
* t7=[F_7b;M_7bb];
*/
mlfAssign(
&t7, mlfVertcat(mclVv(F_7b, "F_7b"), mclVv(M_7bb, "M_7bb"), NULL));
/*
*
* % --------------------------------------------------------------
* % forces on FIN 8
*
* % fin8 rotation matrix
* R_8b=[cos(de(8)) 0 sin(de(8)); -sin(de(8)) 0 cos(de(8)); 0 -1 0];
*/
mlfAssign(
&R_8b,
mlfVertcat(
mlfHorzcat(
mclVe(mlfCos(mclVe(mclIntArrayRef1(mclVsa(de, "de"), 8)))),
_mxarray12_,
mclVe(mlfSin(mclVe(mclIntArrayRef1(mclVsa(de, "de"), 8)))),
NULL),
mlfHorzcat(
mclUminus(mclVe(mlfSin(mclVe(mclIntArrayRef1(mclVsa(de, "de"), 8))))),
_mxarray12_,
mclVe(mlfCos(mclVe(mclIntArrayRef1(mclVsa(de, "de"), 8)))),
NULL),
_mxarray19_,
NULL));
/*
*
* % relative velocity of fin8 middle point wrt c in b
* v_8cb=vr(1:3)+vp(vr(4:6),veh.P8_b);
*/
mlfAssign(
&v_8cb,
mclPlus(
mclVe(
mclArrayRef1(
mclVsa(vr, "vr"), mlfColon(_mxarray6_, _mxarray7_, NULL))),
mclVe(
mclFeval(
mclValueVarargout(),
mlxVp,
mclVe(
mclArrayRef1(
mclVsa(vr, "vr"), mlfColon(_mxarray8_, _mxarray9_, NULL))),
mclVe(mlfIndexRef(mclVsa(veh, "veh"), ".P8_b")),
NULL))));
/*
*
* % relative velocity of fin8 middle point wrt c in 8
* v_8c8=R_8b'*v_8cb;
*/
mlfAssign(
&v_8c8,
mclMtimes(mlfCtranspose(mclVv(R_8b, "R_8b")), mclVv(v_8cb, "v_8cb")));
/*
*
* % attack angle
* a8=atan2(v_8c8(3),v_8c8(1));
*/
mlfAssign(
&a8,
mlfAtan2(
mclVe(mclIntArrayRef1(mclVsv(v_8c8, "v_8c8"), 3)),
mclVe(mclIntArrayRef1(mclVsv(v_8c8, "v_8c8"), 1))));
/*
*
* % fin8 wind frame rotation matrix
* R_w8=[cos(a8) 0 -sin(a8); 0 1 0; sin(a8) 0 cos(a8)];
*/
mlfAssign(
&R_w8,
mlfVertcat(
mlfHorzcat(
mclVe(mlfCos(mclVv(a8, "a8"))),
_mxarray12_,
mclUminus(mclVe(mlfSin(mclVv(a8, "a8")))),
NULL),
_mxarray16_,
mlfHorzcat(
mclVe(mlfSin(mclVv(a8, "a8"))),
_mxarray12_,
mclVe(mlfCos(mclVv(a8, "a8"))),
NULL),
NULL));
/*
*
* % cl and cd computation
* [cl,cd]=a2clcd(a8);
*/
mlfAssign(&cl, mlfA2clcd(&cd, mclVv(a8, "a8")));
/*
*
* % damping forces on 8 wrt w
* F_8w=-0.5*veh.rho*veh.st*(v_8c8(1)^2+v_8c8(3)^2)*[cd; 0; cl];
*/
mlfAssign(
&F_8w,
mclMtimes(
mclMtimes(
mclFeval(
mclValueVarargout(),
mlxMtimes,
mclFeval(
mclValueVarargout(),
mlxMtimes,
_mxarray18_,
mclVe(mlfIndexRef(mclVsa(veh, "veh"), ".rho")),
NULL),
mclVe(mlfIndexRef(mclVsa(veh, "veh"), ".st")),
NULL),
mclPlus(
mclMpower(
mclVe(mclIntArrayRef1(mclVsv(v_8c8, "v_8c8"), 1)), _mxarray5_),
mclMpower(
mclVe(mclIntArrayRef1(mclVsv(v_8c8, "v_8c8"), 3)), _mxarray5_))),
mlfVertcat(mclVv(cd, "cd"), _mxarray12_, mclVv(cl, "cl"), NULL)));
/*
*
* % damping forces on 8 wrt b
* F_8b=R_8b*R_w8*F_8w;
*/
mlfAssign(
&F_8b,
mclMtimes(
mclMtimes(mclVv(R_8b, "R_8b"), mclVv(R_w8, "R_w8")),
mclVv(F_8w, "F_8w")));
/*
*
* % moments on 8 with pole in b wrt b
* M_8bb=vp(veh.P8_b,F_8b);
*/
mlfAssign(
&M_8bb,
mclFeval(
mclValueVarargout(),
mlxVp,
mclVe(mlfIndexRef(mclVsa(veh, "veh"), ".P8_b")),
mclVv(F_8b, "F_8b"),
NULL));
/*
*
* t8=[F_8b;M_8bb];
*/
mlfAssign(
&t8, mlfVertcat(mclVv(F_8b, "F_8b"), mclVv(M_8bb, "M_8bb"), NULL));
/*
*
* % --------------------------------------------------------------
* % resulting hydrodynamic force and moment with pole in b wrt b
*
* td=tf+t1+t2+t3+t4+t5+t6+t7+t8;
*/
mlfAssign(
&td,
mclPlus(
mclPlus(
mclPlus(
mclPlus(
mclPlus(
mclPlus(
mclPlus(
mclPlus(mclVv(tf, "tf"), mclVv(t1, "t1")), mclVv(t2, "t2")),
mclVv(t3, "t3")),
mclVv(t4, "t4")),
mclVv(t5, "t5")),
mclVv(t6, "t6")),
mclVv(t7, "t7")),
mclVv(t8, "t8")));
mclValidateOutput(td, 1, nargout_, "td", "tau_damp");
mxDestroyArray(sf);
mxDestroyArray(v_Bcb);
mxDestroyArray(i_fb);
mxDestroyArray(k_fb);
mxDestroyArray(R_fb);
mxDestroyArray(v_Bcf);
mxDestroyArray(af);
mxDestroyArray(R_wf);
mxDestroyArray(cl);
mxDestroyArray(cd);
mxDestroyArray(xcp);
mxDestroyArray(F_Bw);
mxDestroyArray(F_Bb);
mxDestroyArray(Pf_b);
mxDestroyArray(M_Bbb);
mxDestroyArray(tf);
mxDestroyArray(R_1b);
mxDestroyArray(v_1cb);
mxDestroyArray(v_1c1);
mxDestroyArray(a1);
mxDestroyArray(R_w1);
mxDestroyArray(F_1w);
mxDestroyArray(F_1b);
mxDestroyArray(M_1bb);
mxDestroyArray(t1);
mxDestroyArray(R_2b);
mxDestroyArray(v_2cb);
mxDestroyArray(v_2c2);
mxDestroyArray(a2);
mxDestroyArray(R_w2);
mxDestroyArray(F_2w);
mxDestroyArray(F_2b);
mxDestroyArray(M_2bb);
mxDestroyArray(t2);
mxDestroyArray(R_3b);
mxDestroyArray(v_3cb);
mxDestroyArray(v_3c3);
mxDestroyArray(a3);
mxDestroyArray(R_w3);
mxDestroyArray(F_3w);
mxDestroyArray(F_3b);
mxDestroyArray(M_3bb);
mxDestroyArray(t3);
mxDestroyArray(R_4b);
mxDestroyArray(v_4cb);
mxDestroyArray(v_4c4);
mxDestroyArray(a4);
mxDestroyArray(R_w4);
mxDestroyArray(F_4w);
mxDestroyArray(F_4b);
mxDestroyArray(M_4bb);
mxDestroyArray(t4);
mxDestroyArray(R_5b);
mxDestroyArray(v_5cb);
mxDestroyArray(v_5c5);
mxDestroyArray(a5);
mxDestroyArray(R_w5);
mxDestroyArray(F_5w);
mxDestroyArray(F_5b);
mxDestroyArray(M_5bb);
mxDestroyArray(t5);
mxDestroyArray(R_6b);
mxDestroyArray(v_6cb);
mxDestroyArray(v_6c6);
mxDestroyArray(a6);
mxDestroyArray(R_w6);
mxDestroyArray(F_6w);
mxDestroyArray(F_6b);
mxDestroyArray(M_6bb);
mxDestroyArray(t6);
mxDestroyArray(R_7b);
mxDestroyArray(v_7cb);
mxDestroyArray(v_7c7);
mxDestroyArray(a7);
mxDestroyArray(R_w7);
mxDestroyArray(F_7w);
mxDestroyArray(F_7b);
mxDestroyArray(M_7bb);
mxDestroyArray(t7);
mxDestroyArray(R_8b);
mxDestroyArray(v_8cb);
mxDestroyArray(v_8c8);
mxDestroyArray(a8);
mxDestroyArray(R_w8);
mxDestroyArray(F_8w);
mxDestroyArray(F_8b);
mxDestroyArray(M_8bb);
mxDestroyArray(t8);
mxDestroyArray(de);
mxDestroyArray(vr);
mxDestroyArray(veh);
mclSetCurrentLocalFunctionTable(save_local_function_table_);
return td;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -