1
0
Fork 0

Updated the generic JSBSim hydrodynamics system.

- Small update to the main hydrodynamics system.
- Added initial versions of two systems for modelling hydrodynamic planing.

Signed-off-by: Anders Gidenstam <anders@gidenstam.org>
This commit is contained in:
Anders Gidenstam 2015-11-13 23:13:37 +01:00
parent fd0b47865f
commit 9020bda565
3 changed files with 1517 additions and 1 deletions

View file

@ -0,0 +1,859 @@
<?xml version="1.0"?>
<!--
Model of hydrodynamic planing based on [Wagner:1933:POW] for JSBSim.
Copyright (C) 2015 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="hydrodynamic planing of floats">
<documentation>
This system depends on the generic hydrodynamics.xml system for JSBSim.
<reference refID="Wagner:1933:POW"
author="Herbert Wagner"
title="Planing of Watercraft Translated as NACA-TM-1139"
date="1933/1948"/>
</documentation>
<!-- Model parameters -->
<!-- Parameters defining the planing surfaces of the floats. -->
<!-- NOTE: Coordinates in the frame with
origin at hydro RP and x/y/z = aft/right/up
-->
<property>hydro/planing-floats/forebody-length-ft[0]</property>
<property>hydro/planing-floats/forebody-beam-ft[0]</property>
<property>hydro/planing-floats/forebody-keel-y-ft[0]</property>
<property>hydro/planing-floats/forebody-keel-z-ft[0]</property>
<property>hydro/planing-floats/forebody-end-x-ft[0]</property>
<property>hydro/planing-floats/afterbody-length-ft[0]</property>
<property>hydro/planing-floats/afterbody-beam-ft[0]</property>
<property>hydro/planing-floats/afterbody-keel-y-ft[0]</property>
<property>hydro/planing-floats/afterbody-keel-z-ft[0]</property>
<property>hydro/planing-floats/afterbody-end-x-ft[0]</property>
<property>hydro/planing-floats/forebody-length-ft[1]</property>
<property>hydro/planing-floats/forebody-beam-ft[1]</property>
<property>hydro/planing-floats/forebody-keel-y-ft[1]</property>
<property>hydro/planing-floats/forebody-keel-z-ft[1]</property>
<property>hydro/planing-floats/forebody-end-x-ft[1]</property>
<property>hydro/planing-floats/afterbody-length-ft[1]</property>
<property>hydro/planing-floats/afterbody-beam-ft[1]</property>
<property>hydro/planing-floats/afterbody-keel-y-ft[1]</property>
<property>hydro/planing-floats/afterbody-keel-z-ft[1]</property>
<property>hydro/planing-floats/afterbody-end-x-ft[1]</property>
<!-- Other parameters. -->
<property value="1.0">hydro/planing-floats/forebody-normal-force-factor[0]</property>
<property value="1.0">hydro/planing-floats/afterbody-normal-force-factor[0]</property>
<property>hydro/planing-floats/forebody-skin-friction-coefficient[0]</property>
<property>hydro/planing-floats/afterbody-skin-friction-coefficient[0]</property>
<property value="1.0">hydro/planing-floats/forebody-normal-force-factor[1]</property>
<property value="1.0">hydro/planing-floats/afterbody-normal-force-factor[1]</property>
<property>hydro/planing-floats/forebody-skin-friction-coefficient[1]</property>
<property>hydro/planing-floats/afterbody-skin-friction-coefficient[1]</property>
<channel name="Planing dynamics based on [Wagner:1933:POW]">
<fcs_function name="hydro/planing-floats/forebody-entry-point-x-ft[0]">
<function>
<description>The intersection point with the water surface.</description>
<quotient>
<sum>
<quotient>
<property>hydro/floats/height-agl-ft[0]</property>
<cos><property>hydro/floats/pitch-rad[0]</property></cos>
</quotient>
<property>hydro/planing-floats/forebody-keel-z-ft[0]</property>
</sum>
<tan><property>hydro/floats/pitch-rad[0]</property></tan>
</quotient>
</function>
</fcs_function>
<fcs_function name="hydro/planing-floats/afterbody-entry-point-x-ft[0]">
<function>
<description>The intersection point with the water surface.</description>
<quotient>
<sum>
<quotient>
<property>hydro/floats/height-agl-ft[0]</property>
<cos><property>hydro/floats/pitch-rad[0]</property></cos>
</quotient>
<property>hydro/planing-floats/afterbody-keel-z-ft[0]</property>
</sum>
<tan><property>hydro/floats/pitch-rad[0]</property></tan>
</quotient>
</function>
</fcs_function>
<fcs_function name="hydro/planing-floats/forebody-entry-point-x-ft[1]">
<function>
<description>The intersection point with the water surface.</description>
<quotient>
<sum>
<quotient>
<property>hydro/floats/height-agl-ft[1]</property>
<cos><property>hydro/floats/pitch-rad[1]</property></cos>
</quotient>
<property>hydro/planing-floats/forebody-keel-z-ft[1]</property>
</sum>
<tan><property>hydro/floats/pitch-rad[1]</property></tan>
</quotient>
</function>
</fcs_function>
<fcs_function name="hydro/planing-floats/afterbody-entry-point-x-ft[1]">
<function>
<description>The intersection point with the water surface.</description>
<quotient>
<sum>
<quotient>
<property>hydro/floats/height-agl-ft[1]</property>
<cos><property>hydro/floats/pitch-rad[1]</property></cos>
</quotient>
<property>hydro/planing-floats/afterbody-keel-z-ft[1]</property>
</sum>
<tan><property>hydro/floats/pitch-rad[1]</property></tan>
</quotient>
</function>
</fcs_function>
<fcs_function name="hydro/planing-floats/forebody-wetted-keel-ft[0]">
<function>
<description>The length of keel below the free water surface.</description>
<max>
<value>0.0</value>
<min>
<property>hydro/planing-floats/forebody-length-ft[0]</property>
<sum>
<product>
<ge>
<property>hydro/floats/pitch-rad[0]</property>
<value>0.0</value>
</ge>
<difference>
<property>hydro/planing-floats/forebody-end-x-ft[0]</property>
<property>hydro/planing-floats/forebody-entry-point-x-ft[0]</property>
</difference>
</product>
<product>
<lt>
<property>hydro/floats/pitch-rad[0]</property>
<value>0.0</value>
</lt>
<difference>
<property>hydro/planing-floats/forebody-entry-point-x-ft[0]</property>
<difference>
<property>hydro/planing-floats/forebody-end-x-ft[0]</property>
<property>hydro/planing-floats/forebody-length-ft[0]</property>
</difference>
</difference>
</product>
</sum>
</min>
</max>
</function>
</fcs_function>
<fcs_function name="hydro/planing-floats/afterbody-wetted-keel-ft[0]">
<function>
<description>The length of keel below the free water surface.</description>
<max>
<value>0.0</value>
<min>
<property>hydro/planing-floats/afterbody-length-ft[0]</property>
<sum>
<product>
<ge>
<property>hydro/floats/pitch-rad[0]</property>
<value>0.0</value>
</ge>
<difference>
<property>hydro/planing-floats/afterbody-end-x-ft[0]</property>
<property>hydro/planing-floats/afterbody-entry-point-x-ft[0]</property>
</difference>
</product>
<product>
<lt>
<property>hydro/floats/pitch-rad[0]</property>
<value>0.0</value>
</lt>
<difference>
<property>hydro/planing-floats/afterbody-entry-point-x-ft[0]</property>
<difference>
<property>hydro/planing-floats/afterbody-end-x-ft[0]</property>
<property>hydro/planing-floats/afterbody-length-ft[0]</property>
</difference>
</difference>
</product>
</sum>
</min>
</max>
</function>
</fcs_function>
<fcs_function name="hydro/planing-floats/forebody-wetted-keel-ft[1]">
<function>
<description>The length of keel below the free water surface.</description>
<max>
<value>0.0</value>
<min>
<property>hydro/planing-floats/forebody-length-ft[1]</property>
<sum>
<product>
<ge>
<property>hydro/floats/pitch-rad[1]</property>
<value>0.0</value>
</ge>
<difference>
<property>hydro/planing-floats/forebody-end-x-ft[1]</property>
<property>hydro/planing-floats/forebody-entry-point-x-ft[1]</property>
</difference>
</product>
<product>
<lt>
<property>hydro/floats/pitch-rad[1]</property>
<value>0.0</value>
</lt>
<difference>
<property>hydro/planing-floats/forebody-entry-point-x-ft[1]</property>
<difference>
<property>hydro/planing-floats/forebody-end-x-ft[1]</property>
<property>hydro/planing-floats/forebody-length-ft[1]</property>
</difference>
</difference>
</product>
</sum>
</min>
</max>
</function>
</fcs_function>
<fcs_function name="hydro/planing-floats/afterbody-wetted-keel-ft[1]">
<function>
<description>The length of keel below the free water surface.</description>
<max>
<value>0.0</value>
<min>
<property>hydro/planing-floats/afterbody-length-ft[1]</property>
<sum>
<product>
<ge>
<property>hydro/floats/pitch-rad[1]</property>
<value>0.0</value>
</ge>
<difference>
<property>hydro/planing-floats/afterbody-end-x-ft[1]</property>
<property>hydro/planing-floats/afterbody-entry-point-x-ft[1]</property>
</difference>
</product>
<product>
<lt>
<property>hydro/floats/pitch-rad[1]</property>
<value>0.0</value>
</lt>
<difference>
<property>hydro/planing-floats/afterbody-entry-point-x-ft[1]</property>
<difference>
<property>hydro/planing-floats/afterbody-end-x-ft[1]</property>
<property>hydro/planing-floats/afterbody-length-ft[1]</property>
</difference>
</difference>
</product>
</sum>
</min>
</max>
</function>
</fcs_function>
<fcs_function name="hydro/planing-floats/forebody-normal-force-lbs[0]">
<function>
<description>
The normal force produced by the planing surface.
NOTE: The formulation is only valid for very small pitch angles and
the pitch angle should also be adjusted for down-wash.
See [Wagner:1933:POW].
</description>
<max>
<value>0.0</value>
<product>
<property>hydro/planing-floats/forebody-normal-force-factor[0]</property>
<value>3.1415927</value>
<property>hydro/qbar-u-psf</property>
<property>hydro/planing-floats/forebody-beam-ft[0]</property>
<property>hydro/planing-floats/forebody-wetted-keel-ft[0]</property>
<sin><property>hydro/floats/pitch-rad[0]</property></sin>
</product>
</max>
</function>
</fcs_function>
<fcs_function name="hydro/planing-floats/afterbody-normal-force-lbs[0]">
<function>
<description>
The normal force produced by the planing surface.
NOTE: The formulation is only valid for very small pitch angles and
the pitch angle should also be adjusted for down-wash.
See [Wagner:1933:POW].
</description>
<max>
<value>0.0</value>
<product>
<property>hydro/planing-floats/afterbody-normal-force-factor[0]</property>
<value>3.1415927</value>
<property>hydro/qbar-u-psf</property>
<property>hydro/planing-floats/afterbody-beam-ft[0]</property>
<property>hydro/planing-floats/afterbody-wetted-keel-ft[0]</property>
<sin><property>hydro/floats/pitch-rad[0]</property></sin>
</product>
</max>
</function>
</fcs_function>
<fcs_function name="hydro/planing-floats/forebody-normal-force-lbs[1]">
<function>
<description>
The normal force produced by the planing surface.
NOTE: The formulation is only valid for very small pitch angles and
the pitch angle should also be adjusted for down-wash.
See [Wagner:1933:POW].
</description>
<max>
<value>0.0</value>
<product>
<property>hydro/planing-floats/forebody-normal-force-factor[1]</property>
<value>3.1415927</value>
<property>hydro/qbar-u-psf</property>
<property>hydro/planing-floats/forebody-beam-ft[1]</property>
<property>hydro/planing-floats/forebody-wetted-keel-ft[1]</property>
<sin><property>hydro/floats/pitch-rad[1]</property></sin>
</product>
</max>
</function>
</fcs_function>
<fcs_function name="hydro/planing-floats/afterbody-normal-force-lbs[1]">
<function>
<description>
The normal force produced by the planing surface.
NOTE: The formulation is only valid for very small pitch angles and
the pitch angle should also be adjusted for down-wash.
See [Wagner:1933:POW].
</description>
<max>
<value>0.0</value>
<product>
<property>hydro/planing-floats/afterbody-normal-force-factor[1]</property>
<value>3.1415927</value>
<property>hydro/qbar-u-psf</property>
<property>hydro/planing-floats/afterbody-beam-ft[1]</property>
<property>hydro/planing-floats/afterbody-wetted-keel-ft[1]</property>
<sin><property>hydro/floats/pitch-rad[1]</property></sin>
</product>
</max>
</function>
</fcs_function>
</channel>
<channel name="Fbx">
<fcs_function name="hydro/planing-floats/forebody-induced-fbx-force-lbs[0]">
<function>
<description>Drag (induced) due to planing. FIXME: direction/frame?</description>
<product>
<value>-1.0</value>
<max>
<value>0.0</value>
<product>
<property>hydro/planing-floats/forebody-normal-force-lbs[0]</property>
<sin><property>hydro/floats/pitch-rad[0]</property></sin>
</product>
</max>
</product>
</function>
</fcs_function>
<fcs_function name="hydro/planing-floats/afterbody-induced-fbx-force-lbs[0]">
<function>
<description>Drag (induced) due to planing. FIXME: direction/frame?</description>
<product>
<value>-1.0</value>
<max>
<value>0.0</value>
<product>
<property>hydro/planing-floats/afterbody-normal-force-lbs[0]</property>
<sin><property>hydro/floats/pitch-rad[0]</property></sin>
</product>
</max>
</product>
</function>
</fcs_function>
<fcs_function name="hydro/planing-floats/forebody-induced-fbx-force-lbs[1]">
<function>
<description>Drag (induced) due to planing. FIXME: direction/frame?</description>
<product>
<value>-1.0</value>
<max>
<value>0.0</value>
<product>
<property>hydro/planing-floats/forebody-normal-force-lbs[1]</property>
<sin><property>hydro/floats/pitch-rad[1]</property></sin>
</product>
</max>
</product>
</function>
</fcs_function>
<fcs_function name="hydro/planing-floats/afterbody-induced-fbx-force-lbs[1]">
<function>
<description>Drag (induced) due to planing. FIXME: direction/frame?</description>
<product>
<value>-1.0</value>
<max>
<value>0.0</value>
<product>
<property>hydro/planing-floats/afterbody-normal-force-lbs[1]</property>
<sin><property>hydro/floats/pitch-rad[1]</property></sin>
</product>
</max>
</product>
</function>
</fcs_function>
<fcs_function name="hydro/planing-floats/forebody-friction-fbx-force-lbs[0]">
<function>
<description>Drag due to skin friction.</description>
<product>
<value>-1.0</value>
<property>hydro/planing-floats/forebody-skin-friction-coefficient[0]</property>
<property>hydro/qbar-u-psf</property>
<property>hydro/planing-floats/forebody-beam-ft[0]</property>
<property>hydro/planing-floats/forebody-wetted-keel-ft[0]</property>
</product>
</function>
</fcs_function>
<fcs_function name="hydro/planing-floats/afterbody-friction-fbx-force-lbs[0]">
<function>
<description>Drag due to skin friction.</description>
<product>
<value>-1.0</value>
<property>hydro/planing-floats/afterbody-skin-friction-coefficient[0]</property>
<property>hydro/qbar-u-psf</property>
<property>hydro/planing-floats/afterbody-beam-ft[0]</property>
<property>hydro/planing-floats/afterbody-wetted-keel-ft[0]</property>
</product>
</function>
</fcs_function>
<fcs_function name="hydro/planing-floats/forebody-friction-fbx-force-lbs[1]">
<function>
<description>Drag due to skin friction.</description>
<product>
<value>-1.0</value>
<property>hydro/planing-floats/forebody-skin-friction-coefficient[1]</property>
<property>hydro/qbar-u-psf</property>
<property>hydro/planing-floats/forebody-beam-ft[1]</property>
<property>hydro/planing-floats/forebody-wetted-keel-ft[1]</property>
</product>
</function>
</fcs_function>
<fcs_function name="hydro/planing-floats/afterbody-friction-fbx-force-lbs[1]">
<function>
<description>Drag due to skin friction.</description>
<product>
<value>-1.0</value>
<property>hydro/planing-floats/afterbody-skin-friction-coefficient[1]</property>
<property>hydro/qbar-u-psf</property>
<property>hydro/planing-floats/afterbody-beam-ft[1]</property>
<property>hydro/planing-floats/afterbody-wetted-keel-ft[1]</property>
</product>
</function>
</fcs_function>
</channel>
<channel name="Fby">
<fcs_function name="hydro/planing-floats/forebody-fby-force-lbs[0]">
<function>
<description>
Fby force due to planing.
FIXME: model/direction/frame?
</description>
<product>
<property>hydro/planing-floats/forebody-normal-force-lbs[0]</property>
<cos><property>hydro/floats/pitch-rad[0]</property></cos>
<sin><property>hydro/floats/roll-rad[0]</property></sin>
</product>
</function>
</fcs_function>
<fcs_function name="hydro/planing-floats/afterbody-fby-force-lbs[0]">
<function>
<description>
Fby force due to planing.
FIXME: model/direction/frame?
</description>
<product>
<property>hydro/planing-floats/afterbody-normal-force-lbs[0]</property>
<cos><property>hydro/floats/pitch-rad[0]</property></cos>
<sin><property>hydro/floats/roll-rad[0]</property></sin>
</product>
</function>
</fcs_function>
<fcs_function name="hydro/planing-floats/forebody-fby-force-lbs[1]">
<function>
<description>
Fby force due to planing.
FIXME: model/direction/frame?
</description>
<product>
<property>hydro/planing-floats/forebody-normal-force-lbs[1]</property>
<cos><property>hydro/floats/pitch-rad[1]</property></cos>
<sin><property>hydro/floats/roll-rad[1]</property></sin>
</product>
</function>
</fcs_function>
<fcs_function name="hydro/planing-floats/afterbody-fby-force-lbs[1]">
<function>
<description>
Fby force due to planing.
FIXME: model/direction/frame?
</description>
<product>
<property>hydro/planing-floats/afterbody-normal-force-lbs[1]</property>
<cos><property>hydro/floats/pitch-rad[1]</property></cos>
<sin><property>hydro/floats/roll-rad[1]</property></sin>
</product>
</function>
</fcs_function>
</channel>
<channel name="Lift">
<fcs_function name="hydro/planing-floats/forebody-lift-force-lbs[0]">
<function>
<description>Lift due to planing. FIXME: direction/frame?</description>
<max>
<value>0.0</value>
<product>
<property>hydro/planing-floats/forebody-normal-force-lbs[0]</property>
<cos><property>hydro/floats/pitch-rad[0]</property></cos>
<cos><property>hydro/floats/roll-rad[0]</property></cos>
</product>
</max>
</function>
</fcs_function>
<fcs_function name="hydro/planing-floats/afterbody-lift-force-lbs[0]">
<function>
<description>Lift due to planing. FIXME: direction/frame?</description>
<max>
<value>0.0</value>
<product>
<property>hydro/planing-floats/afterbody-normal-force-lbs[0]</property>
<cos><property>hydro/floats/pitch-rad[0]</property></cos>
<cos><property>hydro/floats/roll-rad[0]</property></cos>
</product>
</max>
</function>
</fcs_function>
<fcs_function name="hydro/planing-floats/forebody-lift-force-lbs[1]">
<function>
<description>Lift due to planing. FIXME: direction/frame?</description>
<max>
<value>0.0</value>
<product>
<property>hydro/planing-floats/forebody-normal-force-lbs[1]</property>
<cos><property>hydro/floats/pitch-rad[1]</property></cos>
<cos><property>hydro/floats/roll-rad[1]</property></cos>
</product>
</max>
</function>
</fcs_function>
<fcs_function name="hydro/planing-floats/afterbody-lift-force-lbs[1]">
<function>
<description>Lift due to planing. FIXME: direction/frame?</description>
<max>
<value>0.0</value>
<product>
<property>hydro/planing-floats/afterbody-normal-force-lbs[1]</property>
<cos><property>hydro/floats/pitch-rad[1]</property></cos>
<cos><property>hydro/floats/roll-rad[1]</property></cos>
</product>
</max>
</function>
</fcs_function>
</channel>
<channel name="Yaw">
<fcs_function name="hydro/planing-floats/forebody-yaw-moment-lbsft[0]">
<description>
Yaw moment due to planing drag.
FIXME: direction/frame? Limits on the acting point? Induced drag?
</description>
<function>
<product>
<value>-1.0</value>
<property>hydro/planing-floats/forebody-friction-fbx-force-lbs[0]</property>
<property>hydro/planing-floats/forebody-keel-y-ft[0]</property>
</product>
</function>
</fcs_function>
<fcs_function name="hydro/planing-floats/afterbody-yaw-moment-lbsft[0]">
<description>
Yaw moment due to planing drag.
FIXME: direction/frame? Limits on the acting point? Induced drag?
</description>
<function>
<product>
<value>-1.0</value>
<property>hydro/planing-floats/afterbody-friction-fbx-force-lbs[0]</property>
<property>hydro/planing-floats/afterbody-keel-y-ft[0]</property>
</product>
</function>
</fcs_function>
<fcs_function name="hydro/planing-floats/forebody-yaw-moment-lbsft[1]">
<description>
Yaw moment due to planing drag.
FIXME: direction/frame? Limits on the acting point? Induced drag?
</description>
<function>
<product>
<value>-1.0</value>
<property>hydro/planing-floats/forebody-friction-fbx-force-lbs[1]</property>
<property>hydro/planing-floats/forebody-keel-y-ft[1]</property>
</product>
</function>
</fcs_function>
<fcs_function name="hydro/planing-floats/afterbody-yaw-moment-lbsft[1]">
<description>
Yaw moment due to planing drag.
FIXME: direction/frame? Limits on the acting point? Induced drag?
</description>
<function>
<product>
<value>-1.0</value>
<property>hydro/planing-floats/afterbody-friction-fbx-force-lbs[1]</property>
<property>hydro/planing-floats/afterbody-keel-y-ft[1]</property>
</product>
</function>
</fcs_function>
</channel>
<channel name="Pitch">
<fcs_function name="hydro/planing-floats/forebody-pitch-moment-lbsft[0]">
<description>
Pitch moment due to planing.
FIXME: direction/frame? Limits on the acting point?
</description>
<function>
<sum>
<product>
<value>-1.0</value>
<property>hydro/planing-floats/forebody-normal-force-lbs[0]</property>
<difference>
<property>hydro/planing-floats/forebody-end-x-ft[0]</property>
<product>
<value>0.75</value>
<property>hydro/planing-floats/forebody-wetted-keel-ft[0]</property>
</product>
</difference>
</product>
<product>
<value>-1.0</value>
<property>hydro/planing-floats/forebody-friction-fbx-force-lbs[0]</property>
<property>hydro/planing-floats/forebody-keel-z-ft[0]</property>
<cos><property>hydro/floats/pitch-rad[0]</property></cos>
</product>
</sum>
</function>
</fcs_function>
<fcs_function name="hydro/planing-floats/afterbody-pitch-moment-lbsft[0]">
<description>
Pitch moment due to planing.
FIXME: direction/frame? Limits on the acting point?
</description>
<function>
<sum>
<product>
<value>-1.0</value>
<property>hydro/planing-floats/afterbody-normal-force-lbs[0]</property>
<difference>
<property>hydro/planing-floats/afterbody-end-x-ft[0]</property>
<product>
<value>0.75</value>
<property>hydro/planing-floats/afterbody-wetted-keel-ft[0]</property>
</product>
</difference>
</product>
<product>
<value>-1.0</value>
<property>hydro/planing-floats/afterbody-friction-fbx-force-lbs[0]</property>
<property>hydro/planing-floats/afterbody-keel-z-ft[0]</property>
<cos><property>hydro/floats/pitch-rad[0]</property></cos>
</product>
</sum>
</function>
</fcs_function>
<fcs_function name="hydro/planing-floats/forebody-pitch-moment-lbsft[1]">
<description>
Pitch moment due to planing.
FIXME: direction/frame? Limits on the acting point?
</description>
<function>
<sum>
<product>
<value>-1.0</value>
<property>hydro/planing-floats/forebody-normal-force-lbs[1]</property>
<difference>
<property>hydro/planing-floats/forebody-end-x-ft[1]</property>
<product>
<value>0.75</value>
<property>hydro/planing-floats/forebody-wetted-keel-ft[1]</property>
</product>
</difference>
</product>
<product>
<value>-1.0</value>
<property>hydro/planing-floats/forebody-friction-fbx-force-lbs[1]</property>
<property>hydro/planing-floats/forebody-keel-z-ft[1]</property>
<cos><property>hydro/floats/pitch-rad[1]</property></cos>
</product>
</sum>
</function>
</fcs_function>
<fcs_function name="hydro/planing-floats/afterbody-pitch-moment-lbsft[1]">
<description>
Pitch moment due to planing.
FIXME: direction/frame? Limits on the acting point?
</description>
<function>
<sum>
<product>
<value>-1.0</value>
<property>hydro/planing-floats/afterbody-normal-force-lbs[1]</property>
<difference>
<property>hydro/planing-floats/afterbody-end-x-ft[1]</property>
<product>
<value>0.75</value>
<property>hydro/planing-floats/afterbody-wetted-keel-ft[1]</property>
</product>
</difference>
</product>
<product>
<value>-1.0</value>
<property>hydro/planing-floats/afterbody-friction-fbx-force-lbs[1]</property>
<property>hydro/planing-floats/afterbody-keel-z-ft[1]</property>
<cos><property>hydro/floats/pitch-rad[1]</property></cos>
</product>
</sum>
</function>
</fcs_function>
</channel>
<channel name="Roll">
<fcs_function name="hydro/planing-floats/forebody-roll-moment-lbsft[0]">
<description>
Roll moment due to planing.
FIXME: direction/frame? Limits on the acting point?
</description>
<function>
<sum>
<product>
<property>hydro/planing-floats/forebody-normal-force-lbs[0]</property>
<property>hydro/planing-floats/forebody-keel-y-ft[0]</property>
</product>
<product>
<property>hydro/planing-floats/forebody-fby-force-lbs[0]</property>
<!-- FIXME: dependency on pitch? -->
<property>hydro/planing-floats/forebody-keel-z-ft[0]</property>
</product>
</sum>
</function>
</fcs_function>
<fcs_function name="hydro/planing-floats/afterbody-roll-moment-lbsft[0]">
<description>
Roll moment due to planing.
FIXME: direction/frame? Limits on the acting point?
</description>
<function>
<sum>
<product>
<property>hydro/planing-floats/afterbody-normal-force-lbs[0]</property>
<property>hydro/planing-floats/afterbody-keel-y-ft[0]</property>
</product>
<product>
<property>hydro/planing-floats/afterbody-fby-force-lbs[0]</property>
<!-- FIXME: dependency on pitch? -->
<property>hydro/planing-floats/afterbody-keel-z-ft[0]</property>
</product>
</sum>
</function>
</fcs_function>
<fcs_function name="hydro/planing-floats/forebody-roll-moment-lbsft[1]">
<description>
Roll moment due to planing.
FIXME: direction/frame? Limits on the acting point?
</description>
<function>
<sum>
<product>
<property>hydro/planing-floats/forebody-normal-force-lbs[1]</property>
<property>hydro/planing-floats/forebody-keel-y-ft[1]</property>
</product>
<product>
<property>hydro/planing-floats/forebody-fby-force-lbs[1]</property>
<!-- FIXME: dependency on pitch? -->
<property>hydro/planing-floats/forebody-keel-z-ft[1]</property>
</product>
</sum>
</function>
</fcs_function>
<fcs_function name="hydro/planing-floats/afterbody-roll-moment-lbsft[1]">
<description>
Roll moment due to planing.
FIXME: direction/frame? Limits on the acting point?
</description>
<function>
<sum>
<product>
<property>hydro/planing-floats/afterbody-normal-force-lbs[1]</property>
<property>hydro/planing-floats/afterbody-keel-y-ft[1]</property>
</product>
<product>
<property>hydro/planing-floats/afterbody-fby-force-lbs[1]</property>
<!-- FIXME: dependency on pitch? -->
<property>hydro/planing-floats/afterbody-keel-z-ft[1]</property>
</product>
</sum>
</function>
</fcs_function>
</channel>
</system>

View file

@ -0,0 +1,646 @@
<?xml version="1.0"?>
<!--
Model of hydrodynamic planing based on [Wagner:1933:POW] for JSBSim.
Copyright (C) 2015 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="hydrodynamic planing">
<documentation>
This system depends on the generic hydrodynamics.xml system for JSBSim.
<reference refID="Wagner:1933:POW"
author="Herbert Wagner"
title="Planing of Watercraft Translated as NACA-TM-1139"
date="1933/1948"/>
</documentation>
<!-- Model parameters -->
<!-- Parameters defining the planing surfaces of the hull. -->
<!-- NOTE: Coordinates in the frame with
origin at hydro RP and x/y/z = aft/right/up
-->
<property>hydro/planing/forebody-length-ft</property>
<property>hydro/planing/forebody-beam-ft</property>
<property>hydro/planing/forebody-keel-z-ft</property>
<property>hydro/planing/forebody-end-x-ft</property>
<property>hydro/planing/middlebody-length-ft</property>
<property>hydro/planing/middlebody-beam-ft</property>
<property>hydro/planing/middlebody-keel-z-ft</property>
<property>hydro/planing/middlebody-end-x-ft</property>
<property>hydro/planing/afterbody-length-ft</property>
<property>hydro/planing/afterbody-beam-ft</property>
<property>hydro/planing/afterbody-keel-z-ft</property>
<property>hydro/planing/afterbody-end-x-ft</property>
<!-- Other parameters. -->
<property value="1.0">hydro/planing/forebody-normal-force-factor</property>
<property value="1.0">hydro/planing/middlebody-normal-force-factor</property>
<property value="1.0">hydro/planing/afterbody-normal-force-factor</property>
<property>hydro/planing/forebody-skin-friction-coefficient</property>
<property>hydro/planing/middlebody-skin-friction-coefficient</property>
<property>hydro/planing/afterbody-skin-friction-coefficient</property>
<channel name="Planing dynamics based on [Wagner:1933:POW]">
<fcs_function name="hydro/planing/forebody-entry-point-x-ft">
<function>
<description>The intersection point with the water surface.</description>
<quotient>
<sum>
<quotient>
<property>hydro/hull/height-agl-ft</property>
<cos><property>hydro/hull/pitch-rad</property></cos>
</quotient>
<property>hydro/planing/forebody-keel-z-ft</property>
</sum>
<tan><property>hydro/hull/pitch-rad</property></tan>
</quotient>
</function>
</fcs_function>
<fcs_function name="hydro/planing/middlebody-entry-point-x-ft">
<function>
<description>The intersection point with the water surface.</description>
<quotient>
<sum>
<quotient>
<property>hydro/hull/height-agl-ft</property>
<cos><property>hydro/hull/pitch-rad</property></cos>
</quotient>
<property>hydro/planing/middlebody-keel-z-ft</property>
</sum>
<tan><property>hydro/hull/pitch-rad</property></tan>
</quotient>
</function>
</fcs_function>
<fcs_function name="hydro/planing/afterbody-entry-point-x-ft">
<function>
<description>The intersection point with the water surface.</description>
<quotient>
<sum>
<quotient>
<property>hydro/hull/height-agl-ft</property>
<cos><property>hydro/hull/pitch-rad</property></cos>
</quotient>
<property>hydro/planing/afterbody-keel-z-ft</property>
</sum>
<tan><property>hydro/hull/pitch-rad</property></tan>
</quotient>
</function>
</fcs_function>
<fcs_function name="hydro/planing/forebody-wetted-keel-ft">
<function>
<description>The length of keel below the free water surface.</description>
<max>
<value>0.0</value>
<min>
<property>hydro/planing/forebody-length-ft</property>
<sum>
<product>
<ge>
<property>hydro/hull/pitch-rad</property>
<value>0.0</value>
</ge>
<difference>
<property>hydro/planing/forebody-end-x-ft</property>
<property>hydro/planing/forebody-entry-point-x-ft</property>
</difference>
</product>
<product>
<lt>
<property>hydro/hull/pitch-rad</property>
<value>0.0</value>
</lt>
<difference>
<property>hydro/planing/forebody-entry-point-x-ft</property>
<difference>
<property>hydro/planing/forebody-end-x-ft</property>
<property>hydro/planing/forebody-length-ft</property>
</difference>
</difference>
</product>
</sum>
</min>
</max>
</function>
</fcs_function>
<fcs_function name="hydro/planing/middlebody-wetted-keel-ft">
<function>
<description>The length of keel below the free water surface.</description>
<max>
<value>0.0</value>
<min>
<property>hydro/planing/middlebody-length-ft</property>
<sum>
<product>
<ge>
<property>hydro/hull/pitch-rad</property>
<value>0.0</value>
</ge>
<difference>
<property>hydro/planing/middlebody-end-x-ft</property>
<property>hydro/planing/middlebody-entry-point-x-ft</property>
</difference>
</product>
<product>
<lt>
<property>hydro/hull/pitch-rad</property>
<value>0.0</value>
</lt>
<difference>
<property>hydro/planing/middlebody-entry-point-x-ft</property>
<difference>
<property>hydro/planing/middlebody-end-x-ft</property>
<property>hydro/planing/middlebody-length-ft</property>
</difference>
</difference>
</product>
</sum>
</min>
</max>
</function>
</fcs_function>
<fcs_function name="hydro/planing/afterbody-wetted-keel-ft">
<function>
<description>The length of keel below the free water surface.</description>
<max>
<value>0.0</value>
<min>
<property>hydro/planing/afterbody-length-ft</property>
<sum>
<product>
<ge>
<property>hydro/hull/pitch-rad</property>
<value>0.0</value>
</ge>
<difference>
<property>hydro/planing/afterbody-end-x-ft</property>
<property>hydro/planing/afterbody-entry-point-x-ft</property>
</difference>
</product>
<product>
<lt>
<property>hydro/hull/pitch-rad</property>
<value>0.0</value>
</lt>
<difference>
<property>hydro/planing/afterbody-entry-point-x-ft</property>
<difference>
<property>hydro/planing/afterbody-end-x-ft</property>
<property>hydro/planing/afterbody-length-ft</property>
</difference>
</difference>
</product>
</sum>
</min>
</max>
</function>
</fcs_function>
<fcs_function name="hydro/planing/forebody-normal-force-lbs">
<function>
<description>
The normal force produced by the planing surface.
NOTE: The formulation is only valid for very small pitch angles and
the pitch angle should also be adjusted for down-wash.
See [Wagner:1933:POW].
</description>
<max>
<value>0.0</value>
<product>
<property>hydro/planing/forebody-normal-force-factor</property>
<value>3.1415927</value>
<property>hydro/qbar-u-psf</property>
<property>hydro/planing/forebody-beam-ft</property>
<property>hydro/planing/forebody-wetted-keel-ft</property>
<sin><property>hydro/hull/pitch-rad</property></sin>
</product>
</max>
</function>
</fcs_function>
<fcs_function name="hydro/planing/middlebody-normal-force-lbs">
<function>
<description>
The normal force produced by the planing surface.
NOTE: The formulation is only valid for very small pitch angles and
the pitch angle should also be adjusted for down-wash.
See [Wagner:1933:POW].
</description>
<max>
<value>0.0</value>
<product>
<property>hydro/planing/middlebody-normal-force-factor</property>
<value>3.1415927</value>
<property>hydro/qbar-u-psf</property>
<property>hydro/planing/middlebody-beam-ft</property>
<property>hydro/planing/middlebody-wetted-keel-ft</property>
<sin><property>hydro/hull/pitch-rad</property></sin>
</product>
</max>
</function>
</fcs_function>
<fcs_function name="hydro/planing/afterbody-normal-force-lbs">
<function>
<description>
The normal force produced by the planing surface.
NOTE: The formulation is only valid for very small pitch angles and
the pitch angle should also be adjusted for down-wash.
See [Wagner:1933:POW].
</description>
<max>
<value>0.0</value>
<product>
<property>hydro/planing/afterbody-normal-force-factor</property>
<value>3.1415927</value>
<property>hydro/qbar-u-psf</property>
<property>hydro/planing/afterbody-beam-ft</property>
<property>hydro/planing/afterbody-wetted-keel-ft</property>
<sin><property>hydro/hull/pitch-rad</property></sin>
</product>
</max>
</function>
</fcs_function>
</channel>
<channel name="Reynolds numbers for the planing surfaces">
<fcs_function name="hydro/planing/forebody-Reynolds-number">
<function>
<description>
The Reynolds number for the planing surface based on the
current wetted keel length.
</description>
<quotient>
<product>
<property>hydro/vbx-fps</property>
<property>hydro/planing/forebody-wetted-keel-ft</property>
</product>
<property>hydro/environment/kinematic-viscosity-ft2_sec</property>
</quotient>
</function>
</fcs_function>
<fcs_function name="hydro/planing/middlebody-Reynolds-number">
<function>
<description>
The Reynolds number for the planing surface based on the
current wetted keel length.
</description>
<quotient>
<product>
<property>hydro/vbx-fps</property>
<property>hydro/planing/middlebody-wetted-keel-ft</property>
</product>
<property>hydro/environment/kinematic-viscosity-ft2_sec</property>
</quotient>
</function>
</fcs_function>
<fcs_function name="hydro/planing/afterbody-Reynolds-number">
<function>
<description>
The Reynolds number for the planing surface based on the
current wetted keel length.
</description>
<quotient>
<product>
<property>hydro/vbx-fps</property>
<property>hydro/planing/afterbody-wetted-keel-ft</property>
</product>
<property>hydro/environment/kinematic-viscosity-ft2_sec</property>
</quotient>
</function>
</fcs_function>
</channel>
<channel name="Fbx">
<fcs_function name="hydro/planing/forebody-induced-fbx-force-lbs">
<function>
<description>Drag (induced) due to planing. FIXME: direction/frame?</description>
<product>
<value>-1.0</value>
<max>
<value>0.0</value>
<product>
<property>hydro/planing/forebody-normal-force-lbs</property>
<sin><property>hydro/hull/pitch-rad</property></sin>
</product>
</max>
</product>
</function>
</fcs_function>
<fcs_function name="hydro/planing/middlebody-induced-fbx-force-lbs">
<function>
<description>Drag (induced) due to planing. FIXME: direction/frame?</description>
<product>
<value>-1.0</value>
<max>
<value>0.0</value>
<product>
<property>hydro/planing/middlebody-normal-force-lbs</property>
<sin><property>hydro/hull/pitch-rad</property></sin>
</product>
</max>
</product>
</function>
</fcs_function>
<fcs_function name="hydro/planing/afterbody-induced-fbx-force-lbs">
<function>
<description>Drag (induced) due to planing. FIXME: direction/frame?</description>
<product>
<value>-1.0</value>
<max>
<value>0.0</value>
<product>
<property>hydro/planing/afterbody-normal-force-lbs</property>
<sin><property>hydro/hull/pitch-rad</property></sin>
</product>
</max>
</product>
</function>
</fcs_function>
<fcs_function name="hydro/planing/forebody-friction-fbx-force-lbs">
<function>
<description>Drag due to skin friction.</description>
<product>
<value>-1.0</value>
<property>hydro/planing/forebody-skin-friction-coefficient</property>
<property>hydro/qbar-u-psf</property>
<property>hydro/planing/forebody-beam-ft</property>
<property>hydro/planing/forebody-wetted-keel-ft</property>
</product>
</function>
</fcs_function>
<fcs_function name="hydro/planing/middlebody-friction-fbx-force-lbs">
<function>
<description>Drag due to skin friction.</description>
<product>
<value>-1.0</value>
<property>hydro/planing/middlebody-skin-friction-coefficient</property>
<property>hydro/qbar-u-psf</property>
<property>hydro/planing/middlebody-beam-ft</property>
<property>hydro/planing/middlebody-wetted-keel-ft</property>
</product>
</function>
</fcs_function>
<fcs_function name="hydro/planing/afterbody-friction-fbx-force-lbs">
<function>
<description>Drag due to skin friction.</description>
<product>
<value>-1.0</value>
<property>hydro/planing/afterbody-skin-friction-coefficient</property>
<property>hydro/qbar-u-psf</property>
<property>hydro/planing/afterbody-beam-ft</property>
<property>hydro/planing/afterbody-wetted-keel-ft</property>
</product>
</function>
</fcs_function>
</channel>
<channel name="Fby">
<fcs_function name="hydro/planing/forebody-fby-force-lbs">
<function>
<description>
Fby force due to planing.
FIXME: model/direction/frame?
</description>
<product>
<property>hydro/planing/forebody-normal-force-lbs</property>
<cos><property>hydro/hull/pitch-rad</property></cos>
<sin><property>hydro/hull/roll-rad</property></sin>
</product>
</function>
</fcs_function>
<fcs_function name="hydro/planing/middlebody-fby-force-lbs">
<function>
<description>
Fby force due to planing.
FIXME: model/direction/frame?
</description>
<product>
<property>hydro/planing/middlebody-normal-force-lbs</property>
<cos><property>hydro/hull/pitch-rad</property></cos>
<sin><property>hydro/hull/roll-rad</property></sin>
</product>
</function>
</fcs_function>
<fcs_function name="hydro/planing/afterbody-fby-force-lbs">
<function>
<description>
Fby force due to planing.
FIXME: model/direction/frame?
</description>
<product>
<property>hydro/planing/afterbody-normal-force-lbs</property>
<cos><property>hydro/hull/pitch-rad</property></cos>
<sin><property>hydro/hull/roll-rad</property></sin>
</product>
</function>
</fcs_function>
</channel>
<channel name="Lift">
<fcs_function name="hydro/planing/forebody-lift-force-lbs">
<function>
<description>Lift due to planing. FIXME: direction/frame?</description>
<max>
<value>0.0</value>
<product>
<property>hydro/planing/forebody-normal-force-lbs</property>
<cos><property>hydro/hull/pitch-rad</property></cos>
<cos><property>hydro/hull/roll-rad</property></cos>
</product>
</max>
</function>
</fcs_function>
<fcs_function name="hydro/planing/middlebody-lift-force-lbs">
<function>
<description>Lift due to planing. FIXME: direction/frame?</description>
<max>
<value>0.0</value>
<product>
<property>hydro/planing/middlebody-normal-force-lbs</property>
<cos><property>hydro/hull/pitch-rad</property></cos>
<cos><property>hydro/hull/roll-rad</property></cos>
</product>
</max>
</function>
</fcs_function>
<fcs_function name="hydro/planing/afterbody-lift-force-lbs">
<function>
<description>Lift due to planing. FIXME: direction/frame?</description>
<max>
<value>0.0</value>
<product>
<property>hydro/planing/afterbody-normal-force-lbs</property>
<cos><property>hydro/hull/pitch-rad</property></cos>
<cos><property>hydro/hull/roll-rad</property></cos>
</product>
</max>
</function>
</fcs_function>
</channel>
<channel name="Yaw">
<!-- FIXME! -->
</channel>
<channel name="Pitch">
<fcs_function name="hydro/planing/forebody-pitch-moment-lbsft">
<description>
Pitch moment due to planing.
FIXME: direction/frame? Limits on the acting point?
</description>
<function>
<sum>
<product>
<value>-1.0</value>
<property>hydro/planing/forebody-normal-force-lbs</property>
<difference>
<property>hydro/planing/forebody-end-x-ft</property>
<product>
<value>0.75</value>
<property>hydro/planing/forebody-wetted-keel-ft</property>
</product>
</difference>
</product>
<product>
<value>-1.0</value>
<property>hydro/planing/forebody-friction-fbx-force-lbs</property>
<property>hydro/planing/forebody-keel-z-ft</property>
<cos><property>hydro/hull/pitch-rad</property></cos>
</product>
</sum>
</function>
</fcs_function>
<fcs_function name="hydro/planing/middlebody-pitch-moment-lbsft">
<description>
Pitch moment due to planing.
FIXME: direction/frame? Limits on the acting point?
</description>
<function>
<sum>
<product>
<value>-1.0</value>
<property>hydro/planing/middlebody-normal-force-lbs</property>
<difference>
<property>hydro/planing/middlebody-end-x-ft</property>
<product>
<value>0.75</value>
<property>hydro/planing/middlebody-wetted-keel-ft</property>
</product>
</difference>
</product>
<product>
<value>-1.0</value>
<property>hydro/planing/middlebody-friction-fbx-force-lbs</property>
<property>hydro/planing/middlebody-keel-z-ft</property>
<cos><property>hydro/hull/pitch-rad</property></cos>
</product>
</sum>
</function>
</fcs_function>
<fcs_function name="hydro/planing/afterbody-pitch-moment-lbsft">
<description>
Pitch moment due to planing.
FIXME: direction/frame? Limits on the acting point?
</description>
<function>
<sum>
<product>
<value>-1.0</value>
<property>hydro/planing/afterbody-normal-force-lbs</property>
<difference>
<property>hydro/planing/afterbody-end-x-ft</property>
<product>
<value>0.75</value>
<property>hydro/planing/afterbody-wetted-keel-ft</property>
</product>
</difference>
</product>
<product>
<value>-1.0</value>
<property>hydro/planing/afterbody-friction-fbx-force-lbs</property>
<property>hydro/planing/afterbody-keel-z-ft</property>
<cos><property>hydro/hull/pitch-rad</property></cos>
</product>
</sum>
</function>
</fcs_function>
</channel>
<channel name="Roll">
<fcs_function name="hydro/planing/forebody-roll-moment-lbsft">
<description>
Roll moment due to planing.
FIXME: direction/frame? Limits on the acting point?
</description>
<function>
<product>
<property>hydro/planing/forebody-fby-force-lbs</property>
<!-- FIXME: dependency on pitch? -->
<property>hydro/planing/forebody-keel-z-ft</property>
</product>
</function>
</fcs_function>
<fcs_function name="hydro/planing/middlebody-roll-moment-lbsft">
<description>
Roll moment due to planing.
FIXME: direction/frame? Limits on the acting point?
</description>
<function>
<product>
<property>hydro/planing/middlebody-fby-force-lbs</property>
<!-- FIXME: dependency on pitch? -->
<property>hydro/planing/middlebody-keel-z-ft</property>
</product>
</function>
</fcs_function>
<fcs_function name="hydro/planing/afterbody-roll-moment-lbsft">
<description>
Roll moment due to planing.
FIXME: direction/frame? Limits on the acting point?
</description>
<function>
<product>
<property>hydro/planing/afterbody-fby-force-lbs</property>
<!-- FIXME: dependency on pitch? -->
<property>hydro/planing/afterbody-keel-z-ft</property>
</product>
</function>
</fcs_function>
</channel>
</system>

View file

@ -3,7 +3,7 @@
Hydrodynamics section for JSBSim.
Copyright (C) 2008 - 2014 Anders Gidenstam (anders(at)gidenstam.org)
Copyright (C) 2008 - 2015 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
@ -198,6 +198,7 @@
<!-- Environment -->
<property value="0.0">hydro/environment/water-level-ft</property>
<property value="1.9736403">hydro/environment/rho-slug_ft3</property>
<property value="1.1302106e-05">hydro/environment/kinematic-viscosity-ft2_sec</property> <!-- Sea water at 20 degC. -->
<property value="0.0">hydro/environment/current-from-north-fps</property>
<property value="0.0">hydro/environment/current-from-east-fps</property>
@ -610,6 +611,16 @@
<property> attitude/pitch-rad </property>
</cos>
</product>
<product>
<value> -0.083333333 </value>
<difference>
<property> metrics/hydro-rp-y-in </property>
<property> inertia/cg-y-in </property>
</difference>
<sin>
<property> attitude/roll-rad </property>
</sin>
</product>
</sum>
<property> hydro/environment/water-level-ft </property>
</difference>