#*------------------------------------------------------------------- * EMSO Model Library (EML) Copyright (C) 2004 - 2007 ALSOC. * * This LIBRARY is free software; you can distribute it and/or modify * it under the therms of the ALSOC FREE LICENSE as available at * http://www.enq.ufrgs.br/alsoc. * * EMSO Copyright (C) 2004 - 2007 ALSOC, original code * from http://www.rps.eng.br Copyright (C) 2002-2004. * All rights reserved. * * EMSO is distributed under the therms of the ALSOC LICENSE as * available at http://www.enq.ufrgs.br/alsoc. * *-------------------------------------------------------------------- * The car axis problem * * The problem is a stiff DAE of index 3, consisting of 8 * differential and 2 algebraic equations. *-------------------------------------------------------------------- * Author: Rafael de Pelegrini Soares * $Id: sample_car.mso 249 2007-04-24 21:08:06Z rafael $ *--------------------------------------------------------------------*# FlowSheet CarAxis PARAMETERS l as Real(Default=1); l0 as Real(Default=1/2); eps as Real(Default=1e-2); M as Real(Default=10); h as Real(Default=1/5); tau as Real(Default=3.1514/5); w as Real(Default=10); r as Real(Default=0.1); VARIABLES xl as Real(Default = 0, Lower=-1, Upper = 1); yl as Real(Default = 0.5, Lower=-1, Upper = 1); xr as Real(Default = 1, Lower=-2, Upper = 2); yr as Real(Default = 0.5, Lower=-1, Upper = 1); q(4) as Real(Default = -1); lambda(2) as Real(Default = 0); xb as Real(Default = 1); yb as Real(Default = 0); ll as Real(Default = 0.5, Brief="Left spring length"); lr as Real(Default = 0.5, Brief="Right spring length"); EQUATIONS diff([xl, yl, xr, yr])*'s' = q; eps^2*M/2 * diff(q(1))*'s' = (l0-ll)*xl/ll +lambda(1)*xb +2*lambda(1)*(xl-xr); eps^2*M/2 * diff(q(2))*'s' = (l0-ll)*yl/ll +lambda(1)*yb +2*lambda(2)*(yr-yl) - eps^2*M/2; eps^2*M/2 * diff(q(3))*'s' = (l0-lr)*(xr-xb)/lr -2*lambda(2)*(xl-xr); eps^2*M/2 * diff(q(4))*'s' = (l0-lr)*(yr-yb)/lr -2*lambda(2)*(yl-yr) - eps^2*M/2; xl*xb + yl*yb = 0; (xl-xr)^2 + (yl-yr)^2 = l^2; xb = sqrt(l^2-yb^2); yb = r*sin(w*time*'rad/s'); ll = sqrt(xl^2 + yl^2); lr = sqrt((xr-xb)^2 + (yr-yb)^2); INITIAL yl = 0.5; xr = 1; q(3) = -0.5; q(4) = 0; OPTIONS TimeStart = 0; TimeStep = 0.01; TimeEnd = 3; Integration = "index0";# "index0"; # "original"; NLASolver( File = "sundials", RelativeAccuracy = 1e-5, AbsoluteAccuracy = 1e-5 ); DAESolver( File = "dassl", # "mebdf", RelativeAccuracy = 1e-5, AbsoluteAccuracy = 1e-5 ); end