% This code was generated using ADiGator version 1.4
% ©2010-2014 Matthew J. Weinstein and Anil V. Rao
% ADiGator may be obtained at https://sourceforge.net/projects/adigator/ 
% Contact: mweinstein@ufl.edu
% Bugs/suggestions may be reported to the sourceforge forums
%                    DISCLAIMER
% ADiGator is a general-purpose software distributed under the GNU General
% Public License version 3.0. While the software is distributed with the
% hope that it will be useful, both the software and generated code are
% provided 'AS IS' with NO WARRANTIES OF ANY KIND and no merchantability
% or fitness for any purpose or application.

function dx = dynamics_YY(x,u,p,t,data)
global ADiGator_dynamics_YY
if isempty(ADiGator_dynamics_YY); ADiGator_LoadData(); end
Gator1Data = ADiGator_dynamics_YY.dynamics_YY.Gator1Data;
Gator2Data = ADiGator_dynamics_YY.dynamics_YY.Gator2Data;
% ADiGator Start Derivative Computations
%User Line: % Aircraft Dynamics
%User Line: %
%User Line: % Copyright (C) 2018 Yuanbo Nie, Omar Faqir, and Eric Kerrigan. All Rights Reserved.
%User Line: % The contribution of Paola Falugi, Eric Kerrigan and Eugene van Wyk for the work on ICLOCS Version 1 (2010) is kindly acknowledged.
%User Line: % This code is published under the BSD License.
%User Line: % Department of Aeronautics and Department of Electrical and Electronic Engineering,
%User Line: % Imperial College London London  England, UK
%User Line: % ICLOCS (Imperial College London Optimal Control) Version 2.0
%User Line: % 1 May 2018
%User Line: % iclocs@imperial.ac.uk
Atomsrho = data.Atomsrho;
%User Line: Atomsrho = data.Atomsrho;
Atomssos = data.Atomssos;
%User Line: Atomssos = data.Atomssos;
TLT = data.T;
%User Line: TLT = data.T;
mu = data.mu;
%User Line: mu = data.mu;
S = data.S;
%User Line: S = data.S;
g0 = data.g0;
%User Line: g0 = data.g0;
Isp = data.Isp;
%User Line: Isp = data.Isp;
Re = data.Re;
%User Line: Re = data.Re;
h.dY = x.dY(:,1);
h.f = x.f(:,1);
%User Line: h = x(:,1);
v.dY = x.dY(:,2);
v.f = x.f(:,2);
%User Line: v = x(:,2);
fpa.dY = x.dY(:,3);
fpa.f = x.f(:,3);
%User Line: fpa = x(:,3);
mass.dY = x.dY(:,4);
mass.f = x.f(:,4);
%User Line: mass = x(:,4);
alpha.dY = u.dY(:,1);
alpha.f = u.f(:,1);
%User Line: alpha = u(:,1);
r.dY = h.dY;
r.f = h.f + Re;
%User Line: r = h+Re;
cada2tf1 = ppval(Gator2Data.Data1,h.f);
cada1tf1dY = cada2tf1(:,1).*h.dY;
cada1tf1 = ppval(Gator1Data.Data1,h.f);
cada2f1dY = cada1tf1dY(:,1);
cada2f1 = cada1tf1(:,1);
rho.dYdY = h.dY.*cada2f1dY;
rho.dY = cada2f1.*h.dY;
rho.f = ppval(Atomsrho,h.f);
%User Line: rho = ppval(Atomsrho,h);
cada2tf1 = ppval(Gator2Data.Data2,h.f);
cada1tf1dY = cada2tf1(:,1).*h.dY;
cada1tf1 = ppval(Gator1Data.Data2,h.f);
cada2f1dY = cada1tf1dY(:,1);
cada2f1 = cada1tf1(:,1);
sos.dYdY = h.dY.*cada2f1dY;
sos.dY = cada2f1.*h.dY;
sos.f = ppval(Atomssos,h.f);
%User Line: sos = ppval(Atomssos,h);
cada2f1 = size(v.dY,1);
cada1td1 = zeros(cada2f1,2);
cada2f1dY = -v.dY./sos.f.^2.*sos.dY;
cada2f1 = v.dY./sos.f;
cada1td1dY = cada2f1dY;
cada1td1(:,2) = cada2f1;
cada2f1 = cada1td1(:,1);
cada2f2dY = -v.dY;
cada2f2 = uminus(v.f);
cada2f3dY = 2.*sos.f.^(2-1).*sos.dY;
cada2f3 = sos.f.^2;
cada2td1 = zeros(size(cada2f2dY,1),2);
cada2td1(:,2) = cada2f2dY./cada2f3;
cada2td1(:,1) = cada2td1(:,1) + -cada2f2./cada2f3.^2.*cada2f3dY;
cada2f4dY = cada2td1;
cada2f4 = cada2f2./cada2f3;
cada2tf1 = sos.dY(:,Gator2Data.Index1);
cada2td1 = cada2tf1.*cada2f4dY;
cada2td1(:,1) = cada2td1(:,1) + cada2f4.*sos.dYdY;
cada2f5dY = cada2td1;
cada2f5 = cada2f4.*sos.dY;
cada2f6dY = cada2f5dY;
cada2f6 = cada2f1 + cada2f5;
cada2td1 = zeros(size(cada1td1,1),3);
cada2td1(:,Gator2Data.Index2) = cada2f6dY;
cada2td1(:,2) = cada1td1dY(:,1);
cada1td1dY = cada2td1;
cada1td1(:,1) = cada2f6;
Mach.dYdY = cada1td1dY; Mach.dY = cada1td1;
Mach.f = v.f./sos.f;
%User Line: Mach = v./sos;
ii.f = ge(Mach.f,0.8);
%User Line: ii = Mach>=0.8;
jj.f = lt(Mach.f,0.8);
%User Line: jj = Mach<0.8;
mpoly.dYdY = Mach.dYdY(:,Gator2Data.Index3);
mpoly.dY = Mach.dY(:,Gator1Data.Index1);
mpoly.f = Mach.f(:);
%User Line: mpoly = Mach(ii);
cada1f1 = length(Mach.f);
CD0.f = zeros(cada1f1,1);
%User Line: CD0 = zeros(length(Mach),1);
cada1f1 = length(Mach.f);
Clalpha.f = zeros(cada1f1,1);
%User Line: Clalpha = zeros(length(Mach),1);
cada1f1 = length(Mach.f);
eta.f = zeros(cada1f1,1);
%User Line: eta = zeros(length(Mach),1);
cadaconditional1 = any(ii.f,1);
%User Line: cadaconditional1 = any(ii);
if cadaconditional1
    cada2tf1 = ppval(Gator2Data.Data3,mpoly.f);
    cada1tf1dY = cada2tf1(:,Gator2Data.Index4).*mpoly.dY;
    cada1tf1 = ppval(Gator1Data.Data3,mpoly.f);
    cada2f1dY = cada1tf1dY(:,Gator2Data.Index5);
    cada2f1 = cada1tf1(:,Gator1Data.Index2);
    cada2tf1 = mpoly.dY(:,Gator2Data.Index6);
    cada2td1 = cada2tf1.*cada2f1dY;
    cada2tf1 = cada2f1(:,Gator2Data.Index7);
    cada2td1(:,Gator2Data.Index8) = cada2td1(:,Gator2Data.Index8) + cada2tf1.*mpoly.dYdY;
    cada1f1dYdY = cada2td1;
    cada1f1dY = cada2f1.*mpoly.dY;
    cada1f1 = ppval(data.CDdat,mpoly.f);
    cada2f1 = size(CD0.f,1);
    cada1td2 = zeros(cada2f1,2);
    cada1tind1 = ii.f(:,Gator1Data.Index3);
    cada2f1dY = cada1f1dYdY(:,Gator2Data.Index9);
    cada2f1 = cada1f1dY(:,:);
    cada2td2 = zeros(size(cada1td2,1),4);
    cada2tind1 = cada1tind1(:,Gator2Data.Index10);
    cada2td2(cada2tind1) = cada2f1dY(cada2tind1);
    cada1td2dY = cada2td2;
    cada1td2(cada1tind1) = cada2f1(cada1tind1);
    CD0.dYdY = cada1td2dY;     CD0.dY = cada1td2;
    cada2f1dY = cada1f1dY(:,Gator2Data.Index11);
    cada2f1 = cada1f1(:);
    CD0.f(ii.f) = cada2f1(ii.f);
    %User Line: CD0(ii) = ppval(data.CDdat,mpoly);
    cada2tf1 = ppval(Gator2Data.Data4,mpoly.f);
    cada1tf1dY = cada2tf1(:,Gator2Data.Index12).*mpoly.dY;
    cada1tf1 = ppval(Gator1Data.Data4,mpoly.f);
    cada2f1dY = cada1tf1dY(:,Gator2Data.Index13);
    cada2f1 = cada1tf1(:,Gator1Data.Index4);
    cada2tf1 = mpoly.dY(:,Gator2Data.Index14);
    cada2td1 = cada2tf1.*cada2f1dY;
    cada2tf1 = cada2f1(:,Gator2Data.Index15);
    cada2td1(:,Gator2Data.Index16) = cada2td1(:,Gator2Data.Index16) + cada2tf1.*mpoly.dYdY;
    cada1f1dYdY = cada2td1;
    cada1f1dY = cada2f1.*mpoly.dY;
    cada1f1 = ppval(data.Clalphadat,mpoly.f);
    cada2f1 = size(Clalpha.f,1);
    cada1td2 = zeros(cada2f1,2);
    cada1tind1 = ii.f(:,Gator1Data.Index5);
    cada2f1dY = cada1f1dYdY(:,Gator2Data.Index17);
    cada2f1 = cada1f1dY(:,:);
    cada2td2 = zeros(size(cada1td2,1),4);
    cada2tind1 = cada1tind1(:,Gator2Data.Index18);
    cada2td2(cada2tind1) = cada2f1dY(cada2tind1);
    cada1td2dY = cada2td2;
    cada1td2(cada1tind1) = cada2f1(cada1tind1);
    Clalpha.dYdY = cada1td2dY;     Clalpha.dY = cada1td2;
    cada2f1dY = cada1f1dY(:,Gator2Data.Index19);
    cada2f1 = cada1f1(:);
    Clalpha.f(ii.f) = cada2f1(ii.f);
    %User Line: Clalpha(ii) = ppval(data.Clalphadat,mpoly);
    cada2tf1 = ppval(Gator2Data.Data5,mpoly.f);
    cada1tf1dY = cada2tf1(:,Gator2Data.Index20).*mpoly.dY;
    cada1tf1 = ppval(Gator1Data.Data5,mpoly.f);
    cada2f1dY = cada1tf1dY(:,Gator2Data.Index21);
    cada2f1 = cada1tf1(:,Gator1Data.Index6);
    cada2tf1 = mpoly.dY(:,Gator2Data.Index22);
    cada2td1 = cada2tf1.*cada2f1dY;
    cada2tf1 = cada2f1(:,Gator2Data.Index23);
    cada2td1(:,Gator2Data.Index24) = cada2td1(:,Gator2Data.Index24) + cada2tf1.*mpoly.dYdY;
    cada1f1dYdY = cada2td1;
    cada1f1dY = cada2f1.*mpoly.dY;
    cada1f1 = ppval(data.etadat,mpoly.f);
    cada2f1 = size(eta.f,1);
    cada1td2 = zeros(cada2f1,2);
    cada1tind1 = ii.f(:,Gator1Data.Index7);
    cada2f1dY = cada1f1dYdY(:,Gator2Data.Index25);
    cada2f1 = cada1f1dY(:,:);
    cada2td2 = zeros(size(cada1td2,1),4);
    cada2tind1 = cada1tind1(:,Gator2Data.Index26);
    cada2td2(cada2tind1) = cada2f1dY(cada2tind1);
    cada1td2dY = cada2td2;
    cada1td2(cada1tind1) = cada2f1(cada1tind1);
    eta.dYdY = cada1td2dY;     eta.dY = cada1td2;
    cada2f1dY = cada1f1dY(:,Gator2Data.Index27);
    cada2f1 = cada1f1(:);
    eta.f(ii.f) = cada2f1(ii.f);
    %User Line: eta(ii) = ppval(data.etadat,mpoly);
else
    cada2f1 = size(CD0.f,1);
    CD0.dY = zeros(cada2f1,2);
    CD0.dYdY = zeros(size(CD0.dY,1),4);
    cada2f1 = size(Clalpha.f,1);
    Clalpha.dY = zeros(cada2f1,2);
    Clalpha.dYdY = zeros(size(Clalpha.dY,1),4);
    cada2f1 = size(eta.f,1);
    eta.dY = zeros(cada2f1,2);
    eta.dYdY = zeros(size(eta.dY,1),4);
end
cadaconditional1 = any(jj.f,1);
%User Line: cadaconditional1 = any(jj);
if cadaconditional1
    cada2f1 = size(CD0.f,1);
    cada1td2 = zeros(cada2f1,2);
    cada1td2dY = CD0.dYdY;
    cada1td2(:,Gator1Data.Index8) = CD0.dY;
    cada1tind1 = jj.f(:,Gator1Data.Index9);
    cada2td2 = cada1td2dY;
    cada2tind1 = cada1tind1(:,Gator2Data.Index28);
    cada2td2(cada2tind1) = 0;
    cada1td2dY = cada2td2;
    cada1td2(cada1tind1) = 0;
    CD0.dYdY = cada1td2dY;     CD0.dY = cada1td2;
    CD0.f(jj.f) = 0.013;
    %User Line: CD0(jj) = 0.013;
    cada2f1 = size(Clalpha.f,1);
    cada1td2 = zeros(cada2f1,2);
    cada1td2dY = Clalpha.dYdY;
    cada1td2(:,Gator1Data.Index10) = Clalpha.dY;
    cada1tind1 = jj.f(:,Gator1Data.Index11);
    cada2td2 = cada1td2dY;
    cada2tind1 = cada1tind1(:,Gator2Data.Index29);
    cada2td2(cada2tind1) = 0;
    cada1td2dY = cada2td2;
    cada1td2(cada1tind1) = 0;
    Clalpha.dYdY = cada1td2dY;     Clalpha.dY = cada1td2;
    Clalpha.f(jj.f) = 3.44;
    %User Line: Clalpha(jj) = 3.44;
    cada2f1 = size(eta.f,1);
    cada1td2 = zeros(cada2f1,2);
    cada1td2dY = eta.dYdY;
    cada1td2(:,Gator1Data.Index12) = eta.dY;
    cada1tind1 = jj.f(:,Gator1Data.Index13);
    cada2td2 = cada1td2dY;
    cada2tind1 = cada1tind1(:,Gator2Data.Index30);
    cada2td2(cada2tind1) = 0;
    cada1td2dY = cada2td2;
    cada1td2(cada1tind1) = 0;
    eta.dYdY = cada1td2dY;     eta.dY = cada1td2;
    eta.f(jj.f) = 0.54;
    %User Line: eta(jj) = 0.54;
else
end
cada2tf1 = adigatorEvalInterp2pp(Gator2Data.Data6,h.f,Mach.f);
cada2tf2 = adigatorEvalInterp2pp(Gator2Data.Data7,h.f,Mach.f);
cada2tf3 = cada2tf1(:,1);
cada2td3 = zeros(size(h.dY,1),2);
cada2td3(:,1) = cada2tf3.*h.dY;
cada2tf3 = cada2tf2(:,Gator2Data.Index31);
cada2td3 = cada2td3 + cada2tf3.*Mach.dY;
cada1tf1dY = cada2td3;
cada1tf1 = adigatorEvalInterp2pp(Gator1Data.Data7,h.f,Mach.f);
cada2tf1 = adigatorEvalInterp2pp(Gator2Data.Data8,h.f,Mach.f);
cada2tf2 = adigatorEvalInterp2pp(Gator2Data.Data9,h.f,Mach.f);
cada2tf3 = cada2tf1(:,1);
cada2td3 = zeros(size(h.dY,1),2);
cada2td3(:,1) = cada2tf3.*h.dY;
cada2tf3 = cada2tf2(:,Gator2Data.Index32);
cada2td3 = cada2td3 + cada2tf3.*Mach.dY;
cada1tf2dY = cada2td3;
cada1tf2 = adigatorEvalInterp2pp(Gator1Data.Data8,h.f,Mach.f);
cada1tf3dY = cada1tf1dY(:,Gator2Data.Index33);
cada1tf3 = cada1tf1(:,1);
cada2f1 = size(h.dY,1);
cada1td3 = zeros(cada2f1,2);
cada2tf1 = h.dY(:,Gator2Data.Index34);
cada2f1dY = cada2tf1.*cada1tf3dY;
cada2f1 = cada1tf3.*h.dY;
cada1td3dY = cada2f1dY;
cada1td3(:,1) = cada2f1;
cada1tf3dY = cada1tf2dY(:,Gator2Data.Index35);
cada1tf3 = cada1tf2(:,Gator1Data.Index14);
cada2tf1 = Mach.dY(:,Gator2Data.Index36);
cada2td1 = cada2tf1.*cada1tf3dY;
cada2tf1 = cada1tf3(:,Gator2Data.Index37);
cada2td1(:,Gator2Data.Index38) = cada2td1(:,Gator2Data.Index38) + cada2tf1.*Mach.dYdY;
cada2f1dY = cada2td1;
cada2f1 = cada1tf3.*Mach.dY;
cada2td1 = zeros(size(cada1td3dY,1),4);
cada2td1(:,Gator2Data.Index39) = cada1td3dY;
cada2td1 = cada2td1 + cada2f1dY;
cada1td3dY = cada2td1;
cada1td3 = cada1td3 + cada2f1;
Thrust.dYdY = cada1td3dY; Thrust.dY = cada1td3;
Thrust.f = adigatorEvalInterp2pp(Gator1Data.Data6,h.f,Mach.f);
%User Line: Thrust = interp2(data.aa,data.mm,TLT,h,Mach,'spline');
cada1tf1dY = Clalpha.dY(:,Gator2Data.Index40);
cada1tf1 = Clalpha.f(:,Gator1Data.Index15);
cada2tf1 = eta.dY(:,Gator2Data.Index41);
cada2td1 = cada2tf1.*cada1tf1dY;
cada2tf1 = cada1tf1(:,Gator2Data.Index42);
cada2td1 = cada2td1 + cada2tf1.*eta.dYdY;
cada1td1dY = cada2td1;
cada1td1 = cada1tf1.*eta.dY;
cada1tf1dY = eta.dY(:,Gator2Data.Index43);
cada1tf1 = eta.f(:,Gator1Data.Index16);
cada2tf1 = Clalpha.dY(:,Gator2Data.Index44);
cada2td1 = cada2tf1.*cada1tf1dY;
cada2tf1 = cada1tf1(:,Gator2Data.Index45);
cada2td1 = cada2td1 + cada2tf1.*Clalpha.dYdY;
cada2f1dY = cada2td1;
cada2f1 = cada1tf1.*Clalpha.dY;
cada2td1 = cada1td1dY;
cada2td1 = cada2td1 + cada2f1dY;
cada1td1dY = cada2td1;
cada1td1 = cada1td1 + cada2f1;
cada1f1dYdY = cada1td1dY; cada1f1dY = cada1td1;
cada1f1 = eta.f.*Clalpha.f;
cada2f1dY = 1.*alpha.f.^(1-1).*alpha.dY;
cada2f1 = alpha.f.^1;
cada2f2dY = 2.*cada2f1dY;
cada2f2 = 2*cada2f1;
cada1f2dYdY = alpha.dY.*cada2f2dY;
cada1f2dY = cada2f2.*alpha.dY;
cada1f2 = alpha.f.^2;
cada1tf1dY = cada1f2dY(:,Gator2Data.Index46);
cada1tf1 = cada1f2(:,Gator1Data.Index17);
cada2f1 = size(cada1f1dY,1);
cada1td1 = zeros(cada2f1,3);
cada2td1 = zeros(size(cada1tf1dY,1),6);
cada2td1(:,Gator2Data.Index47) = cada1f1dY.*cada1tf1dY;
cada2tf1 = cada1tf1(:,Gator2Data.Index48);
cada2td1(:,Gator2Data.Index49) = cada2td1(:,Gator2Data.Index49) + cada2tf1.*cada1f1dYdY;
cada2f1dY = cada2td1;
cada2f1 = cada1tf1.*cada1f1dY;
cada1td1dY = cada2f1dY;
cada1td1(:,Gator1Data.Index18) = cada2f1;
cada2f1 = cada1td1(:,3);
cada2tf1 = cada1f2dY(:,Gator2Data.Index50);
cada2td1 = zeros(size(cada1f1dY,1),3);
cada2td1(:,Gator2Data.Index51) = cada2tf1.*cada1f1dY;
cada2td1(:,3) = cada2td1(:,3) + cada1f1.*cada1f2dYdY;
cada2f2dY = cada2td1;
cada2f2 = cada1f1.*cada1f2dY;
cada2f3dY = cada2f2dY;
cada2f3 = cada2f1 + cada2f2;
cada2td1 = zeros(size(cada1td1,1),9);
cada2td1(:,Gator2Data.Index52) = cada2f3dY;
cada2td1(:,Gator2Data.Index53) = cada1td1dY(:,Gator2Data.Index54);
cada1td1dY = cada2td1;
cada1td1(:,3) = cada2f3;
cada1f3dYdY = cada1td1dY; cada1f3dY = cada1td1;
cada1f3 = cada1f1.*cada1f2;
cada2f1 = size(CD0.dY,1);
cada1td1 = zeros(cada2f1,3);
cada1td1dY = CD0.dYdY;
cada1td1(:,Gator1Data.Index19) = CD0.dY;
cada2td1 = zeros(size(cada1td1dY,1),9);
cada2td1(:,Gator2Data.Index55) = cada1td1dY;
cada2td1 = cada2td1 + cada1f3dYdY;
cada1td1dY = cada2td1;
cada1td1 = cada1td1 + cada1f3dY;
CD.dYdY = cada1td1dY; CD.dY = cada1td1;
CD.f = CD0.f + cada1f3;
%User Line: CD = CD0 + eta.*Clalpha.*alpha.^2;
cada1tf1dY = alpha.dY(:,Gator2Data.Index56);
cada1tf1 = alpha.f(:,Gator1Data.Index20);
cada2f1 = size(Clalpha.dY,1);
cada1td1 = zeros(cada2f1,3);
cada2td1 = zeros(size(cada1tf1dY,1),6);
cada2td1(:,Gator2Data.Index57) = Clalpha.dY.*cada1tf1dY;
cada2tf1 = cada1tf1(:,Gator2Data.Index58);
cada2td1(:,Gator2Data.Index59) = cada2td1(:,Gator2Data.Index59) + cada2tf1.*Clalpha.dYdY;
cada2f1dY = cada2td1;
cada2f1 = cada1tf1.*Clalpha.dY;
cada1td1dY = cada2f1dY;
cada1td1(:,Gator1Data.Index21) = cada2f1;
cada2f1 = cada1td1(:,3);
cada2tf1 = alpha.dY(:,Gator2Data.Index60);
cada2f2dY = cada2tf1.*Clalpha.dY;
cada2f2 = Clalpha.f.*alpha.dY;
cada2f3dY = cada2f2dY;
cada2f3 = cada2f1 + cada2f2;
cada2td1 = zeros(size(cada1td1,1),8);
cada2td1(:,Gator2Data.Index61) = cada2f3dY;
cada2td1(:,Gator2Data.Index62) = cada1td1dY(:,Gator2Data.Index63);
cada1td1dY = cada2td1;
cada1td1(:,3) = cada2f3;
CL.dYdY = cada1td1dY; CL.dY = cada1td1;
CL.f = Clalpha.f.*alpha.f;
%User Line: CL = Clalpha.*alpha;
cada1f1dYdY = 0.5.*rho.dYdY;
cada1f1dY = 0.5*rho.dY;
cada1f1 = 0.5*rho.f;
cada2f1 = size(cada1f1dY,1);
cada1td1 = zeros(cada2f1,2);
cada2td1 = zeros(size(v.dY,1),2);
cada2td1(:,2) = cada1f1dY.*v.dY;
cada2td1(:,1) = cada2td1(:,1) + v.f.*cada1f1dYdY;
cada2f1dY = cada2td1;
cada2f1 = v.f.*cada1f1dY;
cada1td1dY = cada2f1dY;
cada1td1(:,1) = cada2f1;
cada2f1 = cada1td1(:,2);
cada2f2dY = v.dY.*cada1f1dY;
cada2f2 = cada1f1.*v.dY;
cada2f3dY = cada2f2dY;
cada2f3 = cada2f1 + cada2f2;
cada2td1 = zeros(size(cada1td1,1),3);
cada2td1(:,2) = cada2f3dY;
cada2td1(:,Gator2Data.Index64) = cada1td1dY(:,Gator2Data.Index65);
cada1td1dY = cada2td1;
cada1td1(:,2) = cada2f3;
cada1f2dYdY = cada1td1dY; cada1f2dY = cada1td1;
cada1f2 = cada1f1.*v.f;
cada1tf1dY = v.dY(:,Gator2Data.Index66);
cada1tf1 = v.f(:,Gator1Data.Index22);
cada2td1 = zeros(size(cada1tf1dY,1),4);
cada2td1(:,Gator2Data.Index67) = cada1f2dY.*cada1tf1dY;
cada2tf1 = cada1tf1(:,Gator2Data.Index68);
cada2td1(:,Gator2Data.Index69) = cada2td1(:,Gator2Data.Index69) + cada2tf1.*cada1f2dYdY;
cada1td1dY = cada2td1;
cada1td1 = cada1tf1.*cada1f2dY;
cada2f1dY = cada1td1dY(:,Gator2Data.Index70);
cada2f1 = cada1td1(:,2);
cada2tf1 = v.dY(:,Gator2Data.Index71);
cada2f2dY = cada2tf1.*cada1f2dY;
cada2f2 = cada1f2.*v.dY;
cada2td1 = cada2f1dY;
cada2td1 = cada2td1 + cada2f2dY;
cada2f3dY = cada2td1;
cada2f3 = cada2f1 + cada2f2;
cada2td1 = zeros(size(cada1td1,1),4);
cada2td1(:,Gator2Data.Index72) = cada2f3dY;
cada2td1(:,Gator2Data.Index73) = cada1td1dY(:,Gator2Data.Index74);
cada1td1dY = cada2td1;
cada1td1(:,2) = cada2f3;
q.dYdY = cada1td1dY; q.dY = cada1td1;
q.f = cada1f2.*v.f;
%User Line: q = 0.5.*rho.*v.*v;
cada1f1dYdY = S.*q.dYdY;
cada1f1dY = S*q.dY;
cada1f1 = q.f*S;
cada1tf1dY = CD.dY(:,Gator2Data.Index75);
cada1tf1 = CD.f(:,Gator1Data.Index23);
cada2f1 = size(cada1f1dY,1);
cada1td1 = zeros(cada2f1,3);
cada2tf1 = cada1f1dY(:,Gator2Data.Index76);
cada2td1 = cada2tf1.*cada1tf1dY;
cada2tf1 = cada1tf1(:,Gator2Data.Index77);
cada2td1(:,Gator2Data.Index78) = cada2td1(:,Gator2Data.Index78) + cada2tf1.*cada1f1dYdY;
cada2f1dY = cada2td1;
cada2f1 = cada1tf1.*cada1f1dY;
cada1td1dY = cada2f1dY;
cada1td1(:,Gator1Data.Index24) = cada2f1;
cada1tf1dY = cada1f1dY(:,Gator2Data.Index79);
cada1tf1 = cada1f1(:,Gator1Data.Index25);
cada2tf1 = CD.dY(:,Gator2Data.Index80);
cada2td1 = zeros(size(cada1tf1dY,1),9);
cada2td1(:,Gator2Data.Index81) = cada2tf1.*cada1tf1dY;
cada2tf1 = cada1tf1(:,Gator2Data.Index82);
cada2td1 = cada2td1 + cada2tf1.*CD.dYdY;
cada2f1dY = cada2td1;
cada2f1 = cada1tf1.*CD.dY;
cada2td1 = zeros(size(cada1td1dY,1),9);
cada2td1(:,Gator2Data.Index83) = cada1td1dY;
cada2td1 = cada2td1 + cada2f1dY;
cada1td1dY = cada2td1;
cada1td1 = cada1td1 + cada2f1;
D.dYdY = cada1td1dY; D.dY = cada1td1;
D.f = cada1f1.*CD.f;
%User Line: D = q.*S.*CD;
cada1f1dYdY = S.*q.dYdY;
cada1f1dY = S*q.dY;
cada1f1 = q.f*S;
cada1tf1dY = CL.dY(:,Gator2Data.Index84);
cada1tf1 = CL.f(:,Gator1Data.Index26);
cada2f1 = size(cada1f1dY,1);
cada1td1 = zeros(cada2f1,3);
cada2tf1 = cada1f1dY(:,Gator2Data.Index85);
cada2td1 = cada2tf1.*cada1tf1dY;
cada2tf1 = cada1tf1(:,Gator2Data.Index86);
cada2td1(:,Gator2Data.Index87) = cada2td1(:,Gator2Data.Index87) + cada2tf1.*cada1f1dYdY;
cada2f1dY = cada2td1;
cada2f1 = cada1tf1.*cada1f1dY;
cada1td1dY = cada2f1dY;
cada1td1(:,Gator1Data.Index27) = cada2f1;
cada1tf1dY = cada1f1dY(:,Gator2Data.Index88);
cada1tf1 = cada1f1(:,Gator1Data.Index28);
cada2tf1 = CL.dY(:,Gator2Data.Index89);
cada2td1 = zeros(size(cada1tf1dY,1),8);
cada2td1(:,Gator2Data.Index90) = cada2tf1.*cada1tf1dY;
cada2tf1 = cada1tf1(:,Gator2Data.Index91);
cada2td1 = cada2td1 + cada2tf1.*CL.dYdY;
cada2f1dY = cada2td1;
cada2f1 = cada1tf1.*CL.dY;
cada2td1 = zeros(size(cada1td1dY,1),8);
cada2td1(:,Gator2Data.Index92) = cada1td1dY;
cada2td1 = cada2td1 + cada2f1dY;
cada1td1dY = cada2td1;
cada1td1 = cada1td1 + cada2f1;
L.dYdY = cada1td1dY; L.dY = cada1td1;
L.f = cada1f1.*CL.f;
%User Line: L = q.*S.*CL;
cada2f1dY = -sin(fpa.f).*fpa.dY;
cada2f1 = cos(fpa.f);
cada1f1dYdY = fpa.dY.*cada2f1dY;
cada1f1dY = cada2f1.*fpa.dY;
cada1f1 = sin(fpa.f);
cada2f1 = size(v.dY,1);
cada1td1 = zeros(cada2f1,2);
cada2f1dY = v.dY.*cada1f1dY;
cada2f1 = cada1f1.*v.dY;
cada1td1dY = cada2f1dY;
cada1td1(:,1) = cada2f1;
cada2f1 = cada1td1(:,2);
cada2td1 = zeros(size(v.dY,1),2);
cada2td1(:,1) = cada1f1dY.*v.dY;
cada2td1(:,2) = cada2td1(:,2) + v.f.*cada1f1dYdY;
cada2f2dY = cada2td1;
cada2f2 = v.f.*cada1f1dY;
cada2f3dY = cada2f2dY;
cada2f3 = cada2f1 + cada2f2;
cada2td1 = zeros(size(cada1td1,1),3);
cada2td1(:,Gator2Data.Index93) = cada2f3dY;
cada2td1(:,2) = cada1td1dY(:,1);
cada1td1dY = cada2td1;
cada1td1(:,2) = cada2f3;
hdot.dYdY = cada1td1dY; hdot.dY = cada1td1;
hdot.f = v.f.*cada1f1;
%User Line: hdot = v.*sin(fpa);
cada2f1dY = cos(alpha.f).*alpha.dY;
cada2f1 = sin(alpha.f);
cada2f2dY = -cada2f1dY;
cada2f2 = uminus(cada2f1);
cada1f1dYdY = alpha.dY.*cada2f2dY;
cada1f1dY = cada2f2.*alpha.dY;
cada1f1 = cos(alpha.f);
cada1tf1dY = cada1f1dY(:,Gator2Data.Index94);
cada1tf1 = cada1f1(:,Gator1Data.Index29);
cada2f1 = size(Thrust.dY,1);
cada1td1 = zeros(cada2f1,3);
cada2td1 = zeros(size(cada1tf1dY,1),6);
cada2td1(:,Gator2Data.Index95) = Thrust.dY.*cada1tf1dY;
cada2tf1 = cada1tf1(:,Gator2Data.Index96);
cada2td1(:,Gator2Data.Index97) = cada2td1(:,Gator2Data.Index97) + cada2tf1.*Thrust.dYdY;
cada2f1dY = cada2td1;
cada2f1 = cada1tf1.*Thrust.dY;
cada1td1dY = cada2f1dY;
cada1td1(:,Gator1Data.Index30) = cada2f1;
cada2f1 = cada1td1(:,3);
cada2tf1 = cada1f1dY(:,Gator2Data.Index98);
cada2td1 = zeros(size(Thrust.dY,1),3);
cada2td1(:,Gator2Data.Index99) = cada2tf1.*Thrust.dY;
cada2td1(:,3) = cada2td1(:,3) + Thrust.f.*cada1f1dYdY;
cada2f2dY = cada2td1;
cada2f2 = Thrust.f.*cada1f1dY;
cada2f3dY = cada2f2dY;
cada2f3 = cada2f1 + cada2f2;
cada2td1 = zeros(size(cada1td1,1),9);
cada2td1(:,Gator2Data.Index100) = cada2f3dY;
cada2td1(:,Gator2Data.Index101) = cada1td1dY(:,Gator2Data.Index102);
cada1td1dY = cada2td1;
cada1td1(:,3) = cada2f3;
cada1f2dYdY = cada1td1dY; cada1f2dY = cada1td1;
cada1f2 = Thrust.f.*cada1f1;
cada1td1dY = cada1f2dYdY; cada1td1 = cada1f2dY;
cada2f1dY = -D.dYdY;
cada2f1 = uminus(D.dY);
cada2td1 = cada1td1dY;
cada2td1 = cada2td1 + cada2f1dY;
cada1td1dY = cada2td1;
cada1td1 = cada1td1 + cada2f1;
cada1f3dYdY = cada1td1dY; cada1f3dY = cada1td1;
cada1f3 = cada1f2 - D.f;
cada1tf1dY = mass.dY(:,Gator2Data.Index103);
cada1tf1 = mass.f(:,Gator1Data.Index31);
cada2f1 = size(cada1f3dY,1);
cada1td1 = zeros(cada2f1,4);
cada2tf1 = cada1tf1(:,Gator2Data.Index104);
cada2td1 = zeros(size(cada1f3dYdY,1),12);
cada2td1(:,Gator2Data.Index105) = cada1f3dYdY./cada2tf1;
cada2td1(:,Gator2Data.Index106) = cada2td1(:,Gator2Data.Index106) + -cada1f3dY./cada1tf1.^2.*cada1tf1dY;
cada2f1dY = cada2td1;
cada2f1 = cada1f3dY./cada1tf1;
cada1td1dY = cada2f1dY;
cada1td1(:,Gator1Data.Index32) = cada2f1;
cada2f1 = cada1td1(:,3);
cada2f2dY = -cada1f3dY;
cada2f2 = uminus(cada1f3);
cada2f3dY = 2.*mass.f.^(2-1).*mass.dY;
cada2f3 = mass.f.^2;
cada2tf1 = cada2f3(:,Gator2Data.Index107);
cada2td1 = zeros(size(cada2f2dY,1),4);
cada2td1(:,Gator2Data.Index108) = cada2f2dY./cada2tf1;
cada2td1(:,3) = cada2td1(:,3) + -cada2f2./cada2f3.^2.*cada2f3dY;
cada2f4dY = cada2td1;
cada2f4 = cada2f2./cada2f3;
cada2tf1 = mass.dY(:,Gator2Data.Index109);
cada2f5dY = cada2tf1.*cada2f4dY;
cada2f5 = cada2f4.*mass.dY;
cada2f6dY = cada2f5dY;
cada2f6 = cada2f1 + cada2f5;
cada2td1 = zeros(size(cada1td1,1),16);
cada2td1(:,Gator2Data.Index110) = cada2f6dY;
cada2td1(:,Gator2Data.Index111) = cada1td1dY(:,Gator2Data.Index112);
cada1td1dY = cada2td1;
cada1td1(:,3) = cada2f6;
cada1f4dYdY = cada1td1dY; cada1f4dY = cada1td1;
cada1f4 = cada1f3./mass.f;
cada2f1dY = -sin(fpa.f).*fpa.dY;
cada2f1 = cos(fpa.f);
cada1f5dYdY = fpa.dY.*cada2f1dY;
cada1f5dY = cada2f1.*fpa.dY;
cada1f5 = sin(fpa.f);
cada1f6dYdY = mu.*cada1f5dYdY;
cada1f6dY = mu*cada1f5dY;
cada1f6 = mu*cada1f5;
cada2f1dY = 1.*r.f.^(1-1).*r.dY;
cada2f1 = r.f.^1;
cada2f2dY = 2.*cada2f1dY;
cada2f2 = 2*cada2f1;
cada1f7dYdY = r.dY.*cada2f2dY;
cada1f7dY = cada2f2.*r.dY;
cada1f7 = r.f.^2;
cada2f1 = size(cada1f6dY,1);
cada1td1 = zeros(cada2f1,2);
cada2td1 = zeros(size(cada1f6dYdY,1),2);
cada2td1(:,2) = cada1f6dYdY./cada1f7;
cada2td1(:,1) = cada2td1(:,1) + -cada1f6dY./cada1f7.^2.*cada1f7dY;
cada2f1dY = cada2td1;
cada2f1 = cada1f6dY./cada1f7;
cada1td1dY = cada2f1dY;
cada1td1(:,2) = cada2f1;
cada2f1 = cada1td1(:,1);
cada2f2dY = -cada1f6dY;
cada2f2 = uminus(cada1f6);
cada2f3dY = 2.*cada1f7.^(2-1).*cada1f7dY;
cada2f3 = cada1f7.^2;
cada2td1 = zeros(size(cada2f2dY,1),2);
cada2td1(:,2) = cada2f2dY./cada2f3;
cada2td1(:,1) = cada2td1(:,1) + -cada2f2./cada2f3.^2.*cada2f3dY;
cada2f4dY = cada2td1;
cada2f4 = cada2f2./cada2f3;
cada2tf1 = cada1f7dY(:,Gator2Data.Index113);
cada2td1 = cada2tf1.*cada2f4dY;
cada2td1(:,1) = cada2td1(:,1) + cada2f4.*cada1f7dYdY;
cada2f5dY = cada2td1;
cada2f5 = cada2f4.*cada1f7dY;
cada2f6dY = cada2f5dY;
cada2f6 = cada2f1 + cada2f5;
cada2td1 = zeros(size(cada1td1,1),4);
cada2td1(:,Gator2Data.Index114) = cada2f6dY;
cada2td1(:,Gator2Data.Index115) = cada1td1dY(:,Gator2Data.Index116);
cada1td1dY = cada2td1;
cada1td1(:,1) = cada2f6;
cada1f8dYdY = cada1td1dY; cada1f8dY = cada1td1;
cada1f8 = cada1f6./cada1f7;
cada2f1 = size(cada1f4dY,1);
cada1td1 = zeros(cada2f1,5);
cada1td1dY = cada1f4dYdY;
cada1td1(:,Gator1Data.Index33) = cada1f4dY;
cada2f1dY = cada1td1dY(:,Gator2Data.Index117);
cada2f1 = cada1td1(:,Gator1Data.Index34);
cada2f2dY = -cada1f8dYdY;
cada2f2 = uminus(cada1f8dY);
cada2td1 = zeros(size(cada2f1dY,1),7);
cada2td1(:,Gator2Data.Index118) = cada2f1dY;
cada2td1(:,Gator2Data.Index119) = cada2td1(:,Gator2Data.Index119) + cada2f2dY;
cada2f3dY = cada2td1;
cada2f3 = cada2f1 + cada2f2;
cada2td1 = zeros(size(cada1td1,1),19);
cada2td1(:,Gator2Data.Index120) = cada2f3dY;
cada2td1(:,Gator2Data.Index121) = cada1td1dY(:,Gator2Data.Index122);
cada1td1dY = cada2td1;
cada1td1(:,Gator1Data.Index34) = cada2f3;
vdot.dYdY = cada1td1dY; vdot.dY = cada1td1;
vdot.f = cada1f4 - cada1f8;
%User Line: vdot = (Thrust.*cos(alpha)-D)./mass - mu.*sin(fpa)./r.^2;
cada2f1dY = -sin(alpha.f).*alpha.dY;
cada2f1 = cos(alpha.f);
cada1f1dYdY = alpha.dY.*cada2f1dY;
cada1f1dY = cada2f1.*alpha.dY;
cada1f1 = sin(alpha.f);
cada1tf1dY = cada1f1dY(:,Gator2Data.Index123);
cada1tf1 = cada1f1(:,Gator1Data.Index35);
cada2f1 = size(Thrust.dY,1);
cada1td1 = zeros(cada2f1,3);
cada2td1 = zeros(size(cada1tf1dY,1),6);
cada2td1(:,Gator2Data.Index124) = Thrust.dY.*cada1tf1dY;
cada2tf1 = cada1tf1(:,Gator2Data.Index125);
cada2td1(:,Gator2Data.Index126) = cada2td1(:,Gator2Data.Index126) + cada2tf1.*Thrust.dYdY;
cada2f1dY = cada2td1;
cada2f1 = cada1tf1.*Thrust.dY;
cada1td1dY = cada2f1dY;
cada1td1(:,Gator1Data.Index36) = cada2f1;
cada2f1 = cada1td1(:,3);
cada2tf1 = cada1f1dY(:,Gator2Data.Index127);
cada2td1 = zeros(size(Thrust.dY,1),3);
cada2td1(:,Gator2Data.Index128) = cada2tf1.*Thrust.dY;
cada2td1(:,3) = cada2td1(:,3) + Thrust.f.*cada1f1dYdY;
cada2f2dY = cada2td1;
cada2f2 = Thrust.f.*cada1f1dY;
cada2f3dY = cada2f2dY;
cada2f3 = cada2f1 + cada2f2;
cada2td1 = zeros(size(cada1td1,1),9);
cada2td1(:,Gator2Data.Index129) = cada2f3dY;
cada2td1(:,Gator2Data.Index130) = cada1td1dY(:,Gator2Data.Index131);
cada1td1dY = cada2td1;
cada1td1(:,3) = cada2f3;
cada1f2dYdY = cada1td1dY; cada1f2dY = cada1td1;
cada1f2 = Thrust.f.*cada1f1;
cada1td1dY = cada1f2dYdY; cada1td1 = cada1f2dY;
cada2td1 = cada1td1dY;
cada2td1(:,Gator2Data.Index132) = cada2td1(:,Gator2Data.Index132) + L.dYdY;
cada1td1dY = cada2td1;
cada1td1 = cada1td1 + L.dY;
cada1f3dYdY = cada1td1dY; cada1f3dY = cada1td1;
cada1f3 = cada1f2 + L.f;
cada2f1 = size(mass.dY,1);
cada1td1 = zeros(cada2f1,2);
cada2f1dY = mass.dY.*v.dY;
cada2f1 = v.f.*mass.dY;
cada1td1dY = cada2f1dY;
cada1td1(:,2) = cada2f1;
cada2f1 = cada1td1(:,1);
cada2f2dY = v.dY.*mass.dY;
cada2f2 = mass.f.*v.dY;
cada2f3dY = cada2f2dY;
cada2f3 = cada2f1 + cada2f2;
cada2td1 = zeros(size(cada1td1,1),2);
cada2td1(:,2) = cada2f3dY;
cada2td1(:,1) = cada1td1dY(:,1);
cada1td1dY = cada2td1;
cada1td1(:,1) = cada2f3;
cada1f4dYdY = cada1td1dY; cada1f4dY = cada1td1;
cada1f4 = mass.f.*v.f;
cada1tf1dY = cada1f4dY(:,Gator2Data.Index133);
cada1tf1 = cada1f4(:,Gator1Data.Index37);
cada2f1 = size(cada1f3dY,1);
cada1td1 = zeros(cada2f1,4);
cada2tf1 = cada1tf1(:,Gator2Data.Index134);
cada2td1 = zeros(size(cada1f3dYdY,1),12);
cada2td1(:,Gator2Data.Index135) = cada1f3dYdY./cada2tf1;
cada2tf1 = cada1f3dY(:,Gator2Data.Index136);
cada2tf2 = cada1tf1(:,Gator2Data.Index137);
cada2td1(:,Gator2Data.Index138) = cada2td1(:,Gator2Data.Index138) + -cada2tf1./cada2tf2.^2.*cada1tf1dY;
cada2f1dY = cada2td1;
cada2f1 = cada1f3dY./cada1tf1;
cada1td1dY = cada2f1dY;
cada1td1(:,Gator1Data.Index38) = cada2f1;
cada1tf1dY = cada1f3dY(:,Gator2Data.Index139);
cada1tf1 = cada1f3(:,Gator1Data.Index39);
cada1tf2dY = cada1f4dY(:,Gator2Data.Index140);
cada1tf2 = cada1f4(:,Gator1Data.Index40);
cada2f1dY = cada1td1dY(:,Gator2Data.Index141);
cada2f1 = cada1td1(:,Gator1Data.Index41);
cada2f2dY = -cada1tf1dY;
cada2f2 = uminus(cada1tf1);
cada2tf2 = cada1tf2(:,Gator2Data.Index142);
cada2f3dY = 2.*cada2tf2.^(2-1).*cada1tf2dY;
cada2f3 = cada1tf2.^2;
cada2tf1 = cada2f3(:,Gator2Data.Index143);
cada2td1 = zeros(size(cada2f2dY,1),8);
cada2td1(:,Gator2Data.Index144) = cada2f2dY./cada2tf1;
cada2tf1 = cada2f2(:,Gator2Data.Index145);
cada2tf2 = cada2f3(:,Gator2Data.Index146);
cada2td1(:,Gator2Data.Index147) = cada2td1(:,Gator2Data.Index147) + -cada2tf1./cada2tf2.^2.*cada2f3dY;
cada2f4dY = cada2td1;
cada2f4 = cada2f2./cada2f3;
cada2tf1 = cada1f4dY(:,Gator2Data.Index148);
cada2td1 = cada2tf1.*cada2f4dY;
cada2tf1 = cada2f4(:,Gator2Data.Index149);
cada2td1(:,Gator2Data.Index150) = cada2td1(:,Gator2Data.Index150) + cada2tf1.*cada1f4dYdY;
cada2f5dY = cada2td1;
cada2f5 = cada2f4.*cada1f4dY;
cada2td1 = zeros(size(cada2f1dY,1),8);
cada2td1(:,Gator2Data.Index151) = cada2f1dY;
cada2td1 = cada2td1 + cada2f5dY;
cada2f6dY = cada2td1;
cada2f6 = cada2f1 + cada2f5;
cada2td1 = zeros(size(cada1td1,1),16);
cada2td1(:,Gator2Data.Index152) = cada2f6dY;
cada2td1(:,Gator2Data.Index153) = cada1td1dY(:,Gator2Data.Index154);
cada1td1dY = cada2td1;
cada1td1(:,Gator1Data.Index41) = cada2f6;
cada1f5dYdY = cada1td1dY; cada1f5dY = cada1td1;
cada1f5 = cada1f3./cada1f4;
cada2f1dY = cos(fpa.f).*fpa.dY;
cada2f1 = sin(fpa.f);
cada2f2dY = -cada2f1dY;
cada2f2 = uminus(cada2f1);
cada1f6dYdY = fpa.dY.*cada2f2dY;
cada1f6dY = cada2f2.*fpa.dY;
cada1f6 = cos(fpa.f);
cada2f1 = size(v.dY,1);
cada1td1 = zeros(cada2f1,2);
cada2f1dY = -v.dY./r.f.^2.*r.dY;
cada2f1 = v.dY./r.f;
cada1td1dY = cada2f1dY;
cada1td1(:,2) = cada2f1;
cada2f1 = cada1td1(:,1);
cada2f2dY = -v.dY;
cada2f2 = uminus(v.f);
cada2f3dY = 2.*r.f.^(2-1).*r.dY;
cada2f3 = r.f.^2;
cada2td1 = zeros(size(cada2f2dY,1),2);
cada2td1(:,2) = cada2f2dY./cada2f3;
cada2td1(:,1) = cada2td1(:,1) + -cada2f2./cada2f3.^2.*cada2f3dY;
cada2f4dY = cada2td1;
cada2f4 = cada2f2./cada2f3;
cada2tf1 = r.dY(:,Gator2Data.Index155);
cada2f5dY = cada2tf1.*cada2f4dY;
cada2f5 = cada2f4.*r.dY;
cada2f6dY = cada2f5dY;
cada2f6 = cada2f1 + cada2f5;
cada2td1 = zeros(size(cada1td1,1),3);
cada2td1(:,Gator2Data.Index156) = cada2f6dY;
cada2td1(:,2) = cada1td1dY(:,1);
cada1td1dY = cada2td1;
cada1td1(:,1) = cada2f6;
cada1f7dYdY = cada1td1dY; cada1f7dY = cada1td1;
cada1f7 = v.f./r.f;
cada2f1dY = 1.*r.f.^(1-1).*r.dY;
cada2f1 = r.f.^1;
cada2f2dY = 2.*cada2f1dY;
cada2f2 = 2*cada2f1;
cada1f8dYdY = r.dY.*cada2f2dY;
cada1f8dY = cada2f2.*r.dY;
cada1f8 = r.f.^2;
cada2f1 = size(v.dY,1);
cada1td1 = zeros(cada2f1,2);
cada2f1dY = v.dY.*cada1f8dY;
cada2f1 = cada1f8.*v.dY;
cada1td1dY = cada2f1dY;
cada1td1(:,2) = cada2f1;
cada2f1 = cada1td1(:,1);
cada2td1 = zeros(size(v.dY,1),2);
cada2td1(:,2) = cada1f8dY.*v.dY;
cada2td1(:,1) = cada2td1(:,1) + v.f.*cada1f8dYdY;
cada2f2dY = cada2td1;
cada2f2 = v.f.*cada1f8dY;
cada2f3dY = cada2f2dY;
cada2f3 = cada2f1 + cada2f2;
cada2td1 = zeros(size(cada1td1,1),3);
cada2td1(:,Gator2Data.Index157) = cada2f3dY;
cada2td1(:,2) = cada1td1dY(:,1);
cada1td1dY = cada2td1;
cada1td1(:,1) = cada2f3;
cada1f9dYdY = cada1td1dY; cada1f9dY = cada1td1;
cada1f9 = v.f.*cada1f8;
cada1tf2dY = cada1f9dY(:,Gator2Data.Index158);
cada1tf2 = cada1f9(:,Gator1Data.Index42);
cada2f1 = uminus(mu);
cada2tf2 = cada1tf2(:,Gator2Data.Index159);
cada2f2dY = 2.*cada2tf2.^(2-1).*cada1tf2dY;
cada2f2 = cada1tf2.^2;
cada2tf2 = cada2f2(:,Gator2Data.Index160);
cada2f3dY = -cada2f1./cada2tf2.^2.*cada2f2dY;
cada2f3 = cada2f1./cada2f2;
cada2tf1 = cada1f9dY(:,Gator2Data.Index161);
cada2td1 = cada2tf1.*cada2f3dY;
cada2tf1 = cada2f3(:,Gator2Data.Index162);
cada2td1(:,Gator2Data.Index163) = cada2td1(:,Gator2Data.Index163) + cada2tf1.*cada1f9dYdY;
cada1f10dYdY = cada2td1;
cada1f10dY = cada2f3.*cada1f9dY;
cada1f10 = mu./cada1f9;
cada1td1dY = cada1f7dYdY; cada1td1 = cada1f7dY;
cada2f1dY = -cada1f10dYdY;
cada2f1 = uminus(cada1f10dY);
cada2td1 = zeros(size(cada1td1dY,1),4);
cada2td1(:,Gator2Data.Index164) = cada1td1dY;
cada2td1 = cada2td1 + cada2f1dY;
cada1td1dY = cada2td1;
cada1td1 = cada1td1 + cada2f1;
cada1f11dYdY = cada1td1dY; cada1f11dY = cada1td1;
cada1f11 = cada1f7 - cada1f10;
cada2f1 = size(cada1f6dY,1);
cada1td1 = zeros(cada2f1,3);
cada2tf1 = cada1f6dY(:,Gator2Data.Index165);
cada2td1 = zeros(size(cada1f11dY,1),3);
cada2td1(:,Gator2Data.Index166) = cada2tf1.*cada1f11dY;
cada2td1(:,3) = cada2td1(:,3) + cada1f11.*cada1f6dYdY;
cada2f1dY = cada2td1;
cada2f1 = cada1f11.*cada1f6dY;
cada1td1dY = cada2f1dY;
cada1td1(:,3) = cada2f1;
cada1tf1dY = cada1f6dY(:,Gator2Data.Index167);
cada1tf1 = cada1f6(:,Gator1Data.Index43);
cada2f1 = cada1td1(:,Gator1Data.Index44);
cada2td1 = zeros(size(cada1tf1dY,1),6);
cada2td1(:,Gator2Data.Index168) = cada1f11dY.*cada1tf1dY;
cada2tf1 = cada1tf1(:,Gator2Data.Index169);
cada2td1(:,Gator2Data.Index170) = cada2td1(:,Gator2Data.Index170) + cada2tf1.*cada1f11dYdY;
cada2f2dY = cada2td1;
cada2f2 = cada1tf1.*cada1f11dY;
cada2f3dY = cada2f2dY;
cada2f3 = cada2f1 + cada2f2;
cada2td1 = zeros(size(cada1td1,1),9);
cada2td1(:,Gator2Data.Index171) = cada2f3dY;
cada2td1(:,Gator2Data.Index172) = cada1td1dY(:,Gator2Data.Index173);
cada1td1dY = cada2td1;
cada1td1(:,Gator1Data.Index44) = cada2f3;
cada1f12dYdY = cada1td1dY; cada1f12dY = cada1td1;
cada1f12 = cada1f6.*cada1f11;
cada2f1 = size(cada1f5dY,1);
cada1td1 = zeros(cada2f1,5);
cada1td1dY = cada1f5dYdY;
cada1td1(:,Gator1Data.Index45) = cada1f5dY;
cada2f1dY = cada1td1dY(:,Gator2Data.Index174);
cada2f1 = cada1td1(:,Gator1Data.Index46);
cada2td1 = zeros(size(cada2f1dY,1),13);
cada2td1(:,Gator2Data.Index175) = cada2f1dY;
cada2td1(:,Gator2Data.Index176) = cada2td1(:,Gator2Data.Index176) + cada1f12dYdY;
cada2f2dY = cada2td1;
cada2f2 = cada2f1 + cada1f12dY;
cada2td1 = zeros(size(cada1td1,1),21);
cada2td1(:,Gator2Data.Index177) = cada2f2dY;
cada2td1(:,Gator2Data.Index178) = cada1td1dY(:,Gator2Data.Index179);
cada1td1dY = cada2td1;
cada1td1(:,Gator1Data.Index46) = cada2f2;
fpadot.dYdY = cada1td1dY; fpadot.dY = cada1td1;
fpadot.f = cada1f5 + cada1f12;
%User Line: fpadot = (Thrust.*sin(alpha)+L)./(mass.*v)+cos(fpa).*(v./r-mu./(v.*r.^2));
cada1f1dYdY = -Thrust.dYdY;
cada1f1dY = uminus(Thrust.dY);
cada1f1 = uminus(Thrust.f);
cada1f2 = g0*Isp;
mdot.dYdY = cada1f1dYdY./cada1f2;
mdot.dY = cada1f1dY/cada1f2;
mdot.f = cada1f1/cada1f2;
%User Line: mdot = -Thrust./(g0.*Isp);
cada2f1 = size(hdot.f,1);
cada1td1 = zeros(cada2f1,14);
cada1td1dY = hdot.dYdY;
cada1td1(:,Gator1Data.Index47) = hdot.dY;
cada2td1 = zeros(size(cada1td1,1),22);
cada2td1(:,Gator2Data.Index180) = vdot.dYdY;
cada2td1(:,Gator2Data.Index181) = cada1td1dY(:,Gator2Data.Index182);
cada1td1dY = cada2td1;
cada1td1(:,Gator1Data.Index48) = vdot.dY;
cada2td1 = zeros(size(cada1td1,1),43);
cada2td1(:,Gator2Data.Index183) = fpadot.dYdY;
cada2td1(:,Gator2Data.Index184) = cada1td1dY(:,Gator2Data.Index185);
cada1td1dY = cada2td1;
cada1td1(:,Gator1Data.Index49) = fpadot.dY;
cada2td1 = zeros(size(cada1td1,1),47);
cada2td1(:,Gator2Data.Index186) = mdot.dYdY;
cada2td1(:,Gator2Data.Index187) = cada1td1dY(:,Gator2Data.Index188);
cada1td1dY = cada2td1;
cada1td1(:,Gator1Data.Index50) = mdot.dY;
dx.dYdY = cada1td1dY; dx.dY = cada1td1;
dx.f = [hdot.f vdot.f fpadot.f mdot.f];
%User Line: dx = [hdot, vdot, fpadot, mdot];
dx.dY_size = [4 5];
dx.dY_location = Gator1Data.Index51;
dx.dYdY_size = [dx.dY_size,5];
dx.dYdY_location = [dx.dY_location(Gator2Data.Index189,:), Gator2Data.Index190];
end


function ADiGator_LoadData()
global ADiGator_dynamics_YY
ADiGator_dynamics_YY = load('dynamics_YY.mat');
return
end