1function [eta,nu] = simplifiedVesselModelSim(time,eta0,nu0,tau,nu_c,MRB,MA,Bv,Dp,G) 2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 3% Nonlinear Unified Seakeeping and Maneuvering Model without Fluid Memory, 4% based on Perez & Fossen 2017. 5% 6% 7%MISSING: Fluid memory and Cross-Flow Drag and Surge Resistance 8% 9% Author: Markus Fossdal 2018. 10%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 11 12 13 14if time == 20 15%% Parameters 16% MRB = vessel.MRB; %Rigid-body mass matrix 17M = MRB + MA; 18M_inv = inv(M);%Rigid-body 19% MA = vesselABC.MA; %Added mass matrix 20% Bv = vessel.Bv; %Linear viscous damping matrix 21% Dp = vesselABC.Dp; %Linear potential damping matrix 22% G = vesselABC.G; % Stiffness matrix 23 24L = [0 0 0 0 0 0; %Selection matrix 25 0 0 0 0 0 1; 26 0 0 0 0 -1 0; 27 0 0 0 0 0 0; 28 0 0 0 0 0 0; 29 0 0 0 0 0 0]; 30 31nu_r = nu0-nu_c; %Relative velocity 32U_r = nu_r(1,1); %Relative speed 33CRB = U_r * MRB * L; % Linearized Coriolis Matrix 34CA = U_r*MA*L; %Added mass matrix 35 36%% Computations 37 38%nu_dot = M_inv*(tau -CRB*nu -CA*nu_r - (Bv+Dp)*nu_r - G*eta) ; 39%[J,~,~] = eulerang(eta(1,4),eta(1,5),eta(1,6)); 40%eta_dot = J*nu; 41 42 43%Simulation parameters 44Ts = 0.1; 45Tlength = 50; 46Tsim = Tlength/Ts; 47 48% %Allocation of memory 49nu = zeros(6,Tsim); 50eta = zeros(6,Tsim); 51 52%Initial conditions 53eta(:,1) = eta0; 54nu(:,1) = nu0; 55 56%Solve combined forward and backward Euler integration (Fossen appendix B) 57for k = 1:Tsim 58 %Variables 59 nu_r(:,k) = nu(:,k) - nu_c; %NB, nu_c can't vary here. 60 U_r(k) = nu_r(1,k); 61 CRB = U_r(k) * MRB * L; 62 CA = U_r(k) * MA * L; 63 64 %EOMs 65 nu(:,k+1) = nu(:,k) + M_inv*(tau -CRB*nu(:,k) -CA*nu_r(:,k) - (Bv+Dp)*nu_r(:,k) - G*eta(:,k)); 66 [J,~,~] = eulerang(eta(4,k),eta(5,k),eta(6,k)); 67 eta(:,k+1) = eta(:,k) + J*nu(:,k+1); 68end 69 70else 71 = zeros(6,1); 72 = zeros(6,1); 73end 74 75end 76