UNPKG

jsbsim.js

Version:

JSBSim flight dynamics model ported to JavaScript

246 lines (216 loc) 7.3 kB
<!-- Airship added/virtual mass model for JSBSim. Copyright (C) 2008 Anders Gidenstam (anders(at)gidenstam.org) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA --> <system name="added-mass"> <documentation> This system computes forces and moments due to added/virtual mass. The model is based on [Max M. Munk, "Aerodynamic forces on airship hulls", NACA report 184, 1924] and the introduction in [Christopher J. Atkinson, Robert G. Urso, "Modeling of Apparent Mass Effects for the Real-Time Simulation of a Hybrid Airship", AIAA Modeling and Simulation Technologies Conference, Aug 2006]. Usage: Define the following properties: aero/constants/volume-ft3 aero/constants/length-diameter-ft2 (length^2 + diameter^2) aero/constants/added-mass/k-axial aero/constants/added-mass/k-traverse aero/constants/added-mass/k-rotational aero/constants/added-mass/tweak-factor (1.0 is the standard value) Define the following external forces: <force name="added-mass-bx" frame="BODY"> <location unit=""> { AERORP } </location> <direction> <x> 1.0 </x> <y> 0.0 </y> <z> 0.0 </z> </direction> </force> <force name="added-mass-by" frame="BODY"> <location unit=""> { AERORP } </location> <direction> <x> 0.0 </x> <y> 1.0 </y> <z> 0.0 </z> </direction> </force> <force name="added-mass-bz" frame="BODY"> <location unit=""> { AERORP } </location> <direction> <x> 0.0 </x> <y> 0.0 </y> <z> 1.0 </z> </direction> </force> <force name="added-mass-pitch[0]" frame="BODY"> <location unit=""> <x> AERORP X </x> <y> AERORP Y </y> <z> AERORP Z - 0.3048 </z> </location> <direction> <x> 1.0 </x> <y> 0.0 </y> <z> 0.0 </z> </direction> </force> <force name="added-mass-pitch[1]" frame="BODY"> <location unit="M"> <x> AERORP X </x> <y> AERORP Y </y> <z> AERORP Z + 0.3048 </z> </location> <direction> <x> 1.0 </x> <y> 0.0 </y> <z> 0.0 </z> </direction> </force> <force name="added-mass-yaw[0]" frame="BODY"> <location unit="M"> <x> AERORP X </x> <y> AERORP Y - 0.3048 </y> <z> 0.0 </z> </location> <direction> <x> 1.0 </x> <y> 0.0 </y> <z> 0.0 </z> </direction> </force> <force name="added-mass-yaw[1]" frame="BODY"> <location unit="M"> <x> AERORP X </x> <y> AERORP Y + 0.3048 </y> <z> 0.0 </z> </location> <direction> <x> 1.0 </x> <y> 0.0 </y> <z> 0.0 </z> </direction> </force> </documentation> <channel name="startup"> <!-- Allow the vehicle state to stabilize. --> <fcs_function name="aero/added-mass/active"> <function> <min> <property> aero/constants/added-mass/tweak-factor </property> <max> <value> 0.0 </value> <difference> <property> simulation/sim-time-sec </property> <value> 2.0 </value> </difference> </max> </min> </function> </fcs_function> </channel> <channel name="translational"> <fcs_function name="aero/added-mass/force-bx-lbs"> <function> <product> <property> aero/added-mass/active </property> <property> atmosphere/rho-slugs_ft3 </property> <property> aero/constants/added-mass/k-axial </property> <property> aero/constants/volume-ft3 </property> <property> accelerations/udot-ft_sec2 </property> </product> </function> <output> external_reactions/added-mass-bx/magnitude </output> </fcs_function> <fcs_function name="aero/added-mass/force-by-lbs"> <function> <product> <property> aero/added-mass/active </property> <property> atmosphere/rho-slugs_ft3 </property> <property> aero/constants/added-mass/k-traverse </property> <property> aero/constants/volume-ft3 </property> <property> accelerations/vdot-ft_sec2 </property> </product> </function> <output> external_reactions/added-mass-by/magnitude </output> </fcs_function> <fcs_function name="aero/added-mass/force-bz-lbs"> <function> <product> <property> aero/added-mass/active </property> <property> atmosphere/rho-slugs_ft3 </property> <property> aero/constants/added-mass/k-traverse </property> <property> aero/constants/volume-ft3 </property> <property> accelerations/wdot-ft_sec2 </property> </product> </function> <output> external_reactions/added-mass-bz/magnitude </output> </fcs_function> </channel> <channel name="rotational"> <fcs_function name="aero/added-mass/pitch-moment-lbsft"> <function> <product> <property> aero/added-mass/active </property> <value> 0.05 </value> <property> atmosphere/rho-slugs_ft3 </property> <property> aero/constants/added-mass/k-rotational </property> <property> aero/constants/volume-ft3 </property> <property> aero/constants/length-diameter-ft2 </property> <property> accelerations/qdot-rad_sec2 </property> </product> </function> </fcs_function> <fcs_function name="aero/added-mass/yaw-moment-lbsft"> <function> <product> <property> aero/added-mass/active </property> <value> 0.05 </value> <property> aero/constants/added-mass/k-rotational </property> <property> atmosphere/rho-slugs_ft3 </property> <property> aero/constants/volume-ft3 </property> <property> aero/constants/length-diameter-ft2 </property> <property> accelerations/rdot-rad_sec2 </property> </product> </function> </fcs_function> <pure_gain name="aero/added-mass/pitch-moment-force-lbs[0]"> <input> aero/added-mass/pitch-moment-lbsft </input> <gain>-0.5</gain> <output> external_reactions/added-mass-pitch[0]/magnitude </output> </pure_gain> <pure_gain name="aero/added-mass/pitch-moment-force-lbs[1]"> <input> aero/added-mass/pitch-moment-lbsft </input> <gain>0.5</gain> <output> external_reactions/added-mass-pitch[1]/magnitude </output> </pure_gain> <pure_gain name="aero/added-mass/yaw-moment-force-lbs[0]"> <input> aero/added-mass/yaw-moment-lbsft </input> <gain>-0.5</gain> <output> external_reactions/added-mass-yaw[0]/magnitude </output> </pure_gain> <pure_gain name="aero/added-mass/yaw-moment-force-lbs[1]"> <input> aero/added-mass/yaw-moment-lbsft </input> <gain>0.5</gain> <output> external_reactions/added-mass-yaw[1]/magnitude </output> </pure_gain> </channel> </system>