📄 tau_damp.c
字号:
/*
*
* % damping forces on 3 wrt b
* F_3b=R_3b*R_w3*F_3w;
*/
mlfAssign(
&F_3b,
mclMtimes(
mclMtimes(mclVv(R_3b, "R_3b"), mclVv(R_w3, "R_w3")),
mclVv(F_3w, "F_3w")));
/*
*
* % moments on 3 with pole in b wrt b
* M_3bb=vp(veh.P3_b,F_3b);
*/
mlfAssign(
&M_3bb,
mclFeval(
mclValueVarargout(),
mlxVp,
mclVe(mlfIndexRef(mclVsa(veh, "veh"), ".P3_b")),
mclVv(F_3b, "F_3b"),
NULL));
/*
*
* t3=[F_3b;M_3bb];
*/
mlfAssign(
&t3, mlfVertcat(mclVv(F_3b, "F_3b"), mclVv(M_3bb, "M_3bb"), NULL));
/*
*
* % --------------------------------------------------------------
* % forces on FIN 4
*
* % fin4 rotation matrix
* R_4b=[cos(de(4)) 0 sin(de(4)); -sin(de(4)) 0 cos(de(4)); 0 -1 0];
*/
mlfAssign(
&R_4b,
mlfVertcat(
mlfHorzcat(
mclVe(mlfCos(mclVe(mclIntArrayRef1(mclVsa(de, "de"), 4)))),
_mxarray12_,
mclVe(mlfSin(mclVe(mclIntArrayRef1(mclVsa(de, "de"), 4)))),
NULL),
mlfHorzcat(
mclUminus(mclVe(mlfSin(mclVe(mclIntArrayRef1(mclVsa(de, "de"), 4))))),
_mxarray12_,
mclVe(mlfCos(mclVe(mclIntArrayRef1(mclVsa(de, "de"), 4)))),
NULL),
_mxarray19_,
NULL));
/*
*
* % relative velocity of fin4 middle point wrt c in b
* v_4cb=vr(1:3)+vp(vr(4:6),veh.P4_b);
*/
mlfAssign(
&v_4cb,
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"), ".P4_b")),
NULL))));
/*
*
* % relative velocity of fin4 middle point wrt c in 4
* v_4c4=R_4b'*v_4cb;
*/
mlfAssign(
&v_4c4,
mclMtimes(mlfCtranspose(mclVv(R_4b, "R_4b")), mclVv(v_4cb, "v_4cb")));
/*
*
* % attack angle
* a4=atan2(v_4c4(3),v_4c4(1));
*/
mlfAssign(
&a4,
mlfAtan2(
mclVe(mclIntArrayRef1(mclVsv(v_4c4, "v_4c4"), 3)),
mclVe(mclIntArrayRef1(mclVsv(v_4c4, "v_4c4"), 1))));
/*
*
* % fin4 wind frame rotation matrix
* R_w4=[cos(a4) 0 -sin(a4); 0 1 0; sin(a4) 0 cos(a4)];
*/
mlfAssign(
&R_w4,
mlfVertcat(
mlfHorzcat(
mclVe(mlfCos(mclVv(a4, "a4"))),
_mxarray12_,
mclUminus(mclVe(mlfSin(mclVv(a4, "a4")))),
NULL),
_mxarray16_,
mlfHorzcat(
mclVe(mlfSin(mclVv(a4, "a4"))),
_mxarray12_,
mclVe(mlfCos(mclVv(a4, "a4"))),
NULL),
NULL));
/*
*
* % cl and cd computation
* [cl,cd]=a2clcd(a4);
*/
mlfAssign(&cl, mlfA2clcd(&cd, mclVv(a4, "a4")));
/*
*
* % damping forces on 4 wrt w
* F_4w=-0.5*veh.rho*veh.sw*(v_4c4(1)^2+v_4c4(3)^2)*[cd; 0; cl];
*/
mlfAssign(
&F_4w,
mclMtimes(
mclMtimes(
mclFeval(
mclValueVarargout(),
mlxMtimes,
mclFeval(
mclValueVarargout(),
mlxMtimes,
_mxarray18_,
mclVe(mlfIndexRef(mclVsa(veh, "veh"), ".rho")),
NULL),
mclVe(mlfIndexRef(mclVsa(veh, "veh"), ".sw")),
NULL),
mclPlus(
mclMpower(
mclVe(mclIntArrayRef1(mclVsv(v_4c4, "v_4c4"), 1)), _mxarray5_),
mclMpower(
mclVe(mclIntArrayRef1(mclVsv(v_4c4, "v_4c4"), 3)), _mxarray5_))),
mlfVertcat(mclVv(cd, "cd"), _mxarray12_, mclVv(cl, "cl"), NULL)));
/*
*
* % damping forces on 4 wrt b
* F_4b=R_4b*R_w4*F_4w;
*/
mlfAssign(
&F_4b,
mclMtimes(
mclMtimes(mclVv(R_4b, "R_4b"), mclVv(R_w4, "R_w4")),
mclVv(F_4w, "F_4w")));
/*
*
* % moments on 4 with pole in b wrt b
* M_4bb=vp(veh.P4_b,F_4b);
*/
mlfAssign(
&M_4bb,
mclFeval(
mclValueVarargout(),
mlxVp,
mclVe(mlfIndexRef(mclVsa(veh, "veh"), ".P4_b")),
mclVv(F_4b, "F_4b"),
NULL));
/*
*
* t4=[F_4b;M_4bb];
*/
mlfAssign(
&t4, mlfVertcat(mclVv(F_4b, "F_4b"), mclVv(M_4bb, "M_4bb"), NULL));
/*
*
* % --------------------------------------------------------------
* % forces on FIN 5
*
* % fin5 rotation matrix
* R_5b=[cos(de(5)) 0 sin(de(5)); 0 1 0; -sin(de(5)) 0 cos(de(5))];
*/
mlfAssign(
&R_5b,
mlfVertcat(
mlfHorzcat(
mclVe(mlfCos(mclVe(mclIntArrayRef1(mclVsa(de, "de"), 5)))),
_mxarray12_,
mclVe(mlfSin(mclVe(mclIntArrayRef1(mclVsa(de, "de"), 5)))),
NULL),
_mxarray16_,
mlfHorzcat(
mclUminus(mclVe(mlfSin(mclVe(mclIntArrayRef1(mclVsa(de, "de"), 5))))),
_mxarray12_,
mclVe(mlfCos(mclVe(mclIntArrayRef1(mclVsa(de, "de"), 5)))),
NULL),
NULL));
/*
*
* % relative velocity of fin5 middle point wrt c in b
* v_5cb=vr(1:3)+vp(vr(4:6),veh.P5_b);
*/
mlfAssign(
&v_5cb,
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"), ".P5_b")),
NULL))));
/*
*
* % relative velocity of fin5 middle point wrt c in 5
* v_5c5=R_5b'*v_5cb;
*/
mlfAssign(
&v_5c5,
mclMtimes(mlfCtranspose(mclVv(R_5b, "R_5b")), mclVv(v_5cb, "v_5cb")));
/*
*
* % attack angle
* a5=atan2(v_5c5(3),v_5c5(1));
*/
mlfAssign(
&a5,
mlfAtan2(
mclVe(mclIntArrayRef1(mclVsv(v_5c5, "v_5c5"), 3)),
mclVe(mclIntArrayRef1(mclVsv(v_5c5, "v_5c5"), 1))));
/*
*
* % fin5 wind frame rotation matrix
* R_w5=[cos(a5) 0 -sin(a5); 0 1 0; sin(a5) 0 cos(a5)];
*/
mlfAssign(
&R_w5,
mlfVertcat(
mlfHorzcat(
mclVe(mlfCos(mclVv(a5, "a5"))),
_mxarray12_,
mclUminus(mclVe(mlfSin(mclVv(a5, "a5")))),
NULL),
_mxarray16_,
mlfHorzcat(
mclVe(mlfSin(mclVv(a5, "a5"))),
_mxarray12_,
mclVe(mlfCos(mclVv(a5, "a5"))),
NULL),
NULL));
/*
*
* % cl and cd computation
* [cl,cd]=a2clcd(a5);
*/
mlfAssign(&cl, mlfA2clcd(&cd, mclVv(a5, "a5")));
/*
*
* % damping forces on 5 wrt w
* F_5w=-0.5*veh.rho*veh.st*(v_5c5(1)^2+v_5c5(3)^2)*[cd; 0; cl];
*/
mlfAssign(
&F_5w,
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_5c5, "v_5c5"), 1)), _mxarray5_),
mclMpower(
mclVe(mclIntArrayRef1(mclVsv(v_5c5, "v_5c5"), 3)), _mxarray5_))),
mlfVertcat(mclVv(cd, "cd"), _mxarray12_, mclVv(cl, "cl"), NULL)));
/*
*
* % damping forces on 5 wrt b
* F_5b=R_5b*R_w5*F_5w;
*/
mlfAssign(
&F_5b,
mclMtimes(
mclMtimes(mclVv(R_5b, "R_5b"), mclVv(R_w5, "R_w5")),
mclVv(F_5w, "F_5w")));
/*
*
* % moments on 5 with pole in b wrt b
* M_5bb=vp(veh.P5_b,F_5b);
*/
mlfAssign(
&M_5bb,
mclFeval(
mclValueVarargout(),
mlxVp,
mclVe(mlfIndexRef(mclVsa(veh, "veh"), ".P5_b")),
mclVv(F_5b, "F_5b"),
NULL));
/*
*
* t5=[F_5b;M_5bb];
*/
mlfAssign(
&t5, mlfVertcat(mclVv(F_5b, "F_5b"), mclVv(M_5bb, "M_5bb"), NULL));
/*
*
* % --------------------------------------------------------------
* % forces on FIN 6
*
* % fin6 rotation matrix
* R_6b=[cos(de(6)) 0 sin(de(6)); sin(de(6)) 0 -cos(de(6)); 0 1 0];
*/
mlfAssign(
&R_6b,
mlfVertcat(
mlfHorzcat(
mclVe(mlfCos(mclVe(mclIntArrayRef1(mclVsa(de, "de"), 6)))),
_mxarray12_,
mclVe(mlfSin(mclVe(mclIntArrayRef1(mclVsa(de, "de"), 6)))),
NULL),
mlfHorzcat(
mclVe(mlfSin(mclVe(mclIntArrayRef1(mclVsa(de, "de"), 6)))),
_mxarray12_,
mclUminus(mclVe(mlfCos(mclVe(mclIntArrayRef1(mclVsa(de, "de"), 6))))),
NULL),
_mxarray16_,
NULL));
/*
*
* % relative velocity of fin6 middle point wrt c in b
* v_6cb=vr(1:3)+vp(vr(4:6),veh.P6_b);
*/
mlfAssign(
&v_6cb,
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"), ".P6_b")),
NULL))));
/*
*
* % relative velocity of fin6 middle point wrt c in 6
* v_6c6=R_6b'*v_6cb;
*/
mlfAssign(
&v_6c6,
mclMtimes(mlfCtranspose(mclVv(R_6b, "R_6b")), mclVv(v_6cb, "v_6cb")));
/*
*
* % attack angle
* a6=atan2(v_6c6(3),v_6c6(1));
*/
mlfAssign(
&a6,
mlfAtan2(
mclVe(mclIntArrayRef1(mclVsv(v_6c6, "v_6c6"), 3)),
mclVe(mclIntArrayRef1(mclVsv(v_6c6, "v_6c6"), 1))));
/*
*
* % fin6 wind frame rotation matrix
* R_w6=[cos(a6) 0 -sin(a6); 0 1 0; sin(a6) 0 cos(a6)];
*/
mlfAssign(
&R_w6,
mlfVertcat(
mlfHorzcat(
mclVe(mlfCos(mclVv(a6, "a6"))),
_mxarray12_,
mclUminus(mclVe(mlfSin(mclVv(a6, "a6")))),
NULL),
_mxarray16_,
mlfHorzcat(
mclVe(mlfSin(mclVv(a6, "a6"))),
_mxarray12_,
mclVe(mlfCos(mclVv(a6, "a6"))),
NULL),
NULL));
/*
*
* % cl and cd computation
* [cl,cd]=a2clcd(a6);
*/
mlfAssign(&cl, mlfA2clcd(&cd, mclVv(a6, "a6")));
/*
*
* % damping forces on 6 wrt w
* F_6w=-0.5*veh.rho*veh.st*(v_6c6(1)^2+v_6c6(3)^2)*[cd; 0; cl];
*/
mlfAssign(
&F_6w,
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_6c6, "v_6c6"), 1)), _mxarray5_),
mclMpower(
mclVe(mclIntArrayRef1(mclVsv(v_6c6, "v_6c6"), 3)), _mxarray5_))),
mlfVertcat(mclVv(cd, "cd"), _mxarray12_, mclVv(cl, "cl"), NULL)));
/*
*
* % damping forces on 6 wrt b
* F_6b=R_6b*R_w6*F_6w;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -