📄 tau_damp.c
字号:
&F_Bb,
mclMtimes(
mclMtimes(mclVv(R_fb, "R_fb"), mclVv(R_wf, "R_wf")),
mclVv(F_Bw, "F_Bw")));
/*
*
* % force application point
* Pf_b=[-xcp*veh.l; 0; 0];
*/
mlfAssign(
&Pf_b,
mlfVertcat(
mclFeval(
mclValueVarargout(),
mlxMtimes,
mclUminus(mclVv(xcp, "xcp")),
mclVe(mlfIndexRef(mclVsa(veh, "veh"), ".l")),
NULL),
_mxarray12_,
_mxarray12_,
NULL));
/*
*
* % moments on B with pole in b wrt b
* M_Bbb=vp(Pf_b,F_Bb);
*/
mlfAssign(&M_Bbb, mlfVp(mclVv(Pf_b, "Pf_b"), mclVv(F_Bb, "F_Bb")));
/*
*
* tf=[F_Bb;M_Bbb];
*/
mlfAssign(
&tf, mlfVertcat(mclVv(F_Bb, "F_Bb"), mclVv(M_Bbb, "M_Bbb"), NULL));
/*
*
* % --------------------------------------------------------------
* % forces on FIN 1
*
* % fin1 rotation matrix
* R_1b=[cos(de(1)) 0 sin(de(1)); 0 1 0; -sin(de(1)) 0 cos(de(1))];
*/
mlfAssign(
&R_1b,
mlfVertcat(
mlfHorzcat(
mclVe(mlfCos(mclVe(mclIntArrayRef1(mclVsa(de, "de"), 1)))),
_mxarray12_,
mclVe(mlfSin(mclVe(mclIntArrayRef1(mclVsa(de, "de"), 1)))),
NULL),
_mxarray16_,
mlfHorzcat(
mclUminus(mclVe(mlfSin(mclVe(mclIntArrayRef1(mclVsa(de, "de"), 1))))),
_mxarray12_,
mclVe(mlfCos(mclVe(mclIntArrayRef1(mclVsa(de, "de"), 1)))),
NULL),
NULL));
/*
*
* % relative velocity of fin1 middle point wrt c in b
* v_1cb=vr(1:3)+vp(vr(4:6),veh.P1_b);
*/
mlfAssign(
&v_1cb,
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"), ".P1_b")),
NULL))));
/*
*
* % relative velocity of fin1 middle point wrt c in 1
* v_1c1=R_1b'*v_1cb;
*/
mlfAssign(
&v_1c1,
mclMtimes(mlfCtranspose(mclVv(R_1b, "R_1b")), mclVv(v_1cb, "v_1cb")));
/*
*
* % attack angle
* a1=atan2(v_1c1(3),v_1c1(1));
*/
mlfAssign(
&a1,
mlfAtan2(
mclVe(mclIntArrayRef1(mclVsv(v_1c1, "v_1c1"), 3)),
mclVe(mclIntArrayRef1(mclVsv(v_1c1, "v_1c1"), 1))));
/*
*
* % fin1 wind frame rotation matrix
* R_w1=[cos(a1) 0 -sin(a1); 0 1 0; sin(a1) 0 cos(a1)];
*/
mlfAssign(
&R_w1,
mlfVertcat(
mlfHorzcat(
mclVe(mlfCos(mclVv(a1, "a1"))),
_mxarray12_,
mclUminus(mclVe(mlfSin(mclVv(a1, "a1")))),
NULL),
_mxarray16_,
mlfHorzcat(
mclVe(mlfSin(mclVv(a1, "a1"))),
_mxarray12_,
mclVe(mlfCos(mclVv(a1, "a1"))),
NULL),
NULL));
/*
*
* % cl and cd computation
* [cl,cd]=a2clcd(a1);
*/
mlfAssign(&cl, mlfA2clcd(&cd, mclVv(a1, "a1")));
/*
*
* % damping forces on 1 wrt w
* F_1w=-0.5*veh.rho*veh.sw*(v_1c1(1)^2+v_1c1(3)^2)*[cd; 0; cl];
*/
mlfAssign(
&F_1w,
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_1c1, "v_1c1"), 1)), _mxarray5_),
mclMpower(
mclVe(mclIntArrayRef1(mclVsv(v_1c1, "v_1c1"), 3)), _mxarray5_))),
mlfVertcat(mclVv(cd, "cd"), _mxarray12_, mclVv(cl, "cl"), NULL)));
/*
*
* % damping forces on 1 wrt b
* F_1b=R_1b*R_w1*F_1w;
*/
mlfAssign(
&F_1b,
mclMtimes(
mclMtimes(mclVv(R_1b, "R_1b"), mclVv(R_w1, "R_w1")),
mclVv(F_1w, "F_1w")));
/*
*
* % moments on 1 with pole in b wrt b
* M_1bb=vp(veh.P1_b,F_1b);
*/
mlfAssign(
&M_1bb,
mclFeval(
mclValueVarargout(),
mlxVp,
mclVe(mlfIndexRef(mclVsa(veh, "veh"), ".P1_b")),
mclVv(F_1b, "F_1b"),
NULL));
/*
*
* t1=[F_1b;M_1bb];
*/
mlfAssign(
&t1, mlfVertcat(mclVv(F_1b, "F_1b"), mclVv(M_1bb, "M_1bb"), NULL));
/*
*
* % --------------------------------------------------------------
* % forces on FIN 2
*
* % fin2 rotation matrix
* R_2b=[cos(de(2)) 0 sin(de(2)); sin(de(2)) 0 -cos(de(2)); 0 1 0];
*/
mlfAssign(
&R_2b,
mlfVertcat(
mlfHorzcat(
mclVe(mlfCos(mclVe(mclIntArrayRef1(mclVsa(de, "de"), 2)))),
_mxarray12_,
mclVe(mlfSin(mclVe(mclIntArrayRef1(mclVsa(de, "de"), 2)))),
NULL),
mlfHorzcat(
mclVe(mlfSin(mclVe(mclIntArrayRef1(mclVsa(de, "de"), 2)))),
_mxarray12_,
mclUminus(mclVe(mlfCos(mclVe(mclIntArrayRef1(mclVsa(de, "de"), 2))))),
NULL),
_mxarray16_,
NULL));
/*
*
* % relative velocity of fin2 middle point wrt c in b
* v_2cb=vr(1:3)+vp(vr(4:6),veh.P2_b);
*/
mlfAssign(
&v_2cb,
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"), ".P2_b")),
NULL))));
/*
*
* % relative velocity of fin2 middle point wrt c in 2
* v_2c2=R_2b'*v_2cb;
*/
mlfAssign(
&v_2c2,
mclMtimes(mlfCtranspose(mclVv(R_2b, "R_2b")), mclVv(v_2cb, "v_2cb")));
/*
*
* % attack angle
* a2=atan2(v_2c2(3),v_2c2(1));
*/
mlfAssign(
&a2,
mlfAtan2(
mclVe(mclIntArrayRef1(mclVsv(v_2c2, "v_2c2"), 3)),
mclVe(mclIntArrayRef1(mclVsv(v_2c2, "v_2c2"), 1))));
/*
*
* % fin2 wind frame rotation matrix
* R_w2=[cos(a2) 0 -sin(a2); 0 1 0; sin(a2) 0 cos(a2)];
*/
mlfAssign(
&R_w2,
mlfVertcat(
mlfHorzcat(
mclVe(mlfCos(mclVv(a2, "a2"))),
_mxarray12_,
mclUminus(mclVe(mlfSin(mclVv(a2, "a2")))),
NULL),
_mxarray16_,
mlfHorzcat(
mclVe(mlfSin(mclVv(a2, "a2"))),
_mxarray12_,
mclVe(mlfCos(mclVv(a2, "a2"))),
NULL),
NULL));
/*
*
* % cl and cd computation
* [cl,cd]=a2clcd(a2);
*/
mlfAssign(&cl, mlfA2clcd(&cd, mclVv(a2, "a2")));
/*
*
* % damping forces on 2 wrt w
* F_2w=-0.5*veh.rho*veh.sw*(v_2c2(1)^2+v_2c2(3)^2)*[cd; 0; cl];
*/
mlfAssign(
&F_2w,
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_2c2, "v_2c2"), 1)), _mxarray5_),
mclMpower(
mclVe(mclIntArrayRef1(mclVsv(v_2c2, "v_2c2"), 3)), _mxarray5_))),
mlfVertcat(mclVv(cd, "cd"), _mxarray12_, mclVv(cl, "cl"), NULL)));
/*
*
* % damping forces on 2 wrt b
* F_2b=R_2b*R_w2*F_2w;
*/
mlfAssign(
&F_2b,
mclMtimes(
mclMtimes(mclVv(R_2b, "R_2b"), mclVv(R_w2, "R_w2")),
mclVv(F_2w, "F_2w")));
/*
*
* % moments on 2 with pole in b wrt b
* M_2bb=vp(veh.P2_b,F_2b);
*/
mlfAssign(
&M_2bb,
mclFeval(
mclValueVarargout(),
mlxVp,
mclVe(mlfIndexRef(mclVsa(veh, "veh"), ".P2_b")),
mclVv(F_2b, "F_2b"),
NULL));
/*
*
* t2=[F_2b;M_2bb];
*/
mlfAssign(
&t2, mlfVertcat(mclVv(F_2b, "F_2b"), mclVv(M_2bb, "M_2bb"), NULL));
/*
*
* % --------------------------------------------------------------
* % forces on FIN 3
*
* % fin3 rotation matrix
* R_3b=[cos(de(3)) 0 sin(de(3)); 0 -1 0; sin(de(3)) 0 -cos(de(3))];
*/
mlfAssign(
&R_3b,
mlfVertcat(
mlfHorzcat(
mclVe(mlfCos(mclVe(mclIntArrayRef1(mclVsa(de, "de"), 3)))),
_mxarray12_,
mclVe(mlfSin(mclVe(mclIntArrayRef1(mclVsa(de, "de"), 3)))),
NULL),
_mxarray19_,
mlfHorzcat(
mclVe(mlfSin(mclVe(mclIntArrayRef1(mclVsa(de, "de"), 3)))),
_mxarray12_,
mclUminus(mclVe(mlfCos(mclVe(mclIntArrayRef1(mclVsa(de, "de"), 3))))),
NULL),
NULL));
/*
*
* % relative velocity of fin3 middle point wrt c in b
* v_3cb=vr(1:3)+vp(vr(4:6),veh.P3_b);
*/
mlfAssign(
&v_3cb,
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"), ".P3_b")),
NULL))));
/*
*
* % relative velocity of fin3 middle point wrt c in 3
* v_3c3=R_3b'*v_3cb;
*/
mlfAssign(
&v_3c3,
mclMtimes(mlfCtranspose(mclVv(R_3b, "R_3b")), mclVv(v_3cb, "v_3cb")));
/*
*
* % attack angle
* a3=atan2(v_3c3(3),v_3c3(1));
*/
mlfAssign(
&a3,
mlfAtan2(
mclVe(mclIntArrayRef1(mclVsv(v_3c3, "v_3c3"), 3)),
mclVe(mclIntArrayRef1(mclVsv(v_3c3, "v_3c3"), 1))));
/*
*
* % fin3 wind frame rotation matrix
* R_w3=[cos(a3) 0 -sin(a3); 0 1 0; sin(a3) 0 cos(a3)];
*/
mlfAssign(
&R_w3,
mlfVertcat(
mlfHorzcat(
mclVe(mlfCos(mclVv(a3, "a3"))),
_mxarray12_,
mclUminus(mclVe(mlfSin(mclVv(a3, "a3")))),
NULL),
_mxarray16_,
mlfHorzcat(
mclVe(mlfSin(mclVv(a3, "a3"))),
_mxarray12_,
mclVe(mlfCos(mclVv(a3, "a3"))),
NULL),
NULL));
/*
*
* % cl and cd computation
* [cl,cd]=a2clcd(a3);
*/
mlfAssign(&cl, mlfA2clcd(&cd, mclVv(a3, "a3")));
/*
*
* % damping forces on 3 wrt w
* F_3w=-0.5*veh.rho*veh.sw*(v_3c3(1)^2+v_3c3(3)^2)*[cd; 0; cl];
*/
mlfAssign(
&F_3w,
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_3c3, "v_3c3"), 1)), _mxarray5_),
mclMpower(
mclVe(mclIntArrayRef1(mclVsv(v_3c3, "v_3c3"), 3)), _mxarray5_))),
mlfVertcat(mclVv(cd, "cd"), _mxarray12_, mclVv(cl, "cl"), NULL)));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -