📄 tau_damp.c
字号:
*
* % 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,
mlfPlus(
mlfIndexRef(vr, "(?)", mlfColon(mlfScalar(1.0), mlfScalar(3.0), NULL)),
mlfFeval(
mclValueVarargout(),
mlxVp,
mlfIndexRef(
vr, "(?)", mlfColon(mlfScalar(4.0), mlfScalar(6.0), NULL)),
mlfIndexRef(veh, ".P2_b"),
NULL)));
/*
*
* % relative velocity of fin2 middle point wrt c in 2
* v_2c2=R_2b'*v_2cb;
*/
mlfAssign(&v_2c2, mlfMtimes(mlfCtranspose(R_2b), v_2cb));
/*
*
* % attack angle
* a2=atan2(v_2c2(3),v_2c2(1));
*/
mlfAssign(
&a2,
mlfAtan2(
mlfIndexRef(v_2c2, "(?)", mlfScalar(3.0)),
mlfIndexRef(v_2c2, "(?)", mlfScalar(1.0))));
/*
*
* % 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(mlfCos(a2), mlfScalar(0.0), mlfUminus(mlfSin(a2)), NULL),
mlfDoubleMatrix(1, 3, __Array13_r, NULL),
mlfHorzcat(mlfSin(a2), mlfScalar(0.0), mlfCos(a2), NULL),
NULL));
/*
*
* % cl and cd computation
* [cl,cd]=a2clcd(a2);
*/
mlfAssign(&cl, mlfA2clcd(&cd, 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,
mlfMtimes(
mlfMtimes(
mlfFeval(
mclValueVarargout(),
mlxMtimes,
mlfFeval(
mclValueVarargout(),
mlxMtimes,
mlfScalar(-0.5),
mlfIndexRef(veh, ".rho"),
NULL),
mlfIndexRef(veh, ".sw"),
NULL),
mlfPlus(
mlfMpower(
mlfIndexRef(v_2c2, "(?)", mlfScalar(1.0)), mlfScalar(2.0)),
mlfMpower(
mlfIndexRef(v_2c2, "(?)", mlfScalar(3.0)), mlfScalar(2.0)))),
mlfVertcat(
mlfHorzcat(cd, NULL),
mlfDoubleMatrix(1, 1, __Array14_r, NULL),
mlfHorzcat(cl, NULL),
NULL)));
/*
*
* % damping forces on 2 wrt b
* F_2b=R_2b*R_w2*F_2w;
*/
mlfAssign(&F_2b, mlfMtimes(mlfMtimes(R_2b, R_w2), F_2w));
/*
*
* % moments on 2 with pole in b wrt b
* M_2bb=vp(veh.P2_b,F_2b);
*/
mlfAssign(
&M_2bb,
mlfFeval(
mclValueVarargout(), mlxVp, mlfIndexRef(veh, ".P2_b"), F_2b, NULL));
/*
*
* t2=[F_2b;M_2bb];
*/
mlfAssign(
&t2, mlfVertcat(mlfHorzcat(F_2b, NULL), mlfHorzcat(M_2bb, NULL), 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(
mlfCos(mlfIndexRef(de, "(?)", mlfScalar(3.0))),
mlfScalar(0.0),
mlfSin(mlfIndexRef(de, "(?)", mlfScalar(3.0))),
NULL),
mlfDoubleMatrix(1, 3, __Array15_r, NULL),
mlfHorzcat(
mlfSin(mlfIndexRef(de, "(?)", mlfScalar(3.0))),
mlfScalar(0.0),
mlfUminus(mlfCos(mlfIndexRef(de, "(?)", mlfScalar(3.0)))),
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,
mlfPlus(
mlfIndexRef(vr, "(?)", mlfColon(mlfScalar(1.0), mlfScalar(3.0), NULL)),
mlfFeval(
mclValueVarargout(),
mlxVp,
mlfIndexRef(
vr, "(?)", mlfColon(mlfScalar(4.0), mlfScalar(6.0), NULL)),
mlfIndexRef(veh, ".P3_b"),
NULL)));
/*
*
* % relative velocity of fin3 middle point wrt c in 3
* v_3c3=R_3b'*v_3cb;
*/
mlfAssign(&v_3c3, mlfMtimes(mlfCtranspose(R_3b), v_3cb));
/*
*
* % attack angle
* a3=atan2(v_3c3(3),v_3c3(1));
*/
mlfAssign(
&a3,
mlfAtan2(
mlfIndexRef(v_3c3, "(?)", mlfScalar(3.0)),
mlfIndexRef(v_3c3, "(?)", mlfScalar(1.0))));
/*
*
* % 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(mlfCos(a3), mlfScalar(0.0), mlfUminus(mlfSin(a3)), NULL),
mlfDoubleMatrix(1, 3, __Array16_r, NULL),
mlfHorzcat(mlfSin(a3), mlfScalar(0.0), mlfCos(a3), NULL),
NULL));
/*
*
* % cl and cd computation
* [cl,cd]=a2clcd(a3);
*/
mlfAssign(&cl, mlfA2clcd(&cd, 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,
mlfMtimes(
mlfMtimes(
mlfFeval(
mclValueVarargout(),
mlxMtimes,
mlfFeval(
mclValueVarargout(),
mlxMtimes,
mlfScalar(-0.5),
mlfIndexRef(veh, ".rho"),
NULL),
mlfIndexRef(veh, ".sw"),
NULL),
mlfPlus(
mlfMpower(
mlfIndexRef(v_3c3, "(?)", mlfScalar(1.0)), mlfScalar(2.0)),
mlfMpower(
mlfIndexRef(v_3c3, "(?)", mlfScalar(3.0)), mlfScalar(2.0)))),
mlfVertcat(
mlfHorzcat(cd, NULL),
mlfDoubleMatrix(1, 1, __Array17_r, NULL),
mlfHorzcat(cl, NULL),
NULL)));
/*
*
* % damping forces on 3 wrt b
* F_3b=R_3b*R_w3*F_3w;
*/
mlfAssign(&F_3b, mlfMtimes(mlfMtimes(R_3b, R_w3), F_3w));
/*
*
* % moments on 3 with pole in b wrt b
* M_3bb=vp(veh.P3_b,F_3b);
*/
mlfAssign(
&M_3bb,
mlfFeval(
mclValueVarargout(), mlxVp, mlfIndexRef(veh, ".P3_b"), F_3b, NULL));
/*
*
* t3=[F_3b;M_3bb];
*/
mlfAssign(
&t3, mlfVertcat(mlfHorzcat(F_3b, NULL), mlfHorzcat(M_3bb, NULL), 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(
mlfCos(mlfIndexRef(de, "(?)", mlfScalar(4.0))),
mlfScalar(0.0),
mlfSin(mlfIndexRef(de, "(?)", mlfScalar(4.0))),
NULL),
mlfHorzcat(
mlfUminus(mlfSin(mlfIndexRef(de, "(?)", mlfScalar(4.0)))),
mlfScalar(0.0),
mlfCos(mlfIndexRef(de, "(?)", mlfScalar(4.0))),
NULL),
mlfDoubleMatrix(1, 3, __Array18_r, NULL),
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,
mlfPlus(
mlfIndexRef(vr, "(?)", mlfColon(mlfScalar(1.0), mlfScalar(3.0), NULL)),
mlfFeval(
mclValueVarargout(),
mlxVp,
mlfIndexRef(
vr, "(?)", mlfColon(mlfScalar(4.0), mlfScalar(6.0), NULL)),
mlfIndexRef(veh, ".P4_b"),
NULL)));
/*
*
* % relative velocity of fin4 middle point wrt c in 4
* v_4c4=R_4b'*v_4cb;
*/
mlfAssign(&v_4c4, mlfMtimes(mlfCtranspose(R_4b), v_4cb));
/*
*
* % attack angle
* a4=atan2(v_4c4(3),v_4c4(1));
*/
mlfAssign(
&a4,
mlfAtan2(
mlfIndexRef(v_4c4, "(?)", mlfScalar(3.0)),
mlfIndexRef(v_4c4, "(?)", mlfScalar(1.0))));
/*
*
* % 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(mlfCos(a4), mlfScalar(0.0), mlfUminus(mlfSin(a4)), NULL),
mlfDoubleMatrix(1, 3, __Array19_r, NULL),
mlfHorzcat(mlfSin(a4), mlfScalar(0.0), mlfCos(a4), NULL),
NULL));
/*
*
* % cl and cd computation
* [cl,cd]=a2clcd(a4);
*/
mlfAssign(&cl, mlfA2clcd(&cd, 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,
mlfMtimes(
mlfMtimes(
mlfFeval(
mclValueVarargout(),
mlxMtimes,
mlfFeval(
mclValueVarargout(),
mlxMtimes,
mlfScalar(-0.5),
mlfIndexRef(veh, ".rho"),
NULL),
mlfIndexRef(veh, ".sw"),
NULL),
mlfPlus(
mlfMpower(
mlfIndexRef(v_4c4, "(?)", mlfScalar(1.0)), mlfScalar(2.0)),
mlfMpower(
mlfIndexRef(v_4c4, "(?)", mlfScalar(3.0)), mlfScalar(2.0)))),
mlfVertcat(
mlfHorzcat(cd, NULL),
mlfDoubleMatrix(1, 1, __Array20_r, NULL),
mlfHorzcat(cl, NULL),
NULL)));
/*
*
* % damping forces on 4 wrt b
* F_4b=R_4b*R_w4*F_4w;
*/
mlfAssign(&F_4b, mlfMtimes(mlfMtimes(R_4b, R_w4), F_4w));
/*
*
* % moments on 4 with pole in b wrt b
* M_4bb=vp(veh.P4_b,F_4b);
*/
mlfAssign(
&M_4bb,
mlfFeval(
mclValueVarargout(), mlxVp, mlfIndexRef(veh, ".P4_b"), F_4b, NULL));
/*
*
* t4=[F_4b;M_4bb];
*/
mlfAssign(
&t4, mlfVertcat(mlfHorzcat(F_4b, NULL), mlfHorzcat(M_4bb, NULL), 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(
mlfCos(mlfIndexRef(de, "(?)", mlfScalar(5.0))),
mlfScalar(0.0),
mlfSin(mlfIndexRef(de, "(?)", mlfScalar(5.0))),
NULL),
mlfDoubleMatrix(1, 3, __Array21_r, NULL),
mlfHorzcat(
mlfUminus(mlfSin(mlfIndexRef(de, "(?)", mlfScalar(5.0)))),
mlfScalar(0.0),
mlfCos(mlfIndexRef(de, "(?)", mlfScalar(5.0))),
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,
mlfPlus(
mlfIndexRef(vr, "(?)", mlfColon(mlfScalar(1.0), mlfScalar(3.0), NULL)),
mlfFeval(
mclValueVarargout(),
mlxVp,
mlfIndexRef(
vr, "(?)", mlfColon(mlfScalar(4.0), mlfScalar(6.0), NULL)),
mlfIndexRef(veh, ".P5_b"),
NULL)));
/*
*
* % relative velocity of fin5 middle point wrt c in 5
* v_5c5=R_5b'*v_5cb;
*/
mlfAssign(&v_5c5, mlfMtimes(mlfCtranspose(R_5b), v_5cb));
/*
*
* % attack angle
* a5=atan2(v_5c5(3),v_5c5(1));
*/
mlfAssign(
&a5,
mlfAtan2(
mlfIndexRef(v_5c5, "(?)", mlfScalar(3.0)),
mlfIndexRef(v_5c5, "(?)", mlfScalar(1.0))));
/*
*
* % 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(mlfCos(a5), mlfScalar(0.0), mlfUminus(mlfSin(a5)), NULL),
mlfDoubleMatrix(1, 3, __Array22_r, NULL),
mlfHorzcat(mlfSin(a5), mlfScalar(0.0), mlfCos(a5), NULL),
NULL));
/*
*
* % cl and cd computation
* [cl,cd]=a2clcd(a5);
*/
mlfAssign(&cl, mlfA2clcd(&cd, 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,
mlfMtimes(
mlfMtimes(
mlfFeval(
mclValueVarargout(),
mlxMtimes,
mlfFeval(
mclValueVarargout(),
mlxMtimes,
mlfScalar(-0.5),
mlfIndexRef(veh, ".rho"),
NULL),
mlfIndexRef(veh, ".st"),
NULL),
mlfPlus(
mlfMpower(
mlfIndexRef(v_5c5, "(?)", mlfScalar(1.0)), mlfScalar(2.0)),
mlfMpower(
mlfIndexRef(v_5c5, "(?)", mlfScalar(3.0)), mlfScalar(2.0)))),
mlfVertcat(
mlfHorzcat(cd, NULL),
mlfDoubleMatrix(1, 1, __Array23_r, NULL),
mlfHorzcat(cl, NULL),
NULL)));
/*
*
* % damping forces on 5 wrt b
* F_5b=R_5b*R_w5*F_5w;
*/
mlfAssign(&F_5b, mlfMtimes(mlfMtimes(R_5b, R_w5), F_5w));
/*
*
* % moments on 5 with pole in b wrt b
* M_5bb=vp(veh.P5_b,F_5b);
*/
mlfAssign(
&M_5bb,
mlfFeval(
mclValueVarargout(), mlxVp, mlfIndexRef(veh, ".P5_b"), F_5b, NULL));
/*
*
* t5=[F_5b;M_5bb];
*/
mlfAssign(
&t5, mlfVertcat(mlfHorzcat(F_5b, NULL), mlfHorzcat(M_5bb, NULL), 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(
mlfCos(mlfIndexRef(de, "(?)", mlfScalar(6.0))),
mlfScalar(0.0),
mlfSin(mlfIndexRef(de, "(?)", mlfScalar(6.0))),
NULL),
mlfHorzcat(
mlfSin(mlfIndexRef(de, "(?)", mlfScalar(6.0))),
mlfScalar(0.0),
mlfUminus(mlfCos(mlfIndexRef(de, "(?)", mlfScalar(6.0)))),
NULL),
mlfDoubleMatrix(1, 3, __Array24_r, NULL),
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,
mlfPlus(
mlfIndexRef(vr, "(?)", mlfColon(mlfScalar(1.0), mlfScalar(3.0), NULL)),
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -