From 472d852aaef8e02cf920c199b033f5bb6c0f7859 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Fri, 28 Jul 2017 19:30:20 +0200 Subject: [PATCH 001/104] minor style modifications --- src/pyfme/models/constants.py | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/pyfme/models/constants.py b/src/pyfme/models/constants.py index f01b8e6..4445dff 100644 --- a/src/pyfme/models/constants.py +++ b/src/pyfme/models/constants.py @@ -8,39 +8,40 @@ ------------------ Sources: -[1] - COESA standard - U.S. Standard Atmosphere, 1976, U.S. Government Printing Office, Washington, D.C., 1976: +[1] - COESA standard - U.S. Standard Atmosphere, 1976, U.S. Government Printing + Office, Washington, D.C., 1976: http://hdl.handle.net/2060/19770009539 -[2] - "Introducción a la Ingenería Aeroespacial". Sebastián Franchini, Óscar López García. UPM +[2] - "Introducción a la Ingenería Aeroespacial". Sebastián Franchini, + Óscar López García. UPM """ # AIR CONSTANTS - -GAMMA_AIR = 1.4 # Adiabatic index or ratio of specific heats (dry air at 20º C) - [1] -R_AIR = 287.05287 # Specific gas constant for dry air (J/(Kg·K)) +# Adiabatic index or ratio of specific heats (dry air at 20º C) - [1] +GAMMA_AIR = 1.4 +# Specific gas constant for dry air (J/(Kg·K)) +R_AIR = 287.05287 # Air at sea level conditions h=0 (m) - RHO_0 = 1.225 # Density at sea level (kg/m3) - [1] P_0 = 101325 # Pressure at sea level (Pa) - [1] -T_0 = 288.15 # Temperature at sea level (K) - [1] +T_0 = 288.15 # Temperature at sea level (K) - [1] SOUND_VEL_0 = 340.293990543 # Sound speed at sea level (m/s) # EARTH CONSTANTS - GRAVITY = 9.80665 # Gravity of Ethe Earth (m/s^2) - [1] -STD_GRAVITATIONAL_PARAMETER = 3.986004418e14 # Standard Gravitational Parameter is the product of the gravitational -# constant G and the mass M of the body (m³/s²) +# Standard Gravitational Parameter +# product of the gravitational constant G and the mass M of the body (m³/s²) +STD_GRAVITATIONAL_PARAMETER = 3.986004418e14 EARTH_MASS = 5.9722e24 # Mass of the Earth (kg) GRAVITATIONAL_CONSTANT = 6.67384e11 # Gravitational constant (N·m²/kg²) EARTH_MEAN_RADIUS = 6371000 # Mean radius of the Earth (m) - [2] # CONVERSIONS - lbs2kg = 0.453592 # Pounds (lb) to kilograms (kg) ft2m = 0.3048 # Feet (ft) to meters (m) slug2kg = 14.5939 # Slug to kilograms (kg) -slugft2_2_kgm2 = 1.35581795 # Slug*feet^2 to kilograms*meters^2 (kg*m^2) \ No newline at end of file +slugft2_2_kgm2 = 1.35581795 # Slug*feet^2 to kilograms*meters^2 (kg*m^2) From 9fc3730ed2b229e08b866ff1ce1cb0d10ade1a84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Fri, 28 Jul 2017 19:32:39 +0200 Subject: [PATCH 002/104] unified whole system in single function to avoid integration error --- src/pyfme/models/euler_flat_earth.py | 329 +++++---------------------- 1 file changed, 58 insertions(+), 271 deletions(-) diff --git a/src/pyfme/models/euler_flat_earth.py b/src/pyfme/models/euler_flat_earth.py index 363112a..b3b9941 100644 --- a/src/pyfme/models/euler_flat_earth.py +++ b/src/pyfme/models/euler_flat_earth.py @@ -16,41 +16,47 @@ """ import numpy as np +from numpy import sin, cos -def lamceq(time, vel, mass, inertia, forces, moments): - """Linear and angular momentum conservation equations +def euler_flat_earth_eqs(time, state_vector, mass, inertia, forces, moments): + """Euler flat earth equations: linear momentum equations, angular + momentum equations, angular kinematic equations, linear kinematic + equations. Parameters ---------- time : float Current time (s). - vel : array_like + state_vector : array_like, shape(9) Current value of absolute velocity and angular velocity, both expressed - in body axes (u, v, w, p, q, r) in (m/s, m/s, m/s, rad/s, rad/s rad/s). + in body axes, euler angles and position in Earth axis. + (u, v, w, p, q, r, theta, phi, psi, x, y, z) + (m/s, m/s, m/s, rad/s, rad/s rad/s, rad, rad, rad, m, m ,m). mass : float Current mass of the aircraft (kg). - inertia : array_like + inertia : array_like, shape(3, 3) 3x3 tensor of inertia of the aircraft (kg * m2) Current equations assume that the aircraft has a symmetry plane (x_b - z_b), thus J_xy and J_yz must be null. - forces : array_like - 3 dimensional vector containing the total total_forces (including gravity) in - x_b, y_b, z_b axes (N). - moments : array_like - 3 dimensional vector containing the total total_moments in x_b, y_b, z_b axes - (N·m). + forces : array_like, shape(3) + 3 dimensional vector containing the total total_forces (including + gravity) in x_b, y_b, z_b axes (N). + moments : array_like, shape(3) + 3 dimensional vector containing the total total_moments in x_b, + y_b, z_b axes (N·m). Returns ------- - accel : array_like + dstate_dt : array_like, shape(9) + Derivative with respect to time of the state vector. Current value of absolute acceleration and angular acceleration, both - expressed in body axes (du_dt, dv_dt, dw_dt, dp_dt, dq_dt, dr_dt) in - (m/s2 , m/s2, m/s2, rad/s2, rad/s2, rad/s2). - - See Also - -------- - kleq, kaeq + expressed in body axes, Euler angles derivatives and velocity with + respect to Earth Axis. + (du_dt, dv_dt, dw_dt, dp_dt, dq_dt, dr_dt, dtheta_dt, dphi_dt, + dpsi_dt, dx_dt, dy_dt, dz_dt) + (m/s² , m/s², m/s², rad/s², rad/s², rad/s², rad/s, rad/s, rad/s, + m/s, m/s, m/s). References ---------- @@ -58,26 +64,23 @@ def lamceq(time, vel, mass, inertia, forces, moments): p. 149 (5.8 The Flat-Earth Approximation), 2012. .. [2] M. A. Gómez Tierno y M. Pérez Cortés, "Mecánica del Vuelo", Garceta - Grupo Editorial, pp.18-25 (Tema 2: Ecuaciones Generales del Moviemiento), - 2012. + Grupo Editorial, pp.18-25 (Tema 2: Ecuaciones Generales del + Moviemiento), 2012. """ - + # Note definition of total_moments of inertia p.21 Gomez Tierno, et al + # Mecánica de vuelo Ix = inertia[0, 0] Iy = inertia[1, 1] Iz = inertia[2, 2] - - # Note definition of total_moments of inertia p.21 Gomez Tierno, et al Mecánica - # de vuelo - # TODO: define total_moments of inertia like this for all the code. Jxz = - inertia[0, 2] Fx, Fy, Fz = forces - L, M, N = moments - u, v, w = vel[0:3] - p, q, r = vel[3:6] + u, v, w = state_vector[0:3] + p, q, r = state_vector[3:6] + theta, phi, psi = state_vector[6:9] # Linear momentum equations du_dt = Fx / mass + r * v - q * w @@ -85,246 +88,30 @@ def lamceq(time, vel, mass, inertia, forces, moments): dw_dt = Fz / mass + q * u - p * v # Angular momentum equations - dp_dt = (L * Iz + N * Jxz - q * r * (Iz ** 2 - Iz * Iy + Jxz ** 2) + - p * q * Jxz * (Ix + Iz - Iy)) / (Ix * Iz - Jxz ** 2) - - dq_dt = (M + (Iz - Ix) * p * r - Jxz * (p ** 2 - r ** 2)) / Iy - - dr_dt = (L * Jxz + N * Ix + p * q * (Ix ** 2 - Ix * Iy + Jxz ** 2) - - q * r * Jxz * (Iz + Ix - Iy)) / (Ix * Iz - Jxz ** 2) - - return np.array([du_dt, dv_dt, dw_dt, dp_dt, dq_dt, dr_dt]) - - -def lamceq_jac(time, vel, mass, inertia): - """ Jacobian of linear and angular momentum equations - - Parameters - ---------- - time : float - Current time (s) - vel : array_like - Current value of absolute velocity and angular velocity, both expressed - in body axes (u, v, w, p, q, r) in (m/s, m/s, m/s, rad/s, rad/s rad/s). - mass : float - Current mass of the aircraft (kg). - inertia : array_like - 3x3 tensor of inertia of the aircraft (kg * m2) - Current equations assume that the aircraft has a symmetry plane - (x_b - z_b), thus J_xy and J_yz must be null. - - Returns - ------- - jac : array_like - Current value of jacobian of linear and angular momentum equationes. It - is a 6x6 matrix. - - See Also - -------- - lamceq - - References - ---------- - .. [1] B. Etkin, "Dynamics of Atmospheric Flight", Courier Corporation, - p. 149 (5.8 The Flat-Earth Approximation), 2012. - - .. [2] M. A. Gómez Tierno y M. Pérez Cortés, "Mecánica del Vuelo", Garceta - Grupo Editorial, pp.18-25 (Tema 2: Ecuaciones Generales del Moviemiento), - 2012. - """ - Ix = inertia[0, 0] - Iy = inertia[1, 1] - Iz = inertia[2, 2] - - # Note definition of total_moments of inertia p.21 Gomez Tierno, et al Mecánica - # de vuelo - # TODO: define total_moments of inertia like this for all the code. - - Jxz = - inertia[0, 2] - - u, v, w = vel[0:3] - p, q, r = vel[3:6] - - jac = np.zeros([6, 6]) - - jac[0, 1] = r - jac[0, 2] = - q - jac[0, 4] = - w - jac[0, 5] = v - - jac[1, 0] = - r - jac[1, 2] = p - jac[1, 3] = w - jac[1, 5] = - u - - jac[2, 0] = q - jac[2, 1] = - p - jac[2, 3] = - v - jac[2, 4] = u - - jac[3, 3] = Jxz * q * (Ix + Iz - Iy) / (Ix * Iz - Jxz ** 2) - jac[3, 4] = (p * Jxz * (Ix + Iz - Iy) - r * (Iz ** 2 - Iz * Iy + Jxz ** 2)) \ - / (Ix * Iz - Jxz ** 2) - jac[3, 5] = - q * (Iz ** 2 - Iz * Iy + Jxz ** 2) / (Ix * Iz - Jxz ** 2) - - jac[4, 3] = ((Iz - Ix) * r - 2 * Jxz * p) / Iy - jac[4, 5] = ((Iz - Ix) * p + 2 * Jxz * r) / Iy - - jac[5, 3] = q * (Ix ** 2 - Ix * Iy + Jxz ** 2) / (Ix * Iz - Jxz ** 2) - jac[5, 4] = (p * (Ix ** 2 - Ix * Iy + Jxz ** 2) - r * Jxz * (Ix + Iz - Iy)) \ - / (Ix * Iz - Jxz ** 2) - jac[5, 5] = - q * Jxz * (Iz + Ix - Iy) / (Ix * Iz - Jxz ** 2) - - return jac - - -def kaeq(time, euler_angles, ang_vel): - """ Kinematic angular equations - - Parameters - ---------- - time : float - Current time (s) - euler_angles : array_like - Current value of euler angles following z-y'-x'' convention - (theta, phi, psi) or (pitch, roll, yaw) in (rad, rad, rad). - ang_vel : array_like - Current value of absolute angular velocity, expressed in body axes - (p, q, r) in (rad/s, rad/s rad/s). - - Returns - ------- - deuler_angles_dt : array_like - Current value of euler angle time derivative - (dtheta_dt, dphi_dt, dpsi_dt) in (rad/s, rad/s, rad/s). - - See Also - -------- - lamceq, kleq - - References - ---------- - .. [1] B. Etkin, "Dynamics of Atmospheric Flight", Courier Corporation, - p. 149 (5.8 The Flat-Earth Approximation), 2012. - - .. [2] M. A. Gómez Tierno y M. Pérez Cortés, "Mecánica del Vuelo", Garceta - Grupo Editorial, pp.18-25 (Tema 2: Ecuaciones Generales del Moviemiento), - 2012. - - """ - - theta, phi, psi = euler_angles - p, q, r = ang_vel - - dtheta_dt = q * np.cos(phi) - r * np.sin(phi) - - dphi_dt = p + (q * np.sin(phi) + r * np.cos(phi)) * np.tan(theta) - - dpsi_dt = (q * np.sin(phi) + r * np.cos(phi)) / np.cos(theta) - - return np.array([dtheta_dt, dphi_dt, dpsi_dt]) - - -def kaeq_jac(time, euler_angles, ang_vel): - """Jacobian of kinematic angular equations - - Parameters - ---------- - time : float - Current time (s) - euler_angles : array_like - Current value of euler angles following z-y'-x'' convention - (theta, phi, psi) or (pitch, roll, yaw) in (rad, rad, rad). - ang_vel : array_like - Current value of absolute angular velocity, expressed in body axes - (p, q, r) in (rad/s, rad/s rad/s). - - Returns - ------- - jac : array_like - Current value of jacobian of kinematic angular equations. It is a 3x3 - matrix. - - See Also - -------- - kaeq - - References - ---------- - .. [1] B. Etkin, "Dynamics of Atmospheric Flight", Courier Corporation, - p. 149 (5.8 The Flat-Earth Approximation), 2012. - - .. [2] M. A. Gómez Tierno y M. Pérez Cortés, "Mecánica del Vuelo", Garceta - Grupo Editorial, pp.18-25 (Tema 2: Ecuaciones Generales del Moviemiento), - 2012. - """ - theta, phi, psi = euler_angles - p, q, r = ang_vel - - jac = np.zeros([3, 3]) - - jac[0, 1] = - (q * np.sin(phi) + r * np.cos(phi)) - - jac[1, 0] = (q * np.sin(phi) + r * np.cos(phi)) / np.cos(theta) ** 2 - jac[1, 1] = (q * np.cos(phi) - r * np.sin(phi)) * np.tan(theta) - - jac[2, 0] = (q * np.sin(phi) + r * np.cos(phi)) * (np.tan(theta) / - np.cos(theta)) - jac[2, 1] = (q * np.cos(phi) - r * np.sin(phi)) / np.cos(theta) - - return jac - - -def kleq(time, lin_vel, euler_angles): - """Kinematic linear equations - - Parameters - ---------- - time : float - Current time (s) - euler_angles : array_like - Current value of euler angles following z-y'-x'' convention - (theta, phi, psi) or (pitch, roll, yaw) in (rad, rad, rad). - lin_vel : array_like - Current value of absolute linear velocity, expressed in body axes - (u, v, w) in (m/s, m/s m/s). - - Returns - ------- - dpos_dt : array_like - Current value of absolute linear velocity, expressed in Earth axes - (dx_dt, dy_dt, dz_dt) in (m/s, m/s, m/s). - - See Also - -------- - kaeq, lamceq - - References - ---------- - .. [1] B. Etkin, "Dynamics of Atmospheric Flight", Courier Corporation, - p. 149 (5.8 The Flat-Earth Approximation), 2012. - - .. [2] M. A. Gómez Tierno y M. Pérez Cortés, "Mecánica del Vuelo", Garceta - Grupo Editorial, pp.18-25 (Tema 2: Ecuaciones Generales del Movimiento), - 2012. - """ - - u, v, w = lin_vel - theta, phi, psi = euler_angles - - dx_dt = np.cos(theta) * np.cos(psi) * u + (np.sin(phi) * np.sin(theta) * - np.cos(psi) - np.cos( - phi) * np.sin(psi)) * v + (np.cos(phi) * - np.sin(theta) * np.cos(psi) + np.sin( - phi) * np.sin(psi)) * w - - dy_dt = np.cos(theta) * np.sin(psi) * u + (np.sin(phi) * np.sin(theta) * - np.sin(psi) + np.cos( - phi) * np.cos(psi)) * v + (np.cos(phi) * - np.sin(theta) * np.sin(psi) - np.sin( - phi) * np.cos(psi)) * w - - dz_dt = - np.sin(theta) * u + np.sin(phi) * np.cos(theta) * v + \ - np.cos(phi) * np.cos(theta) * w - - return np.array([dx_dt, dy_dt, dz_dt]) + dp_dt = (L*Iz + N*Jxz - q*r * (Iz**2 - Iz*Iy + Jxz**2) + + p*q*Jxz * (Ix + Iz - Iy)) / (Ix*Iz - Jxz**2) + dq_dt = (M + (Iz - Ix) * p*r - Jxz * (p**2 - r**2)) / Iy + dr_dt = (L*Jxz + N*Ix + p*q * (Ix**2 - Ix*Iy + Jxz**2) - + q*r*Jxz * (Iz + Ix - Iy)) / (Ix*Iz - Jxz**2) + + # Angular Kinematic equations + dtheta_dt = q * cos(phi) - r * sin(phi) + dphi_dt = p + (q * sin(phi) + r * cos(phi)) * np.tan(theta) + dpsi_dt = (q * sin(phi) + r * cos(phi)) / cos(theta) + + # Linear kinematic equations + dx_dt = (cos(theta) * cos(psi) * u + + (sin(phi) * sin(theta) * cos(psi) - cos(phi) * sin(psi)) * v + + (cos(phi) * sin(theta) * cos(psi) + sin(phi) * sin(psi)) * w) + dy_dt = (cos(theta) * sin(psi) * u + + (sin(phi) * sin(theta) * sin(psi) + cos(phi) * cos(psi)) * v + + (cos(phi) * sin(theta) * sin(psi) - sin(phi) * cos(psi)) * w) + dz_dt = -u*sin(theta) + v*sin(phi)*cos(theta) + w*cos(phi)*cos(theta) + + return np.array([du_dt, dv_dt, dw_dt, dp_dt, dq_dt, dr_dt, dtheta_dt, + dphi_dt, dpsi_dt, dx_dt, dy_dt, dz_dt]) + + +def euler_flat_earth_eqs_jac(time, state_vector, mass, inertia, forces, moments): + # TODO: calculate jacobians + raise NotImplementedError From d48c78300a4b3725768eafd9083c57f6526f75e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Fri, 28 Jul 2017 20:01:56 +0200 Subject: [PATCH 003/104] refactored system class --- src/pyfme/models/__init__.py | 2 +- src/pyfme/models/euler_flat_earth.py | 214 +++++++++++--------- src/pyfme/models/systems.py | 275 +++++++++----------------- src/pyfme/models/tests/test_models.py | 18 ++ 4 files changed, 227 insertions(+), 282 deletions(-) diff --git a/src/pyfme/models/__init__.py b/src/pyfme/models/__init__.py index f06ce65..aeeee6f 100644 --- a/src/pyfme/models/__init__.py +++ b/src/pyfme/models/__init__.py @@ -1 +1 @@ -from .systems import EulerFlatEarth \ No newline at end of file +from pyfme.models.euler_flat_earth import EulerFlatEarth diff --git a/src/pyfme/models/euler_flat_earth.py b/src/pyfme/models/euler_flat_earth.py index b3b9941..bb8d5a5 100644 --- a/src/pyfme/models/euler_flat_earth.py +++ b/src/pyfme/models/euler_flat_earth.py @@ -18,100 +18,120 @@ import numpy as np from numpy import sin, cos - -def euler_flat_earth_eqs(time, state_vector, mass, inertia, forces, moments): - """Euler flat earth equations: linear momentum equations, angular - momentum equations, angular kinematic equations, linear kinematic - equations. - - Parameters - ---------- - time : float - Current time (s). - state_vector : array_like, shape(9) - Current value of absolute velocity and angular velocity, both expressed - in body axes, euler angles and position in Earth axis. - (u, v, w, p, q, r, theta, phi, psi, x, y, z) - (m/s, m/s, m/s, rad/s, rad/s rad/s, rad, rad, rad, m, m ,m). - mass : float - Current mass of the aircraft (kg). - inertia : array_like, shape(3, 3) - 3x3 tensor of inertia of the aircraft (kg * m2) - Current equations assume that the aircraft has a symmetry plane - (x_b - z_b), thus J_xy and J_yz must be null. - forces : array_like, shape(3) - 3 dimensional vector containing the total total_forces (including - gravity) in x_b, y_b, z_b axes (N). - moments : array_like, shape(3) - 3 dimensional vector containing the total total_moments in x_b, - y_b, z_b axes (N·m). - - Returns - ------- - dstate_dt : array_like, shape(9) - Derivative with respect to time of the state vector. - Current value of absolute acceleration and angular acceleration, both - expressed in body axes, Euler angles derivatives and velocity with - respect to Earth Axis. - (du_dt, dv_dt, dw_dt, dp_dt, dq_dt, dr_dt, dtheta_dt, dphi_dt, - dpsi_dt, dx_dt, dy_dt, dz_dt) - (m/s² , m/s², m/s², rad/s², rad/s², rad/s², rad/s, rad/s, rad/s, - m/s, m/s, m/s). - - References - ---------- - .. [1] B. Etkin, "Dynamics of Atmospheric Flight", Courier Corporation, - p. 149 (5.8 The Flat-Earth Approximation), 2012. - - .. [2] M. A. Gómez Tierno y M. Pérez Cortés, "Mecánica del Vuelo", Garceta - Grupo Editorial, pp.18-25 (Tema 2: Ecuaciones Generales del - Moviemiento), 2012. - - """ - # Note definition of total_moments of inertia p.21 Gomez Tierno, et al - # Mecánica de vuelo - Ix = inertia[0, 0] - Iy = inertia[1, 1] - Iz = inertia[2, 2] - Jxz = - inertia[0, 2] - - Fx, Fy, Fz = forces - L, M, N = moments - - u, v, w = state_vector[0:3] - p, q, r = state_vector[3:6] - theta, phi, psi = state_vector[6:9] - - # Linear momentum equations - du_dt = Fx / mass + r * v - q * w - dv_dt = Fy / mass - r * u + p * w - dw_dt = Fz / mass + q * u - p * v - - # Angular momentum equations - dp_dt = (L*Iz + N*Jxz - q*r * (Iz**2 - Iz*Iy + Jxz**2) + - p*q*Jxz * (Ix + Iz - Iy)) / (Ix*Iz - Jxz**2) - dq_dt = (M + (Iz - Ix) * p*r - Jxz * (p**2 - r**2)) / Iy - dr_dt = (L*Jxz + N*Ix + p*q * (Ix**2 - Ix*Iy + Jxz**2) - - q*r*Jxz * (Iz + Ix - Iy)) / (Ix*Iz - Jxz**2) - - # Angular Kinematic equations - dtheta_dt = q * cos(phi) - r * sin(phi) - dphi_dt = p + (q * sin(phi) + r * cos(phi)) * np.tan(theta) - dpsi_dt = (q * sin(phi) + r * cos(phi)) / cos(theta) - - # Linear kinematic equations - dx_dt = (cos(theta) * cos(psi) * u + - (sin(phi) * sin(theta) * cos(psi) - cos(phi) * sin(psi)) * v + - (cos(phi) * sin(theta) * cos(psi) + sin(phi) * sin(psi)) * w) - dy_dt = (cos(theta) * sin(psi) * u + - (sin(phi) * sin(theta) * sin(psi) + cos(phi) * cos(psi)) * v + - (cos(phi) * sin(theta) * sin(psi) - sin(phi) * cos(psi)) * w) - dz_dt = -u*sin(theta) + v*sin(phi)*cos(theta) + w*cos(phi)*cos(theta) - - return np.array([du_dt, dv_dt, dw_dt, dp_dt, dq_dt, dr_dt, dtheta_dt, - dphi_dt, dpsi_dt, dx_dt, dy_dt, dz_dt]) - - -def euler_flat_earth_eqs_jac(time, state_vector, mass, inertia, forces, moments): - # TODO: calculate jacobians - raise NotImplementedError +from pyfme.models.systems import DynamicSystem + + +class EulerFlatEarth(DynamicSystem): + + def __init__(self, state, integrator=None, callback=None, + use_jacobian=False, **integrator_params): + + # TODO: use jacobian when it is calculated + super().__init__(state=state, + use_jacobian=use_jacobian, + integrator=integrator, + callback=callback, + **integrator_params) + + def dynamic_system_state_to_full_system_state(self): + pass + + @staticmethod + def dynamic_system_equations(time, state_vector, mass, inertia, forces, + moments): + """Euler flat earth equations: linear momentum equations, angular + momentum equations, angular kinematic equations, linear kinematic + equations. + + Parameters + ---------- + time : float + Current time (s). + state_vector : array_like, shape(9) + Current value of absolute velocity and angular velocity, both expressed + in body axes, euler angles and position in Earth axis. + (u, v, w, p, q, r, theta, phi, psi, x, y, z) + (m/s, m/s, m/s, rad/s, rad/s rad/s, rad, rad, rad, m, m ,m). + mass : float + Current mass of the aircraft (kg). + inertia : array_like, shape(3, 3) + 3x3 tensor of inertia of the aircraft (kg * m2) + Current equations assume that the aircraft has a symmetry plane + (x_b - z_b), thus J_xy and J_yz must be null. + forces : array_like, shape(3) + 3 dimensional vector containing the total total_forces (including + gravity) in x_b, y_b, z_b axes (N). + moments : array_like, shape(3) + 3 dimensional vector containing the total total_moments in x_b, + y_b, z_b axes (N·m). + + Returns + ------- + dstate_dt : array_like, shape(9) + Derivative with respect to time of the state vector. + Current value of absolute acceleration and angular acceleration, both + expressed in body axes, Euler angles derivatives and velocity with + respect to Earth Axis. + (du_dt, dv_dt, dw_dt, dp_dt, dq_dt, dr_dt, dtheta_dt, dphi_dt, + dpsi_dt, dx_dt, dy_dt, dz_dt) + (m/s² , m/s², m/s², rad/s², rad/s², rad/s², rad/s, rad/s, rad/s, + m/s, m/s, m/s). + + References + ---------- + .. [1] B. Etkin, "Dynamics of Atmospheric Flight", Courier Corporation, + p. 149 (5.8 The Flat-Earth Approximation), 2012. + + .. [2] M. A. Gómez Tierno y M. Pérez Cortés, "Mecánica del Vuelo", Garceta + Grupo Editorial, pp.18-25 (Tema 2: Ecuaciones Generales del + Moviemiento), 2012. + + """ + # Note definition of total_moments of inertia p.21 Gomez Tierno, et al + # Mecánica de vuelo + Ix = inertia[0, 0] + Iy = inertia[1, 1] + Iz = inertia[2, 2] + Jxz = - inertia[0, 2] + + Fx, Fy, Fz = forces + L, M, N = moments + + u, v, w = state_vector[0:3] + p, q, r = state_vector[3:6] + theta, phi, psi = state_vector[6:9] + + # Linear momentum equations + du_dt = Fx / mass + r * v - q * w + dv_dt = Fy / mass - r * u + p * w + dw_dt = Fz / mass + q * u - p * v + + # Angular momentum equations + dp_dt = (L * Iz + N * Jxz - q * r * (Iz ** 2 - Iz * Iy + Jxz ** 2) + + p * q * Jxz * (Ix + Iz - Iy)) / (Ix * Iz - Jxz ** 2) + dq_dt = (M + (Iz - Ix) * p * r - Jxz * (p ** 2 - r ** 2)) / Iy + dr_dt = (L * Jxz + N * Ix + p * q * (Ix ** 2 - Ix * Iy + Jxz ** 2) - + q * r * Jxz * (Iz + Ix - Iy)) / (Ix * Iz - Jxz ** 2) + + # Angular Kinematic equations + dtheta_dt = q * cos(phi) - r * sin(phi) + dphi_dt = p + (q * sin(phi) + r * cos(phi)) * np.tan(theta) + dpsi_dt = (q * sin(phi) + r * cos(phi)) / cos(theta) + + # Linear kinematic equations + dx_dt = (cos(theta) * cos(psi) * u + + (sin(phi) * sin(theta) * cos(psi) - cos(phi) * sin(psi)) * v + + (cos(phi) * sin(theta) * cos(psi) + sin(phi) * sin(psi)) * w) + dy_dt = (cos(theta) * sin(psi) * u + + (sin(phi) * sin(theta) * sin(psi) + cos(phi) * cos(psi)) * v + + (cos(phi) * sin(theta) * sin(psi) - sin(phi) * cos(psi)) * w) + dz_dt = -u * sin(theta) + v * sin(phi) * cos(theta) + w * cos( + phi) * cos(theta) + + return np.array([du_dt, dv_dt, dw_dt, dp_dt, dq_dt, dr_dt, dtheta_dt, + dphi_dt, dpsi_dt, dx_dt, dy_dt, dz_dt]) + + @staticmethod + def dynamic_system_jacobian(state_vector, mass, inertia, forces, moments): + # TODO: calculate jacobians + raise NotImplementedError diff --git a/src/pyfme/models/systems.py b/src/pyfme/models/systems.py index 872aea9..30c102f 100644 --- a/src/pyfme/models/systems.py +++ b/src/pyfme/models/systems.py @@ -7,91 +7,86 @@ --------------- """ -from abc import abstractmethod +from abc import abstractmethod, abstractstaticmethod import numpy as np from scipy.integrate import ode -from pyfme.utils.coordinates import body2hor - class System(object): - """Generic system class contains the state vector and other derived - variables related to the system's state. - """ - def __init__(self, lat, lon, h, psi=0, x_earth=0, y_earth=0): + def __init__(self, dynamic_system): + + # Dynamic system + self._dynamic_system = dynamic_system - # ABOUT UNITS: assume international system units unless otherwise - # indicated. (meters, kilograms, seconds, kelvin, Newtons, Pascal, - # radians...) # POSITION - # Geographic coordinates: (geodetic lat, lon, height above ellipsoid) - self.coord_geographic = np.array([lat, lon, h], dtype=float) + # Geodetic coordinates: (geodetic lat, lon, height above ellipsoid) + self.geodetic_coordinates = np.zeros(3) # rad # Geocentric coordinates (rotating with Earth): (x_geo, y_geo, z_geo) - # TODO: implement geographic2geocentric conversion: - # self.coord_geocentric = np.zeros_like([3], dtype=float) + self.geocentric_coordinates = np.zeros(3) # m + # Earth coordinates (x_earth, y_earth, z_earth) + self.earth_coordinates = np.zeros(3) # m - # Earth coordinates (Axis parallel to local horizon NED at h=0 at - # the initial position of the airplane): (x_earth, y_earth, z_earth) - self.coord_earth = np.array([x_earth, y_earth, -h], dtype=float) - - # ATTITUDE (psi, theta, phi). - self.euler_angles = np.zeros([3], dtype=float) - self.euler_angles[0] = psi - # TODO: convert to quaternions - # self.quaternions = np.zeros([4], dtype=float) + # ATTITUDE + # Euler angles (psi, theta, phi) + self.euler_angles = np.zeros(3) # rad + # Quaternions (q0, q1, q2, q3) + self.quaternions = np.zeros(4) # ABSOLUTE VELOCITY. - # Body: - self.vel_body = np.zeros_like([3], dtype=float) - # Local horizon (NED): - self.vel_NED = np.zeros_like([3], dtype=float) + # Body axis + self.vel_body = np.zeros(3) # m/s + # Local horizon (NED) + self.vel_NED = np.zeros(3) # m/s # ANGULAR VELOCITY: (p, q, r) - self.vel_ang = np.zeros_like([3], dtype=float) + self.vel_ang = np.zeros(3) # rad/s + + # ABSOLUTE ACCELERATION + # Body axis + self.accel_body = np.zeros(3) # m/s² + # Local horizon (NED) + self.accel_NED = np.zeros(3) # m/s² - # Last time step dt - self.dt = None + # ANGULAR ACCELERATION + self.accel_ang = np.zeros(3) # rad/s² - # TODO: guarantee that if euler angles change <--> quaternions change - # TODO: guarantee that if geographic change <--> geocentric change - # TODO: guarantee that if body vels change <--> horizon vels change @property def lat(self): - return self.coord_geographic[0] + return self.geodetic_coordinates[0] @property def lon(self): - return self.coord_geographic[1] + return self.geodetic_coordinates[1] @property def height(self): - return self.coord_geographic[2] + return self.geodetic_coordinates[2] @property def x_geo(self): - return self.coord_geocentric[0] + return self.geocentric_coordinates[0] @property def y_geo(self): - return self.coord_geocentric[1] + return self.geocentric_coordinates[1] @property def z_geo(self): - return self.coord_geocentric[2] + return self.geocentric_coordinates[2] @property def x_earth(self): - return self.coord_earth[0] + return self.earth_coordinates[0] @property def y_earth(self): - return self.coord_earth[1] + return self.earth_coordinates[1] @property def z_earth(self): - return self.coord_earth[2] + return self.earth_coordinates[2] @property def psi(self): @@ -141,153 +136,65 @@ def q(self): def r(self): return self.vel_ang[2] - @abstractmethod - def _propagate_state_vector(self, aircraft, dt): - pass + @property + def time(self): + return self._dynamic_system.time - @abstractmethod - def set_initial_state_vector(self): - pass - - def propagate(self, aircraft, environment, dt=0.01): - pass - - -class EulerFlatEarth(System): - """Euler flat Earth equations system""" - - def __init__(self, lat, lon, h, psi=0, x_earth=0, y_earth=0, - integrator='dopri5', use_jac=False, **integrator_params): - """Initialize the equations of the chosen model and selects the - integrator. Check `scipy.integrate.ode` to see available integrators. - - If use_jac = True the jacobian of the equations is used for the - integration. - - Parameters - ---------- - lat, lon, h: float - Latitude, longitude and height (rad, rad, m). - psi, x_earth, y_earth: float, opt - Yaw angle and initial Earth position (rad, m, m). - integrator: str, optional - Any allowed integrator for `ode` class: "vode", "zvode", "lsoda", - "dopri5", "dop853". - use_jac : bool, optional - Use analytical jacobians of system equations. - """ - super().__init__(lat, lon, h, psi, x_earth, y_earth) - # State vector must be initialized with set_initial_state_vector() method - self.state_vector = None - - from pyfme.models.euler_flat_earth import lamceq, kaeq, kleq - self.lamceq = lamceq - - if use_jac: - from pyfme.models.euler_flat_earth import lamceq_jac, kaeq_jac - jac_LM_and_AM = lamceq_jac - jac_att = kaeq_jac - jac_nav = None # not implemented + +class DynamicSystem(object): + + def __init__(self, state, use_jacobian=None, integrator=None, + callback=None, **integrator_params): + + self.state = state + + self._equations = self.dynamic_system_equations + + if use_jacobian: + self._jacobian = self.dynamic_system_jacobian else: - jac_LM_and_AM = None - jac_att = None - jac_nav = None + self._jacobian = None + + self._ode = ode(self._equations, self._jacobian) + + if integrator is None: + integrator = 'dopri5' - self._ode_lamceq = ode(lamceq, jac=jac_LM_and_AM) - self._ode_kaqeq = ode(kaeq, jac=jac_att) - self._ode_kleq = ode(kleq, jac=jac_nav) + self._ode.set_integrator(integrator, **integrator_params) + self._ode.set_initial_value(self.state) - self._ode_lamceq.set_integrator(integrator, **integrator_params) - self._ode_kaqeq.set_integrator(integrator, **integrator_params) - self._ode_kleq.set_integrator(integrator, **integrator_params) + if callback: + self._ode.set_solout(callback) @property - def height(self): - return -self.coord_earth[2] - - def set_initial_state_vector(self): - """ - Set the initial values of the state vector for system integration - once the values for the involved variables have been assigned or the - system has been trimmed. - """ - - self.vel_NED = body2hor(self.vel_body, theta=self.theta, - phi=self.phi, psi=self.psi) - self.state_vector = np.array([ - self.u, self.v, self.w, - self.p, self.q, self.r, - self.theta, self.phi, self.psi, - self.x_earth, self.y_earth, self.z_earth - ]) - - self._ode_lamceq.set_initial_value(y=self.state_vector[0:6]) - self._ode_kaqeq.set_initial_value(y=self.state_vector[6:9]) - self._ode_kleq.set_initial_value(y=self.state_vector[9:12]) - - def _propagate_state_vector(self, aircraft, dt): - """ - Performs integration step for actual_time + dt and returns the state - vector - """ - mass = aircraft.mass - inertia = aircraft.inertia - forces = aircraft.total_forces - moments = aircraft.total_moments - - t = self._ode_lamceq.t + dt - - self._ode_lamceq.set_f_params(mass, inertia, forces, moments) - velocities = self._ode_lamceq.integrate(t) - - if self._ode_lamceq.successful(): - self._ode_kaqeq.set_f_params(velocities[3:]) - attitude_angles = self._ode_kaqeq.integrate(t) - else: - raise RuntimeError('Integration of Linear and angular momentum \ - equations was not successful') + def time(self): + return self._ode.t + + def propagate(self, dt, mass, inertia, forces, moments): + + t = self._ode.t + dt + + self._ode.set_f_params(mass, inertia, forces, moments) + + if self._ode.jac: + self._ode.set_jac_params(mass, inertia, forces, moments) + + self.state = self._ode.integrate(t) + + if self._ode.successful(): + return self.state + + @abstractmethod + def dynamic_system_state_to_full_system_state(self): + raise NotImplementedError + + @abstractstaticmethod + def dynamic_system_equations(time, state_vector, mass, inertia, forces, + moments): + raise NotImplementedError + + @abstractstaticmethod + def dynamic_system_jacobian(state_vector, mass, inertia, forces, moments): + raise NotImplementedError - if self._ode_kaqeq.successful(): - self._ode_kleq.set_f_params(velocities[0:3], attitude_angles) - position = self._ode_kleq.integrate(t) - else: - raise RuntimeError('Integration of attitude equations was not \ - successful') - if self._ode_kleq.successful(): - self.state_vector[0:6] = velocities[:] - self.state_vector[6:9] = attitude_angles[:] - self.state_vector[9:12] = position[:] - else: - raise RuntimeError('Integration of navigation equations was not \ - successful') - - return self.state_vector - - def propagate(self, aircraft, dt=0.01): - """Propagate the state vector and update the rest of variables. - - Parameters - ---------- - aircraft : Aircraft - Aircraft model for simulation is used to get forces. - """ - self.dt = dt - self._propagate_state_vector(aircraft, dt) - - # TODO: update the rest of variables. - self.vel_body = self.state_vector[0:3] - self.vel_ang = self.state_vector[3:6] - self.euler_angles[0] = self.state_vector[8] # psi - self.euler_angles[1] = self.state_vector[6] # theta - self.euler_angles[2] = self.state_vector[7] # phi - self.coord_earth = self.state_vector[9:12] - - # Set psi between 0 and 2*pi - # FIXME: check the conversion to keep angle between 0 and 2pi again - self.euler_angles[0] = np.arctan2(np.sin(self.psi), np.cos( - self.psi)) % (2*np.pi) - self.euler_angles[2] = np.arctan2(np.sin(self.phi), np.cos(self.phi)) - - self.vel_NED = body2hor(self.vel_body, theta=self.theta, phi=self.phi, - psi=self.psi) diff --git a/src/pyfme/models/tests/test_models.py b/src/pyfme/models/tests/test_models.py index e69de29..8923cc1 100644 --- a/src/pyfme/models/tests/test_models.py +++ b/src/pyfme/models/tests/test_models.py @@ -0,0 +1,18 @@ +import numpy as np + +from pyfme.models import EulerFlatEarth + +mass = 10000 +inertia = np.array([[100, 0, 25], [0, 100, 0], [25, 0, 100]]) +forces = np.ones(3) * 100 +moments = np.ones(3) * 100 + + +def test_euler_flat_earth_dummy_integration_with_callback(): + + def foo(t, y): + print(t, y) + print(system.time) + + system = EulerFlatEarth(np.zeros(12), callback=foo) + system.propagate(10, mass, inertia, forces, moments) From 91cdc02cf403c5423da3068d3e2efff0481f8faf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Fri, 28 Jul 2017 21:15:23 +0200 Subject: [PATCH 004/104] added conversion from dynamic system to full system --- src/pyfme/models/euler_flat_earth.py | 22 ++++++++++++++++++++-- src/pyfme/models/systems.py | 27 +++++++++++++++++++++++---- src/pyfme/models/tests/test_models.py | 12 +++++++++--- 3 files changed, 52 insertions(+), 9 deletions(-) diff --git a/src/pyfme/models/euler_flat_earth.py b/src/pyfme/models/euler_flat_earth.py index bb8d5a5..533aef5 100644 --- a/src/pyfme/models/euler_flat_earth.py +++ b/src/pyfme/models/euler_flat_earth.py @@ -33,8 +33,26 @@ def __init__(self, state, integrator=None, callback=None, callback=callback, **integrator_params) - def dynamic_system_state_to_full_system_state(self): - pass + def dynamic_system_state_to_full_system_state(self, mass, inertia,forces, moments): + full_system_state = {} + + t = self.time + y = self.state + y_dot = self.dynamic_system_equations(t, y, mass, inertia, forces, moments) + + full_system_state['geodetic_coordinates'] = np.zeros(3) + full_system_state['geocentric_coordinates'] = np.zeros(3) + full_system_state['earth_coordinates'] = y[9:12] + full_system_state['euler_angles'] = y[6:9] + full_system_state['quaternions'] = np.zeros(4) + full_system_state['vel_body'] = y[0:3] + full_system_state['vel_NED'] = y_dot[9:12] + full_system_state['vel_ang'] = y[3:6] + full_system_state['accel_body'] = y_dot[0:3] + full_system_state['accel_NED'] = np.zeros(3) + full_system_state['accel_ang'] = y_dot[6:9] + + return full_system_state @staticmethod def dynamic_system_equations(time, state_vector, mass, inertia, forces, diff --git a/src/pyfme/models/systems.py b/src/pyfme/models/systems.py index 30c102f..dea15b2 100644 --- a/src/pyfme/models/systems.py +++ b/src/pyfme/models/systems.py @@ -15,10 +15,22 @@ class System(object): - def __init__(self, dynamic_system): + full_system_state_names = ('geodetic_coordinates', + 'geocentric_coordinates', + 'earth_coordinates', + 'euler_angles', + 'quaternions', + 'vel_body', + 'vel_NED', + 'vel_ang', + 'accel_body', + 'accel_NED', + 'accel_ang') + + def __init__(self, model): # Dynamic system - self._dynamic_system = dynamic_system + self.model = model # POSITION # Geodetic coordinates: (geodetic lat, lon, height above ellipsoid) @@ -138,7 +150,14 @@ def r(self): @property def time(self): - return self._dynamic_system.time + return self.model.time + + def set_full_system_state(self, mass, inertia, forces, moments): + rv = self.model.dynamic_system_state_to_full_system_state( + mass, inertia, forces, moments) + + for name in self.full_system_state_names: + self.__setattr__(name, rv[name]) class DynamicSystem(object): @@ -185,7 +204,7 @@ def propagate(self, dt, mass, inertia, forces, moments): return self.state @abstractmethod - def dynamic_system_state_to_full_system_state(self): + def dynamic_system_state_to_full_system_state(self, mass, inertia,forces, moments): raise NotImplementedError @abstractstaticmethod diff --git a/src/pyfme/models/tests/test_models.py b/src/pyfme/models/tests/test_models.py index 8923cc1..2f7e763 100644 --- a/src/pyfme/models/tests/test_models.py +++ b/src/pyfme/models/tests/test_models.py @@ -1,6 +1,7 @@ import numpy as np from pyfme.models import EulerFlatEarth +from pyfme.models.systems import System mass = 10000 inertia = np.array([[100, 0, 25], [0, 100, 0], [25, 0, 100]]) @@ -11,8 +12,13 @@ def test_euler_flat_earth_dummy_integration_with_callback(): def foo(t, y): + system.model.state = y print(t, y) - print(system.time) + print(system.model.time) + print(system.set_full_system_state()) + print({name: system.__getattribute__(name) for name in + system.full_system_state_names}) - system = EulerFlatEarth(np.zeros(12), callback=foo) - system.propagate(10, mass, inertia, forces, moments) + model = EulerFlatEarth(np.zeros(12), callback=foo) + system = System(model=model) + system.model.propagate(10, mass, inertia, forces, moments) From f4117d91d8989cdb4baca97ee64c83d9c51d960a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sat, 29 Jul 2017 00:42:26 +0200 Subject: [PATCH 005/104] modified aircraft structure --- src/pyfme/aircrafts/aircraft.py | 49 +++++++++++++------------------ src/pyfme/aircrafts/cessna_310.py | 11 +++---- 2 files changed, 26 insertions(+), 34 deletions(-) diff --git a/src/pyfme/aircrafts/aircraft.py b/src/pyfme/aircrafts/aircraft.py index 4698ba4..f7836d2 100644 --- a/src/pyfme/aircrafts/aircraft.py +++ b/src/pyfme/aircrafts/aircraft.py @@ -8,16 +8,10 @@ """ from abc import abstractmethod -from copy import deepcopy -from warnings import warn import numpy as np -from scipy.optimize import least_squares -from pyfme.environment.environment import Environment -from pyfme.models.systems import System from pyfme.utils.anemometry import tas2cas, tas2eas, calculate_alpha_beta_TAS -from pyfme.utils.trimmer import trimming_cost_func class Aircraft(object): @@ -25,26 +19,28 @@ class Aircraft(object): def __init__(self): # Mass & Inertia self.mass = 0 # kg - self.inertia = 0 # kg·m² - self.propeller_radius = 0 # m + self.inertia = np.zeros((3, 3)) # kg·m² + # Geometry self.Sw = 0 # m2 self.chord = 0 # m self.span = 0 # m + # Controls self.controls = {} self.control_limits = {} + # Coefficients # Aero self.CL, self.CD, self.Cm = 0, 0, 0 self.CY, self.Cl, self.Cn = 0, 0, 0 + # Thrust self.Ct = 0 + # Forces & moments - self.gravity_force = np.zeros(3) self.total_forces = np.zeros(3) self.total_moments = np.zeros(3) - self.load_factor = 0 # Velocities self.TAS = 0 # True Air Speed. @@ -53,18 +49,11 @@ def __init__(self): self.Mach = 0 # Mach number self.q_inf = 0 # Dynamic pressure at infty (Pa) - # Angular velocities - self.p = 0 # rad/s - self.q = 0 # rad/s - self.r = 0 # rad/s - # Angles self.alpha = 0 # Angle of attack (AOA). self.beta = 0 # Angle of sideslip (AOS). self.alpha_dot = 0 # Rate of change of AOA. - #NOT PRESENT self.Dbeta_Dt = 0 # Rate of change of AOS. - # Environment - self.rho = 0 # kg/m3 + @property def Ixx(self): @@ -78,7 +67,7 @@ def Iyy(self): def Izz(self): return self.inertia[2, 2] - def update(self, controls, system, environment): + def _set_current_controls(self, controls): # If a control is not given, the previous value is assigned. for control_name, control_value in controls.items(): @@ -87,17 +76,19 @@ def update(self, controls, system, environment): self.controls[control_name] = control_value else: # TODO: maybe raise a warning and assign max deflection - msg = "Control {} out of range ({} when max={} and min={" \ - "}".format(control_name, limits[1], limits[0]) + msg = ("Control {} out of range ({} when max={} and min={" + "})".format(control_name, limits[1], limits[0])) raise ValueError(msg) + def _calculate_aerodynamics(self, system, environment): + # Velocity relative to air: aerodynamic velocity. - aero_vel = system.vel_body - environment.body_wind + # TODO: calculate aerodynamic velocity using wind + aero_vel = system.vel_body # - environment.body_wind self.alpha, self.beta, self.TAS = calculate_alpha_beta_TAS( - u=aero_vel[0], v=aero_vel[1], w=aero_vel[2]) - - self.p, self.q, self.r = system.vel_ang + u=aero_vel[0], v=aero_vel[1], w=aero_vel[2] + ) # Setting velocities & dynamic pressure self.CAS = tas2cas(self.TAS, environment.p, environment.rho) @@ -105,8 +96,8 @@ def update(self, controls, system, environment): self.Mach = self.TAS / environment.a self.q_inf = 0.5 * environment.rho * self.TAS ** 2 - # Setting environment - self.rho = environment.rho + @abstractmethod + def calculate_forces_and_moments(self, system, environment, controls): - # Gravity force - self.gravity_force = environment.gravity_vector * self.mass + self._set_current_controls(controls) + self._calculate_aerodynamics(system, environment) diff --git a/src/pyfme/aircrafts/cessna_310.py b/src/pyfme/aircrafts/cessna_310.py index f1dfe04..2c5bf6e 100644 --- a/src/pyfme/aircrafts/cessna_310.py +++ b/src/pyfme/aircrafts/cessna_310.py @@ -137,9 +137,6 @@ def __init__(self): # Angles self.alpha = 0 # Angle of attack (AOA). self.beta = 0 # Angle of sideslip (AOS). - # Not present in this model: - self.Dalpha_Dt = 0 # Rate of change of AOA. - self.Dbeta_Dt = 0 # Rate of change of AOS. def _calculate_aero_lon_forces_moments_coeffs(self): @@ -179,11 +176,15 @@ def _calculate_thrust_forces_moments(self): return Ft - def calculate_forces_and_moments(self): + def calculate_forces_and_moments(self, system, environment, controls): + + # Update controls and aerodynamics + super().calculate_forces_and_moments(system, environment, controls) Ft = self._calculate_thrust_forces_moments() L, D, Y, l, m, n = self._calculate_aero_forces_moments() - Fg = self.gravity_force + + Fg = environment.gravity_body * self.mass # FIXME: is it necessary to use wind2body conversion? Fa = np.array([-D, Y, -L]) From 7719a01c964738814fe11ce1ff93f7b73a789190 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sat, 29 Jul 2017 00:54:06 +0200 Subject: [PATCH 006/104] minor modification in gravity model --- src/pyfme/environment/gravity.py | 47 ++++++++++++++++++++------------ 1 file changed, 30 insertions(+), 17 deletions(-) diff --git a/src/pyfme/environment/gravity.py b/src/pyfme/environment/gravity.py index d94d1c9..d94a8b3 100644 --- a/src/pyfme/environment/gravity.py +++ b/src/pyfme/environment/gravity.py @@ -19,9 +19,21 @@ class Gravity(object): """Generic gravity model""" def __init__(self): - self.magnitude = None - self.unitary_vector = np.zeros([3]) # Body axis - self.vector = np.zeros([3]) # Body axis + self._magnitude = None + self._versor = np.zeros([3]) # Body axis + self._vector = np.zeros([3]) # Body axis + + @property + def magnitude(self): + return self._magnitude + + @property + def versor(self): + return self._versor + + @property + def vector(self): + return self._vector @abstractmethod def update(self, system): @@ -33,16 +45,17 @@ class VerticalConstant(Gravity): """ def __init__(self): - Gravity.__init__(self) - self.magnitude = GRAVITY + self._magnitude = GRAVITY self._z_horizon = np.array([0, 0, 1], dtype=float) def update(self, system): - self.unitary_vector = hor2body(self._z_horizon, - theta=system.theta, - phi=system.phi, - psi=system.psi) - self.vector = self.magnitude * self.unitary_vector + self._versor = hor2body(self._z_horizon, + theta=system.theta, + phi=system.phi, + psi=system.psi + ) + + self._vector = self.magnitude * self.versor class VerticalNewton(Gravity): @@ -51,17 +64,17 @@ class VerticalNewton(Gravity): """ def __init__(self): - Gravity.__init__(self) self._z_horizon = np.array([0, 0, 1], dtype=float) def update(self, system): r_squared = system.coord_geocentric @ system.coord_geocentric - self.magnitude = STD_GRAVITATIONAL_PARAMETER / r_squared - self.unitary_vector = hor2body(self._z_horizon, - theta=system.theta, - phi=system.phi, - psi=system.psi) - self.vector = self.magnitude * self.unitary_vector + self._magnitude = STD_GRAVITATIONAL_PARAMETER / r_squared + self._versor = hor2body(self._z_horizon, + theta=system.theta, + phi=system.phi, + psi=system.psi + ) + self._vector = self.magnitude * self._vector class LatitudeModel(Gravity): From 149ac08652a3085af3dabac6da1938eef2a8428d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sat, 29 Jul 2017 00:59:16 +0200 Subject: [PATCH 007/104] added wind with no wind model --- src/pyfme/aircrafts/aircraft.py | 3 +-- src/pyfme/environment/wind.py | 5 +++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/pyfme/aircrafts/aircraft.py b/src/pyfme/aircrafts/aircraft.py index f7836d2..061b282 100644 --- a/src/pyfme/aircrafts/aircraft.py +++ b/src/pyfme/aircrafts/aircraft.py @@ -83,8 +83,7 @@ def _set_current_controls(self, controls): def _calculate_aerodynamics(self, system, environment): # Velocity relative to air: aerodynamic velocity. - # TODO: calculate aerodynamic velocity using wind - aero_vel = system.vel_body # - environment.body_wind + aero_vel = system.vel_body - environment.body_wind self.alpha, self.beta, self.TAS = calculate_alpha_beta_TAS( u=aero_vel[0], v=aero_vel[1], w=aero_vel[2] diff --git a/src/pyfme/environment/wind.py b/src/pyfme/environment/wind.py index 1ae12fc..22845d3 100644 --- a/src/pyfme/environment/wind.py +++ b/src/pyfme/environment/wind.py @@ -9,13 +9,14 @@ """ import numpy as np + class NoWind(object): def __init__(self): # Wind velocity: FROM North to South, FROM East to West, # Wind velocity in the UPSIDE direction - self.horizon_wind = np.zeros([3], dtype=float) - self.body_wind = np.zeros([3], dtype=float) + self.horizon = np.zeros([3], dtype=float) + self.body = np.zeros([3], dtype=float) def update(self, system): pass From c14dc2e7d7b968edd681278ee4de0916d3839110 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sat, 29 Jul 2017 01:00:37 +0200 Subject: [PATCH 008/104] adapted environment to previous changes in gravity, wind and atmosphere --- src/pyfme/environment/environment.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pyfme/environment/environment.py b/src/pyfme/environment/environment.py index 6944765..6755849 100644 --- a/src/pyfme/environment/environment.py +++ b/src/pyfme/environment/environment.py @@ -51,11 +51,11 @@ def gravity_vector(self): @property def body_wind(self): - return self.wind.body_wind + return self.wind.body @property def horizon_wind(self): - return self.wind.horizon_wind + return self.wind.horizon def update(self, system): self.atmosphere.update(system) From c6219e8c32346784bfe0f915b089f4b42fa169c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sun, 30 Jul 2017 12:59:02 +0200 Subject: [PATCH 009/104] sketching simulator class --- src/pyfme/aircrafts/cessna_310.py | 2 +- src/pyfme/models/systems.py | 3 +- src/pyfme/models/tests/test_models.py | 2 +- src/pyfme/simulator.py | 55 +++++---------------------- src/pyfme/tests/test_PyFME.py | 34 +++++++++++++++++ 5 files changed, 48 insertions(+), 48 deletions(-) diff --git a/src/pyfme/aircrafts/cessna_310.py b/src/pyfme/aircrafts/cessna_310.py index 2c5bf6e..ff857e3 100644 --- a/src/pyfme/aircrafts/cessna_310.py +++ b/src/pyfme/aircrafts/cessna_310.py @@ -184,7 +184,7 @@ def calculate_forces_and_moments(self, system, environment, controls): Ft = self._calculate_thrust_forces_moments() L, D, Y, l, m, n = self._calculate_aero_forces_moments() - Fg = environment.gravity_body * self.mass + Fg = environment.gravity_vector * self.mass # FIXME: is it necessary to use wind2body conversion? Fa = np.array([-D, Y, -L]) diff --git a/src/pyfme/models/systems.py b/src/pyfme/models/systems.py index dea15b2..f7a4f90 100644 --- a/src/pyfme/models/systems.py +++ b/src/pyfme/models/systems.py @@ -204,7 +204,8 @@ def propagate(self, dt, mass, inertia, forces, moments): return self.state @abstractmethod - def dynamic_system_state_to_full_system_state(self, mass, inertia,forces, moments): + def dynamic_system_state_to_full_system_state(self, mass, inertia, + forces, moments): raise NotImplementedError @abstractstaticmethod diff --git a/src/pyfme/models/tests/test_models.py b/src/pyfme/models/tests/test_models.py index 2f7e763..2872455 100644 --- a/src/pyfme/models/tests/test_models.py +++ b/src/pyfme/models/tests/test_models.py @@ -15,7 +15,7 @@ def foo(t, y): system.model.state = y print(t, y) print(system.model.time) - print(system.set_full_system_state()) + print(system.set_full_system_state(mass, inertia, forces, moments)) print({name: system.__getattribute__(name) for name in system.full_system_state_names}) diff --git a/src/pyfme/simulator.py b/src/pyfme/simulator.py index 5dfd78f..6951be1 100644 --- a/src/pyfme/simulator.py +++ b/src/pyfme/simulator.py @@ -34,40 +34,15 @@ def __init__(self, aircraft, system, environment): self.aircraft = aircraft self.system = system self.environment = environment - self._time_step = 0 - self.PAR_KEYS = {'T': self.environment.T, # env - 'pressure': self.environment.p, - 'rho': self.environment.rho, - 'a': self.environment.a, - 'TAS': self.aircraft.TAS, # aircraft - 'Mach': self.aircraft.Mach, - 'q_inf': self.aircraft.q_inf, - 'alpha': self.aircraft.alpha, - 'beta': self.aircraft.beta, - 'x_earth': self.system.x_earth, # system - 'y_earth': self.system.y_earth, - 'z_earth': self.system.z_earth, - 'psi': self.system.psi, - 'theta': self.system.theta, - 'phi': self.system.phi, - 'u': self.system.u, - 'v': self.system.v, - 'w': self.system.w, - 'v_north': self.system.v_north, - 'v_east': self.system.v_east, - 'v_down': self.system.v_down, - 'p': self.system.p, - 'q': self.system.q, - 'r': self.system.r, - 'height': self.system.height, - 'F_xb': self.aircraft.total_forces[0], - 'F_yb': self.aircraft.total_forces[1], - 'F_zb': self.aircraft.total_forces[2], - 'M_xb': self.aircraft.total_moments[0], - 'M_yb': self.aircraft.total_moments[1], - 'M_zb': self.aircraft.total_moments[2] - } - self.par_dict = {} + + def propagate(self, time, controls): + + controls0 = controls + mass0, inertia0 = self.aircraft.mass, self.aircraft.inertia + forces, moments = self.aircraft.calculate_forces_and_moments( + self.system, self.environment, controls0) + + self.system.model.propagate(time, mass0, inertia0, forces, moments) def time_step(self, dt): """ @@ -79,11 +54,9 @@ def time_step(self, dt): Time step (s). """ - self.save_current_par_dict() - self._time_step += 1 self.system.propagate(self.aircraft, dt) self.environment.update(self.system) - controls = self._get_current_controls(self._time_step) + controls = self._get_current_controls(self.system.time) self.aircraft.update(controls, self.system, self.environment) self.aircraft.calculate_forces_and_moments() @@ -91,14 +64,6 @@ def time_step(self, dt): def _get_current_controls(self, ii): return - @abstractmethod - def set_par_dict(self, par_list): - return - - @abstractmethod - def save_current_par_dict(self): - return - class BatchSimulation(Simulation): diff --git a/src/pyfme/tests/test_PyFME.py b/src/pyfme/tests/test_PyFME.py index e69de29..bfb33a9 100644 --- a/src/pyfme/tests/test_PyFME.py +++ b/src/pyfme/tests/test_PyFME.py @@ -0,0 +1,34 @@ +import numpy as np + +from pyfme.aircrafts import Cessna310 +from pyfme.environment.atmosphere import ISA1976 +from pyfme.environment.environment import Environment +from pyfme.environment.gravity import VerticalConstant +from pyfme.environment.wind import NoWind +from pyfme.models import EulerFlatEarth +from pyfme.models.systems import System +from pyfme.simulator import Simulation + + +def test_simulation(): + + def foo(t, y): + print(t, y) + + aircraft = Cessna310() + # XXX: this initial condition does not set the full system state + x0 = np.array([100, 0, 1, 0, 0, 0, 0.05, 0.02, 0, 0, 0, 1000]) + system = System(model=EulerFlatEarth(x0, callback=foo)) + environment = Environment(ISA1976(), VerticalConstant(), NoWind()) + + simulation = Simulation(aircraft, system, environment) + + controls = {'delta_elevator': 0.1, + 'hor_tail_incidence': 0.2, + 'delta_aileron': 0.1, + 'delta_rudder': 0.3, + 'delta_t': 0.5} + + environment.update(system) + + simulation.propagate(10, controls) From aaac814fd9718e5b0bc54c7df43947e4a3133ff7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sun, 30 Jul 2017 13:19:46 +0200 Subject: [PATCH 010/104] initial state now updates full system state --- src/pyfme/models/euler_flat_earth.py | 16 ++++++++-------- src/pyfme/models/systems.py | 16 ++++++++++++---- src/pyfme/models/tests/test_models.py | 2 +- src/pyfme/simulator.py | 11 +++++++++++ src/pyfme/tests/test_PyFME.py | 4 +++- 5 files changed, 35 insertions(+), 14 deletions(-) diff --git a/src/pyfme/models/euler_flat_earth.py b/src/pyfme/models/euler_flat_earth.py index 533aef5..ca1fcc2 100644 --- a/src/pyfme/models/euler_flat_earth.py +++ b/src/pyfme/models/euler_flat_earth.py @@ -23,23 +23,23 @@ class EulerFlatEarth(DynamicSystem): - def __init__(self, state, integrator=None, callback=None, - use_jacobian=False, **integrator_params): + n_states = 12 + + def __init__(self, use_jacobian=None, integrator=None, callback=None, + **integrator_params): # TODO: use jacobian when it is calculated - super().__init__(state=state, - use_jacobian=use_jacobian, - integrator=integrator, - callback=callback, - **integrator_params) + super().__init__(n_states=self.n_states, use_jacobian=use_jacobian, + integrator=integrator, callback=callback) - def dynamic_system_state_to_full_system_state(self, mass, inertia,forces, moments): + def dynamic_system_state_to_full_system_state(self, mass, inertia, forces, moments): full_system_state = {} t = self.time y = self.state y_dot = self.dynamic_system_equations(t, y, mass, inertia, forces, moments) + # TODO: define the rest of conversions full_system_state['geodetic_coordinates'] = np.zeros(3) full_system_state['geocentric_coordinates'] = np.zeros(3) full_system_state['earth_coordinates'] = y[9:12] diff --git a/src/pyfme/models/systems.py b/src/pyfme/models/systems.py index f7a4f90..df1091d 100644 --- a/src/pyfme/models/systems.py +++ b/src/pyfme/models/systems.py @@ -152,6 +152,10 @@ def r(self): def time(self): return self.model.time + def set_initial_state(self, state, mass, inertia, forces, moments): + self.model.set_initial_state(state) + self.set_full_system_state(mass, inertia, forces, moments) + def set_full_system_state(self, mass, inertia, forces, moments): rv = self.model.dynamic_system_state_to_full_system_state( mass, inertia, forces, moments) @@ -162,10 +166,11 @@ def set_full_system_state(self, mass, inertia, forces, moments): class DynamicSystem(object): - def __init__(self, state, use_jacobian=None, integrator=None, - callback=None, **integrator_params): + def __init__(self, n_states, use_jacobian=None, integrator=None, + callback=None, + **integrator_params): - self.state = state + self.state = np.empty(n_states) self._equations = self.dynamic_system_equations @@ -180,7 +185,6 @@ def __init__(self, state, use_jacobian=None, integrator=None, integrator = 'dopri5' self._ode.set_integrator(integrator, **integrator_params) - self._ode.set_initial_value(self.state) if callback: self._ode.set_solout(callback) @@ -189,6 +193,10 @@ def __init__(self, state, use_jacobian=None, integrator=None, def time(self): return self._ode.t + def set_initial_state(self, state): + self.state = state + self._ode.set_initial_value(self.state) + def propagate(self, dt, mass, inertia, forces, moments): t = self._ode.t + dt diff --git a/src/pyfme/models/tests/test_models.py b/src/pyfme/models/tests/test_models.py index 2872455..428123d 100644 --- a/src/pyfme/models/tests/test_models.py +++ b/src/pyfme/models/tests/test_models.py @@ -19,6 +19,6 @@ def foo(t, y): print({name: system.__getattribute__(name) for name in system.full_system_state_names}) - model = EulerFlatEarth(np.zeros(12), callback=foo) + model = EulerFlatEarth(callback=foo, callback=foo) system = System(model=model) system.model.propagate(10, mass, inertia, forces, moments) diff --git a/src/pyfme/simulator.py b/src/pyfme/simulator.py index 6951be1..77d5726 100644 --- a/src/pyfme/simulator.py +++ b/src/pyfme/simulator.py @@ -44,6 +44,17 @@ def propagate(self, time, controls): self.system.model.propagate(time, mass0, inertia0, forces, moments) + def set_initial_state(self, state, controls): + forces, moments = self.aircraft.calculate_forces_and_moments( + self.system, self.environment, controls) + + self.system.set_initial_state(state=state, + mass=self.aircraft.mass, + inertia=self.aircraft.inertia, + forces=forces, + moments=moments + ) + def time_step(self, dt): """ Performs a simulation time step. diff --git a/src/pyfme/tests/test_PyFME.py b/src/pyfme/tests/test_PyFME.py index bfb33a9..5b52919 100644 --- a/src/pyfme/tests/test_PyFME.py +++ b/src/pyfme/tests/test_PyFME.py @@ -18,7 +18,7 @@ def foo(t, y): aircraft = Cessna310() # XXX: this initial condition does not set the full system state x0 = np.array([100, 0, 1, 0, 0, 0, 0.05, 0.02, 0, 0, 0, 1000]) - system = System(model=EulerFlatEarth(x0, callback=foo)) + system = System(model=EulerFlatEarth(callback=foo)) environment = Environment(ISA1976(), VerticalConstant(), NoWind()) simulation = Simulation(aircraft, system, environment) @@ -31,4 +31,6 @@ def foo(t, y): environment.update(system) + simulation.set_initial_state(x0, controls) + simulation.propagate(10, controls) From c016304c09556ead8350703dee847c230c133d2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sun, 30 Jul 2017 20:27:01 +0200 Subject: [PATCH 011/104] added initialization method and integrator callback --- src/pyfme/aircrafts/cessna_310.py | 1 - src/pyfme/models/euler_flat_earth.py | 20 +++-- src/pyfme/models/systems.py | 109 +++++++++++++++++++++++++- src/pyfme/models/tests/test_models.py | 2 +- src/pyfme/simulator.py | 58 ++++++++------ src/pyfme/tests/test_PyFME.py | 15 ++-- src/pyfme/utils/coordinates.py | 4 +- 7 files changed, 162 insertions(+), 47 deletions(-) diff --git a/src/pyfme/aircrafts/cessna_310.py b/src/pyfme/aircrafts/cessna_310.py index ff857e3..9cc1cf2 100644 --- a/src/pyfme/aircrafts/cessna_310.py +++ b/src/pyfme/aircrafts/cessna_310.py @@ -175,7 +175,6 @@ def _calculate_thrust_forces_moments(self): Ft = np.array([q * Sw * self.Ct, 0, 0]) return Ft - def calculate_forces_and_moments(self, system, environment, controls): # Update controls and aerodynamics diff --git a/src/pyfme/models/euler_flat_earth.py b/src/pyfme/models/euler_flat_earth.py index ca1fcc2..f9b1e57 100644 --- a/src/pyfme/models/euler_flat_earth.py +++ b/src/pyfme/models/euler_flat_earth.py @@ -40,20 +40,31 @@ def dynamic_system_state_to_full_system_state(self, mass, inertia, forces, momen y_dot = self.dynamic_system_equations(t, y, mass, inertia, forces, moments) # TODO: define the rest of conversions - full_system_state['geodetic_coordinates'] = np.zeros(3) - full_system_state['geocentric_coordinates'] = np.zeros(3) + full_system_state['geodetic_coordinates'] = np.array([0., 0., y[11]]) # implement + full_system_state['geocentric_coordinates'] = np.zeros(3) # implement full_system_state['earth_coordinates'] = y[9:12] full_system_state['euler_angles'] = y[6:9] - full_system_state['quaternions'] = np.zeros(4) + full_system_state['quaternions'] = np.zeros(4) # implement full_system_state['vel_body'] = y[0:3] full_system_state['vel_NED'] = y_dot[9:12] full_system_state['vel_ang'] = y[3:6] full_system_state['accel_body'] = y_dot[0:3] - full_system_state['accel_NED'] = np.zeros(3) + full_system_state['accel_NED'] = np.zeros(3) # implement full_system_state['accel_ang'] = y_dot[6:9] return full_system_state + def full_system_state_to_dynamic_system_state(self, full_system_state): + + state = np.zeros(self.n_states) + + state[0:3] = full_system_state.__getattribute__('vel_body') + state[3:6] = full_system_state.__getattribute__('vel_ang') + state[6:9] = full_system_state.__getattribute__('euler_angles') + state[9:12] = full_system_state.__getattribute__('earth_coordinates') + + return state + @staticmethod def dynamic_system_equations(time, state_vector, mass, inertia, forces, moments): @@ -148,7 +159,6 @@ def dynamic_system_equations(time, state_vector, mass, inertia, forces, return np.array([du_dt, dv_dt, dw_dt, dp_dt, dq_dt, dr_dt, dtheta_dt, dphi_dt, dpsi_dt, dx_dt, dy_dt, dz_dt]) - @staticmethod def dynamic_system_jacobian(state_vector, mass, inertia, forces, moments): # TODO: calculate jacobians diff --git a/src/pyfme/models/systems.py b/src/pyfme/models/systems.py index df1091d..4353e3d 100644 --- a/src/pyfme/models/systems.py +++ b/src/pyfme/models/systems.py @@ -152,9 +152,103 @@ def r(self): def time(self): return self.model.time - def set_initial_state(self, state, mass, inertia, forces, moments): + # TODO: break in several methods: position, attitude... + def set_initial_state(self, geodetic_coordinates=None, + geocentric_coordinates=None, euler_angles=None, quaternions=None, + vel_body=None, vel_NED=None, vel_ang=None, accel_body=None, + accel_NED=None, accel_ang=None): + + # Set position + if (geodetic_coordinates is not None) and (geocentric_coordinates is + not None): + # TODO: complete error (two values given) + raise ValueError() + + elif geodetic_coordinates is not None: + self.geodetic_coordinates = geodetic_coordinates + # TODO: geodetic to geocentric (cartopy?) + # self.geocentric_coordinates = transformation + elif geocentric_coordinates is not None: + self.geocentric_coordinates = geocentric_coordinates + # TODO: geocentric to geodetic (cartopy?) + else: + # no values for position + self.geodetic_coordinates = np.zeros(3) + # TODO: geodetic to geocentric (cartopy?) + # self.geocentric_coordinates = transformation + pass + + self.earth_coordinates[2] = self.geodetic_coordinates[2] + + # Set attitude + if (quaternions is not None) and (euler_angles is not None): + # TODO: complete error (two values given) + raise ValueError() + elif quaternions is not None: + self.quaternions = quaternions + # TODO: quaternions to euler + # self.euler = transformation + elif euler_angles is not None: + self.euler_angles = euler_angles + # TODO: euler angles to quaternions + # self.quaternions = transformation + else: + self.euler_angles = np.zeros(3) + # TODO: euler angles to quaternions + # self.quaternions = transformation + + # Set velocity + if (vel_body is not None) and (vel_NED is not None): + # TODO: complete error (two values given) + raise ValueError() + elif vel_body is not None: + self.vel_body = vel_body + # TODO: body to horizon + # self.vel_NED = transformation + elif vel_NED is not None: + self.vel_NED = vel_NED + # TODO: horizon to body + # self.vel_body = transformation + else: + self.vel_body = np.zeros(3) + self.vel_NED = np.zeros(3) + + # Set angular velocity + if vel_ang is not None: + self.vel_ang = vel_ang + else: + self.vel_ang = np.zeros(3) + + # Set accelerations + if (accel_body is not None) and (accel_NED is not None): + # TODO: complete error (two values given) + raise ValueError() + elif accel_body is not None: + self.accel_body = accel_body + # TODO: body to horizon + # self.acc_NED = transformation + elif accel_NED is not None: + self.accel_NED = accel_NED + # TODO: horizon to body + # self.acc_body = transformation + else: + self.accel_body = np.zeros(3) + self.accel_NED = np.zeros(3) + + # Set angular velocity + if vel_ang is not None: + self.vel_ang = vel_ang + else: + self.vel_ang = np.zeros(3) + + # Set angular accelerations + if accel_ang is not None: + self.accel_ang = accel_ang + else: + self.accel_ang = np.zeros(3) + + state = self.model.full_system_state_to_dynamic_system_state(self) self.model.set_initial_state(state) - self.set_full_system_state(mass, inertia, forces, moments) def set_full_system_state(self, mass, inertia, forces, moments): rv = self.model.dynamic_system_state_to_full_system_state( @@ -184,7 +278,7 @@ def __init__(self, n_states, use_jacobian=None, integrator=None, if integrator is None: integrator = 'dopri5' - self._ode.set_integrator(integrator, **integrator_params) + self._ode.set_integrator(integrator, nsteps=10000, **integrator_params) if callback: self._ode.set_solout(callback) @@ -197,6 +291,9 @@ def set_initial_state(self, state): self.state = state self._ode.set_initial_value(self.state) + def set_forcing_terms(self, mass, inertia, forces, moments): + self._ode.set_f_params(mass, inertia, forces, moments) + def propagate(self, dt, mass, inertia, forces, moments): t = self._ode.t + dt @@ -204,7 +301,7 @@ def propagate(self, dt, mass, inertia, forces, moments): self._ode.set_f_params(mass, inertia, forces, moments) if self._ode.jac: - self._ode.set_jac_params(mass, inertia, forces, moments) + self.set_forcing_terms(mass, inertia, forces, moments) self.state = self._ode.integrate(t) @@ -216,6 +313,10 @@ def dynamic_system_state_to_full_system_state(self, mass, inertia, forces, moments): raise NotImplementedError + @abstractmethod + def full_system_state_to_dynamic_system_state(self, full_system): + raise NotImplementedError + @abstractstaticmethod def dynamic_system_equations(time, state_vector, mass, inertia, forces, moments): diff --git a/src/pyfme/models/tests/test_models.py b/src/pyfme/models/tests/test_models.py index 428123d..db21bc3 100644 --- a/src/pyfme/models/tests/test_models.py +++ b/src/pyfme/models/tests/test_models.py @@ -19,6 +19,6 @@ def foo(t, y): print({name: system.__getattribute__(name) for name in system.full_system_state_names}) - model = EulerFlatEarth(callback=foo, callback=foo) + model = EulerFlatEarth(callback=foo) system = System(model=model) system.model.propagate(10, mass, inertia, forces, moments) diff --git a/src/pyfme/simulator.py b/src/pyfme/simulator.py index 77d5726..daae22b 100644 --- a/src/pyfme/simulator.py +++ b/src/pyfme/simulator.py @@ -31,8 +31,12 @@ def __init__(self, aircraft, system, environment): environment : Environment Environment. """ - self.aircraft = aircraft self.system = system + + callback = lambda time, state: self.time_step(time, state) + self.system.model._ode.set_solout(callback) + + self.aircraft = aircraft self.environment = environment def propagate(self, time, controls): @@ -44,36 +48,38 @@ def propagate(self, time, controls): self.system.model.propagate(time, mass0, inertia0, forces, moments) - def set_initial_state(self, state, controls): - forces, moments = self.aircraft.calculate_forces_and_moments( - self.system, self.environment, controls) + def time_step(self, time, state): + forces = self.aircraft.total_forces + moments = self.aircraft.total_moments + mass = self.aircraft.mass + inertia = self.aircraft.inertia - self.system.set_initial_state(state=state, - mass=self.aircraft.mass, - inertia=self.aircraft.inertia, - forces=forces, - moments=moments - ) + self.system.model.state = state + self.system.set_full_system_state(mass, inertia, forces, moments) - def time_step(self, dt): - """ - Performs a simulation time step. + self.environment.update(self.system) - Parameters - ---------- - dt : float - Time step (s). - """ + controls = self.get_current_controls(time) - self.system.propagate(self.aircraft, dt) - self.environment.update(self.system) - controls = self._get_current_controls(self.system.time) - self.aircraft.update(controls, self.system, self.environment) - self.aircraft.calculate_forces_and_moments() + forces, moment = self.aircraft.calculate_forces_and_moments( + self.system, + self.environment, + controls + ) - @abstractmethod - def _get_current_controls(self, ii): - return + self.system.model.set_forcing_terms(mass, inertia, forces, moments) + + print(time, state) + + def get_current_controls(self, time): + + # TODO: evaluate control interpolation functions + controls = {'delta_elevator': 0.1, + 'hor_tail_incidence': 0.2, + 'delta_aileron': 0.1, + 'delta_rudder': 0.3, + 'delta_t': 0.5} + return controls class BatchSimulation(Simulation): diff --git a/src/pyfme/tests/test_PyFME.py b/src/pyfme/tests/test_PyFME.py index 5b52919..1001823 100644 --- a/src/pyfme/tests/test_PyFME.py +++ b/src/pyfme/tests/test_PyFME.py @@ -12,17 +12,18 @@ def test_simulation(): - def foo(t, y): - print(t, y) - aircraft = Cessna310() - # XXX: this initial condition does not set the full system state - x0 = np.array([100, 0, 1, 0, 0, 0, 0.05, 0.02, 0, 0, 0, 1000]) - system = System(model=EulerFlatEarth(callback=foo)) + system = System(model=EulerFlatEarth()) environment = Environment(ISA1976(), VerticalConstant(), NoWind()) simulation = Simulation(aircraft, system, environment) + simulation.system.set_initial_state( + geodetic_coordinates=np.array([0., 0., 1000.]), + vel_body=np.array([100, 0.2, 1]), + euler_angles=np.array([0.01, 0.0, np.pi]) + ) + controls = {'delta_elevator': 0.1, 'hor_tail_incidence': 0.2, 'delta_aileron': 0.1, @@ -31,6 +32,4 @@ def foo(t, y): environment.update(system) - simulation.set_initial_state(x0, controls) - simulation.propagate(10, controls) diff --git a/src/pyfme/utils/coordinates.py b/src/pyfme/utils/coordinates.py index 9307031..8f48750 100644 --- a/src/pyfme/utils/coordinates.py +++ b/src/pyfme/utils/coordinates.py @@ -76,7 +76,7 @@ def body2hor(body_coords, theta, phi, psi): 2012 """ - check_theta_phi_psi_range(theta, phi, psi) + # check_theta_phi_psi_range(theta, phi, psi) # Transformation matrix from body to local horizon Lhb = np.array([ @@ -142,7 +142,7 @@ def hor2body(hor_coords, theta, phi, psi): 2012 """ - check_theta_phi_psi_range(theta, phi, psi) + # check_theta_phi_psi_range(theta, phi, psi) # Transformation matrix local horizon to body Lbh = np.array([ From fa9950235ad40444db1ef50fb4cb6e7555f2444e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sun, 30 Jul 2017 21:14:02 +0200 Subject: [PATCH 012/104] modified controls to be functions --- src/pyfme/simulator.py | 18 +- src/pyfme/tests/test_PyFME.py | 15 +- src/pyfme/utils/input_generator.py | 318 ++++++++++++----------------- 3 files changed, 141 insertions(+), 210 deletions(-) diff --git a/src/pyfme/simulator.py b/src/pyfme/simulator.py index daae22b..861a031 100644 --- a/src/pyfme/simulator.py +++ b/src/pyfme/simulator.py @@ -39,9 +39,13 @@ def __init__(self, aircraft, system, environment): self.aircraft = aircraft self.environment = environment - def propagate(self, time, controls): + self.controls = {} - controls0 = controls + def propagate(self, time): + + t0 = self.system.time + + controls0 = self.get_current_controls(t0) mass0, inertia0 = self.aircraft.mass, self.aircraft.inertia forces, moments = self.aircraft.calculate_forces_and_moments( self.system, self.environment, controls0) @@ -72,14 +76,8 @@ def time_step(self, time, state): print(time, state) def get_current_controls(self, time): - - # TODO: evaluate control interpolation functions - controls = {'delta_elevator': 0.1, - 'hor_tail_incidence': 0.2, - 'delta_aileron': 0.1, - 'delta_rudder': 0.3, - 'delta_t': 0.5} - return controls + c = {c_name: c_fun(time) for c_name, c_fun in self.controls.items()} + return c class BatchSimulation(Simulation): diff --git a/src/pyfme/tests/test_PyFME.py b/src/pyfme/tests/test_PyFME.py index 1001823..faa9078 100644 --- a/src/pyfme/tests/test_PyFME.py +++ b/src/pyfme/tests/test_PyFME.py @@ -9,9 +9,10 @@ from pyfme.models.systems import System from pyfme.simulator import Simulation +from pyfme.utils.input_generator import Constant, Harmonic -def test_simulation(): +def test_simulation(): aircraft = Cessna310() system = System(model=EulerFlatEarth()) environment = Environment(ISA1976(), VerticalConstant(), NoWind()) @@ -24,12 +25,12 @@ def test_simulation(): euler_angles=np.array([0.01, 0.0, np.pi]) ) - controls = {'delta_elevator': 0.1, - 'hor_tail_incidence': 0.2, - 'delta_aileron': 0.1, - 'delta_rudder': 0.3, - 'delta_t': 0.5} + simulation.controls = {'delta_elevator': Constant(0.1), + 'hor_tail_incidence': Harmonic(1, 3, 1, 2, 0), + 'delta_aileron': Constant(0.2), + 'delta_rudder': Constant(0.3), + 'delta_t': Constant(0.5)} environment.update(system) - simulation.propagate(10, controls) + simulation.propagate(10) diff --git a/src/pyfme/utils/input_generator.py b/src/pyfme/utils/input_generator.py index c4405c7..5be87fd 100644 --- a/src/pyfme/utils/input_generator.py +++ b/src/pyfme/utils/input_generator.py @@ -8,196 +8,128 @@ ---------------- Provides some typical inputs signals such as: step, doublet, ramp, harmonic. """ -import numpy as np - - -def step(t_init, T, A, time, offset=0, var=None): - """ Step input. - - Parameters - ---------- - t_init : float - Initial time (s). - T : float - Input signal length (s). - A : float - Peak to peak amplitude. - time : array_like - Time simulation vector (s). - offset : float - Signal offset. - var : array_like, opt - Array containing previous perturbations. Signal will be added to - this one. - - Returns - ------- - step_input : array_like - """ - - if var is None: - step_input = np.zeros_like(time) - else: - if np.size(var) == np.size(time): - step_input = var - else: - raise ValueError('var and time must have the same size') - - step_input[(time >= t_init) & (time <= t_init + T)] += A + float(offset) - - return step_input - - -def doublet(t_init, T, A, time, offset=0, var=None): - """ Doublet input. - - Parameters - ---------- - t_init : float - Initial time (s). - T : float - Input signal length (s). - A : float - Peak to peak amplitude. - time : array_like - Time simulation vector (s). - offset : float - Signal offset. - var : array_like, opt - Array containing previous perturbations. Signal will be added to - this one. - - Returns - ------- - doublet_input : array_like - """ - - if var is None: - doublet_input = np.zeros_like(time) - else: - if np.size(var) == np.size(time): - doublet_input = var - else: - raise ValueError('var and time must have the same size') - - part_1 = (time >= t_init) & (time <= t_init + T / 2) - doublet_input[part_1] += A / 2 + float(offset) - - part_2 = (time > t_init + T / 2) & (time <= t_init + T) - doublet_input[part_2] += - A / 2 + float(offset) - - return doublet_input - - -def ramp(t_init, T, A, time, offset=0, var=None): - """ Ramp input - - Parameters - ---------- - t_init : float - Initial time (s). - T : float - Input signal length (s). - A : float - Peak to peak amplitude. - time : array_like - Time simulation vector (s). - offset : float - Signal offset. - var : array_like, opt - Array containing previous perturbations. Signal will be added to - this one. - - Returns - ------- - ramp_input : array_like - """ - - if var is None: - ramp_input = np.zeros_like(time) - else: - if np.size(var) == np.size(time): - ramp_input = var - else: - raise ValueError('var and time must have the same size') - - time_input = time[(time >= t_init) & (time <= t_init + T)] - condition = (time >= t_init) & (time <= t_init + T) - ramp_input[condition] += (A / T) * (time_input - t_init) + float(offset) - - return ramp_input - - -def harmonic(t_init, T, A, time, f, phase=0, offset=0, var=None): - """ Sinusoid input. - - Parameters - ---------- - t_init : float - Initial time (s). - T : float - Input signal length (s). - A : float - Peak to peak amplitude. - time : array_like - Time simulation vector (s). - f : float - Sinusoidal frequency (s). - phase : float - Sinusoidal phase (rad). - offset : float - Signal offset. - var : array_like, opt - Array containing previous perturbations. Signal will be added to - this one. - - Returns - ------- - harmonic_input : array_like - """ - time_input = time[(time >= t_init) & (time <= t_init + T)] - - if var is None: - harmonic_input = np.zeros_like(time) - else: - if np.size(var) == np.size(time): - harmonic_input = var - else: - raise ValueError('var and time must have the same size') - - harmonic_input[(time >= t_init) & (time <= t_init + T)] += \ - A / 2 * np.sin(2 * np.pi * f * (time_input - t_init) + phase) + \ - float(offset) - - return harmonic_input - - -def sinusoid(t_init, T, A, time, phase=0, offset=0, var=None): - """ Sinusoid input. - - Parameters - ---------- - t_init : float - Initial time (s). - T : float - Input signal length (s). - A : float - Peak to peak amplitude. - phase : float - sinusoidal phase (rad). - time : array_like - Time simulation vector (s). - offset : float - Signal offset. - var : array_like, opt - Array containing previous perturbations. Signal will be added to - this one. - - Returns - ------- - sinusoide_input : array_like - """ - output = harmonic(t_init, T, A, time, f=1/T, phase=phase, offset=offset, - var=var) - - return output +from abc import abstractmethod + +from numpy import sin, pi + + +# TODO: documentation +class Control(object): + + def __init__(self): + self._fun = None + + @abstractmethod + def __call__(self, t): + raise NotImplementedError + + def __add__(self, other): + control = Control() + control._fun = lambda t: self(t) + other(t) + return control + + def __sub__(self, other): + control = Control() + control._fun = lambda t: self(t) - other(t) + return control + + def __mul__(self, other): + control = Control() + control._fun = lambda t: self(t) * other(t) + return control + + def __truediv__(self, other): + control = Control() + control._fun = lambda t: self(t) / other(t) + return control + + +class Constant(Control): + + def __init__(self, offset=0): + super().__init__() + self.offset = offset + + def __call__(self, t): + return self.offset + + +class Step(Control): + + def __init__(self, t_init, T, A, offset=0): + super().__init__() + self.t_init = t_init + self.T = T + self.A = A + self.offset = offset + + self.t_fin = self.t_init + self.T + + def __call__(self, t): + value = self.offset + if self.t_init <= t <= self.t_fin: + value += self.A + return value + + +class Doublet(Control): + + def __init__(self, t_init, T, A, offset=0): + super().__init__() + self.t_init = t_init + self.T = T + self.A = A + self.offset = offset + + self.t_fin1 = self.t_init + self.T / 2 + self.t_fin2 = self.t_init + self.T + + def __call__(self, t): + value = self.offset + + if self.t_init <= t < self.t_fin1: + value += self.A / 2 + elif self.t_fin1 < t <= self.t_fin2: + value -= self.A / 2 + return value + + +class Ramp(Control): + + def __init__(self, t_init, T, A, offset=0): + super().__init__() + self.t_init = t_init + self.T = T + self.A = A + self.offset = offset + + self.slope = self.A / self.T + self.t_fin = self.t_init + self.T + + def __call__(self, t): + value = self.offset + if self.t_init <= t <= self.t_fin: + value += self.slope * (t - self.t_init) + + return value + + +class Harmonic(Control): + + def __init__(self, t_init, t_fin, A, freq, phase, offset=0): + super().__init__() + self.t_init = t_init + self.t_fin = t_fin + self.A = A + self.freq = freq + self.phase = phase + self.offset = offset + + def __call__(self, t): + value = self.offset + + if self.t_init <= t <= self.t_fin: + value += self.A/2 * sin(2 * pi * self.freq * (t - self.t_init) + + self.phase) + + return value From bab268b24bff225aca2bf4ee312b7df2defa1caf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sun, 13 Aug 2017 13:12:01 +0200 Subject: [PATCH 013/104] added aerodynamics setter for aircraft trimming process --- src/pyfme/aircrafts/aircraft.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/pyfme/aircrafts/aircraft.py b/src/pyfme/aircrafts/aircraft.py index 061b282..c4ecec1 100644 --- a/src/pyfme/aircrafts/aircraft.py +++ b/src/pyfme/aircrafts/aircraft.py @@ -95,6 +95,17 @@ def _calculate_aerodynamics(self, system, environment): self.Mach = self.TAS / environment.a self.q_inf = 0.5 * environment.rho * self.TAS ** 2 + def _calculate_aerodynamics_2(self, TAS, alpha, beta, environment): + + self.alpha, self.beta, self.TAS = alpha, beta, TAS + + # Setting velocities & dynamic pressure + self.CAS = tas2cas(self.TAS, environment.p, environment.rho) + self.EAS = tas2eas(self.TAS, environment.rho) + self.Mach = self.TAS / environment.a + self.q_inf = 0.5 * environment.rho * self.TAS ** 2 + + @abstractmethod def calculate_forces_and_moments(self, system, environment, controls): From 721019ae6c94e0198f7d95203997dcea2d45fb43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sun, 13 Aug 2017 13:14:13 +0200 Subject: [PATCH 014/104] added a method to set system state from trimmed variables --- src/pyfme/models/euler_flat_earth.py | 11 +++++++++++ src/pyfme/models/systems.py | 4 ++++ 2 files changed, 15 insertions(+) diff --git a/src/pyfme/models/euler_flat_earth.py b/src/pyfme/models/euler_flat_earth.py index f9b1e57..6cf08fe 100644 --- a/src/pyfme/models/euler_flat_earth.py +++ b/src/pyfme/models/euler_flat_earth.py @@ -65,6 +65,16 @@ def full_system_state_to_dynamic_system_state(self, full_system_state): return state + def trim_system_to_dynamic_system_state(self, phi, theta, p, q, r, u, v, w): + + state = self.state.copy() + + state[0:3] = np.array([u, v, w]) + state[3:6] = np.array([p, q, r]) + state[6:8] = np.array([theta, phi]) + + return state + @staticmethod def dynamic_system_equations(time, state_vector, mass, inertia, forces, moments): @@ -159,6 +169,7 @@ def dynamic_system_equations(time, state_vector, mass, inertia, forces, return np.array([du_dt, dv_dt, dw_dt, dp_dt, dq_dt, dr_dt, dtheta_dt, dphi_dt, dpsi_dt, dx_dt, dy_dt, dz_dt]) + @staticmethod def dynamic_system_jacobian(state_vector, mass, inertia, forces, moments): # TODO: calculate jacobians diff --git a/src/pyfme/models/systems.py b/src/pyfme/models/systems.py index 4353e3d..ce916b8 100644 --- a/src/pyfme/models/systems.py +++ b/src/pyfme/models/systems.py @@ -317,6 +317,10 @@ def dynamic_system_state_to_full_system_state(self, mass, inertia, def full_system_state_to_dynamic_system_state(self, full_system): raise NotImplementedError + @abstractmethod + def trim_system_to_dynamic_system_state(self, full_system): + raise NotImplementedError + @abstractstaticmethod def dynamic_system_equations(time, state_vector, mass, inertia, forces, moments): From 45ef6d904bfab0cf4128579a6f7a402ce031bb80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sun, 13 Aug 2017 13:25:22 +0200 Subject: [PATCH 015/104] trimmer working --- src/pyfme/simulator.py | 96 ++++++++++++++++++++ src/pyfme/tests/test_PyFME.py | 94 +++++++++++++++++++- src/pyfme/utils/trimmer.py | 160 +++++----------------------------- 3 files changed, 209 insertions(+), 141 deletions(-) diff --git a/src/pyfme/simulator.py b/src/pyfme/simulator.py index 861a031..04965b8 100644 --- a/src/pyfme/simulator.py +++ b/src/pyfme/simulator.py @@ -9,6 +9,9 @@ """ from abc import abstractmethod import numpy as np +from scipy.optimize import least_squares + +from pyfme.utils.trimmer import trimming_cost_func class Simulation(object): @@ -43,6 +46,8 @@ def __init__(self, aircraft, system, environment): def propagate(self, time): + self.environment.update(self.system) + t0 = self.system.time controls0 = self.get_current_controls(t0) @@ -75,10 +80,101 @@ def time_step(self, time, state): print(time, state) + self.save_time_step() + + def save_time_step(self): + + for var_name, value_pointer in self.vars_to_save.items(): + self.results[var_name].append(operator.attrgetter(value_pointer)( + self)) + def get_current_controls(self, time): c = {c_name: c_fun(time) for c_name, c_fun in self.controls.items()} return c + def trim_aircraft(self, geodetic_initial_pos, TAS, gamma, turn_rate, + initial_controls, exclude_controls=[], verbose=0): + """Finds a combination of values of the state and control variables that + correspond to a steady-state flight condition. Steady-state aircraft flight + can be defined as a condition in which all of the motion variables are + constant or zero. That is, the linear and angular velocity components are + constant (or zero), thus all acceleration components are zero. + + Parameters + ---------- + geodetic_initial_pos : ndarray, shape(3) + (Latitude, longitude, height) + TAS : float + True Air Speed (m/s). + gamma : float, optional + Flight path angle (rad). + turn_rate : float, optional + Turn rate, d(psi)/dt (rad/s). + initial_controls : dict + Initial value guess for each control. + exclude_controls : list, optional + List with controls not to be trimmed. If not given, + every control is considered fixed. + verbose : {0, 1, 2}, optional + Level of algorithm's verbosity: + + * 0 (default) : work silently. + * 1 : display a termination report. + * 2 : display progress during iterations (not supported by 'lm' + method). + + Notes + ----- + See section 3.4 in [1] for the algorithm description. + See section 2.5 in [1] for the definition of steady-state flight condition. + + References + ---------- + .. [1] Stevens, BL and Lewis, FL, "Aircraft Control and Simulation", + Wiley-lnterscience. + """ + + system = self.system + env = self.environment + ac = self.aircraft + + system.set_initial_state(geodetic_coordinates=geodetic_initial_pos) + env.update(system) + + # TODO: improve initialization method + alpha0 = 0.05 + beta0 = 0.001 * np.sign(turn_rate) + + ac._calculate_aerodynamics_2(TAS, alpha0, beta0, env) + + for control in ac.controls: + if control not in initial_controls: + raise ValueError("Control {} not given in initial_controls: {" + "}".format(control, initial_controls)) + else: + ac.controls[control] = initial_controls[control] + + controls_to_trim = list(ac.controls.keys() - exclude_controls) + + initial_guess = [alpha0, beta0] + for control in controls_to_trim: + initial_guess.append(initial_controls[control]) + + lower_bounds = [-0.5, -0.25] # Alpha and beta upper bounds. + upper_bounds = [+0.5, +0.25] # Alpha and beta lower bounds. + for ii in controls_to_trim: + lower_bounds.append(ac.control_limits[ii][0]) + upper_bounds.append(ac.control_limits[ii][1]) + bounds = (lower_bounds, upper_bounds) + + args = (system, ac, env, controls_to_trim, gamma, turn_rate) + + results = least_squares(trimming_cost_func, + x0=initial_guess, + args=args, + verbose=verbose, + bounds=bounds) + class BatchSimulation(Simulation): diff --git a/src/pyfme/tests/test_PyFME.py b/src/pyfme/tests/test_PyFME.py index faa9078..b318aeb 100644 --- a/src/pyfme/tests/test_PyFME.py +++ b/src/pyfme/tests/test_PyFME.py @@ -31,6 +31,98 @@ def test_simulation(): 'delta_rudder': Constant(0.3), 'delta_t': Constant(0.5)} - environment.update(system) + simulation.propagate(10) + + print(simulation.results) + + +def test_trimmer_00(): + aircraft = Cessna310() + system = System(model=EulerFlatEarth()) + environment = Environment(ISA1976(), VerticalConstant(), NoWind()) + + simulation = Simulation(aircraft, system, environment) + + initial_controls = {'delta_elevator': 0, + 'hor_tail_incidence': 0, + 'delta_aileron': 0, + 'delta_rudder': 0, + 'delta_t': 0} + + simulation.trim_aircraft(geodetic_initial_pos=(0, 0, 1000), + TAS=100, + gamma=0.0, + turn_rate=0.0, + initial_controls=initial_controls, + exclude_controls=['hor_tail_incidence']) + + simulation.propagate(10) + + +def test_trimmer_01(): + aircraft = Cessna310() + system = System(model=EulerFlatEarth()) + environment = Environment(ISA1976(), VerticalConstant(), NoWind()) + + simulation = Simulation(aircraft, system, environment) + + initial_controls = {'delta_elevator': 0, + 'hor_tail_incidence': 0, + 'delta_aileron': 0, + 'delta_rudder': 0, + 'delta_t': 0} + + simulation.trim_aircraft(geodetic_initial_pos=(0, 0, 1000), + TAS=60, + gamma=0.05, + turn_rate=0.0, + initial_controls=initial_controls, + exclude_controls=['hor_tail_incidence']) + + simulation.propagate(10) + + +def test_trimmer_02(): + aircraft = Cessna310() + system = System(model=EulerFlatEarth()) + environment = Environment(ISA1976(), VerticalConstant(), NoWind()) + + simulation = Simulation(aircraft, system, environment) + + initial_controls = {'delta_elevator': 0, + 'hor_tail_incidence': 0, + 'delta_aileron': 0, + 'delta_rudder': 0, + 'delta_t': 0} + + simulation.trim_aircraft(geodetic_initial_pos=(0, 0, 1000), + TAS=60, + gamma=0.00, + turn_rate=0.05, + initial_controls=initial_controls, + exclude_controls=['hor_tail_incidence']) + + simulation.propagate(10) + + +def test_trimmer_03(): + aircraft = Cessna310() + system = System(model=EulerFlatEarth()) + environment = Environment(ISA1976(), VerticalConstant(), NoWind()) + + simulation = Simulation(aircraft, system, environment) + + initial_controls = {'delta_elevator': 0, + 'hor_tail_incidence': 0, + 'delta_aileron': 0, + 'delta_rudder': 0, + 'delta_t': 0} + + simulation.trim_aircraft(geodetic_initial_pos=(0, 0, 1000), + TAS=60, + gamma=0.05, + turn_rate=0.05, + initial_controls=initial_controls, + exclude_controls=['hor_tail_incidence']) simulation.propagate(10) diff --git a/src/pyfme/utils/trimmer.py b/src/pyfme/utils/trimmer.py index b81508c..16d443d 100644 --- a/src/pyfme/utils/trimmer.py +++ b/src/pyfme/utils/trimmer.py @@ -14,143 +14,13 @@ until some solution criterion is met. """ -from copy import deepcopy -from warnings import warn from math import sqrt, sin, cos, tan, atan import numpy as np -from scipy.optimize import least_squares from pyfme.utils.coordinates import wind2body from pyfme.models.constants import GRAVITY - -def steady_state_flight_trimmer(aircraft, system, env, - TAS, - controls_0, controls2trim=None, - gamma=0.0, turn_rate=0.0, - verbose=0): - """Finds a combination of values of the state and control variables that - correspond to a steady-state flight condition. Steady-state aircraft flight - can be defined as a condition in which all of the motion variables are - constant or zero. That is, the linear and angular velocity components are - constant (or zero), thus all acceleration components are zero. - - Parameters - ---------- - aircraft : Aircraft - Plane to be trimmed. - system : System - System for aircraft trimming. - env : Environment - Environment with the models for wind, atmosphere and gravity. - TAS : float - True Air Speed (m/s). - controls_0 : dict - Initial value guess for each control. If the control is not in - `controls2trim` or `controls2trim` is `None` the control is - considered fixed to that value during the trimming process. - controls2trim : list, optional - List with controls to be trimmed. If not given, no control is - considered fixed. - gamma : float, optional - Flight path angle (rad). - turn_rate : float, optional - Turn rate, d(psi)/dt (rad/s). - verbose : {0, 1, 2}, optional - Level of algorithm's verbosity: - - * 0 (default) : work silently. - * 1 : display a termination report. - * 2 : display progress during iterations (not supported by 'lm' - method). - - Returns - ------- - aircraft : Aircraft - Trimmed plane. - system : System - Trimmed system. - env : Environment - Trimmed environment (gravity in body axis). - results : dict - Relevant parameters calculated during the aircraft trimming, - including least square results. - - Notes - ----- - See section 3.4 in [1] for the algorithm description. - See section 2.5 in [1] for the definition of steady-state flight condition. - - References - ---------- - .. [1] Stevens, BL and Lewis, FL, "Aircraft Control and Simulation", - Wiley-lnterscience. - """ - # Creating a copy of these objects in order to not modify any attribute - # inside this funciton. - trimmed_ac = deepcopy(aircraft) - trimmed_sys = deepcopy(system) - trimmed_env = deepcopy(env) - - trimmed_ac.TAS = TAS - trimmed_ac.Mach = aircraft.TAS / env.a - trimmed_ac.q_inf = 0.5 * trimmed_env.rho * aircraft.TAS ** 2 - - # Update environment - trimmed_env.update(trimmed_sys) - - # Check if every necessary control for the aircraft is given in controls_0. - for ac_control in trimmed_ac.controls: - if ac_control not in controls_0: - raise ValueError("Control {} not given in controls_0: {}".format( - ac_control, controls_0)) - trimmed_ac.controls = controls_0 - - # If controls2trim is not given, trim for every control. - if controls2trim is None: - controls2trim = list(controls_0.keys()) - - # TODO: try to look for a good initialization method for alpha & beta - initial_guess = [0.05 * np.sign(turn_rate), # alpha - 0.001 * np.sign(turn_rate)] # beta - - for control in controls2trim: - initial_guess.append(controls_0[control]) - - args = (trimmed_sys, trimmed_ac, trimmed_env, - controls2trim, gamma, turn_rate) - - lower_bounds = [-0.5, -0.25] # Alpha and beta upper bounds. - upper_bounds = [+0.5, +0.25] # Alpha and beta lower bounds. - for ii in controls2trim: - lower_bounds.append(aircraft.control_limits[ii][0]) - upper_bounds.append(aircraft.control_limits[ii][1]) - bounds = (lower_bounds, upper_bounds) - - results = least_squares(trimming_cost_func, x0=initial_guess, args=args, - verbose=verbose, bounds=bounds) - - fun = results['fun'] - cost = results['cost'] - - if cost > 1e-7 or any(abs(fun) > 1e-3): - warn("Trim process did not converge", RuntimeWarning) - - trimmed_sys.set_initial_state_vector() - - results = {'alpha': trimmed_ac.alpha, 'beta': trimmed_ac.beta, - 'u': trimmed_sys.u, 'v': trimmed_sys.v, 'w': trimmed_sys.w, - 'p': trimmed_sys.p, 'q': trimmed_sys.q, 'r': trimmed_sys.r, - 'theta': trimmed_sys.theta, 'phi': trimmed_sys.phi, - 'ls_opt': results} - - for control in controls2trim: - results[control] = trimmed_ac.controls[control] - - return trimmed_ac, trimmed_sys, trimmed_env, results - - def turn_coord_cons(turn_rate, alpha, beta, TAS, gamma=0): """Calculates phi for coordinated turn. """ @@ -215,11 +85,8 @@ def trimming_cost_func(trimmed_params, system, ac, env, controls2trim, else: phi = turn_coord_cons(turn_rate, alpha, beta, ac.TAS, gamma) - system.euler_angles[2] = phi - # Rate of climb constrain theta = rate_of_climb_cons(gamma, alpha, beta, phi) - system.euler_angles[1] = theta # w = turn_rate * k_h # k_h = sin(theta) i_b + sin(phi) * cos(theta) j_b + cos(theta) * sin(phi) @@ -227,13 +94,26 @@ def trimming_cost_func(trimmed_params, system, ac, env, controls2trim, p = - turn_rate * sin(theta) q = turn_rate * sin(phi) * cos(theta) r = turn_rate * cos(theta) * sin(phi) - system.vel_ang = np.array([p, q, r]) - system.vel_body = wind2body((ac.TAS, 0, 0), alpha=alpha, beta=beta) + + u, v, w = wind2body((ac.TAS, 0, 0), alpha=alpha, beta=beta) + + state = system.model.trim_system_to_dynamic_system_state( + phi, theta, p, q, r, u, v, w) + + system.model.set_initial_state(state) + system.set_full_system_state(ac.mass, ac.inertia, np.zeros(3), np.zeros(3)) env.update(system) - ac.update(new_controls, system, env) - forces, moments = ac.calculate_forces_and_moments() - vel = np.concatenate((system.vel_body[:], system.vel_ang[:])) - output = system.lamceq(0, vel, ac.mass, ac.inertia, forces, moments) - return output + forces, moments = ac.calculate_forces_and_moments(system, env, new_controls) + + output = system.model.dynamic_system_equations( + time=0, + state_vector=state, + mass=ac.mass, + inertia=ac.inertia, + forces=forces, + moments=moments + ) + + return output[:6] From 2ad5d2de8493654470c9220f5d39a9366a83cec5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sun, 13 Aug 2017 13:26:09 +0200 Subject: [PATCH 016/104] added method to save variables during simulation --- src/pyfme/simulator.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/pyfme/simulator.py b/src/pyfme/simulator.py index 04965b8..d9b870c 100644 --- a/src/pyfme/simulator.py +++ b/src/pyfme/simulator.py @@ -7,7 +7,7 @@ ---------------- """ -from abc import abstractmethod +import operator import numpy as np from scipy.optimize import least_squares @@ -44,6 +44,9 @@ def __init__(self, aircraft, system, environment): self.controls = {} + self.vars_to_save = {'h': 'system.height'} + self.results = {name: [] for name in self.vars_to_save} + def propagate(self, time): self.environment.update(self.system) From a6fdeb862146f83a470d4ea33330274e85b4011e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Mon, 14 Aug 2017 01:22:38 +0200 Subject: [PATCH 017/104] added properties to obtain forces and moments components --- src/pyfme/aircrafts/aircraft.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/pyfme/aircrafts/aircraft.py b/src/pyfme/aircrafts/aircraft.py index c4ecec1..f544e0c 100644 --- a/src/pyfme/aircrafts/aircraft.py +++ b/src/pyfme/aircrafts/aircraft.py @@ -67,6 +67,30 @@ def Iyy(self): def Izz(self): return self.inertia[2, 2] + @property + def Fx(self): + return self.total_forces[0] + + @property + def Fy(self): + return self.total_forces[1] + + @property + def Fz(self): + return self.total_forces[2] + + @property + def Mx(self): + return self.total_moments[0] + + @property + def My(self): + return self.total_moments[1] + + @property + def Mz(self): + return self.total_moments[2] + def _set_current_controls(self, controls): # If a control is not given, the previous value is assigned. From 281cd377893c6246ac7bed56e53f9e403050eaba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Mon, 14 Aug 2017 01:31:27 +0200 Subject: [PATCH 018/104] added variables to save --- src/pyfme/simulator.py | 215 ++++++------------------------------- src/pyfme/utils/trimmer.py | 1 + 2 files changed, 35 insertions(+), 181 deletions(-) diff --git a/src/pyfme/simulator.py b/src/pyfme/simulator.py index d9b870c..3bec8fb 100644 --- a/src/pyfme/simulator.py +++ b/src/pyfme/simulator.py @@ -44,7 +44,40 @@ def __init__(self, aircraft, system, environment): self.controls = {} - self.vars_to_save = {'h': 'system.height'} + self.vars_to_save = { + 'T': 'environment.T', # env + 'pressure': 'environment.p', + 'rho': 'environment.rho', + 'a': 'environment.a', + 'h': 'system.height', + 'Fx': 'aircraft.Fx', + 'Fy': 'aircraft.Fy', + 'Fz': 'aircraft.Fz', + 'Mx': 'aircraft.Mx', + 'My': 'aircraft.My', + 'Mz': 'aircraft.Mz', + 'TAS': 'aircraft.TAS', # aircraft + 'Mach': 'aircraft.Mach', + 'q_inf': 'aircraft.q_inf', + 'alpha': 'aircraft.alpha', + 'beta': 'aircraft.beta', + 'x_earth': 'system.x_earth', # system + 'y_earth': 'system.y_earth', + 'z_earth': 'system.z_earth', + 'psi': 'system.psi', + 'theta': 'system.theta', + 'phi': 'system.phi', + 'u': 'system.u', + 'v': 'system.v', + 'w': 'system.w', + 'v_north': 'system.v_north', + 'v_east': 'system.v_east', + 'v_down': 'system.v_down', + 'p': 'system.p', + 'q': 'system.q', + 'r': 'system.r' + } + self.results = {name: [] for name in self.vars_to_save} def propagate(self, time): @@ -177,183 +210,3 @@ def trim_aircraft(self, geodetic_initial_pos, TAS, gamma, turn_rate, args=args, verbose=verbose, bounds=bounds) - - -class BatchSimulation(Simulation): - - def __init__(self, aircraft, system, environment): - """ - Simulation objects. - - Parameters - ---------- - aircraft : Aircraft - Aircraft. - system : System - System. - environment : Environment - Environment. - """ - super().__init__(aircraft, system, environment) - self.time = None - self.aircraft_controls = {} - - def set_controls(self, time, controls): - """Set the time history of controls and the corresponding times. - - Parameters - ---------- - time : array_like - Time history for the simulation. - controls : array_like - Controls for the given time array. - """ - - # check time dimensions - if time.ndim != 1: - raise ValueError('Time must be unidimensional') - tsize = time.size - # check dimensions - for c in controls: - if controls[c].size != tsize: - msg = 'Control {} size ({}) does not match time size ({' \ - '})'.fromat(c, c.size, tsize) - raise ValueError(msg) - self.time = time - self.aircraft_controls = controls - - def _get_current_controls(self, ii): - """Returns controls at time step ii. - - Parameters - ---------- - ii - - Returns - ------- - - """ - return {control: self.aircraft_controls[control][ii] for control in - self.aircraft_controls.keys()} - - def run_simulation(self): - """ - Run simulation for the times in self.time. - """ - if self.time is None: - raise ValueError("Time and controls for the simulation must be " - "set with `set_controls()`") - - for ii, t in enumerate(self.time[1:]): - dt = t - self.time[ii] - self.time_step(dt) - # Save last time step - self.save_current_par_dict() - - def set_par_dict(self, par_list): - """ - Set parameters to be saved - - Parameters - ---------- - par_list : list - List with parameter names. - """ - if self.time is None: - msg = "Set controls with BatchSimulation.set_controls before " \ - "setting the par_dict" - raise RuntimeError(msg) - - for par_name in par_list: - if par_name in self.PAR_KEYS: - self.par_dict[par_name] = np.empty_like(self.time) - else: - msg = "{} not found in PAR_KEYS".format(par_name) - raise RuntimeWarning(msg) - - def save_current_par_dict(self): - self.PAR_KEYS = {'T': self.environment.T, # env - 'pressure': self.environment.p, - 'rho': self.environment.rho, - 'a': self.environment.a, - 'TAS': self.aircraft.TAS, # aircraft - 'Mach': self.aircraft.Mach, - 'q_inf': self.aircraft.q_inf, - 'alpha': self.aircraft.alpha, - 'beta': self.aircraft.beta, - 'x_earth': self.system.x_earth, # system - 'y_earth': self.system.y_earth, - 'z_earth': self.system.z_earth, - 'psi': self.system.psi, - 'theta': self.system.theta, - 'phi': self.system.phi, - 'u': self.system.u, - 'v': self.system.v, - 'w': self.system.w, - 'v_north': self.system.v_north, - 'v_east': self.system.v_east, - 'v_down': self.system.v_down, - 'p': self.system.p, - 'q': self.system.q, - 'r': self.system.r, - 'height': self.system.height, - 'F_xb': self.aircraft.total_forces[0], - 'F_yb': self.aircraft.total_forces[1], - 'F_zb': self.aircraft.total_forces[2], - 'M_xb': self.aircraft.total_moments[0], - 'M_yb': self.aircraft.total_moments[1], - 'M_zb': self.aircraft.total_moments[2] - } - for par_name, par_values in self.par_dict.items(): - par_values[self._time_step] = self.PAR_KEYS[par_name] - - -class RealTimeSimulation(Simulation): - - def __init__(self, aircraft, system, environment): - raise NotImplementedError() - super(RealTimeSimulation, self).__init__(aircraft, system, environment) - # TODO:... - - def _get_current_controls(self, ii): - # Joystick reading - raise NotImplementedError - - def set_par_dict(self, par_list): - - for par_name in par_list: - if par_name in self.PAR_KEYS: - self.par_dict[par_name] = [] - else: - msg = "{} not found in PAR_KEYS".format(par_name) - raise RuntimeWarning(msg) - - def save_current_par_dict(self): - self.PAR_KEYS = {'T': self.environment.T, # env - 'pressure': self.environment.p, - 'rho': self.environment.rho, - 'a': self.environment.a, - 'TAS': self.aircraft.TAS, # aircraft - 'Mach': self.aircraft.Mach, - 'q_inf': self.aircraft.q_inf, - 'alpha': self.aircraft.alpha, - 'beta': self.aircraft.beta, - 'x_earth': self.system.x_earth, # system - 'y_earth': self.system.y_earth, - 'z_earth': self.system.z_earth, - 'psi': self.system.psi, - 'theta': self.system.theta, - 'phi': self.system.phi, - 'u': self.system.u, - 'v': self.system.v, - 'w': self.system.w, - 'v_north': self.system.v_north, - 'v_east': self.system.v_east, - 'v_down': self.system.v_down, - 'p': self.system.p, - 'q': self.system.q, - 'r': self.system.r, - 'height': self.system.height - } - for par_name, par_values in self.par_dict: - par_values.append(self.PAR_KEYS[par_name]) diff --git a/src/pyfme/utils/trimmer.py b/src/pyfme/utils/trimmer.py index 16d443d..9c38323 100644 --- a/src/pyfme/utils/trimmer.py +++ b/src/pyfme/utils/trimmer.py @@ -21,6 +21,7 @@ from pyfme.utils.coordinates import wind2body from pyfme.models.constants import GRAVITY + def turn_coord_cons(turn_rate, alpha, beta, TAS, gamma=0): """Calculates phi for coordinated turn. """ From 4f90dea760dca5be2523a9a2e372decca3c69fcc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Mon, 14 Aug 2017 01:59:39 +0200 Subject: [PATCH 019/104] improved documentation --- src/pyfme/simulator.py | 113 +++++++++++++++++++++++++++++++++-------- 1 file changed, 91 insertions(+), 22 deletions(-) diff --git a/src/pyfme/simulator.py b/src/pyfme/simulator.py index 3bec8fb..8590d94 100644 --- a/src/pyfme/simulator.py +++ b/src/pyfme/simulator.py @@ -5,6 +5,8 @@ Simulation class ---------------- +Select the simulation configuration based on a system (and its dynamic +model), environment and aircraft. """ import operator @@ -36,7 +38,7 @@ def __init__(self, aircraft, system, environment): """ self.system = system - callback = lambda time, state: self.time_step(time, state) + callback = lambda time, state: self._time_step(time, state) self.system.model._ode.set_solout(callback) self.aircraft = aircraft @@ -77,23 +79,55 @@ def __init__(self, aircraft, system, environment): 'q': 'system.q', 'r': 'system.r' } - self.results = {name: [] for name in self.vars_to_save} def propagate(self, time): + """Run the simulation by integrating the system + + Parameters + ---------- + time : float + Final time of the simulation + + Notes + ----- + The propagation relies on the dense output of the integration + method, so that the number and length of the time steps is + automatically chosen. + """ self.environment.update(self.system) t0 = self.system.time - controls0 = self.get_current_controls(t0) + controls0 = self._get_current_controls(t0) mass0, inertia0 = self.aircraft.mass, self.aircraft.inertia forces, moments = self.aircraft.calculate_forces_and_moments( self.system, self.environment, controls0) self.system.model.propagate(time, mass0, inertia0, forces, moments) - def time_step(self, time, state): + def _time_step(self, time, state): + """Actions performed at each time step. This method is used as + callback in the integration process. + + Parameters + ---------- + time : float + Current time value + state : ndarray + System state at the given time step + + Notes + ----- + At each time step: + * the full system state is updated given the model state, + * the environment is updated given the current system, + * the aircraft controls for the current time step are set + * forces and moments for the current state, environment and controls + are calculated. + * the selected variables are saved. + """ forces = self.aircraft.total_forces moments = self.aircraft.total_moments mass = self.aircraft.mass @@ -104,7 +138,7 @@ def time_step(self, time, state): self.environment.update(self.system) - controls = self.get_current_controls(time) + controls = self._get_current_controls(time) forces, moment = self.aircraft.calculate_forces_and_moments( self.system, @@ -116,29 +150,47 @@ def time_step(self, time, state): print(time, state) - self.save_time_step() + self._save_time_step() - def save_time_step(self): + def _save_time_step(self): + """Saves the selected variables for the current system, environment + and aircraft. + """ for var_name, value_pointer in self.vars_to_save.items(): self.results[var_name].append(operator.attrgetter(value_pointer)( self)) - def get_current_controls(self, time): + def _get_current_controls(self, time): + """Get the control values for the current time step for the given + input functions. + + Parameters + ---------- + time : float + Current time value. + + Returns + ------- + controls : dict + Control value for each control + """ c = {c_name: c_fun(time) for c_name, c_fun in self.controls.items()} return c def trim_aircraft(self, geodetic_initial_pos, TAS, gamma, turn_rate, - initial_controls, exclude_controls=[], verbose=0): - """Finds a combination of values of the state and control variables that - correspond to a steady-state flight condition. Steady-state aircraft flight - can be defined as a condition in which all of the motion variables are - constant or zero. That is, the linear and angular velocity components are - constant (or zero), thus all acceleration components are zero. + initial_controls, psi=0, exclude_controls=[], verbose=0): + """Finds a combination of values of the state and control variables + that correspond to a steady-state flight condition. + + Steady-state aircraft flight is defined as a condition in which all + of the motion variables are constant or zero. That is, the linear and + angular velocity components are constant (or zero), thus all + acceleration components are zero. Parameters ---------- - geodetic_initial_pos : ndarray, shape(3) + geodetic_initial_pos : arraylike, shape(3) (Latitude, longitude, height) TAS : float True Air Speed (m/s). @@ -148,12 +200,13 @@ def trim_aircraft(self, geodetic_initial_pos, TAS, gamma, turn_rate, Turn rate, d(psi)/dt (rad/s). initial_controls : dict Initial value guess for each control. + psi : float, opt + Initial yaw angle (rad). exclude_controls : list, optional - List with controls not to be trimmed. If not given, - every control is considered fixed. + List with controls not to be trimmed. If not given, every control + is considered in the trim process. verbose : {0, 1, 2}, optional Level of algorithm's verbosity: - * 0 (default) : work silently. * 1 : display a termination report. * 2 : display progress during iterations (not supported by 'lm' @@ -162,7 +215,8 @@ def trim_aircraft(self, geodetic_initial_pos, TAS, gamma, turn_rate, Notes ----- See section 3.4 in [1] for the algorithm description. - See section 2.5 in [1] for the definition of steady-state flight condition. + See section 2.5 in [1] for the definition of steady-state flight + condition. References ---------- @@ -174,28 +228,42 @@ def trim_aircraft(self, geodetic_initial_pos, TAS, gamma, turn_rate, env = self.environment ac = self.aircraft - system.set_initial_state(geodetic_coordinates=geodetic_initial_pos) + # Initialize state + system.set_initial_state( + geodetic_coordinates=geodetic_initial_pos, + euler_angles=np.array([0, 0, psi]) + ) + # Update environment for the current state env.update(system) + # Initialize alpha and beta # TODO: improve initialization method alpha0 = 0.05 beta0 = 0.001 * np.sign(turn_rate) + # For the current alpha, beta, TAS and env, set the aerodynamics of + # the aircraft (q_inf, CAS, EAS...) ac._calculate_aerodynamics_2(TAS, alpha0, beta0, env) + # Initialize controls for control in ac.controls: if control not in initial_controls: - raise ValueError("Control {} not given in initial_controls: {" - "}".format(control, initial_controls)) + raise ValueError( + "Control {} not given in initial_controls: {}".format( + control, initial_controls) + ) else: ac.controls[control] = initial_controls[control] + # Select the controls that will be trimmed controls_to_trim = list(ac.controls.keys() - exclude_controls) + # Set the variables for the optimization initial_guess = [alpha0, beta0] for control in controls_to_trim: initial_guess.append(initial_controls[control]) + # Set bounds for each variable to be optimized lower_bounds = [-0.5, -0.25] # Alpha and beta upper bounds. upper_bounds = [+0.5, +0.25] # Alpha and beta lower bounds. for ii in controls_to_trim: @@ -205,6 +273,7 @@ def trim_aircraft(self, geodetic_initial_pos, TAS, gamma, turn_rate, args = (system, ac, env, controls_to_trim, gamma, turn_rate) + # Trim results = least_squares(trimming_cost_func, x0=initial_guess, args=args, From 2c8526723a2a39fc99fc9263bd9c95b838eab3fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Mon, 14 Aug 2017 13:25:13 +0200 Subject: [PATCH 020/104] removed unecessary attribute --- src/pyfme/models/systems.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/pyfme/models/systems.py b/src/pyfme/models/systems.py index ce916b8..b81c418 100644 --- a/src/pyfme/models/systems.py +++ b/src/pyfme/models/systems.py @@ -261,19 +261,16 @@ def set_full_system_state(self, mass, inertia, forces, moments): class DynamicSystem(object): def __init__(self, n_states, use_jacobian=None, integrator=None, - callback=None, - **integrator_params): + callback=None, **integrator_params): self.state = np.empty(n_states) - self._equations = self.dynamic_system_equations - if use_jacobian: self._jacobian = self.dynamic_system_jacobian else: self._jacobian = None - self._ode = ode(self._equations, self._jacobian) + self._ode = ode(self.dynamic_system_equations, self._jacobian) if integrator is None: integrator = 'dopri5' From ff980a53bbca55e358080edc1e1f7d181b7fcb42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Mon, 14 Aug 2017 13:41:58 +0200 Subject: [PATCH 021/104] added a method setsolout to the dynamic system in order not to modify the internal _ode --- src/pyfme/models/systems.py | 11 ++++++++--- src/pyfme/simulator.py | 2 +- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/pyfme/models/systems.py b/src/pyfme/models/systems.py index b81c418..bb12fa0 100644 --- a/src/pyfme/models/systems.py +++ b/src/pyfme/models/systems.py @@ -261,24 +261,26 @@ def set_full_system_state(self, mass, inertia, forces, moments): class DynamicSystem(object): def __init__(self, n_states, use_jacobian=None, integrator=None, - callback=None, **integrator_params): + **integrator_params): + # Allocate state vector self.state = np.empty(n_states) + # Set the jacobian if it is implemented in the model if use_jacobian: self._jacobian = self.dynamic_system_jacobian else: self._jacobian = None + # ODE setup self._ode = ode(self.dynamic_system_equations, self._jacobian) if integrator is None: integrator = 'dopri5' + # TODO: carefully review integrator parameters such as nsteps self._ode.set_integrator(integrator, nsteps=10000, **integrator_params) - if callback: - self._ode.set_solout(callback) @property def time(self): @@ -291,6 +293,9 @@ def set_initial_state(self, state): def set_forcing_terms(self, mass, inertia, forces, moments): self._ode.set_f_params(mass, inertia, forces, moments) + def set_callback(self, fun): + self._ode.set_solout(fun) + def propagate(self, dt, mass, inertia, forces, moments): t = self._ode.t + dt diff --git a/src/pyfme/simulator.py b/src/pyfme/simulator.py index 8590d94..01c6dde 100644 --- a/src/pyfme/simulator.py +++ b/src/pyfme/simulator.py @@ -39,7 +39,7 @@ def __init__(self, aircraft, system, environment): self.system = system callback = lambda time, state: self._time_step(time, state) - self.system.model._ode.set_solout(callback) + self.system.model.set_solout(callback) self.aircraft = aircraft self.environment = environment From ae79500ca0fade533127f0d84e4132c366a56acd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Mon, 14 Aug 2017 14:03:28 +0200 Subject: [PATCH 022/104] improved the way callback and forcing terms are defined and updated for the model --- src/pyfme/models/euler_flat_earth.py | 10 +++++---- src/pyfme/models/systems.py | 31 ++++++++++++++++++++-------- 2 files changed, 28 insertions(+), 13 deletions(-) diff --git a/src/pyfme/models/euler_flat_earth.py b/src/pyfme/models/euler_flat_earth.py index 6cf08fe..b21f9db 100644 --- a/src/pyfme/models/euler_flat_earth.py +++ b/src/pyfme/models/euler_flat_earth.py @@ -25,19 +25,21 @@ class EulerFlatEarth(DynamicSystem): n_states = 12 - def __init__(self, use_jacobian=None, integrator=None, callback=None, + def __init__(self, use_jacobian=None, integrator=None, **integrator_params): # TODO: use jacobian when it is calculated super().__init__(n_states=self.n_states, use_jacobian=use_jacobian, - integrator=integrator, callback=callback) + integrator=integrator) - def dynamic_system_state_to_full_system_state(self, mass, inertia, forces, moments): + def dynamic_system_state_to_full_system_state(self, mass, inertia, forces, + moments): full_system_state = {} t = self.time y = self.state - y_dot = self.dynamic_system_equations(t, y, mass, inertia, forces, moments) + y_dot = self.dynamic_system_equations(t, y, mass, inertia, forces, + moments) # TODO: define the rest of conversions full_system_state['geodetic_coordinates'] = np.array([0., 0., y[11]]) # implement diff --git a/src/pyfme/models/systems.py b/src/pyfme/models/systems.py index bb12fa0..4ba16e2 100644 --- a/src/pyfme/models/systems.py +++ b/src/pyfme/models/systems.py @@ -269,8 +269,10 @@ def __init__(self, n_states, use_jacobian=None, integrator=None, # Set the jacobian if it is implemented in the model if use_jacobian: self._jacobian = self.dynamic_system_jacobian + self.set_forcing_terms = self._set_fun_and_jac_forcing_terms else: self._jacobian = None + self.set_forcing_terms = self._set_fun_forcing_terms # ODE setup self._ode = ode(self.dynamic_system_equations, self._jacobian) @@ -281,7 +283,6 @@ def __init__(self, n_states, use_jacobian=None, integrator=None, # TODO: carefully review integrator parameters such as nsteps self._ode.set_integrator(integrator, nsteps=10000, **integrator_params) - @property def time(self): return self._ode.t @@ -290,20 +291,34 @@ def set_initial_state(self, state): self.state = state self._ode.set_initial_value(self.state) - def set_forcing_terms(self, mass, inertia, forces, moments): + def _set_fun_forcing_terms(self, mass, inertia, forces, moments): self._ode.set_f_params(mass, inertia, forces, moments) - def set_callback(self, fun): + def _set_jac_forcing_terms(self, mass, inertia, forces, moments): + self._ode.set_jac_params(mass, inertia, forces, moments) + + def _set_fun_and_jac_forcing_terms(self, mass, inertia, forces, moments): + self._set_fun_and_jac_forcing_terms(mass, inertia, forces, moments) + self._set_jac_forcing_terms(mass, inertia, forces, moments) + + def set_solout(self, fun): self._ode.set_solout(fun) def propagate(self, dt, mass, inertia, forces, moments): - t = self._ode.t + dt + if not self._ode._integrator.solout: + raise ValueError("A callback to the model must be given in order " + "to update the system, environment and aircraft " + "at each time step. Also to save the results." + ) - self._ode.set_f_params(mass, inertia, forces, moments) + # Sets the final time of the integration + t = self._ode.t + dt - if self._ode.jac: - self.set_forcing_terms(mass, inertia, forces, moments) + # This only affects the first time step: this update will be done by + # the callback function at every integration step after updating + # mass, inertia, forces and moments + self.set_forcing_terms(mass, inertia, forces, moments) self.state = self._ode.integrate(t) @@ -331,5 +346,3 @@ def dynamic_system_equations(time, state_vector, mass, inertia, forces, @abstractstaticmethod def dynamic_system_jacobian(state_vector, mass, inertia, forces, moments): raise NotImplementedError - - From 59dd9ca49fb78704f077874fd40c6c1dca310aac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Mon, 14 Aug 2017 16:09:56 +0200 Subject: [PATCH 023/104] RunTime error raised if integration fails --- src/pyfme/models/systems.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/pyfme/models/systems.py b/src/pyfme/models/systems.py index 4ba16e2..6f0d42b 100644 --- a/src/pyfme/models/systems.py +++ b/src/pyfme/models/systems.py @@ -324,6 +324,8 @@ def propagate(self, dt, mass, inertia, forces, moments): if self._ode.successful(): return self.state + else: + raise RuntimeError("Error during integration") @abstractmethod def dynamic_system_state_to_full_system_state(self, mass, inertia, From 4c1d5d309983c91b14a273ea2e9e85ba35bdfcd6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Mon, 14 Aug 2017 16:26:09 +0200 Subject: [PATCH 024/104] improved documentation of simulator --- src/pyfme/simulator.py | 133 ++++++++++++++++++++++++++--------------- 1 file changed, 86 insertions(+), 47 deletions(-) diff --git a/src/pyfme/simulator.py b/src/pyfme/simulator.py index 01c6dde..2482f57 100644 --- a/src/pyfme/simulator.py +++ b/src/pyfme/simulator.py @@ -21,23 +21,79 @@ class Simulation(object): Simulation class stores the simulation configuration, aircraft, system and environment. It provides methods for simulation running and results storing. + + Attributes + ---------- + system : System + System object with mathematical model of the dynamic system and + integrator (ie. EulerFlatEarth) + aircraft : Aircraft + Aircraft model, where aerodynamics and forces are calculated + environment : Environment + Environment containing the atmosphere, gravity and wind models. + controls : dict of callable + Dictionary containing the control names as keys and functions of + time as values. + results : dict of lists + Dictionary containing the variables that have been set to be saved + during the simulation. """ - def __init__(self, aircraft, system, environment): + _default_save_vars = { + 'T': 'environment.T', # env + 'pressure': 'environment.p', + 'rho': 'environment.rho', + 'a': 'environment.a', + 'h': 'system.height', + 'Fx': 'aircraft.Fx', + 'Fy': 'aircraft.Fy', + 'Fz': 'aircraft.Fz', + 'Mx': 'aircraft.Mx', + 'My': 'aircraft.My', + 'Mz': 'aircraft.Mz', + 'TAS': 'aircraft.TAS', # aircraft + 'Mach': 'aircraft.Mach', + 'q_inf': 'aircraft.q_inf', + 'alpha': 'aircraft.alpha', + 'beta': 'aircraft.beta', + 'x_earth': 'system.x_earth', # system + 'y_earth': 'system.y_earth', + 'z_earth': 'system.z_earth', + 'psi': 'system.psi', + 'theta': 'system.theta', + 'phi': 'system.phi', + 'u': 'system.u', + 'v': 'system.v', + 'w': 'system.w', + 'v_north': 'system.v_north', + 'v_east': 'system.v_east', + 'v_down': 'system.v_down', + 'p': 'system.p', + 'q': 'system.q', + 'r': 'system.r' + } + + def __init__(self, aircraft, system, environment, save_vars=None): """ - Simulation objects. + Simulation object Parameters ---------- aircraft : Aircraft - Aircraft. + Aircraft model system : System - System. + System model environment : Environment - Environment. + Environment model. + save_vars : dict, opt + Dictionary containing the names of the variables to be saved and + the object and attribute where it is calculated. If not given, the + ones set in `_defaul_save_vars` are used. """ self.system = system + # This wrap is necessary in order the respect the arguments passed + # by the integration method: time, state (without self). callback = lambda time, state: self._time_step(time, state) self.system.model.set_solout(callback) @@ -46,43 +102,13 @@ def __init__(self, aircraft, system, environment): self.controls = {} - self.vars_to_save = { - 'T': 'environment.T', # env - 'pressure': 'environment.p', - 'rho': 'environment.rho', - 'a': 'environment.a', - 'h': 'system.height', - 'Fx': 'aircraft.Fx', - 'Fy': 'aircraft.Fy', - 'Fz': 'aircraft.Fz', - 'Mx': 'aircraft.Mx', - 'My': 'aircraft.My', - 'Mz': 'aircraft.Mz', - 'TAS': 'aircraft.TAS', # aircraft - 'Mach': 'aircraft.Mach', - 'q_inf': 'aircraft.q_inf', - 'alpha': 'aircraft.alpha', - 'beta': 'aircraft.beta', - 'x_earth': 'system.x_earth', # system - 'y_earth': 'system.y_earth', - 'z_earth': 'system.z_earth', - 'psi': 'system.psi', - 'theta': 'system.theta', - 'phi': 'system.phi', - 'u': 'system.u', - 'v': 'system.v', - 'w': 'system.w', - 'v_north': 'system.v_north', - 'v_east': 'system.v_east', - 'v_down': 'system.v_down', - 'p': 'system.p', - 'q': 'system.q', - 'r': 'system.r' - } - self.results = {name: [] for name in self.vars_to_save} + if not save_vars: + self._save_vars = self._default_save_vars + # Initialize results structure + self.results = {name: [] for name in self._save_vars} def propagate(self, time): - """Run the simulation by integrating the system + """Run the simulation by integrating the system until time t. Parameters ---------- @@ -107,6 +133,13 @@ def propagate(self, time): self.system.model.propagate(time, mass0, inertia0, forces, moments) + # self.results is a dictionary of lists in order to append results + # of each time step. Due to dense output of the integrator, + # the number of time steps cannot be known in advance. + # Once the integration has finished it can be transformed into a + # dict of ndarrays + self.results = {n: np.asarray(v) for n, v in self.results.items()} + def _time_step(self, time, state): """Actions performed at each time step. This method is used as callback in the integration process. @@ -132,12 +165,14 @@ def _time_step(self, time, state): moments = self.aircraft.total_moments mass = self.aircraft.mass inertia = self.aircraft.inertia - self.system.model.state = state self.system.set_full_system_state(mass, inertia, forces, moments) self.environment.update(self.system) + # TODO: take into account that if the controls are not time + # functions (ie. control system or AP are activated) the function + # signature must be changed. controls = self._get_current_controls(time) forces, moment = self.aircraft.calculate_forces_and_moments( @@ -148,18 +183,16 @@ def _time_step(self, time, state): self.system.model.set_forcing_terms(mass, inertia, forces, moments) - print(time, state) - self._save_time_step() def _save_time_step(self): """Saves the selected variables for the current system, environment and aircraft. """ - - for var_name, value_pointer in self.vars_to_save.items(): - self.results[var_name].append(operator.attrgetter(value_pointer)( - self)) + for var_name, value_pointer in self._save_vars.items(): + self.results[var_name].append( + operator.attrgetter(value_pointer)(self) + ) def _get_current_controls(self, time): """Get the control values for the current time step for the given @@ -174,6 +207,12 @@ def _get_current_controls(self, time): ------- controls : dict Control value for each control + + Notes + ----- + Current controls are only a function of time in this kind of + simulation (predefined inputs). However, if the AP is active, + controls will be also function of the system state and environment. """ c = {c_name: c_fun(time) for c_name, c_fun in self.controls.items()} return c From be98d9ed1145895ecff5c0f27e9b8a10d9e102b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Mon, 14 Aug 2017 16:26:39 +0200 Subject: [PATCH 025/104] minor change in test results printing --- src/pyfme/tests/test_PyFME.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/pyfme/tests/test_PyFME.py b/src/pyfme/tests/test_PyFME.py index b318aeb..ebc0839 100644 --- a/src/pyfme/tests/test_PyFME.py +++ b/src/pyfme/tests/test_PyFME.py @@ -33,7 +33,8 @@ def test_simulation(): simulation.propagate(10) - print(simulation.results) + for n, v in simulation.results.items(): + print("{}: {}".format(n, v)) def test_trimmer_00(): From 57705c131efc8baf9eb2329b4f6e0720c1cb451e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Mon, 14 Aug 2017 16:48:36 +0200 Subject: [PATCH 026/104] improved the documentation of DynamicSystem --- src/pyfme/models/systems.py | 77 +++++++++++++++++++++++++++++++++++-- 1 file changed, 74 insertions(+), 3 deletions(-) diff --git a/src/pyfme/models/systems.py b/src/pyfme/models/systems.py index 6f0d42b..483f114 100644 --- a/src/pyfme/models/systems.py +++ b/src/pyfme/models/systems.py @@ -259,9 +259,37 @@ def set_full_system_state(self, mass, inertia, forces, moments): class DynamicSystem(object): - - def __init__(self, n_states, use_jacobian=None, integrator=None, + """Dynamic system abstract class. + + Attributes + ---------- + state : ndarray + State vector. + time : float + Current time of the simulation. + _ode : scipy.integrate.ode + Ordinary Differential Equation based on function definded in + `dynamic_system_equations` method and jacobian in + `dynamic_system_jacobian` method. + """ + + def __init__(self, n_states, use_jacobian=False, integrator=None, **integrator_params): + """Dynamic system initialization + + Parameters + ---------- + n_states : int + Number of states of the dynamical system. + use_jacobian: bool, opt + Whether to use jacobian of the system's model during the + integration or not. + integrator : str, opt + Integrator to use by scipy.integrate.ode. By default, dopri5 is + used. Check scipy doc in order to list all possibilities. + **integrator_params : dict, opt + Other integrator params passed as kwargs. + """ # Allocate state vector self.state = np.empty(n_states) @@ -288,6 +316,13 @@ def time(self): return self._ode.t def set_initial_state(self, state): + """Sets the initial state for the integration + + Parameters + ---------- + state : ndarray + State vector + """ self.state = state self._ode.set_initial_value(self.state) @@ -302,10 +337,45 @@ def _set_fun_and_jac_forcing_terms(self, mass, inertia, forces, moments): self._set_jac_forcing_terms(mass, inertia, forces, moments) def set_solout(self, fun): + """Set callback for scipy.integrate.ode solver + + Parameters + ---------- + fun : callable + Function to be called at each time step during the integration. + It must be in charge of updating the whole system, environment, + controls, forces, moments, mass, inertia... + """ self._ode.set_solout(fun) def propagate(self, dt, mass, inertia, forces, moments): - + """ Perform the integration from the current time step during time dt. + + Parameters + ---------- + dt : float + Time for the integration. + mass : float + Current aircraft mass (initial time step). + inertia : ndarray, shape (3, 3) + Current aircraft inertia (initial time step). + forces : ndarray, shape(3) + Current aircraft forces (initial time step). + moments : ndarray, shape(3) + Current aircraft moments (initial time step). + + Returns + ------- + state : ndarray + Final state if integration is successful. + + Raises + ------ + RunTimeError if integration is not successful. + """ + + # Checks that a callback for updating environment and aircraft has + # been defined previous to integration if not self._ode._integrator.solout: raise ValueError("A callback to the model must be given in order " "to update the system, environment and aircraft " @@ -320,6 +390,7 @@ def propagate(self, dt, mass, inertia, forces, moments): # mass, inertia, forces and moments self.set_forcing_terms(mass, inertia, forces, moments) + # Perform the integration self.state = self._ode.integrate(t) if self._ode.successful(): From 0310283b2ec2ed61ff188434991eb45c1fe81220 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Mon, 14 Aug 2017 18:12:07 +0200 Subject: [PATCH 027/104] solved issue with time: ode.t does not update for dense output steps, time must be updated manually --- src/pyfme/models/systems.py | 5 +---- src/pyfme/simulator.py | 3 +++ 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/pyfme/models/systems.py b/src/pyfme/models/systems.py index 483f114..f65beac 100644 --- a/src/pyfme/models/systems.py +++ b/src/pyfme/models/systems.py @@ -291,6 +291,7 @@ def __init__(self, n_states, use_jacobian=False, integrator=None, Other integrator params passed as kwargs. """ + self.time = 0. # Allocate state vector self.state = np.empty(n_states) @@ -311,10 +312,6 @@ def __init__(self, n_states, use_jacobian=False, integrator=None, # TODO: carefully review integrator parameters such as nsteps self._ode.set_integrator(integrator, nsteps=10000, **integrator_params) - @property - def time(self): - return self._ode.t - def set_initial_state(self, state): """Sets the initial state for the integration diff --git a/src/pyfme/simulator.py b/src/pyfme/simulator.py index 2482f57..99afab1 100644 --- a/src/pyfme/simulator.py +++ b/src/pyfme/simulator.py @@ -40,6 +40,7 @@ class Simulation(object): """ _default_save_vars = { + 'time': 'system.time', 'T': 'environment.T', # env 'pressure': 'environment.p', 'rho': 'environment.rho', @@ -161,6 +162,8 @@ def _time_step(self, time, state): are calculated. * the selected variables are saved. """ + self.system.time = time + forces = self.aircraft.total_forces moments = self.aircraft.total_moments mass = self.aircraft.mass From f5207a5390bfb816befc316cf6f96f257b373558 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Mon, 14 Aug 2017 18:14:06 +0200 Subject: [PATCH 028/104] solved issue with angles order --- src/pyfme/models/systems.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/pyfme/models/systems.py b/src/pyfme/models/systems.py index f65beac..9ca9ea7 100644 --- a/src/pyfme/models/systems.py +++ b/src/pyfme/models/systems.py @@ -102,15 +102,15 @@ def z_earth(self): @property def psi(self): - return self.euler_angles[0] + return self.euler_angles[2] @property def theta(self): - return self.euler_angles[1] + return self.euler_angles[0] @property def phi(self): - return self.euler_angles[2] + return self.euler_angles[1] @property def u(self): From 796c614febea6d4386ef79c2a56e68001c65c0f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Mon, 14 Aug 2017 18:26:50 +0200 Subject: [PATCH 029/104] improved the documentation of System, minor changes in method signatures --- src/pyfme/models/systems.py | 189 +++++++++++++++++++++++++++++----- src/pyfme/simulator.py | 2 +- src/pyfme/tests/test_PyFME.py | 5 +- 3 files changed, 167 insertions(+), 29 deletions(-) diff --git a/src/pyfme/models/systems.py b/src/pyfme/models/systems.py index 9ca9ea7..a51f04e 100644 --- a/src/pyfme/models/systems.py +++ b/src/pyfme/models/systems.py @@ -6,14 +6,56 @@ Dynamic Systems --------------- +Dynamic system implements an abstract class to be inherited by all the +models. + +System is a more generic object that wraps every system and keeps updated +variables that may not be present in the dynamic system but may be used by +other members of the simulation, such as the environment or the aircraft. """ from abc import abstractmethod, abstractstaticmethod import numpy as np from scipy.integrate import ode +from pyfme.utils.coordinates import body2hor, hor2body + class System(object): + """Generic system object containing and wrapping a model that keeps updated + variables that may not be present in the model but may be inferred from it. + + Attributes + ---------- + model : DynamicSystem + System's model containing the equations and state vector. + full_system_state_names : tuple of str + Names of all variables that are tracked in the system. All of them + are listed as class attributes below. + geodetic_coordinates : ndarray, shape(3) + (lat [rad], lon [rad], height [m]) + geocentric_coordinates : ndarray, shape(3) + (x_geo [m], y_geo [m], z_geo [m]) + earth_coordinates : ndarray, shape(3) + (x_earth [m], y_earth [m], z_earth [m]) + euler_angles : ndarray, shape(3) + (theta [rad], phi [rad], psi [rad]) + quaternions : ndarray, shape(4) + (q0, q1, q2, q3) + vel_body : ndarray, shape(3) + (u [m/s], v [m/s], w [m/s]) + vel_NED : ndarray, shape(3) + (v_north [m/s], v_east [m/s], v_down [m/s]) + vel_ang : ndarray, shape(3) + (p [rad/s], q [rad/s], r [rad/s]) + accel_body : ndarray, shape(3) + (u_dot [m/s²], v_dot [m/s²], w_dot [m/s²]) + accel_NED : ndarray, shape(3) + (VN_dot [m/s²], VE_dot [m/s²], VD_dot [m/s²]) + accel_ang : ndarray, shape(3) + (p_dot [rad/s²], q_dot [rad/s²], r_dot [rad/s²]) + + """ full_system_state_names = ('geodetic_coordinates', 'geocentric_coordinates', @@ -28,6 +70,13 @@ class System(object): 'accel_ang') def __init__(self, model): + """System + + Parameters + ---------- + model : DynamicSystem + System's model containing the equations and state vector. + """ # Dynamic system self.model = model @@ -148,28 +197,101 @@ def q(self): def r(self): return self.vel_ang[2] + @property + def u_dot(self): + return self.accel_body[0] + + @property + def v_dot(self): + return self.accel_body[1] + + @property + def w_dot(self): + return self.accel_body[2] + + @property + def v_north_dot(self): + return self.accel_NED[0] + + @property + def v_east_dot(self): + return self.accel_NED[1] + + @property + def v_down_dot(self): + return self.accel_NED[2] + + @property + def p_dot(self): + return self.accel_ang[0] + + @property + def q_dot(self): + return self.accel_ang[1] + + @property + def r_dot(self): + return self.accel_ang[2] + @property def time(self): return self.model.time - # TODO: break in several methods: position, attitude... - def set_initial_state(self, geodetic_coordinates=None, - geocentric_coordinates=None, euler_angles=None, quaternions=None, - vel_body=None, vel_NED=None, vel_ang=None, accel_body=None, - accel_NED=None, accel_ang=None): + @time.setter + def time(self, value): + self.model.time = value + + def set_initial_state(self, + geodetic_coord=None, geocentric_coord=None, + euler_angles=None, + quaternions=None, + vel_body=None, vel_NED=None, + vel_ang=None, + accel_body=None, accel_NED=None, + accel_ang=None): + """Initialize the system state and the model state. + + Parameters + ---------- + geodetic_coord : ndarray, shape(3), opt + (lat [rad], lon [rad], height [m]). Only if geodetic_coord are + not given. + geocentric_coord : ndarray, shape(3), opt + (x_geo [m], y_geo [m], z_geo [m]). Only if geocentric_coord are + not given. + euler_angles : ndarray, shape(3), opt + (psi [rad], theta [rad], phi [rad]). Only if quaternions are not + given. + quaternions : ndarray, shape(4), opt + (q0, q1, q2, q3). Only if euler_angles are not given. + vel_body : ndarray, shape(3), opt + (u [m/s], v [m/s], w [m/s]). Only if vel_NED is not given. + vel_NED : ndarray, shape(3), opt + (v_north [m/s], v_east [m/s], v_down [m/s]). Only if vel_body is + not given. + vel_ang : ndarray, shape(3), opt + (p [rad/s], q [rad/s], r [rad/s]) + accel_body : ndarray, shape(3), opt + (u_dot [m/s²], v_dot [m/s²], w_dot [m/s²]). Only if accel_NED is + not given. + accel_NED : ndarray, shape(3), opt + (VN_dot [m/s²], VE_dot [m/s²], VD_dot [m/s²]). Only if + accel_body is not given. + accel_ang : ndarray, shape(3), opt + (p_dot [rad/s²], q_dot [rad/s²], r_dot [rad/s²]) + """ # Set position - if (geodetic_coordinates is not None) and (geocentric_coordinates is - not None): - # TODO: complete error (two values given) - raise ValueError() + if (geodetic_coord is not None) and (geocentric_coord is not None): + raise ValueError("Provide only geodetic or geocentric, not both " + "at the same time") - elif geodetic_coordinates is not None: - self.geodetic_coordinates = geodetic_coordinates + elif geodetic_coord is not None: + self.geodetic_coordinates = geodetic_coord # TODO: geodetic to geocentric (cartopy?) # self.geocentric_coordinates = transformation - elif geocentric_coordinates is not None: - self.geocentric_coordinates = geocentric_coordinates + elif geocentric_coord is not None: + self.geocentric_coordinates = geocentric_coord # TODO: geocentric to geodetic (cartopy?) else: # no values for position @@ -182,8 +304,8 @@ def set_initial_state(self, geodetic_coordinates=None, # Set attitude if (quaternions is not None) and (euler_angles is not None): - # TODO: complete error (two values given) - raise ValueError() + raise ValueError("Provide only euler angles or quaternions, " + "not both at the same time") elif quaternions is not None: self.quaternions = quaternions # TODO: quaternions to euler @@ -199,16 +321,14 @@ def set_initial_state(self, geodetic_coordinates=None, # Set velocity if (vel_body is not None) and (vel_NED is not None): - # TODO: complete error (two values given) - raise ValueError() + raise ValueError("Provide only vel_body or vel_NED, not both at " + "the same time") elif vel_body is not None: self.vel_body = vel_body - # TODO: body to horizon - # self.vel_NED = transformation + self.vel_NED = body2hor(vel_body, self.theta, self.phi, self.psi) elif vel_NED is not None: self.vel_NED = vel_NED - # TODO: horizon to body - # self.vel_body = transformation + self.vel_body = hor2body(vel_NED, self.theta, self.phi, self.psi) else: self.vel_body = np.zeros(3) self.vel_NED = np.zeros(3) @@ -221,16 +341,16 @@ def set_initial_state(self, geodetic_coordinates=None, # Set accelerations if (accel_body is not None) and (accel_NED is not None): - # TODO: complete error (two values given) - raise ValueError() + raise ValueError("Provide only accel_body or accel_NED, not both " + "at the same time") elif accel_body is not None: self.accel_body = accel_body - # TODO: body to horizon - # self.acc_NED = transformation + self.accel_NED = body2hor(accel_body, self.theta, self.phi, + self.psi) elif accel_NED is not None: self.accel_NED = accel_NED - # TODO: horizon to body - # self.acc_body = transformation + self.accel_body = hor2body(accel_NED, self.theta, self.phi, + self.psi) else: self.accel_body = np.zeros(3) self.accel_NED = np.zeros(3) @@ -250,7 +370,22 @@ def set_initial_state(self, geodetic_coordinates=None, state = self.model.full_system_state_to_dynamic_system_state(self) self.model.set_initial_state(state) + # TODO: it's more explicit to pass the state vector here instead of + # depending on its update in the model before. def set_full_system_state(self, mass, inertia, forces, moments): + """ Updates the full system update based on the current state vector + + Parameters + ---------- + mass : float + Aircraft mass + inertia : ndarray, shape(3, 3) + Inertia tensor of the aircraft + forces : ndarray, shape(3) + Aircraft forces + moments : ndarray, shape(3) + Aircraft moments + """ rv = self.model.dynamic_system_state_to_full_system_state( mass, inertia, forces, moments) diff --git a/src/pyfme/simulator.py b/src/pyfme/simulator.py index 99afab1..5fa25a6 100644 --- a/src/pyfme/simulator.py +++ b/src/pyfme/simulator.py @@ -272,7 +272,7 @@ def trim_aircraft(self, geodetic_initial_pos, TAS, gamma, turn_rate, # Initialize state system.set_initial_state( - geodetic_coordinates=geodetic_initial_pos, + geodetic_coord=geodetic_initial_pos, euler_angles=np.array([0, 0, psi]) ) # Update environment for the current state diff --git a/src/pyfme/tests/test_PyFME.py b/src/pyfme/tests/test_PyFME.py index ebc0839..149322e 100644 --- a/src/pyfme/tests/test_PyFME.py +++ b/src/pyfme/tests/test_PyFME.py @@ -20,7 +20,7 @@ def test_simulation(): simulation = Simulation(aircraft, system, environment) simulation.system.set_initial_state( - geodetic_coordinates=np.array([0., 0., 1000.]), + geodetic_coord=np.array([0., 0., 1000.]), vel_body=np.array([100, 0.2, 1]), euler_angles=np.array([0.01, 0.0, np.pi]) ) @@ -59,6 +59,9 @@ def test_trimmer_00(): simulation.propagate(10) + for n, v in simulation.results.items(): + print("{}: {}".format(n, v)) + def test_trimmer_01(): aircraft = Cessna310() From 062884221d482263fe479507cd506291ae79e1a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Tue, 15 Aug 2017 01:40:22 +0200 Subject: [PATCH 030/104] minimal changes to get cessna172 working --- src/pyfme/aircrafts/aircraft.py | 2 -- src/pyfme/aircrafts/cessna_172.py | 40 +++++++++++++------------------ src/pyfme/tests/test_PyFME.py | 25 ++++++++++++++++++- 3 files changed, 41 insertions(+), 26 deletions(-) diff --git a/src/pyfme/aircrafts/aircraft.py b/src/pyfme/aircrafts/aircraft.py index f544e0c..3ac7644 100644 --- a/src/pyfme/aircrafts/aircraft.py +++ b/src/pyfme/aircrafts/aircraft.py @@ -54,7 +54,6 @@ def __init__(self): self.beta = 0 # Angle of sideslip (AOS). self.alpha_dot = 0 # Rate of change of AOA. - @property def Ixx(self): return self.inertia[0, 0] @@ -129,7 +128,6 @@ def _calculate_aerodynamics_2(self, TAS, alpha, beta, environment): self.Mach = self.TAS / environment.a self.q_inf = 0.5 * environment.rho * self.TAS ** 2 - @abstractmethod def calculate_forces_and_moments(self, system, environment, controls): diff --git a/src/pyfme/aircrafts/cessna_172.py b/src/pyfme/aircrafts/cessna_172.py index e8ff1b3..a708cb7 100644 --- a/src/pyfme/aircrafts/cessna_172.py +++ b/src/pyfme/aircrafts/cessna_172.py @@ -178,10 +178,9 @@ def __init__(self): # Thrust Coefficient self.Ct = 0 - self.gravity_force = np.zeros(3) self.total_forces = np.zeros(3) self.total_moments = np.zeros(3) - self.load_factor = 0 + # self.load_factor = 0 # Velocities self.TAS = 0 # True Air Speed. @@ -190,25 +189,17 @@ def __init__(self): self.Mach = 0 # Mach number self.q_inf = 0 # Dynamic pressure at infinity (Pa) - # Angular velocities - self.p = 0 # rad/s - self.q = 0 # rad/s - self.r = 0 # rad/s - # Angles self.alpha = 0 # rad self.beta = 0 # rad self.alpha_dot = 0 # rad/s - # Environment - self.rho = 0 # kg/m3 - - def _calculate_aero_lon_forces_moments_coeffs(self): + def _calculate_aero_lon_forces_moments_coeffs(self, system): delta_elev = np.rad2deg(self.controls['delta_elevator']) # deg alpha_DEG = np.rad2deg(self.alpha) # deg c = self.chord # m V = self.TAS # m/s - p, q, r = self.p, self.q, self.r # rad/s + p, q, r = system.p, system.q, system.r # rad/s alpha_dot = self.alpha_dot CD_alpha_interp = np.interp(alpha_DEG, self.alpha_data, self.CD_data) @@ -241,13 +232,13 @@ def _calculate_aero_lon_forces_moments_coeffs(self): ) # FIXME: CM_q multiplicado por 2 hasta que alpha_dot pueda ser calculado - def _calculate_aero_lat_forces_moments_coeffs(self): + def _calculate_aero_lat_forces_moments_coeffs(self, system): delta_aile = np.rad2deg(self.controls['delta_aileron']) # deg delta_rud_RAD = self.controls['delta_rudder'] # rad alpha_DEG = np.rad2deg(self.alpha) # deg b = self.span V = self.TAS - p, q, r = self.p, self.q, self.r + p, q, r = system.p, system.q, system.r CY_beta = np.interp(alpha_DEG, self.alpha_data, self.CY_beta_data) CY_p = np.interp(alpha_DEG, self.alpha_data, self.CY_p_data) @@ -289,14 +280,14 @@ def _calculate_aero_lat_forces_moments_coeffs(self): b/(2 * V) * (CN_p * p + CN_r * r) ) - def _calculate_aero_forces_moments(self): + def _calculate_aero_forces_moments(self, system): q = self.q_inf Sw = self.Sw c = self.chord b = self.span - self._calculate_aero_lon_forces_moments_coeffs() - self._calculate_aero_lat_forces_moments_coeffs() + self._calculate_aero_lon_forces_moments_coeffs(system) + self._calculate_aero_lat_forces_moments_coeffs(system) L = q * Sw * self.CL D = q * Sw * self.CD @@ -307,9 +298,9 @@ def _calculate_aero_forces_moments(self): return L, D, Y, l, m, n - def _calculate_thrust_forces_moments(self): + def _calculate_thrust_forces_moments(self, environment): delta_t = self.controls['delta_t'] - rho = self.rho + rho = environment.rho V = self.TAS prop_rad = self.propeller_radius @@ -330,10 +321,13 @@ def _calculate_thrust_forces_moments(self): return Ft - def calculate_forces_and_moments(self): - Ft = self._calculate_thrust_forces_moments() - L, D, Y, l, m, n = self._calculate_aero_forces_moments() - Fg = self.gravity_force + def calculate_forces_and_moments(self, system, environment, controls): + # Update controls and aerodynamics + super().calculate_forces_and_moments(system, environment, controls) + + Ft = self._calculate_thrust_forces_moments(environment) + L, D, Y, l, m, n = self._calculate_aero_forces_moments(system) + Fg = environment.gravity_vector * self.mass Fa_wind = np.array([-D, Y, -L]) Fa_body = wind2body(Fa_wind, self.alpha, self.beta) diff --git a/src/pyfme/tests/test_PyFME.py b/src/pyfme/tests/test_PyFME.py index 149322e..abd0de0 100644 --- a/src/pyfme/tests/test_PyFME.py +++ b/src/pyfme/tests/test_PyFME.py @@ -1,6 +1,6 @@ import numpy as np -from pyfme.aircrafts import Cessna310 +from pyfme.aircrafts import Cessna310, Cessna172 from pyfme.environment.atmosphere import ISA1976 from pyfme.environment.environment import Environment from pyfme.environment.gravity import VerticalConstant @@ -130,3 +130,26 @@ def test_trimmer_03(): exclude_controls=['hor_tail_incidence']) simulation.propagate(10) + + +def test_simulator_cessna_172(): + aircraft = Cessna172() + system = System(model=EulerFlatEarth()) + environment = Environment(ISA1976(), VerticalConstant(), NoWind()) + + simulation = Simulation(aircraft, system, environment) + + initial_controls = {'delta_elevator': 0, + 'hor_tail_incidence': 0, + 'delta_aileron': 0, + 'delta_rudder': 0, + 'delta_t': 0} + + simulation.trim_aircraft(geodetic_initial_pos=(0, 0, 1000), + TAS=60, + gamma=0.05, + turn_rate=0.05, + initial_controls=initial_controls, + exclude_controls=['hor_tail_incidence']) + + simulation.propagate(10) From a9e6c7ea06c856a54b58c075a44d70f7b3d8b76d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Tue, 15 Aug 2017 01:59:10 +0200 Subject: [PATCH 031/104] added height to save_vars_default --- src/pyfme/simulator.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/pyfme/simulator.py b/src/pyfme/simulator.py index 5fa25a6..c27b44e 100644 --- a/src/pyfme/simulator.py +++ b/src/pyfme/simulator.py @@ -60,6 +60,7 @@ class Simulation(object): 'x_earth': 'system.x_earth', # system 'y_earth': 'system.y_earth', 'z_earth': 'system.z_earth', + 'height': 'system.height', 'psi': 'system.psi', 'theta': 'system.theta', 'phi': 'system.phi', @@ -162,7 +163,7 @@ def _time_step(self, time, state): are calculated. * the selected variables are saved. """ - self.system.time = time + self.system.model.time = time forces = self.aircraft.total_forces moments = self.aircraft.total_moments From 737694c9665a3bf9d225b7d94d36539c9fa9865e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Tue, 15 Aug 2017 16:56:49 +0200 Subject: [PATCH 032/104] added missing parameter in error raise --- src/pyfme/aircrafts/aircraft.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/pyfme/aircrafts/aircraft.py b/src/pyfme/aircrafts/aircraft.py index 3ac7644..8ef2957 100644 --- a/src/pyfme/aircrafts/aircraft.py +++ b/src/pyfme/aircrafts/aircraft.py @@ -100,7 +100,8 @@ def _set_current_controls(self, controls): else: # TODO: maybe raise a warning and assign max deflection msg = ("Control {} out of range ({} when max={} and min={" - "})".format(control_name, limits[1], limits[0])) + "})".format(control_name, control_value, limits[1], + limits[0])) raise ValueError(msg) def _calculate_aerodynamics(self, system, environment): From b7c1a6f31eda6dd57b59d69477cad731a7fe4e24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Tue, 15 Aug 2017 16:58:03 +0200 Subject: [PATCH 033/104] added properties to get controls to aircrafts --- src/pyfme/aircrafts/cessna_172.py | 16 ++++++++++++++++ src/pyfme/aircrafts/cessna_310.py | 16 ++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/src/pyfme/aircrafts/cessna_172.py b/src/pyfme/aircrafts/cessna_172.py index a708cb7..bce76fb 100644 --- a/src/pyfme/aircrafts/cessna_172.py +++ b/src/pyfme/aircrafts/cessna_172.py @@ -194,6 +194,22 @@ def __init__(self): self.beta = 0 # rad self.alpha_dot = 0 # rad/s + @property + def delta_elevator(self): + return self.controls['delta_elevator'] + + @property + def delta_rudder(self): + return self.controls['delta_rudder'] + + @property + def delta_aileron(self): + return self.controls['delta_aileron'] + + @property + def delta_t(self): + return self.controls['delta_t'] + def _calculate_aero_lon_forces_moments_coeffs(self, system): delta_elev = np.rad2deg(self.controls['delta_elevator']) # deg alpha_DEG = np.rad2deg(self.alpha) # deg diff --git a/src/pyfme/aircrafts/cessna_310.py b/src/pyfme/aircrafts/cessna_310.py index 9cc1cf2..2c5a999 100644 --- a/src/pyfme/aircrafts/cessna_310.py +++ b/src/pyfme/aircrafts/cessna_310.py @@ -138,6 +138,22 @@ def __init__(self): self.alpha = 0 # Angle of attack (AOA). self.beta = 0 # Angle of sideslip (AOS). + @property + def delta_elevator(self): + return self.controls['delta_elevator'] + + @property + def delta_rudder(self): + return self.controls['delta_rudder'] + + @property + def delta_aileron(self): + return self.controls['delta_aileron'] + + @property + def delta_t(self): + return self.controls['delta_t'] + def _calculate_aero_lon_forces_moments_coeffs(self): self._long_inputs[1] = self.alpha From c336be304e7720259e60423fb75a70351a989c04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Tue, 15 Aug 2017 16:59:55 +0200 Subject: [PATCH 034/104] added controls to saved variables --- src/pyfme/simulator.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/pyfme/simulator.py b/src/pyfme/simulator.py index c27b44e..fba2ff1 100644 --- a/src/pyfme/simulator.py +++ b/src/pyfme/simulator.py @@ -57,6 +57,10 @@ class Simulation(object): 'q_inf': 'aircraft.q_inf', 'alpha': 'aircraft.alpha', 'beta': 'aircraft.beta', + 'rudder': 'aircraft.delta_rudder', + 'aileron': 'aircraft.delta_aileron', + 'elevator': 'aircraft.delta_elevator', + 'thrust': 'aircraft.delta_t', 'x_earth': 'system.x_earth', # system 'y_earth': 'system.y_earth', 'z_earth': 'system.z_earth', From a381bd3a3250a83975a6871354c08f9792d725b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Tue, 15 Aug 2017 17:01:00 +0200 Subject: [PATCH 035/104] results are returned in a dataframe to be plotted more easily --- environment.yml | 1 + src/pyfme/simulator.py | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/environment.yml b/environment.yml index ef8f2ed..275be1f 100644 --- a/environment.yml +++ b/environment.yml @@ -4,3 +4,4 @@ dependencies: - scipy >=0.17.0 - matplotlib >= 1.5 - pytest >= 2.9 + - pandas >= 0.20 diff --git a/src/pyfme/simulator.py b/src/pyfme/simulator.py index fba2ff1..741dc2e 100644 --- a/src/pyfme/simulator.py +++ b/src/pyfme/simulator.py @@ -10,7 +10,9 @@ """ import operator + import numpy as np +import pandas as pd from scipy.optimize import least_squares from pyfme.utils.trimmer import trimming_cost_func @@ -143,8 +145,10 @@ def propagate(self, time): # of each time step. Due to dense output of the integrator, # the number of time steps cannot be known in advance. # Once the integration has finished it can be transformed into a - # dict of ndarrays - self.results = {n: np.asarray(v) for n, v in self.results.items()} + # DataFrame + time = self.results.pop('time') + self.results = pd.DataFrame(self.results, index=time) + self.results.index.name = 'time' def _time_step(self, time, state): """Actions performed at each time step. This method is used as From ec697b1657cfc2f0be2917c104ae7a5029f0305b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Tue, 15 Aug 2017 18:36:09 +0200 Subject: [PATCH 036/104] recovered tests for input generator: vectorization and control composition in new implementation --- src/pyfme/utils/input_generator.py | 32 +- .../utils/tests/test_inputs_generator.py | 458 ++++++------------ 2 files changed, 164 insertions(+), 326 deletions(-) diff --git a/src/pyfme/utils/input_generator.py b/src/pyfme/utils/input_generator.py index 5be87fd..7b9cb2b 100644 --- a/src/pyfme/utils/input_generator.py +++ b/src/pyfme/utils/input_generator.py @@ -10,6 +10,7 @@ """ from abc import abstractmethod +from numpy import vectorize, float64 from numpy import sin, pi @@ -17,30 +18,31 @@ class Control(object): def __init__(self): - self._fun = None + self._vec_fun = vectorize(self._fun, otypes=[float64]) @abstractmethod - def __call__(self, t): + def _fun(self, t): raise NotImplementedError + def __call__(self, t): + return self._vec_fun(t) + def __add__(self, other): control = Control() control._fun = lambda t: self(t) + other(t) + control._vec_fun = vectorize(control._fun, otypes=[float64]) return control def __sub__(self, other): control = Control() control._fun = lambda t: self(t) - other(t) + control._vec_fun = vectorize(control._fun, otypes=[float64]) return control def __mul__(self, other): control = Control() control._fun = lambda t: self(t) * other(t) - return control - - def __truediv__(self, other): - control = Control() - control._fun = lambda t: self(t) / other(t) + control._vec_fun = vectorize(control._fun, otypes=[float64]) return control @@ -50,7 +52,7 @@ def __init__(self, offset=0): super().__init__() self.offset = offset - def __call__(self, t): + def _fun(self, t): return self.offset @@ -65,7 +67,7 @@ def __init__(self, t_init, T, A, offset=0): self.t_fin = self.t_init + self.T - def __call__(self, t): + def _fun(self, t): value = self.offset if self.t_init <= t <= self.t_fin: value += self.A @@ -84,7 +86,7 @@ def __init__(self, t_init, T, A, offset=0): self.t_fin1 = self.t_init + self.T / 2 self.t_fin2 = self.t_init + self.T - def __call__(self, t): + def _fun(self, t): value = self.offset if self.t_init <= t < self.t_fin1: @@ -106,7 +108,7 @@ def __init__(self, t_init, T, A, offset=0): self.slope = self.A / self.T self.t_fin = self.t_init + self.T - def __call__(self, t): + def _fun(self, t): value = self.offset if self.t_init <= t <= self.t_fin: value += self.slope * (t - self.t_init) @@ -116,20 +118,20 @@ def __call__(self, t): class Harmonic(Control): - def __init__(self, t_init, t_fin, A, freq, phase, offset=0): + def __init__(self, t_init, T, A, freq, phase, offset=0): super().__init__() self.t_init = t_init - self.t_fin = t_fin + self.t_fin = t_init + T self.A = A self.freq = freq self.phase = phase self.offset = offset - def __call__(self, t): + def _fun(self, t): value = self.offset if self.t_init <= t <= self.t_fin: value += self.A/2 * sin(2 * pi * self.freq * (t - self.t_init) + self.phase) - return value + return value diff --git a/src/pyfme/utils/tests/test_inputs_generator.py b/src/pyfme/utils/tests/test_inputs_generator.py index 4c6193a..61e87ae 100644 --- a/src/pyfme/utils/tests/test_inputs_generator.py +++ b/src/pyfme/utils/tests/test_inputs_generator.py @@ -12,11 +12,8 @@ import pytest import numpy as np from numpy.testing import assert_almost_equal -from pyfme.utils.input_generator import (step, - doublet, - sinusoid, - ramp, - harmonic) +from pyfme.utils.input_generator import (Step, Doublet, Ramp, Harmonic, + Constant) def test_step(): @@ -28,9 +25,10 @@ def test_step(): expected_input = np.zeros([11]) expected_input[0:6] = A - step_input = step(t_init, T, A, time, offset=0, var=None) + step_input = Step(t_init, T, A, offset=0) + real_input = step_input(time) - assert_almost_equal(step_input, expected_input) + assert_almost_equal(real_input, expected_input) def test_step_bounds_not_included(): @@ -42,9 +40,10 @@ def test_step_bounds_not_included(): expected_input = np.zeros([11]) expected_input[1:5] = A - step_input = step(t_init, T, A, time, offset=0, var=None) + step_input = Step(t_init, T, A, offset=0) + real_input = step_input(time) - assert_almost_equal(step_input, expected_input) + assert_almost_equal(real_input, expected_input) def test_step_offset(): @@ -54,70 +53,13 @@ def test_step_offset(): time = np.linspace(0, 10, 11) offset = 2.6 - expected_input = np.zeros([11]) - expected_input[0:6] += A + offset - - step_input = step(t_init, T, A, time, offset=offset, var=None) - - assert_almost_equal(step_input, expected_input) - - -def test_step_var(): - t_init = 0 - T = 5 - A = 1.5 - time = np.linspace(0, 10, 11) - var = np.ones_like(time) - var[0::2] = -1 - - expected_input = var.copy() + expected_input = np.zeros([11]) + offset expected_input[0:6] += A - step_input = step(t_init, T, A, time, offset=0, var=var) - - assert_almost_equal(step_input, expected_input) - - -def test_step_var_and_offset(): - t_init = 0 - T = 5 - A = 1.5 - time = np.linspace(0, 10, 11) - offset = 2.6 - var = np.ones_like(time) - var[0::2] = -1 - - expected_input = var - expected_input[0:6] += A + offset - - step_input = step(t_init, T, A, time, offset=offset, var=var) - - assert_almost_equal(step_input, expected_input) - + step_input = Step(t_init, T, A, offset=offset) + real_input = step_input(time) -def test_step_wrong_size_var(): - t_init = 0 - T = 5 - A = 1.5 - time = np.linspace(0, 10, 11) - var = np.ones([10]) - - with pytest.raises(ValueError) as excinfo: - step(t_init, T, A, time, offset=0, var=var) - assert ("ValueError: var and time must have the same size" - in excinfo.exconly()) - - -def test_step_wrong_not_scalar_offset(): - t_init = 0 - T = 5 - A = 1.5 - time = np.linspace(0, 10, 11) - var = np.ones_like(time) - offset = var - - with pytest.raises(TypeError) as excinfo: - step(t_init, T, A, time, offset=offset) + assert_almost_equal(real_input, expected_input) def test_doublet(): @@ -130,9 +72,10 @@ def test_doublet(): expected_input[0:3] = A/2 expected_input[3:6] = -A/2 - doublet_input = doublet(t_init, T, A, time, offset=0, var=None) + doublet_input = Doublet(t_init, T, A, offset=0) + real_input = doublet_input(time) - assert_almost_equal(doublet_input, expected_input) + assert_almost_equal(real_input, expected_input) def test_doublet_bounds_not_included(): @@ -145,9 +88,10 @@ def test_doublet_bounds_not_included(): expected_input[1:3] = A/2 expected_input[3:5] = -A/2 - doublet_input = doublet(t_init, T, A, time, offset=0, var=None) + doublet_input = Doublet(t_init, T, A, offset=0) + real_input = doublet_input(time) - assert_almost_equal(doublet_input, expected_input) + assert_almost_equal(real_input, expected_input) def test_doublet_offset(): @@ -157,73 +101,14 @@ def test_doublet_offset(): time = np.linspace(0, 10, 11) offset = 2.6 - expected_input = np.zeros([11]) - expected_input[0:3] += A/2 + offset - expected_input[3:6] += -A/2 + offset - - doublet_input = doublet(t_init, T, A, time, offset=offset, var=None) - - assert_almost_equal(doublet_input, expected_input) - - -def test_doublet_var(): - t_init = 0 - T = 5. - A = 1.5 - time = np.linspace(0, 10, 11) - var = np.ones_like(time) - var[0::2] = -1 - - expected_input = var.copy() + expected_input = np.zeros([11]) + offset expected_input[0:3] += A/2 expected_input[3:6] += -A/2 - doublet_input = doublet(t_init, T, A, time, offset=0, var=var) + doublet_input = Doublet(t_init, T, A, offset=offset) + real_input = doublet_input(time) - assert_almost_equal(doublet_input, expected_input) - - -def test_doublet_var_and_offset(): - t_init = 0 - T = 5. - A = 1.5 - time = np.linspace(0, 10, 11) - offset = 2.6 - var = np.ones_like(time) - var[0::2] = -1 - - expected_input = var - expected_input[0:3] += A/2 + offset - expected_input[3:6] += -A/2 + offset - - doublet_input = doublet(t_init, T, A, time, offset=offset, var=var) - - assert_almost_equal(doublet_input, expected_input) - - -def test_doublet_wrong_size_var(): - t_init = 0 - T = 5. - A = 1.5 - time = np.linspace(0, 10, 11) - var = np.ones([10]) - - with pytest.raises(ValueError) as excinfo: - doublet(t_init, T, A, time, offset=0, var=var) - assert ("ValueError: var and time must have the same size" - in excinfo.exconly()) - - -def test_doublet_wrong_not_scalar_offset(): - t_init = 0 - T = 5. - A = 1.5 - time = np.linspace(0, 10, 11) - var = np.ones_like(time) - offset = var - - with pytest.raises(TypeError) as excinfo: - doublet(t_init, T, A, time, offset=offset) + assert_almost_equal(real_input, expected_input) def test_ramp(): @@ -235,9 +120,10 @@ def test_ramp(): expected_input = np.zeros([11]) expected_input[0:5] = np.array([0, A/4, A/2, 3*A/4, A]) - ramp_input = ramp(t_init, T, A, time, offset=0, var=None) + ramp_input = Ramp(t_init, T, A, offset=0) + real_input = ramp_input(time) - assert_almost_equal(ramp_input, expected_input) + assert_almost_equal(real_input, expected_input) def test_ramp_offset(): @@ -247,279 +133,229 @@ def test_ramp_offset(): time = np.linspace(0, 10, 11) offset = 1 - expected_input = np.zeros([11]) - expected_input[0:5] += np.array([0, A/4, A/2, 3*A/4, A]) + offset + expected_input = np.zeros([11]) + offset + expected_input[0:5] += np.array([0, A/4, A/2, 3*A/4, A]) - ramp_input = ramp(t_init, T, A, time, offset=offset, var=None) + ramp_input = Ramp(t_init, T, A, offset=offset) + real_input = ramp_input(time) - assert_almost_equal(ramp_input, expected_input) + assert_almost_equal(real_input, expected_input) -def test_ramp_var(): +def test_harmonic(): t_init = 0 T = 4. - A = 3. + A = 3.0 time = np.linspace(0, 10, 11) - var = np.ones_like(time) - var[0::2] = -1 + f = 0.25 - expected_input = var.copy() - expected_input[0:5] += np.array([0, A/4, A/2, 3*A/4, A]) + expected_input = np.zeros([11]) + expected_input[0:5] = np.array([0, A/2, 0, -A/2, 0]) - ramp_input = ramp(t_init, T, A, time, offset=0, var=var) + harmonic_input = Harmonic(t_init, T, A, f, phase=0, offset=0) + real_input = harmonic_input(time) - assert_almost_equal(ramp_input, expected_input) + assert_almost_equal(real_input, expected_input) -def test_ramp_var_and_offset(): +def test_harmonic_offset(): t_init = 0 T = 4. A = 3. time = np.linspace(0, 10, 11) - offset = 2 - var = np.ones_like(time) - var[0::2] = -1 + offset = 1 + f = 0.25 - expected_input = var - expected_input[0:5] += np.array([0, A/4, A/2, 3*A/4, A]) + offset + expected_input = np.zeros([11]) + offset + expected_input[0:5] += np.array([0, A/2, 0, -A/2, 0]) - ramp_input = ramp(t_init, T, A, time, offset=offset, var=var) + harmonic_input = Harmonic(t_init, T, A, f, phase=0, offset=offset) + real_input = harmonic_input(time) - assert_almost_equal(ramp_input, expected_input) + assert_almost_equal(real_input, expected_input) -def test_ramp_wrong_size_var(): +def test_harmonic_phase(): t_init = 0 - T = 5. - A = 1.5 + T = 4. + A = 3. time = np.linspace(0, 10, 11) - var = np.ones([10]) + phase = np.pi/2 + f = 0.25 - with pytest.raises(ValueError) as excinfo: - doublet(t_init, T, A, time, offset=0, var=var) - assert ("ValueError: var and time must have the same size" - in excinfo.exconly()) + expected_input = np.zeros([11]) + expected_input[0:5] += np.array([A/2, 0, -A/2, 0, A/2]) + harmonic_input = Harmonic(t_init, T, A, f, phase=phase) + real_input = harmonic_input(time) -def test_ramp_wrong_not_scalar_offset(): - t_init = 0 - T = 5. - A = 1.5 - time = np.linspace(0, 10, 11) - var = np.ones_like(time) - offset = var + assert_almost_equal(real_input, expected_input) - with pytest.raises(TypeError) as excinfo: - ramp(t_init, T, A, time, offset=offset) +def test_constant(): -def test_sinusoid(): - t_init = 0 - T = 4. - A = 3. - time = np.linspace(0, 10, 11) + offset = 3.5 + time = np.linspace(0, 5, 11) - expected_input = np.zeros([11]) - expected_input[0:5] = np.array([0, A/2, 0, -A/2, 0]) + expected_input = np.full_like(time, offset) - sinusoid_input = sinusoid(t_init, T, A, time) + constant = Constant(offset) + real_input = constant(time) - assert_almost_equal(sinusoid_input, expected_input) + assert_almost_equal(real_input, expected_input) -def test_sinusoid_offset(): - t_init = 0 - T = 4. - A = 3. - time = np.linspace(0, 10, 11) - offset = 1 +def test_add_controls_01(): - expected_input = np.zeros([11]) - expected_input[0:5] += np.array([0, A/2, 0, -A/2, 0]) + offset + offset1 = 3.5 + offset2 = 1.2 - sinusoid_input = sinusoid(t_init, T, A, time, offset=offset) + time = np.linspace(0, 5, 11) - assert_almost_equal(sinusoid_input, expected_input) + expected_input = np.full_like(time, offset1 + offset2) + constant1 = Constant(offset1) + constant2 = Constant(offset2) -def test_sinusoid_phase(): - t_init = 0 - T = 4. - A = 3. - time = np.linspace(0, 10, 11) - phase = np.pi/2 + constant_input = constant1 + constant2 + real_input = constant_input(time) - expected_input = np.zeros([11]) - expected_input[0:5] += np.array([A/2, 0, -A/2, 0, A/2]) + assert_almost_equal(real_input, expected_input) - sinusoid_input = sinusoid(t_init, T, A, time, phase=phase) - assert_almost_equal(sinusoid_input, expected_input) +def test_add_controls_02(): + time = np.linspace(0, 10, 11) -def test_sinusoid_var(): + # Define harmonic input t_init = 0 T = 4. A = 3. - time = np.linspace(0, 10, 11) - var = np.ones_like(time) - var[0::2] = -1 - - expected_input = var.copy() - expected_input[0:5] += np.array([0, A/2, 0, -A/2, 0]) - - sinusoid_input = sinusoid(t_init, T, A, time, offset=0, var=var) + phase = np.pi / 2 + f = 0.25 - assert_almost_equal(sinusoid_input, expected_input) + expected_harm_input = np.zeros([11]) + expected_harm_input[0:5] += np.array([A / 2, 0, -A / 2, 0, A / 2]) + harmonic_input = Harmonic(t_init, T, A, f, phase=phase) -def test_sinusoid_var_and_offset(): + # Define ramp input t_init = 0 T = 4. A = 3. - time = np.linspace(0, 10, 11) - offset = 2 - var = np.ones_like(time) - var[0::2] = -1 - - expected_input = var - expected_input[0:5] += np.array([0, A/2, 0, -A/2, 0]) + offset - sinusoid_input = sinusoid(t_init, T, A, time, offset=offset, var=var) + expected_ramp_input = np.zeros([11]) + expected_ramp_input[0:5] = np.array([0, A / 4, A / 2, 3 * A / 4, A]) - assert_almost_equal(sinusoid_input, expected_input) + ramp_input = Ramp(t_init, T, A, offset=0) + # Add both + composed_input = ramp_input + harmonic_input + real_input = composed_input(time) -def test_sinusoid_wrong_size_var(): - t_init = 0 - T = 5. - A = 1.5 - time = np.linspace(0, 10, 11) - var = np.ones([10]) + expected_input = expected_ramp_input + expected_harm_input - with pytest.raises(ValueError) as excinfo: - sinusoid(t_init, T, A, time, offset=0, var=var) - assert ("ValueError: var and time must have the same size" - in excinfo.exconly()) + assert_almost_equal(real_input, expected_input) -def test_sinusoid_wrong_not_scalar_offset(): - t_init = 0 - T = 5. - A = 1.5 - time = np.linspace(0, 10, 11) - var = np.ones_like(time) - offset = var - with pytest.raises(TypeError) as excinfo: - sinusoid(t_init, T, A, time, offset=offset) +def test_subtract_controls_01(): + time = np.linspace(0, 10, 11) -def test_harmonic(): + # Define harmonic input t_init = 0 T = 4. - A = 3.0 - time = np.linspace(0, 10, 11) + A = 3. + phase = np.pi / 2 f = 0.25 - expected_input = np.zeros([11]) - expected_input[0:5] = np.array([0, A/2, 0, -A/2, 0]) - - harmonic_input = harmonic(t_init, T, A, time, f, phase=0, - offset=0, var=None) - - assert_almost_equal(harmonic_input, expected_input) + expected_harm_input = np.zeros([11]) + expected_harm_input[0:5] += np.array([A / 2, 0, -A / 2, 0, A / 2]) + harmonic_input = Harmonic(t_init, T, A, f, phase=phase) -def test_harmonic_offset(): + # Define ramp input t_init = 0 T = 4. A = 3. - time = np.linspace(0, 10, 11) - offset = 1 - f = 0.25 - expected_input = np.zeros([11]) - expected_input[0:5] += np.array([0, A/2, 0, -A/2, 0]) + offset + expected_ramp_input = np.zeros([11]) + expected_ramp_input[0:5] = np.array([0, A / 4, A / 2, 3 * A / 4, A]) - harmonic_input = harmonic(t_init, T, A, time, f, offset=offset) + ramp_input = Ramp(t_init, T, A, offset=0) - assert_almost_equal(harmonic_input, expected_input) + # Sutract both + composed_input = ramp_input - harmonic_input + real_input = composed_input(time) + expected_input = expected_ramp_input - expected_harm_input -def test_harmonic_phase(): + assert_almost_equal(real_input, expected_input) + + +def test_multiply_controls_01(): + + time = np.linspace(0, 10, 11) + + # Define harmonic input t_init = 0 T = 4. A = 3. - time = np.linspace(0, 10, 11) - phase = np.pi/2 + phase = np.pi / 2 f = 0.25 - expected_input = np.zeros([11]) - expected_input[0:5] += np.array([A/2, 0, -A/2, 0, A/2]) - - harmonic_input = harmonic(t_init, T, A, time, f, phase=phase) + expected_harm_input = np.zeros([11]) + expected_harm_input[0:5] += np.array([A / 2, 0, -A / 2, 0, A / 2]) - assert_almost_equal(harmonic_input, expected_input) + harmonic_input = Harmonic(t_init, T, A, f, phase=phase) - -def test_harmonic_var(): + # Define ramp input t_init = 0 T = 4. A = 3. - time = np.linspace(0, 10, 11) - var = np.ones_like(time) - var[0::2] = -1 - f = 0.25 - expected_input = var.copy() - expected_input[0:5] += np.array([0, A/2, 0, -A/2, 0]) + expected_ramp_input = np.zeros([11]) + expected_ramp_input[0:5] = np.array([0, A / 4, A / 2, 3 * A / 4, A]) + + ramp_input = Ramp(t_init, T, A, offset=0) - harmonic_input = harmonic(t_init, T, A, time, f, offset=0, var=var) + # Multiply both + composed_input = ramp_input * harmonic_input + real_input = composed_input(time) - assert_almost_equal(harmonic_input, expected_input) + expected_input = expected_ramp_input * expected_harm_input + assert_almost_equal(real_input, expected_input) -def test_harmonic_var_and_offset(): + time = np.linspace(0, 10, 11) + + # Define harmonic input t_init = 0 T = 4. A = 3. - time = np.linspace(0, 10, 11) - offset = 2 - var = np.ones_like(time) - var[0::2] = -1 + phase = np.pi / 2 f = 0.25 - expected_input = var - expected_input[0:5] += np.array([0, A/2.0, 0, -A/2, 0]) + offset - - harmonic_input = harmonic(t_init, T, A, time, f, offset=offset, var=var) + expected_harm_input = np.zeros([11]) + expected_harm_input[0:5] += np.array([A / 2, 0, -A / 2, 0, A / 2]) - assert_almost_equal(harmonic_input, expected_input) + harmonic_input = Harmonic(t_init, T, A, f, phase=phase) - -def test_harmonic_wrong_size_var(): + # Define ramp input t_init = 0 - T = 5. - A = 1.5 - time = np.linspace(0, 10, 11) - var = np.ones([10]) - f = 0.25 + T = 4. + A = 3. - with pytest.raises(ValueError) as excinfo: - harmonic(t_init, T, A, time, f, offset=0, var=var) - assert ("ValueError: var and time must have the same size" - in excinfo.exconly()) + expected_ramp_input = np.zeros([11]) + expected_ramp_input[0:5] = np.array([0, A / 4, A / 2, 3 * A / 4, A]) + ramp_input = Ramp(t_init, T, A, offset=0) -def test_harmonic_wrong_not_scalar_offset(): - t_init = 0 - T = 5. - A = 1.5 - time = np.linspace(0, 10, 11) - var = np.ones_like(time) - offset = var - f = 0.25 + # Add both + composed_input = ramp_input + harmonic_input + real_input = composed_input(time) + + expected_input = expected_harm_input + expected_ramp_input - with pytest.raises(TypeError) as excinfo: - harmonic(t_init, T, A, time, f, offset=offset) + assert_almost_equal(real_input, expected_input) From d3e13d0fc4d567dd76d2c5a88ceeefcd0bc36d31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Tue, 15 Aug 2017 19:32:56 +0200 Subject: [PATCH 037/104] scalar in input generator returns scalar --- src/pyfme/utils/input_generator.py | 12 +++++++++++- src/pyfme/utils/tests/test_inputs_generator.py | 6 ++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/pyfme/utils/input_generator.py b/src/pyfme/utils/input_generator.py index 7b9cb2b..fff4c0c 100644 --- a/src/pyfme/utils/input_generator.py +++ b/src/pyfme/utils/input_generator.py @@ -25,7 +25,17 @@ def _fun(self, t): raise NotImplementedError def __call__(self, t): - return self._vec_fun(t) + r = self._vec_fun(t) + # NumPy vecotrize returns an numpy.ndarray object with size 1 and no + # shape if the input is scalar, however in this case, a float is + # expected. + # TODO: + # Numba vectorize does return a scalar, however it does not deal + # with function methods. + if r.size == 1: + return float(r) + else: + return r def __add__(self, other): control = Control() diff --git a/src/pyfme/utils/tests/test_inputs_generator.py b/src/pyfme/utils/tests/test_inputs_generator.py index 61e87ae..e4960e9 100644 --- a/src/pyfme/utils/tests/test_inputs_generator.py +++ b/src/pyfme/utils/tests/test_inputs_generator.py @@ -15,6 +15,12 @@ from pyfme.utils.input_generator import (Step, Doublet, Ramp, Harmonic, Constant) +def test_input_scalar_output_scalar(): + control = Constant(1.5) + control_value = control(1.5) + + assert isinstance(control_value, float) + def test_step(): t_init = 0 From ed6240f28464ddf3da412052f561d1e0465cf554 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sun, 27 Aug 2017 22:51:35 +0200 Subject: [PATCH 038/104] forces and moments updated in internal ode steps --- .../example_000_no_controls.py | 164 +++++++++--------- src/pyfme/models/euler_flat_earth.py | 13 +- src/pyfme/models/systems.py | 21 ++- src/pyfme/simulator.py | 13 +- src/pyfme/utils/trimmer.py | 2 +- 5 files changed, 113 insertions(+), 100 deletions(-) diff --git a/examples/examples_as_scripts/example_000_no_controls.py b/examples/examples_as_scripts/example_000_no_controls.py index 35e6f9d..024ce54 100644 --- a/examples/examples_as_scripts/example_000_no_controls.py +++ b/examples/examples_as_scripts/example_000_no_controls.py @@ -18,15 +18,16 @@ import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D -from pyfme.aircrafts import Cessna172 +from pyfme.aircrafts import Cessna172, Cessna310 from pyfme.environment.environment import Environment from pyfme.environment.atmosphere import ISA1976 from pyfme.environment.gravity import VerticalConstant from pyfme.environment.wind import NoWind -from pyfme.models.systems import EulerFlatEarth -from pyfme.simulator import BatchSimulation -from pyfme.utils.trimmer import steady_state_flight_trimmer -from pyfme.utils.input_generator import doublet +from pyfme.models import EulerFlatEarth +from pyfme.models.systems import System +from pyfme.simulator import Simulation + +from pyfme.utils.input_generator import Constant, Harmonic, Doublet, Step, Ramp aircraft = Cessna172() atmosphere = ISA1976() @@ -42,90 +43,87 @@ turn_rate = 0.0 # rad/s gamma0 = 0.0 # rad -system = EulerFlatEarth(lat=0, lon=0, h=h0, psi=psi0, x_earth=x0, y_earth=y0) +system = System(EulerFlatEarth()) + +simulation = Simulation(aircraft, system, environment) not_trimmed_controls = {'delta_elevator': 0.05, + 'hor_tail_incidence': 0.0, 'delta_aileron': 0.01 * np.sign(turn_rate), 'delta_rudder': 0.01 * np.sign(turn_rate), 'delta_t': 0.5} - -controls2trim = ['delta_elevator', 'delta_aileron', 'delta_rudder', 'delta_t'] - -trimmed_ac, trimmed_sys, trimmed_env, results = steady_state_flight_trimmer( - aircraft, system, environment, TAS=TAS, controls_0=not_trimmed_controls, - controls2trim=controls2trim, gamma=gamma0, turn_rate=turn_rate, verbose=1) - -print() -print('delta_elev = ', "%8.4f" % np.rad2deg(results['delta_elevator']), 'deg') -print('delta_aile = ', "%8.4f" % np.rad2deg(results['delta_aileron']), 'deg') -print('delta_rud = ', "%8.4f" % np.rad2deg(results['delta_rudder']), 'deg') -print('delta_t = ', "%8.4f" % results['delta_t'], '%', '\n') -print('alpha = ', "%8.4f" % np.rad2deg(results['alpha']), 'deg') -print('beta = ', "%8.4f" % np.rad2deg(results['beta']), 'deg', '\n') -print('u = ', "%8.4f" % results['u'], 'm/s') -print('v = ', "%8.4f" % results['v'], 'm/s') -print('w = ', "%8.4f" % results['w'], 'm/s', '\n') -print('psi = ', "%8.4f" % np.rad2deg(psi0), 'deg') -print('theta = ', "%8.4f" % np.rad2deg(results['theta']), 'deg') -print('phi = ', "%8.4f" % np.rad2deg(results['phi']), 'deg', '\n') -print('p =', "%8.4f" % results['p'], 'rad/s') -print('q =', "%8.4f" % results['q'], 'rad/s') -print('r =', "%8.4f" % results['r'], 'rad/s') - -no_controls = {'delta_elevator': 0.0, - 'delta_aileron': 0.0, - 'delta_rudder': 0.0, - 'delta_t': 0.0} - -my_simulation = BatchSimulation(trimmed_ac, trimmed_sys, trimmed_env) +simulation.trim_aircraft((0, 0, h0), TAS, gamma0, turn_rate, + not_trimmed_controls, psi0) + +trimmed_controls = simulation.aircraft.controls + +simulation.controls = {'delta_elevator': + Doublet( + 2, 0.5, 0.1, + trimmed_controls['delta_elevator'] + ), + 'delta_aileron': + Constant(trimmed_controls['delta_aileron']), + 'delta_rudder': + Constant(trimmed_controls['delta_rudder']), + 'delta_t': + Constant(trimmed_controls['delta_t']) + } tfin = 20 # seconds -N = tfin * 100 + 1 -time = np.linspace(0, tfin, N) - -initial_controls = no_controls - -controls = {} -for control_name, control_value in initial_controls.items(): - controls[control_name] = np.ones_like(time) * control_value - -my_simulation.set_controls(time, controls) - -par_list = ['x_earth', 'y_earth', 'height', - 'psi', 'theta', 'phi', - 'u', 'v', 'w', - 'v_north', 'v_east', 'v_down', - 'p', 'q', 'r', - 'alpha', 'beta', 'TAS', - 'F_xb', 'F_yb', 'F_zb', - 'M_xb', 'M_yb', 'M_zb'] - -my_simulation.set_par_dict(par_list) -my_simulation.run_simulation() - -# print(my_simulation.par_dict) - -plt.style.use('ggplot') - -for ii in range(len(par_list) // 3): - three_params = par_list[3 * ii:3 * ii + 3] - fig, ax = plt.subplots(3, 1, sharex=True) - for jj, par in enumerate(three_params): - ax[jj].plot(time, my_simulation.par_dict[par]) - ax[jj].set_ylabel(par) - ax[jj].set_xlabel('time (s)') - -fig = plt.figure() -ax = Axes3D(fig) -ax.plot(my_simulation.par_dict['x_earth'], - my_simulation.par_dict['y_earth'], - my_simulation.par_dict['height']) - -ax.plot(my_simulation.par_dict['x_earth'], - my_simulation.par_dict['y_earth'], - my_simulation.par_dict['height'] * 0) -ax.set_xlabel('x_earth') -ax.set_ylabel('y_earth') -ax.set_zlabel('z_earth') + +simulation.propagate(tfin) + +kwargs = {'marker':'.'} + +simulation.results.plot(y=['x_earth', 'y_earth', 'height'], + subplots=True, + layout=(3, 1), + sharex=True, + **kwargs) + +simulation.results.plot(y=['psi', 'theta', 'phi'], + subplots=True, + layout=(3, 1), + sharex=True, + **kwargs) + +simulation.results.plot(y=['v_north', 'v_east', 'v_down'], + subplots=True, + layout=(3, 1), + sharex=True, + **kwargs) + +simulation.results.plot(y=['p', 'q', 'r'], + subplots=True, + layout=(3, 1), + sharex=True, + **kwargs) + +simulation.results.plot(y=['alpha', 'beta', 'TAS'], + subplots=True, + layout=(3, 1), + sharex=True, + **kwargs) + +simulation.results.plot(y=['Fx', 'Fy', 'Fz'], + subplots=True, + layout=(3, 1), + sharex=True, + **kwargs) + +simulation.results.plot(y=['Mx', 'My', 'Mz'], + subplots=True, + layout=(3, 1), + sharex=True, + **kwargs) + +simulation.results.plot(y=['elevator', 'aileron', 'rudder', 'thrust'], + subplots=True, + layout=(4, 1), + sharex=True, + **kwargs) + +print(simulation.results) plt.show() diff --git a/src/pyfme/models/euler_flat_earth.py b/src/pyfme/models/euler_flat_earth.py index b21f9db..b9d5979 100644 --- a/src/pyfme/models/euler_flat_earth.py +++ b/src/pyfme/models/euler_flat_earth.py @@ -38,7 +38,7 @@ def dynamic_system_state_to_full_system_state(self, mass, inertia, forces, t = self.time y = self.state - y_dot = self.dynamic_system_equations(t, y, mass, inertia, forces, + y_dot = self._dynamic_system_equations(t, y, mass, inertia, forces, moments) # TODO: define the rest of conversions @@ -77,8 +77,17 @@ def trim_system_to_dynamic_system_state(self, phi, theta, p, q, r, u, v, w): return state + def dynamic_system_equations(self, time, state_vector, update_fun): + + mass, inertia, forces, moments = update_fun(time, state_vector) + + rv = self._dynamic_system_equations(time, state_vector, mass, inertia, + forces, moments) + + return rv + @staticmethod - def dynamic_system_equations(time, state_vector, mass, inertia, forces, + def _dynamic_system_equations(time, state_vector, mass, inertia, forces, moments): """Euler flat earth equations: linear momentum equations, angular momentum equations, angular kinematic equations, linear kinematic diff --git a/src/pyfme/models/systems.py b/src/pyfme/models/systems.py index a51f04e..2d7dfea 100644 --- a/src/pyfme/models/systems.py +++ b/src/pyfme/models/systems.py @@ -439,7 +439,10 @@ def __init__(self, n_states, use_jacobian=False, integrator=None, self.set_forcing_terms = self._set_fun_forcing_terms # ODE setup - self._ode = ode(self.dynamic_system_equations, self._jacobian) + f = (lambda time, state_vector, update_fun: + self.dynamic_system_equations(time, state_vector, update_fun)) + + self._ode = ode(f, self._jacobian) if integrator is None: integrator = 'dopri5' @@ -458,8 +461,8 @@ def set_initial_state(self, state): self.state = state self._ode.set_initial_value(self.state) - def _set_fun_forcing_terms(self, mass, inertia, forces, moments): - self._ode.set_f_params(mass, inertia, forces, moments) + def _set_fun_forcing_terms(self, update_f): + self._ode.set_f_params(update_f) def _set_jac_forcing_terms(self, mass, inertia, forces, moments): self._ode.set_jac_params(mass, inertia, forces, moments) @@ -508,11 +511,11 @@ def propagate(self, dt, mass, inertia, forces, moments): # Checks that a callback for updating environment and aircraft has # been defined previous to integration - if not self._ode._integrator.solout: - raise ValueError("A callback to the model must be given in order " - "to update the system, environment and aircraft " - "at each time step. Also to save the results." - ) + # if not self._ode._integrator.solout: + # raise ValueError("A callback to the model must be given in order " + # "to update the system, environment and aircraft " + # "at each time step. Also to save the results." + # ) # Sets the final time of the integration t = self._ode.t + dt @@ -520,7 +523,7 @@ def propagate(self, dt, mass, inertia, forces, moments): # This only affects the first time step: this update will be done by # the callback function at every integration step after updating # mass, inertia, forces and moments - self.set_forcing_terms(mass, inertia, forces, moments) + # self.set_forcing_terms(mass, inertia, forces, moments) # Perform the integration self.state = self._ode.integrate(t) diff --git a/src/pyfme/simulator.py b/src/pyfme/simulator.py index 741dc2e..3d4368f 100644 --- a/src/pyfme/simulator.py +++ b/src/pyfme/simulator.py @@ -102,8 +102,11 @@ def __init__(self, aircraft, system, environment, save_vars=None): # This wrap is necessary in order the respect the arguments passed # by the integration method: time, state (without self). - callback = lambda time, state: self._time_step(time, state) - self.system.model.set_solout(callback) + update_fun = lambda time, state: self._time_step(time, state) + self.system.model.set_forcing_terms(update_fun) + + save_fun = lambda time, state: self._save_time_step() + self.system.model.set_solout(save_fun) self.aircraft = aircraft self.environment = environment @@ -187,15 +190,15 @@ def _time_step(self, time, state): # signature must be changed. controls = self._get_current_controls(time) - forces, moment = self.aircraft.calculate_forces_and_moments( + forces, moments = self.aircraft.calculate_forces_and_moments( self.system, self.environment, controls ) - self.system.model.set_forcing_terms(mass, inertia, forces, moments) + # self._save_time_step() - self._save_time_step() + return mass, inertia, forces, moments def _save_time_step(self): """Saves the selected variables for the current system, environment diff --git a/src/pyfme/utils/trimmer.py b/src/pyfme/utils/trimmer.py index 9c38323..6f779e2 100644 --- a/src/pyfme/utils/trimmer.py +++ b/src/pyfme/utils/trimmer.py @@ -108,7 +108,7 @@ def trimming_cost_func(trimmed_params, system, ac, env, controls2trim, forces, moments = ac.calculate_forces_and_moments(system, env, new_controls) - output = system.model.dynamic_system_equations( + output = system.model._dynamic_system_equations( time=0, state_vector=state, mass=ac.mass, From 967e8df9a7fae90e45c2747a718fde8726d04531 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sat, 4 Nov 2017 00:55:42 +0100 Subject: [PATCH 039/104] new dynamic system class based on scipy 1.0 solve_ivp --- src/pyfme/models/dynamic_system.py | 147 +++++++++++++++++++++++++++++ 1 file changed, 147 insertions(+) create mode 100644 src/pyfme/models/dynamic_system.py diff --git a/src/pyfme/models/dynamic_system.py b/src/pyfme/models/dynamic_system.py new file mode 100644 index 0000000..f37fb1e --- /dev/null +++ b/src/pyfme/models/dynamic_system.py @@ -0,0 +1,147 @@ +# -*- coding: utf-8 -*- +""" +Python Flight Mechanics Engine (PyFME). +Copyright (c) AeroPython Development Team. +Distributed under the terms of the MIT License. + +Dynamic System +-------------- + +Dynamic system class to integrate initial value problems numerically serves +as base for implementation of dynamic systems. +""" +from abc import abstractmethod + +from scipy.integrate import solve_ivp + + +class DynamicSystem: + """Dynamic system class to integrate initial value problems numerically. + Serves as base for implementation of dynamic systems. + + Attributes + ---------- + state_vector : ndarray + State vector. + time : float + Current integration time. + + Methods + ------- + integrate(t_end, t_eval=None, dense_output=True) + Integrate the system from current time to t_end. + fun(t, x) + Dynamic system equations + """ + + def __init__(self, t0, x0, method='Rk45', options=None): + """ Dynamic system + + Parameters + ---------- + t0 : float + Initial time. + x0 : array_like + Initial state vector. + method : str, opt + Integration method. Accepts any method implemented in + scipy.integrate.solve_ivp. + options : dict + Options for the selected method. + """ + + if options is None: + options = {} + self._state_vector = x0 + self._time = t0 + + self._method = method + self._options = options + + @property + def state_vector(self): + return self._state_vector + + @property + def time(self): + return self._time + + def integrate(self, t_end, t_eval=None, dense_output=True): + """Integrate the system from current time to t_end. + + Parameters + ---------- + t_end : float + Final time. + t_eval : array_like, opt + Times at which to store the computed solution, must be sorted + and lie within current time and t_end. If None (default), use + points selected by a solver. + dense_output: bool, opt + Whether to compute a continuous solution. Default is True. + + Returns + ------- + t : ndarray, shape (n_points,) + Time points. + y : ndarray, shape (n, n_points) + Solution values at t. + sol : Bunch object with the following fields defined: + t : ndarray, shape (n_points,) + Time points. + y : ndarray, shape (n, n_points) + Solution values at t. + sol : OdeSolution or None + Found solution as OdeSolution instance, None if dense_output + was set to False. + t_events : list of ndarray or None + Contains arrays with times at each a corresponding event was + detected, the length of the list equals to the number of + events. None if events was None. + nfev : int + Number of the system rhs evaluations. + njev : int + Number of the Jacobian evaluations. + nlu : int + Number of LU decompositions. + status : int + Reason for algorithm termination: + -1: Integration step failed. + 0: The solver successfully reached the interval end. + 1: A termination event occurred. + message : string + Verbal description of the termination reason. + success : bool + True if the solver reached the interval end or a termination event + occurred (status >= 0). + """ + + x0 = self.state_vector + t_ini = self.time + + t_span = (t_ini, t_end) + method = self._method + + # TODO: prepare to use jacobian in case it is defined + sol = solve_ivp(self.fun, t_span, x0, method=method, t_eval=t_eval, + dense_output=dense_output, **self._options) + + self._time = sol.t[-1] + self._state_vector = sol.y[:, -1] + + return sol.t, sol.y, sol + + @abstractmethod + def fun(self, t, x): + """ Right-hand side of the system (dy / dt = f(t, y)). The calling + signature is fun(t, x). Here t is a scalar and there are two options + for ndarray y. + It can either have shape (n,), then fun must return array_like with + shape (n,). Or alternatively it can have shape (n, k), then fun must + return array_like with shape (n, k), i.e. each column corresponds to a + single column in y. The choice between the two options is determined + by vectorized argument (see below). The vectorized implementation + allows faster approximation of the Jacobian by finite differences + (required for stiff solvers). + """ + raise NotImplementedError From 85f44b08da9457044b47983b9f553d35d0dc4b8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sat, 4 Nov 2017 01:24:06 +0100 Subject: [PATCH 040/104] simplified EulerFlatEarth and adapted to new dynamic system class --- src/pyfme/models/euler_flat_earth.py | 273 +++++++++++---------------- 1 file changed, 113 insertions(+), 160 deletions(-) diff --git a/src/pyfme/models/euler_flat_earth.py b/src/pyfme/models/euler_flat_earth.py index b9d5979..2949179 100644 --- a/src/pyfme/models/euler_flat_earth.py +++ b/src/pyfme/models/euler_flat_earth.py @@ -4,184 +4,137 @@ Copyright (c) AeroPython Development Team. Distributed under the terms of the MIT License. -Flight Dynamic Equations of Motion ----------------------------------- -These are the equations to be integrated, thus they have the following order -for the arguments: -func(time, y, ...) where dy/dt = func(y, ...) +Euler Flat Earth +---------------- -Assumptions: - -* ... +Classical aircraft motion equations assuming no Earth rotation +inertial effects, representing attitude with Euler angles (not valid for +all-attitude flight) and integrating aircraft position in Earth axis (Flat +Earth). """ import numpy as np from numpy import sin, cos -from pyfme.models.systems import DynamicSystem +from pyfme.models.dynamic_system import DynamicSystem class EulerFlatEarth(DynamicSystem): n_states = 12 - def __init__(self, use_jacobian=None, integrator=None, - **integrator_params): - - # TODO: use jacobian when it is calculated - super().__init__(n_states=self.n_states, use_jacobian=use_jacobian, - integrator=integrator) - - def dynamic_system_state_to_full_system_state(self, mass, inertia, forces, - moments): - full_system_state = {} - - t = self.time - y = self.state - y_dot = self._dynamic_system_equations(t, y, mass, inertia, forces, - moments) - - # TODO: define the rest of conversions - full_system_state['geodetic_coordinates'] = np.array([0., 0., y[11]]) # implement - full_system_state['geocentric_coordinates'] = np.zeros(3) # implement - full_system_state['earth_coordinates'] = y[9:12] - full_system_state['euler_angles'] = y[6:9] - full_system_state['quaternions'] = np.zeros(4) # implement - full_system_state['vel_body'] = y[0:3] - full_system_state['vel_NED'] = y_dot[9:12] - full_system_state['vel_ang'] = y[3:6] - full_system_state['accel_body'] = y_dot[0:3] - full_system_state['accel_NED'] = np.zeros(3) # implement - full_system_state['accel_ang'] = y_dot[6:9] - - return full_system_state + def __init__(self, t0, x0, update, method='Rk45', options=None): - def full_system_state_to_dynamic_system_state(self, full_system_state): + # TODO: use jacobian when it is calculated and implemented in + # Dynamic System + super().__init__(t0, x0, method=method, options=options) - state = np.zeros(self.n_states) + self.update_simulation = update - state[0:3] = full_system_state.__getattribute__('vel_body') - state[3:6] = full_system_state.__getattribute__('vel_ang') - state[6:9] = full_system_state.__getattribute__('euler_angles') - state[9:12] = full_system_state.__getattribute__('earth_coordinates') + def fun(self, t, x): - return state + updated_simulation = self.update_simulation(t, x) - def trim_system_to_dynamic_system_state(self, phi, theta, p, q, r, u, v, w): + mass = updated_simulation.aircraft.mass + inertia = updated_simulation.aircraft.inertia + forces = updated_simulation.aircraft.forces + moments = updated_simulation.aircraft.moments - state = self.state.copy() - - state[0:3] = np.array([u, v, w]) - state[3:6] = np.array([p, q, r]) - state[6:8] = np.array([theta, phi]) - - return state - - def dynamic_system_equations(self, time, state_vector, update_fun): - - mass, inertia, forces, moments = update_fun(time, state_vector) - - rv = self._dynamic_system_equations(time, state_vector, mass, inertia, - forces, moments) + rv = _system_equations(t, x, mass, inertia, forces, moments) return rv - @staticmethod - def _dynamic_system_equations(time, state_vector, mass, inertia, forces, - moments): - """Euler flat earth equations: linear momentum equations, angular - momentum equations, angular kinematic equations, linear kinematic - equations. - - Parameters - ---------- - time : float - Current time (s). - state_vector : array_like, shape(9) - Current value of absolute velocity and angular velocity, both expressed - in body axes, euler angles and position in Earth axis. - (u, v, w, p, q, r, theta, phi, psi, x, y, z) - (m/s, m/s, m/s, rad/s, rad/s rad/s, rad, rad, rad, m, m ,m). - mass : float - Current mass of the aircraft (kg). - inertia : array_like, shape(3, 3) - 3x3 tensor of inertia of the aircraft (kg * m2) - Current equations assume that the aircraft has a symmetry plane - (x_b - z_b), thus J_xy and J_yz must be null. - forces : array_like, shape(3) - 3 dimensional vector containing the total total_forces (including - gravity) in x_b, y_b, z_b axes (N). - moments : array_like, shape(3) - 3 dimensional vector containing the total total_moments in x_b, - y_b, z_b axes (N·m). - - Returns - ------- - dstate_dt : array_like, shape(9) - Derivative with respect to time of the state vector. - Current value of absolute acceleration and angular acceleration, both - expressed in body axes, Euler angles derivatives and velocity with - respect to Earth Axis. - (du_dt, dv_dt, dw_dt, dp_dt, dq_dt, dr_dt, dtheta_dt, dphi_dt, - dpsi_dt, dx_dt, dy_dt, dz_dt) - (m/s² , m/s², m/s², rad/s², rad/s², rad/s², rad/s, rad/s, rad/s, - m/s, m/s, m/s). - - References - ---------- - .. [1] B. Etkin, "Dynamics of Atmospheric Flight", Courier Corporation, - p. 149 (5.8 The Flat-Earth Approximation), 2012. - - .. [2] M. A. Gómez Tierno y M. Pérez Cortés, "Mecánica del Vuelo", Garceta - Grupo Editorial, pp.18-25 (Tema 2: Ecuaciones Generales del - Moviemiento), 2012. - - """ - # Note definition of total_moments of inertia p.21 Gomez Tierno, et al - # Mecánica de vuelo - Ix = inertia[0, 0] - Iy = inertia[1, 1] - Iz = inertia[2, 2] - Jxz = - inertia[0, 2] - - Fx, Fy, Fz = forces - L, M, N = moments - - u, v, w = state_vector[0:3] - p, q, r = state_vector[3:6] - theta, phi, psi = state_vector[6:9] - - # Linear momentum equations - du_dt = Fx / mass + r * v - q * w - dv_dt = Fy / mass - r * u + p * w - dw_dt = Fz / mass + q * u - p * v - - # Angular momentum equations - dp_dt = (L * Iz + N * Jxz - q * r * (Iz ** 2 - Iz * Iy + Jxz ** 2) + - p * q * Jxz * (Ix + Iz - Iy)) / (Ix * Iz - Jxz ** 2) - dq_dt = (M + (Iz - Ix) * p * r - Jxz * (p ** 2 - r ** 2)) / Iy - dr_dt = (L * Jxz + N * Ix + p * q * (Ix ** 2 - Ix * Iy + Jxz ** 2) - - q * r * Jxz * (Iz + Ix - Iy)) / (Ix * Iz - Jxz ** 2) - - # Angular Kinematic equations - dtheta_dt = q * cos(phi) - r * sin(phi) - dphi_dt = p + (q * sin(phi) + r * cos(phi)) * np.tan(theta) - dpsi_dt = (q * sin(phi) + r * cos(phi)) / cos(theta) - - # Linear kinematic equations - dx_dt = (cos(theta) * cos(psi) * u + - (sin(phi) * sin(theta) * cos(psi) - cos(phi) * sin(psi)) * v + - (cos(phi) * sin(theta) * cos(psi) + sin(phi) * sin(psi)) * w) - dy_dt = (cos(theta) * sin(psi) * u + - (sin(phi) * sin(theta) * sin(psi) + cos(phi) * cos(psi)) * v + - (cos(phi) * sin(theta) * sin(psi) - sin(phi) * cos(psi)) * w) - dz_dt = -u * sin(theta) + v * sin(phi) * cos(theta) + w * cos( - phi) * cos(theta) - - return np.array([du_dt, dv_dt, dw_dt, dp_dt, dq_dt, dr_dt, dtheta_dt, - dphi_dt, dpsi_dt, dx_dt, dy_dt, dz_dt]) - - @staticmethod - def dynamic_system_jacobian(state_vector, mass, inertia, forces, moments): - # TODO: calculate jacobians - raise NotImplementedError + +# TODO: numba jit +def _system_equations(time, state_vector, mass, inertia, forces, moments): + """Euler flat earth equations: linear momentum equations, angular momentum + equations, angular kinematic equations, linear kinematic + equations. + + Parameters + ---------- + time : float + Current time (s). + state_vector : array_like, shape(9) + Current value of absolute velocity and angular velocity, both + expressed in body axes, euler angles and position in Earth axis. + (u, v, w, p, q, r, theta, phi, psi, x, y, z) + (m/s, m/s, m/s, rad/s, rad/s rad/s, rad, rad, rad, m, m ,m). + mass : float + Current mass of the aircraft (kg). + inertia : array_like, shape(3, 3) + 3x3 tensor of inertia of the aircraft (kg * m2) + Current equations assume that the aircraft has a symmetry plane + (x_b - z_b), thus J_xy and J_yz must be null. + forces : array_like, shape(3) + 3 dimensional vector containing the total total_forces (including + gravity) in x_b, y_b, z_b axes (N). + moments : array_like, shape(3) + 3 dimensional vector containing the total total_moments in x_b, + y_b, z_b axes (N·m). + + Returns + ------- + dstate_dt : array_like, shape(9) + Derivative with respect to time of the state vector. + Current value of absolute acceleration and angular acceleration, + both expressed in body axes, Euler angles derivatives and velocity + with respect to Earth Axis. + (du_dt, dv_dt, dw_dt, dp_dt, dq_dt, dr_dt, dtheta_dt, dphi_dt, + dpsi_dt, dx_dt, dy_dt, dz_dt) + (m/s² , m/s², m/s², rad/s², rad/s², rad/s², rad/s, rad/s, rad/s, + m/s, m/s, m/s). + + References + ---------- + .. [1] B. Etkin, "Dynamics of Atmospheric Flight", Courier Corporation, + p. 149 (5.8 The Flat-Earth Approximation), 2012. + + .. [2] M. A. Gómez Tierno y M. Pérez Cortés, "Mecánica del Vuelo", + Garceta Grupo Editorial, pp.18-25 (Tema 2: Ecuaciones Generales del + Moviemiento), 2012. + + """ + # Note definition of total_moments of inertia p.21 Gomez Tierno, et al + # Mecánica de vuelo + Ix = inertia[0, 0] + Iy = inertia[1, 1] + Iz = inertia[2, 2] + Jxz = - inertia[0, 2] + + Fx, Fy, Fz = forces + L, M, N = moments + + u, v, w = state_vector[0:3] + p, q, r = state_vector[3:6] + theta, phi, psi = state_vector[6:9] + + # Linear momentum equations + du_dt = Fx / mass + r * v - q * w + dv_dt = Fy / mass - r * u + p * w + dw_dt = Fz / mass + q * u - p * v + + # Angular momentum equations + dp_dt = (L * Iz + N * Jxz - q * r * (Iz ** 2 - Iz * Iy + Jxz ** 2) + + p * q * Jxz * (Ix + Iz - Iy)) / (Ix * Iz - Jxz ** 2) + dq_dt = (M + (Iz - Ix) * p * r - Jxz * (p ** 2 - r ** 2)) / Iy + dr_dt = (L * Jxz + N * Ix + p * q * (Ix ** 2 - Ix * Iy + Jxz ** 2) - + q * r * Jxz * (Iz + Ix - Iy)) / (Ix * Iz - Jxz ** 2) + + # Angular Kinematic equations + dtheta_dt = q * cos(phi) - r * sin(phi) + dphi_dt = p + (q * sin(phi) + r * cos(phi)) * np.tan(theta) + dpsi_dt = (q * sin(phi) + r * cos(phi)) / cos(theta) + + # Linear kinematic equations + dx_dt = (cos(theta) * cos(psi) * u + + (sin(phi) * sin(theta) * cos(psi) - cos(phi) * sin(psi)) * v + + (cos(phi) * sin(theta) * cos(psi) + sin(phi) * sin(psi)) * w) + dy_dt = (cos(theta) * sin(psi) * u + + (sin(phi) * sin(theta) * sin(psi) + cos(phi) * cos(psi)) * v + + (cos(phi) * sin(theta) * sin(psi) - sin(phi) * cos(psi)) * w) + dz_dt = -u * sin(theta) + v * sin(phi) * cos(theta) + w * cos( + phi) * cos(theta) + + return np.array([du_dt, dv_dt, dw_dt, dp_dt, dq_dt, dr_dt, dtheta_dt, + dphi_dt, dpsi_dt, dx_dt, dy_dt, dz_dt]) From cc76c273ba6c7fb2590fc46639b94f75015f2e14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sun, 5 Nov 2017 00:09:59 +0100 Subject: [PATCH 041/104] removed unused class attribute --- src/pyfme/models/euler_flat_earth.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/pyfme/models/euler_flat_earth.py b/src/pyfme/models/euler_flat_earth.py index 2949179..af26422 100644 --- a/src/pyfme/models/euler_flat_earth.py +++ b/src/pyfme/models/euler_flat_earth.py @@ -21,8 +21,6 @@ class EulerFlatEarth(DynamicSystem): - n_states = 12 - def __init__(self, t0, x0, update, method='Rk45', options=None): # TODO: use jacobian when it is calculated and implemented in From ba7303274e46c6b7c92b6cfeda0ab9ff04ae64c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sun, 5 Nov 2017 00:10:40 +0100 Subject: [PATCH 042/104] Removed System class in favour of state elements such as position, attitude... --- src/pyfme/models/systems.py | 804 +++++++++++++++++------------------- 1 file changed, 372 insertions(+), 432 deletions(-) diff --git a/src/pyfme/models/systems.py b/src/pyfme/models/systems.py index 2d7dfea..fc5fae0 100644 --- a/src/pyfme/models/systems.py +++ b/src/pyfme/models/systems.py @@ -3,163 +3,250 @@ Copyright (c) AeroPython Development Team. Distributed under the terms of the MIT License. -Dynamic Systems ---------------- +State elements +-------------- -Dynamic system implements an abstract class to be inherited by all the -models. +The aircraft state has always the same elements even if they are expressed +in a different way. For example, attitude can be expressed with Euler angles +or quaternions, position with geodetic coordinates or Earth coordinates... -System is a more generic object that wraps every system and keeps updated -variables that may not be present in the dynamic system but may be used by -other members of the simulation, such as the environment or the aircraft. -""" -from abc import abstractmethod, abstractstaticmethod +This module provides class to represent: + * position + * attitude + * velocity + * angular velocity + * acceleration + * angular acceleration +""" import numpy as np -from scipy.integrate import ode from pyfme.utils.coordinates import body2hor, hor2body -class System(object): - """Generic system object containing and wrapping a model that keeps updated - variables that may not be present in the model but may be inferred from it. - +class Position: + """Position + Attributes ---------- - model : DynamicSystem - System's model containing the equations and state vector. - full_system_state_names : tuple of str - Names of all variables that are tracked in the system. All of them - are listed as class attributes below. + geodetic_coordinates : ndarray, shape(3) (lat [rad], lon [rad], height [m]) + lat + lon + height geocentric_coordinates : ndarray, shape(3) (x_geo [m], y_geo [m], z_geo [m]) + x_geo + y_geo + z_geo earth_coordinates : ndarray, shape(3) (x_earth [m], y_earth [m], z_earth [m]) - euler_angles : ndarray, shape(3) - (theta [rad], phi [rad], psi [rad]) - quaternions : ndarray, shape(4) - (q0, q1, q2, q3) - vel_body : ndarray, shape(3) - (u [m/s], v [m/s], w [m/s]) - vel_NED : ndarray, shape(3) - (v_north [m/s], v_east [m/s], v_down [m/s]) - vel_ang : ndarray, shape(3) - (p [rad/s], q [rad/s], r [rad/s]) - accel_body : ndarray, shape(3) - (u_dot [m/s²], v_dot [m/s²], w_dot [m/s²]) - accel_NED : ndarray, shape(3) - (VN_dot [m/s²], VE_dot [m/s²], VD_dot [m/s²]) - accel_ang : ndarray, shape(3) - (p_dot [rad/s²], q_dot [rad/s²], r_dot [rad/s²]) - + x_earth + y_earth + z_earth """ - full_system_state_names = ('geodetic_coordinates', - 'geocentric_coordinates', - 'earth_coordinates', - 'euler_angles', - 'quaternions', - 'vel_body', - 'vel_NED', - 'vel_ang', - 'accel_body', - 'accel_NED', - 'accel_ang') - - def __init__(self, model): - """System - - Parameters - ---------- - model : DynamicSystem - System's model containing the equations and state vector. - """ - - # Dynamic system - self.model = model - - # POSITION + def __init__(self): # Geodetic coordinates: (geodetic lat, lon, height above ellipsoid) - self.geodetic_coordinates = np.zeros(3) # rad + self._geodetic_coordinates = np.zeros(3) # rad # Geocentric coordinates (rotating with Earth): (x_geo, y_geo, z_geo) - self.geocentric_coordinates = np.zeros(3) # m + self._geocentric_coordinates = np.zeros(3) # m # Earth coordinates (x_earth, y_earth, z_earth) - self.earth_coordinates = np.zeros(3) # m + self._earth_coordinates = np.zeros(3) # m - # ATTITUDE - # Euler angles (psi, theta, phi) - self.euler_angles = np.zeros(3) # rad - # Quaternions (q0, q1, q2, q3) - self.quaternions = np.zeros(4) + @property + def geocentric_coordinates(self): + return self._geocentric_coordinates + + @geocentric_coordinates.setter + def geocentric_coordinates(self, value): + self._geocentric_coordinates[:] = value + # TODO: make transformation from geocentric to geodetic: + self._geocentric_coordinates = np.zeros(3) # m + # TODO: Assuming round earth use changes in lat & lon to calculate + # new x_earth and y_earth. z_earth is -height: + self._earth_coordinates = np.zeros(3) # m - # ABSOLUTE VELOCITY. - # Body axis - self.vel_body = np.zeros(3) # m/s - # Local horizon (NED) - self.vel_NED = np.zeros(3) # m/s + @property + def x_geo(self): + return self._geocentric_coordinates[0] - # ANGULAR VELOCITY: (p, q, r) - self.vel_ang = np.zeros(3) # rad/s + @property + def y_geo(self): + return self._geocentric_coordinates[1] - # ABSOLUTE ACCELERATION - # Body axis - self.accel_body = np.zeros(3) # m/s² - # Local horizon (NED) - self.accel_NED = np.zeros(3) # m/s² + @property + def z_geo(self): + return self._geocentric_coordinates[2] - # ANGULAR ACCELERATION - self.accel_ang = np.zeros(3) # rad/s² + @property + def geodetic_coordinates(self): + return self._geodetic_coordinates + + @geodetic_coordinates.setter + def geodetic_coordinates(self, value): + self._geodetic_coordinates[:] = value # rad + # TODO: make transformation from geodetic to geocentric: + self._geocentric_coordinates = np.zeros(3) # m + # TODO: Assuming round earth use changes in lat & lon to calculate + # new x_earth and y_earth. z_earth is -height: + self._earth_coordinates = np.zeros(3) # m @property def lat(self): - return self.geodetic_coordinates[0] + return self._geodetic_coordinates[0] @property def lon(self): - return self.geodetic_coordinates[1] + return self._geodetic_coordinates[1] @property def height(self): - return self.geodetic_coordinates[2] + return self._geodetic_coordinates[2] @property - def x_geo(self): - return self.geocentric_coordinates[0] - - @property - def y_geo(self): - return self.geocentric_coordinates[1] - - @property - def z_geo(self): - return self.geocentric_coordinates[2] + def earth_coordinates(self): + return self._earth_coordinates + + @earth_coordinates.setter + def earth_coordinates(self, value): + self._earth_coordinates[:] = value + # TODO: Assuming round earth use changes in x & y to calculate + # new lat and lon. z_earth is -height: + self._earth_coordinates = np.zeros(3) # m + # TODO: make transformation from geodetic to geocentric: + self._geocentric_coordinates = np.zeros(3) # m @property def x_earth(self): - return self.earth_coordinates[0] + return self._earth_coordinates[0] @property def y_earth(self): - return self.earth_coordinates[1] + return self._earth_coordinates[1] @property def z_earth(self): - return self.earth_coordinates[2] + return self._earth_coordinates[2] + + +class Attitude: + """Attitude + + Attributes + ---------- + + euler_angles : ndarray, shape(3) + (theta [rad], phi [rad], psi [rad]) + theta + phi + psi + quaternions : ndarray, shape(4) + (q0, q1, q2, q3) + q0 + q1 + q2 + q3 + """ + + def __init__(self): + # Euler angles (psi, theta, phi) + self._euler_angles = np.zeros(3) # rad + # Quaternions (q0, q1, q2, q3) + self._quaternions = np.zeros(4) + + @property + def euler_angles(self): + return self._euler_angles + + @euler_angles.setter + def euler_angles(self, value): + self._euler_angles[:] = value + # TODO: transform quaternions to Euler angles + self._quaternions = np.zeros(4) @property def psi(self): - return self.euler_angles[2] + return self._euler_angles[2] @property def theta(self): - return self.euler_angles[0] + return self._euler_angles[0] @property def phi(self): - return self.euler_angles[1] + return self._euler_angles[1] + + @property + def quaternions(self): + return self._quaternions + + @quaternions.setter + def quaternions(self, value): + self._quaternions = value + # TODO: transform quaternion to Euler + self._euler_angles = np.zeros(3) # rad + + @property + def q0(self): + return self._quaternions[0] + + @property + def q1(self): + return self._quaternions[1] + + @property + def q2(self): + return self._quaternions[2] + + @property + def q3(self): + return self._quaternions[3] + + +class Velocity: + """Velocity + + Attributes + ---------- + + vel_body : ndarray, shape(3) + (u [m/s], v [m/s], w [m/s]) + u + v + w + vel_NED : ndarray, shape(3) + (v_north [m/s], v_east [m/s], v_down [m/s]) + v_north + v_east + v_down + """ + + def __init__(self): + # Body axis + self._vel_body = np.zeros(3) # m/s + # Local horizon (NED) + self._vel_NED = np.zeros(3) # m/s + + def set_velocity(self, attitude, vel_body=None, vel_NED=None): + if vel_body is not None and vel_NED is not None: + raise ValueError("Only values for vel_NED or vel_body can be " + "given") + elif vel_NED is None: + self._vel_body[:] = vel_body + # TODO: transform body vel to horizon vel using attitude + self._vel_NED = np.zeros(3) # m/s + elif vel_body is None: + self._vel_NED[:] = vel_NED + # TODO: transform horizon vel to body vel using attitude + self._vel_body = np.zeros(3) # m/s + else: + raise ValueError("vel_NED or vel_body must be given") + + @property + def vel_body(self): + return self._vel_body @property def u(self): @@ -173,384 +260,237 @@ def v(self): def w(self): return self.vel_body[2] + @property + def vel_NED(self): + return self._vel_NED + @property def v_north(self): - return self.vel_NED[0] + return self._vel_NED[0] @property def v_east(self): - return self.vel_NED[1] + return self._vel_NED[1] @property def v_down(self): - return self.vel_NED[2] + return self._vel_NED[2] + + +class AngularVelocity: + """Angular velocity + + vel_ang : ndarray, shape(3) + (p [rad/s], q [rad/s], r [rad/s]) + p + q + r + euler_ang_rates : ndarray, shape(3) + (theta_dot [rad/s], phi_dot [rad/s], psi_dot [rad/s]) + theta + phi + psi + """ + + def __init__(self): + # ANGULAR VELOCITY: (p, q, r) + self._vel_ang_body = np.zeros(3) # rad/s + # EULER ANGLE RATES (theta_dot, phi_dot, psi_dot) + self._euler_ang_rate = np.zeros(3) # rad/s + + def set_angular_velocity(self, attitude, vel_ang_body=None, + euler_ang_rates=None): + + if vel_ang_body is not None and euler_ang_rates is not None: + raise ValueError("Only values for vel_ang_body or euler_ang_rates" + " can be given") + elif vel_ang_body is not None: + self._vel_ang_body[:] = vel_ang_body + # TODO: transform angular velocity in body axis to euler angles + # rates + self._euler_ang_rate = np.zeros(3) # rad/s + elif euler_ang_rates is not None: + self._euler_ang_rate[:] = euler_ang_rates + # TODO: transform euler angles rates to angular velocity in body + # axis + self._vel_ang_body[:] = np.zeros(3) # rad/s + else: + raise ValueError("vel_ang_body or euler_angles must be given") + + @property + def vel_ang_body(self): + return self._vel_ang_body @property def p(self): - return self.vel_ang[0] + return self._vel_ang_body[0] @property def q(self): - return self.vel_ang[1] + return self._vel_ang_body[1] @property def r(self): - return self.vel_ang[2] + return self._vel_ang_body[2] @property - def u_dot(self): - return self.accel_body[0] + def euler_ang_rate(self): + return self._euler_ang_rate @property - def v_dot(self): - return self.accel_body[1] + def theta_dot(self): + return self._euler_ang_rate[0] @property - def w_dot(self): - return self.accel_body[2] + def phi_dot(self): + return self._euler_ang_rate[1] @property - def v_north_dot(self): - return self.accel_NED[0] + def psi_dot(self): + return self._euler_ang_rate[2] - @property - def v_east_dot(self): - return self.accel_NED[1] - @property - def v_down_dot(self): - return self.accel_NED[2] +class Acceleration: + """Acceleration - @property - def p_dot(self): - return self.accel_ang[0] + Attributes + ---------- + accel_body : ndarray, shape(3) + (u_dot [m/s²], v_dot [m/s²], w_dot [m/s²]) + u_dot + v_dot + w_dot + accel_NED : ndarray, shape(3) + (VN_dot [m/s²], VE_dot [m/s²], VD_dot [m/s²]) + VN_dot + VE_dot + VD_dot + """ - @property - def q_dot(self): - return self.accel_ang[1] + def __init__(self): + # Body axis + self._accel_body = np.zeros(3) # m/s² + # Local horizon (NED) + self._accel_NED = np.zeros(3) # m/s² + + def set_acceleration(self, attitude, accel_body=None, accel_NED=None): + if accel_body is not None and accel_NED is not None: + raise ValueError("Only values for accel_body or accel_NED can be " + "given") + elif accel_NED is None: + self._accel_body[:] = accel_body + # TODO: transform body vel to horizon vel using attitude + self._accel_NED = np.zeros(3) # m/s + elif accel_body is None: + self._accel_NED[:] = accel_NED + # TODO: transform horizon vel to body vel using attitude + self._accel_body = np.zeros(3) # m/s + else: + raise ValueError("accel_body or accel_NED must be given") @property - def r_dot(self): - return self.accel_ang[2] - - @property - def time(self): - return self.model.time - - @time.setter - def time(self, value): - self.model.time = value - - def set_initial_state(self, - geodetic_coord=None, geocentric_coord=None, - euler_angles=None, - quaternions=None, - vel_body=None, vel_NED=None, - vel_ang=None, - accel_body=None, accel_NED=None, - accel_ang=None): - """Initialize the system state and the model state. - - Parameters - ---------- - geodetic_coord : ndarray, shape(3), opt - (lat [rad], lon [rad], height [m]). Only if geodetic_coord are - not given. - geocentric_coord : ndarray, shape(3), opt - (x_geo [m], y_geo [m], z_geo [m]). Only if geocentric_coord are - not given. - euler_angles : ndarray, shape(3), opt - (psi [rad], theta [rad], phi [rad]). Only if quaternions are not - given. - quaternions : ndarray, shape(4), opt - (q0, q1, q2, q3). Only if euler_angles are not given. - vel_body : ndarray, shape(3), opt - (u [m/s], v [m/s], w [m/s]). Only if vel_NED is not given. - vel_NED : ndarray, shape(3), opt - (v_north [m/s], v_east [m/s], v_down [m/s]). Only if vel_body is - not given. - vel_ang : ndarray, shape(3), opt - (p [rad/s], q [rad/s], r [rad/s]) - accel_body : ndarray, shape(3), opt - (u_dot [m/s²], v_dot [m/s²], w_dot [m/s²]). Only if accel_NED is - not given. - accel_NED : ndarray, shape(3), opt - (VN_dot [m/s²], VE_dot [m/s²], VD_dot [m/s²]). Only if - accel_body is not given. - accel_ang : ndarray, shape(3), opt - (p_dot [rad/s²], q_dot [rad/s²], r_dot [rad/s²]) - """ - - # Set position - if (geodetic_coord is not None) and (geocentric_coord is not None): - raise ValueError("Provide only geodetic or geocentric, not both " - "at the same time") - - elif geodetic_coord is not None: - self.geodetic_coordinates = geodetic_coord - # TODO: geodetic to geocentric (cartopy?) - # self.geocentric_coordinates = transformation - elif geocentric_coord is not None: - self.geocentric_coordinates = geocentric_coord - # TODO: geocentric to geodetic (cartopy?) - else: - # no values for position - self.geodetic_coordinates = np.zeros(3) - # TODO: geodetic to geocentric (cartopy?) - # self.geocentric_coordinates = transformation - pass - - self.earth_coordinates[2] = self.geodetic_coordinates[2] - - # Set attitude - if (quaternions is not None) and (euler_angles is not None): - raise ValueError("Provide only euler angles or quaternions, " - "not both at the same time") - elif quaternions is not None: - self.quaternions = quaternions - # TODO: quaternions to euler - # self.euler = transformation - elif euler_angles is not None: - self.euler_angles = euler_angles - # TODO: euler angles to quaternions - # self.quaternions = transformation - else: - self.euler_angles = np.zeros(3) - # TODO: euler angles to quaternions - # self.quaternions = transformation - - # Set velocity - if (vel_body is not None) and (vel_NED is not None): - raise ValueError("Provide only vel_body or vel_NED, not both at " - "the same time") - elif vel_body is not None: - self.vel_body = vel_body - self.vel_NED = body2hor(vel_body, self.theta, self.phi, self.psi) - elif vel_NED is not None: - self.vel_NED = vel_NED - self.vel_body = hor2body(vel_NED, self.theta, self.phi, self.psi) - else: - self.vel_body = np.zeros(3) - self.vel_NED = np.zeros(3) + def accel_body(self): + return self._accel_body - # Set angular velocity - if vel_ang is not None: - self.vel_ang = vel_ang - else: - self.vel_ang = np.zeros(3) - - # Set accelerations - if (accel_body is not None) and (accel_NED is not None): - raise ValueError("Provide only accel_body or accel_NED, not both " - "at the same time") - elif accel_body is not None: - self.accel_body = accel_body - self.accel_NED = body2hor(accel_body, self.theta, self.phi, - self.psi) - elif accel_NED is not None: - self.accel_NED = accel_NED - self.accel_body = hor2body(accel_NED, self.theta, self.phi, - self.psi) - else: - self.accel_body = np.zeros(3) - self.accel_NED = np.zeros(3) + @property + def u_dot(self): + return self._accel_body[0] - # Set angular velocity - if vel_ang is not None: - self.vel_ang = vel_ang - else: - self.vel_ang = np.zeros(3) + @property + def v_dot(self): + return self._accel_body[1] - # Set angular accelerations - if accel_ang is not None: - self.accel_ang = accel_ang - else: - self.accel_ang = np.zeros(3) + @property + def w_dot(self): + return self._accel_body[2] - state = self.model.full_system_state_to_dynamic_system_state(self) - self.model.set_initial_state(state) + @property + def accel_NED(self): + return self._accel_NED - # TODO: it's more explicit to pass the state vector here instead of - # depending on its update in the model before. - def set_full_system_state(self, mass, inertia, forces, moments): - """ Updates the full system update based on the current state vector + @property + def v_north_dot(self): + return self._accel_NED[0] - Parameters - ---------- - mass : float - Aircraft mass - inertia : ndarray, shape(3, 3) - Inertia tensor of the aircraft - forces : ndarray, shape(3) - Aircraft forces - moments : ndarray, shape(3) - Aircraft moments - """ - rv = self.model.dynamic_system_state_to_full_system_state( - mass, inertia, forces, moments) + @property + def v_east_dot(self): + return self._accel_NED[1] - for name in self.full_system_state_names: - self.__setattr__(name, rv[name]) + @property + def v_down_dot(self): + return self._accel_NED[2] -class DynamicSystem(object): - """Dynamic system abstract class. +class AngularAcceleration: + """Angular Accelerations Attributes ---------- - state : ndarray - State vector. - time : float - Current time of the simulation. - _ode : scipy.integrate.ode - Ordinary Differential Equation based on function definded in - `dynamic_system_equations` method and jacobian in - `dynamic_system_jacobian` method. + accel_ang : ndarray, shape(3) + (p_dot [rad/s²], q_dot [rad/s²], r_dot [rad/s²]) + p_dot + q_dot + r_dot + euler_ang_acc : ndarray, shape(3) + (theta_2dot [rad/s²], phi_2dot [rad/s²], psi_2dot [rad/s²]) + theta_2dot + phi_2dot + psi_2dot """ - def __init__(self, n_states, use_jacobian=False, integrator=None, - **integrator_params): - """Dynamic system initialization - - Parameters - ---------- - n_states : int - Number of states of the dynamical system. - use_jacobian: bool, opt - Whether to use jacobian of the system's model during the - integration or not. - integrator : str, opt - Integrator to use by scipy.integrate.ode. By default, dopri5 is - used. Check scipy doc in order to list all possibilities. - **integrator_params : dict, opt - Other integrator params passed as kwargs. - """ - - self.time = 0. - # Allocate state vector - self.state = np.empty(n_states) - - # Set the jacobian if it is implemented in the model - if use_jacobian: - self._jacobian = self.dynamic_system_jacobian - self.set_forcing_terms = self._set_fun_and_jac_forcing_terms + def __init__(self): + # ANGULAR VELOCITY: (p_dot, q_dot, r_dot) + self._acc_ang_body = np.zeros(3) # rad/s + # EULER ANGLE RATES (theta_dot2, phi_dot2, psi_dot2) + self._euler_ang_acc = np.zeros(3) # rad/s + + def set_angular_velocity(self, attitude, acc_ang_body=None, + euler_ang_acc=None): + + if acc_ang_body is not None and euler_ang_acc is not None: + raise ValueError("Only values for acc_ang_body or euler_ang_acc" + " can be given") + elif acc_ang_body is not None: + self._acc_ang_body[:] = acc_ang_body + # TODO: transform angular acc in body axis to euler angles + # acc + self._euler_ang_acc = np.zeros(3) # rad/s + elif euler_ang_acc is not None: + self._euler_ang_acc[:] = euler_ang_acc + # TODO: transform euler angles acc to angular acceleration in body + # axis + self._acc_ang_body[:] = np.zeros(3) # rad/s else: - self._jacobian = None - self.set_forcing_terms = self._set_fun_forcing_terms - - # ODE setup - f = (lambda time, state_vector, update_fun: - self.dynamic_system_equations(time, state_vector, update_fun)) - - self._ode = ode(f, self._jacobian) - - if integrator is None: - integrator = 'dopri5' - - # TODO: carefully review integrator parameters such as nsteps - self._ode.set_integrator(integrator, nsteps=10000, **integrator_params) - - def set_initial_state(self, state): - """Sets the initial state for the integration - - Parameters - ---------- - state : ndarray - State vector - """ - self.state = state - self._ode.set_initial_value(self.state) - - def _set_fun_forcing_terms(self, update_f): - self._ode.set_f_params(update_f) - - def _set_jac_forcing_terms(self, mass, inertia, forces, moments): - self._ode.set_jac_params(mass, inertia, forces, moments) - - def _set_fun_and_jac_forcing_terms(self, mass, inertia, forces, moments): - self._set_fun_and_jac_forcing_terms(mass, inertia, forces, moments) - self._set_jac_forcing_terms(mass, inertia, forces, moments) - - def set_solout(self, fun): - """Set callback for scipy.integrate.ode solver - - Parameters - ---------- - fun : callable - Function to be called at each time step during the integration. - It must be in charge of updating the whole system, environment, - controls, forces, moments, mass, inertia... - """ - self._ode.set_solout(fun) - - def propagate(self, dt, mass, inertia, forces, moments): - """ Perform the integration from the current time step during time dt. - - Parameters - ---------- - dt : float - Time for the integration. - mass : float - Current aircraft mass (initial time step). - inertia : ndarray, shape (3, 3) - Current aircraft inertia (initial time step). - forces : ndarray, shape(3) - Current aircraft forces (initial time step). - moments : ndarray, shape(3) - Current aircraft moments (initial time step). - - Returns - ------- - state : ndarray - Final state if integration is successful. - - Raises - ------ - RunTimeError if integration is not successful. - """ - - # Checks that a callback for updating environment and aircraft has - # been defined previous to integration - # if not self._ode._integrator.solout: - # raise ValueError("A callback to the model must be given in order " - # "to update the system, environment and aircraft " - # "at each time step. Also to save the results." - # ) - - # Sets the final time of the integration - t = self._ode.t + dt - - # This only affects the first time step: this update will be done by - # the callback function at every integration step after updating - # mass, inertia, forces and moments - # self.set_forcing_terms(mass, inertia, forces, moments) - - # Perform the integration - self.state = self._ode.integrate(t) - - if self._ode.successful(): - return self.state - else: - raise RuntimeError("Error during integration") + raise ValueError("acc_ang_body or euler_angles must be given") + + @property + def acc_ang_body(self): + return self._acc_ang_body + + @property + def p_dot(self): + return self._acc_ang_body[0] - @abstractmethod - def dynamic_system_state_to_full_system_state(self, mass, inertia, - forces, moments): - raise NotImplementedError + @property + def q_dot(self): + return self._acc_ang_body[1] + + @property + def r_dot(self): + return self._acc_ang_body[2] - @abstractmethod - def full_system_state_to_dynamic_system_state(self, full_system): - raise NotImplementedError + @property + def euler_ang_acc(self): + return self._euler_ang_acc - @abstractmethod - def trim_system_to_dynamic_system_state(self, full_system): - raise NotImplementedError + @property + def theta_2dot(self): + return self._euler_ang_acc[0] - @abstractstaticmethod - def dynamic_system_equations(time, state_vector, mass, inertia, forces, - moments): - raise NotImplementedError + @property + def phi_2dot(self): + return self._euler_ang_acc[1] - @abstractstaticmethod - def dynamic_system_jacobian(state_vector, mass, inertia, forces, moments): - raise NotImplementedError + @property + def psi_2dot(self): + return self._euler_ang_acc[2] From 9526ce2676172cd0c7f3a98e4d91383ddd9f31f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sun, 5 Nov 2017 00:12:07 +0100 Subject: [PATCH 043/104] renamed module --- src/pyfme/models/{systems.py => state_elements.py} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/pyfme/models/{systems.py => state_elements.py} (100%) diff --git a/src/pyfme/models/systems.py b/src/pyfme/models/state_elements.py similarity index 100% rename from src/pyfme/models/systems.py rename to src/pyfme/models/state_elements.py From f88ed86a93a1f94e28f956fa77e5c06c57522031 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sun, 5 Nov 2017 11:17:05 +0100 Subject: [PATCH 044/104] created position subclasses --- src/pyfme/models/position.py | 161 +++++++++++++++++++++++++++++ src/pyfme/models/state_elements.py | 110 +------------------- 2 files changed, 162 insertions(+), 109 deletions(-) create mode 100644 src/pyfme/models/position.py diff --git a/src/pyfme/models/position.py b/src/pyfme/models/position.py new file mode 100644 index 0000000..d84020b --- /dev/null +++ b/src/pyfme/models/position.py @@ -0,0 +1,161 @@ +""" +Python Flight Mechanics Engine (PyFME). +Copyright (c) AeroPython Development Team. +Distributed under the terms of the MIT License. + +Position +-------- +Aircraft position class prepared to represent the aircraft position in Earth +axis, geodetic coordinates and geocentric coordinates independently of the +dynamic system used +""" +from abc import abstractmethod + +import numpy as np + +from pyfme.models.constants import EARTH_MEAN_RADIUS + + +class Position: + """Position + + Attributes + ---------- + + geodetic_coordinates : ndarray, shape(3) + (lat [rad], lon [rad], height [m]) + lat + lon + height + geocentric_coordinates : ndarray, shape(3) + (x_geo [m], y_geo [m], z_geo [m]) + x_geo + y_geo + z_geo + earth_coordinates : ndarray, shape(3) + (x_earth [m], y_earth [m], z_earth [m]) + x_earth + y_earth + z_earth + """ + + def __init__(self, geodetic, geocentric, earth): + # Geodetic coordinates: (geodetic lat, lon, height above ellipsoid) + self._geodetic_coordinates = np.asarray(geodetic) # rad + # Geocentric coordinates (rotating with Earth): (x_geo, y_geo, z_geo) + self._geocentric_coordinates = np.asarray(geocentric) # m + # Earth coordinates (x_earth, y_earth, z_earth) + self._earth_coordinates = np.asarray(earth) # m + + @abstractmethod + def set_position(self, coords): + raise NotImplementedError + + @property + def geocentric_coordinates(self): + return self._geocentric_coordinates + + @property + def x_geo(self): + return self._geocentric_coordinates[0] + + @property + def y_geo(self): + return self._geocentric_coordinates[1] + + @property + def z_geo(self): + return self._geocentric_coordinates[2] + + @property + def geodetic_coordinates(self): + return self._geodetic_coordinates + + @property + def lat(self): + return self._geodetic_coordinates[0] + + @property + def lon(self): + return self._geodetic_coordinates[1] + + @property + def height(self): + return self._geodetic_coordinates[2] + + @property + def earth_coordinates(self): + return self._earth_coordinates + + @property + def x_earth(self): + return self._earth_coordinates[0] + + @property + def y_earth(self): + return self._earth_coordinates[1] + + @property + def z_earth(self): + return self._earth_coordinates[2] + + +class EarthPosition(Position): + + def __init__(self, x, y, height, lat=0, lon=0): + # TODO: docstring + earth = np.array([x, y, -height]) + # TODO: Assuming round earth use changes in x & y to calculate + # new lat and lon. z_earth is -height: + geodetic = np.array([lat, lon, height]) # m + # TODO: make transformation from geodetic to geocentric: + geocentric = np.zeros(3) # m + super().__init__(geodetic, geocentric, earth) + + def set_position(self, value): + # Assuming round earth use changes in x & y to calculate + # new lat and lon. z_earth is -height: + delta_x, delta_y, _ = value - self.earth_coordinates + delta_lat = delta_x / EARTH_MEAN_RADIUS + delta_lon = delta_y / EARTH_MEAN_RADIUS + self._geodetic_coordinates = \ + np.array([self.lat + delta_lat, self.lon + delta_lon, value[2]]) + + # TODO: make transformation from geodetic to geocentric: + self._geocentric_coordinates = np.zeros(3) # m + + # Update Earth coordinates with value + self._earth_coordinates[:] = value + + +class GeodeticPosition(Position): + + def __init__(self, lat, lon, height, x_earth=0, y_earth=0): + # TODO: docstring + earth = np.array([x_earth, y_earth, -height]) + # TODO: Assuming round earth use changes in x & y to calculate + # new lat and lon. z_earth is -height: + geodetic = np.array([lat, lon, height]) # m + # TODO: make transformation from geodetic to geocentric: + geocentric = np.zeros(3) # m + super().__init__(geodetic, geocentric, earth) + + def set_position(self, value): + # Assuming round earth use changes in x & y to calculate + # new x, y from lat and lon. z_earth is -height + delta_lat, delta_lon, _ = self.geodetic_coordinates - value + dx_e = EARTH_MEAN_RADIUS * delta_lat + dy_e = EARTH_MEAN_RADIUS * delta_lon + self._earth_coordinates[:] = \ + np.array([self.x_earth + dx_e, self.y_earth + dy_e, -value[2]]) + + # TODO: make transformation from geodetic to geocentric: + self._geocentric_coordinates = np.zeros(3) # m + + # Update geodetic coordinates with value + self._geodetic_coordinates[:] = value + + +class GeocentricPosition(Position): + # TODO: + raise NotImplementedError \ No newline at end of file diff --git a/src/pyfme/models/state_elements.py b/src/pyfme/models/state_elements.py index fc5fae0..0b23ebf 100644 --- a/src/pyfme/models/state_elements.py +++ b/src/pyfme/models/state_elements.py @@ -19,116 +19,8 @@ * angular acceleration """ -import numpy as np - -from pyfme.utils.coordinates import body2hor, hor2body - - -class Position: - """Position - - Attributes - ---------- - - geodetic_coordinates : ndarray, shape(3) - (lat [rad], lon [rad], height [m]) - lat - lon - height - geocentric_coordinates : ndarray, shape(3) - (x_geo [m], y_geo [m], z_geo [m]) - x_geo - y_geo - z_geo - earth_coordinates : ndarray, shape(3) - (x_earth [m], y_earth [m], z_earth [m]) - x_earth - y_earth - z_earth - """ - - def __init__(self): - # Geodetic coordinates: (geodetic lat, lon, height above ellipsoid) - self._geodetic_coordinates = np.zeros(3) # rad - # Geocentric coordinates (rotating with Earth): (x_geo, y_geo, z_geo) - self._geocentric_coordinates = np.zeros(3) # m - # Earth coordinates (x_earth, y_earth, z_earth) - self._earth_coordinates = np.zeros(3) # m - - @property - def geocentric_coordinates(self): - return self._geocentric_coordinates - - @geocentric_coordinates.setter - def geocentric_coordinates(self, value): - self._geocentric_coordinates[:] = value - # TODO: make transformation from geocentric to geodetic: - self._geocentric_coordinates = np.zeros(3) # m - # TODO: Assuming round earth use changes in lat & lon to calculate - # new x_earth and y_earth. z_earth is -height: - self._earth_coordinates = np.zeros(3) # m - - @property - def x_geo(self): - return self._geocentric_coordinates[0] - - @property - def y_geo(self): - return self._geocentric_coordinates[1] - - @property - def z_geo(self): - return self._geocentric_coordinates[2] - - @property - def geodetic_coordinates(self): - return self._geodetic_coordinates - - @geodetic_coordinates.setter - def geodetic_coordinates(self, value): - self._geodetic_coordinates[:] = value # rad - # TODO: make transformation from geodetic to geocentric: - self._geocentric_coordinates = np.zeros(3) # m - # TODO: Assuming round earth use changes in lat & lon to calculate - # new x_earth and y_earth. z_earth is -height: - self._earth_coordinates = np.zeros(3) # m - - @property - def lat(self): - return self._geodetic_coordinates[0] - - @property - def lon(self): - return self._geodetic_coordinates[1] - - @property - def height(self): - return self._geodetic_coordinates[2] - @property - def earth_coordinates(self): - return self._earth_coordinates - - @earth_coordinates.setter - def earth_coordinates(self, value): - self._earth_coordinates[:] = value - # TODO: Assuming round earth use changes in x & y to calculate - # new lat and lon. z_earth is -height: - self._earth_coordinates = np.zeros(3) # m - # TODO: make transformation from geodetic to geocentric: - self._geocentric_coordinates = np.zeros(3) # m - - @property - def x_earth(self): - return self._earth_coordinates[0] - - @property - def y_earth(self): - return self._earth_coordinates[1] - - @property - def z_earth(self): - return self._earth_coordinates[2] +import numpy as np class Attitude: From d8bbe0ce62685b94fea2e63d7362476ace613356 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sun, 5 Nov 2017 11:29:48 +0100 Subject: [PATCH 045/104] Added attitude subclasses --- src/pyfme/models/state_elements.py | 42 +++++++++++++++++++++--------- 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/src/pyfme/models/state_elements.py b/src/pyfme/models/state_elements.py index 0b23ebf..0160c31 100644 --- a/src/pyfme/models/state_elements.py +++ b/src/pyfme/models/state_elements.py @@ -19,6 +19,7 @@ * angular acceleration """ +from abc import abstractmethod import numpy as np @@ -48,16 +49,14 @@ def __init__(self): # Quaternions (q0, q1, q2, q3) self._quaternions = np.zeros(4) + @abstractmethod + def set_attitude(self, value): + raise NotImplementedError + @property def euler_angles(self): return self._euler_angles - @euler_angles.setter - def euler_angles(self, value): - self._euler_angles[:] = value - # TODO: transform quaternions to Euler angles - self._quaternions = np.zeros(4) - @property def psi(self): return self._euler_angles[2] @@ -74,12 +73,6 @@ def phi(self): def quaternions(self): return self._quaternions - @quaternions.setter - def quaternions(self, value): - self._quaternions = value - # TODO: transform quaternion to Euler - self._euler_angles = np.zeros(3) # rad - @property def q0(self): return self._quaternions[0] @@ -97,6 +90,31 @@ def q3(self): return self._quaternions[3] +class EulerAttitude(Attitude): + + def __init__(self, theta, phi, psi): + # TODO: docstring + super().__init__() + self.set_attitude(np.array([theta, phi, psi])) + + def set_attitude(self, value): + self._euler_angles[:] = value + # TODO: transform quaternions to Euler angles + self._quaternions = np.zeros(4) + + +class QuaternionAttitude(Attitude): + def __init__(self, q0, q1, q2, q3): + # TODO: docstring + super().__init__() + self.set_attitude(np.array([q0, q1, q2, q3])) + + def set_attitude(self, value): + self._quaternions[:] = value + # TODO: transform quaternions to Euler angles + self._euler_angles = np.zeros(3) + + class Velocity: """Velocity From f414c726df9e6b38bfbfbe266a74814acd74c0d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sun, 5 Nov 2017 11:33:26 +0100 Subject: [PATCH 046/104] moved attitude to its own module --- src/pyfme/models/attitude.py | 104 +++++++++++++++++++++++++++++ src/pyfme/models/state_elements.py | 92 ------------------------- 2 files changed, 104 insertions(+), 92 deletions(-) create mode 100644 src/pyfme/models/attitude.py diff --git a/src/pyfme/models/attitude.py b/src/pyfme/models/attitude.py new file mode 100644 index 0000000..01e927d --- /dev/null +++ b/src/pyfme/models/attitude.py @@ -0,0 +1,104 @@ +""" +Python Flight Mechanics Engine (PyFME). +Copyright (c) AeroPython Development Team. +Distributed under the terms of the MIT License. + +Attitude +-------- +Aircraft attitude representations prepared to store the aircraft orientation in +Euler angles and quaternions independently of the dynamic system used. +""" +from abc import abstractmethod + +import numpy as np + + +class Attitude: + """Attitude + + Attributes + ---------- + + euler_angles : ndarray, shape(3) + (theta [rad], phi [rad], psi [rad]) + theta + phi + psi + quaternions : ndarray, shape(4) + (q0, q1, q2, q3) + q0 + q1 + q2 + q3 + """ + + def __init__(self): + # Euler angles (psi, theta, phi) + self._euler_angles = np.zeros(3) # rad + # Quaternions (q0, q1, q2, q3) + self._quaternions = np.zeros(4) + + @abstractmethod + def set_attitude(self, value): + raise NotImplementedError + + @property + def euler_angles(self): + return self._euler_angles + + @property + def psi(self): + return self._euler_angles[2] + + @property + def theta(self): + return self._euler_angles[0] + + @property + def phi(self): + return self._euler_angles[1] + + @property + def quaternions(self): + return self._quaternions + + @property + def q0(self): + return self._quaternions[0] + + @property + def q1(self): + return self._quaternions[1] + + @property + def q2(self): + return self._quaternions[2] + + @property + def q3(self): + return self._quaternions[3] + + +class EulerAttitude(Attitude): + + def __init__(self, theta, phi, psi): + # TODO: docstring + super().__init__() + self.set_attitude(np.array([theta, phi, psi])) + + def set_attitude(self, value): + self._euler_angles[:] = value + # TODO: transform quaternions to Euler angles + self._quaternions = np.zeros(4) + + +class QuaternionAttitude(Attitude): + def __init__(self, q0, q1, q2, q3): + # TODO: docstring + super().__init__() + self.set_attitude(np.array([q0, q1, q2, q3])) + + def set_attitude(self, value): + self._quaternions[:] = value + # TODO: transform quaternions to Euler angles + self._euler_angles = np.zeros(3) \ No newline at end of file diff --git a/src/pyfme/models/state_elements.py b/src/pyfme/models/state_elements.py index 0160c31..4c80c78 100644 --- a/src/pyfme/models/state_elements.py +++ b/src/pyfme/models/state_elements.py @@ -19,102 +19,10 @@ * angular acceleration """ -from abc import abstractmethod import numpy as np -class Attitude: - """Attitude - - Attributes - ---------- - - euler_angles : ndarray, shape(3) - (theta [rad], phi [rad], psi [rad]) - theta - phi - psi - quaternions : ndarray, shape(4) - (q0, q1, q2, q3) - q0 - q1 - q2 - q3 - """ - - def __init__(self): - # Euler angles (psi, theta, phi) - self._euler_angles = np.zeros(3) # rad - # Quaternions (q0, q1, q2, q3) - self._quaternions = np.zeros(4) - - @abstractmethod - def set_attitude(self, value): - raise NotImplementedError - - @property - def euler_angles(self): - return self._euler_angles - - @property - def psi(self): - return self._euler_angles[2] - - @property - def theta(self): - return self._euler_angles[0] - - @property - def phi(self): - return self._euler_angles[1] - - @property - def quaternions(self): - return self._quaternions - - @property - def q0(self): - return self._quaternions[0] - - @property - def q1(self): - return self._quaternions[1] - - @property - def q2(self): - return self._quaternions[2] - - @property - def q3(self): - return self._quaternions[3] - - -class EulerAttitude(Attitude): - - def __init__(self, theta, phi, psi): - # TODO: docstring - super().__init__() - self.set_attitude(np.array([theta, phi, psi])) - - def set_attitude(self, value): - self._euler_angles[:] = value - # TODO: transform quaternions to Euler angles - self._quaternions = np.zeros(4) - - -class QuaternionAttitude(Attitude): - def __init__(self, q0, q1, q2, q3): - # TODO: docstring - super().__init__() - self.set_attitude(np.array([q0, q1, q2, q3])) - - def set_attitude(self, value): - self._quaternions[:] = value - # TODO: transform quaternions to Euler angles - self._euler_angles = np.zeros(3) - - class Velocity: """Velocity From bbdf48ba5b5aa3c28161346d1ecd2261ee4abfaf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sun, 5 Nov 2017 11:54:02 +0100 Subject: [PATCH 047/104] divided velocity into subclasses --- src/pyfme/models/state_elements.py | 43 ++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 14 deletions(-) diff --git a/src/pyfme/models/state_elements.py b/src/pyfme/models/state_elements.py index 4c80c78..d602054 100644 --- a/src/pyfme/models/state_elements.py +++ b/src/pyfme/models/state_elements.py @@ -19,6 +19,7 @@ * angular acceleration """ +from abc import abstractmethod import numpy as np @@ -47,20 +48,9 @@ def __init__(self): # Local horizon (NED) self._vel_NED = np.zeros(3) # m/s - def set_velocity(self, attitude, vel_body=None, vel_NED=None): - if vel_body is not None and vel_NED is not None: - raise ValueError("Only values for vel_NED or vel_body can be " - "given") - elif vel_NED is None: - self._vel_body[:] = vel_body - # TODO: transform body vel to horizon vel using attitude - self._vel_NED = np.zeros(3) # m/s - elif vel_body is None: - self._vel_NED[:] = vel_NED - # TODO: transform horizon vel to body vel using attitude - self._vel_body = np.zeros(3) # m/s - else: - raise ValueError("vel_NED or vel_body must be given") + @abstractmethod + def set_velocity(self, coords, attitude): + raise NotImplementedError @property def vel_body(self): @@ -95,6 +85,31 @@ def v_down(self): return self._vel_NED[2] +class BodyVelocity(Velocity): + + def __init__(self, u, v, w, attitude): + # TODO: docstring + super().__init__() + self.set_velocity(np.array([u, v, w]), attitude) + + def set_velocity(self, value, attitude): + self._vel_body[:] = value + # TODO: transform body vel to horizon vel using attitude + self._vel_NED = np.zeros(3) # m/s + + +class NEDVelocity(Velocity): + def __init__(self, vn, ve, vd, attitude): + # TODO: docstring + super().__init__() + self.set_velocity(np.array([vn, ve, vd]), attitude) + + def set_velocity(self, value, attitude): + self._vel_NED[:] = value + # TODO: transform horizon vel to body vel using attitude + self._vel_body = np.zeros(3) # m/s + + class AngularVelocity: """Angular velocity From 959ae68ef1bb2aa1ab2c1edba81391837db37cf9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sun, 5 Nov 2017 12:02:39 +0100 Subject: [PATCH 048/104] moved velocity to an independent module --- src/pyfme/models/state_elements.py | 87 ------------------------ src/pyfme/models/velocity.py | 103 +++++++++++++++++++++++++++++ 2 files changed, 103 insertions(+), 87 deletions(-) create mode 100644 src/pyfme/models/velocity.py diff --git a/src/pyfme/models/state_elements.py b/src/pyfme/models/state_elements.py index d602054..93b5beb 100644 --- a/src/pyfme/models/state_elements.py +++ b/src/pyfme/models/state_elements.py @@ -19,97 +19,10 @@ * angular acceleration """ -from abc import abstractmethod import numpy as np -class Velocity: - """Velocity - - Attributes - ---------- - - vel_body : ndarray, shape(3) - (u [m/s], v [m/s], w [m/s]) - u - v - w - vel_NED : ndarray, shape(3) - (v_north [m/s], v_east [m/s], v_down [m/s]) - v_north - v_east - v_down - """ - - def __init__(self): - # Body axis - self._vel_body = np.zeros(3) # m/s - # Local horizon (NED) - self._vel_NED = np.zeros(3) # m/s - - @abstractmethod - def set_velocity(self, coords, attitude): - raise NotImplementedError - - @property - def vel_body(self): - return self._vel_body - - @property - def u(self): - return self.vel_body[0] - - @property - def v(self): - return self.vel_body[1] - - @property - def w(self): - return self.vel_body[2] - - @property - def vel_NED(self): - return self._vel_NED - - @property - def v_north(self): - return self._vel_NED[0] - - @property - def v_east(self): - return self._vel_NED[1] - - @property - def v_down(self): - return self._vel_NED[2] - - -class BodyVelocity(Velocity): - - def __init__(self, u, v, w, attitude): - # TODO: docstring - super().__init__() - self.set_velocity(np.array([u, v, w]), attitude) - - def set_velocity(self, value, attitude): - self._vel_body[:] = value - # TODO: transform body vel to horizon vel using attitude - self._vel_NED = np.zeros(3) # m/s - - -class NEDVelocity(Velocity): - def __init__(self, vn, ve, vd, attitude): - # TODO: docstring - super().__init__() - self.set_velocity(np.array([vn, ve, vd]), attitude) - - def set_velocity(self, value, attitude): - self._vel_NED[:] = value - # TODO: transform horizon vel to body vel using attitude - self._vel_body = np.zeros(3) # m/s - - class AngularVelocity: """Angular velocity diff --git a/src/pyfme/models/velocity.py b/src/pyfme/models/velocity.py new file mode 100644 index 0000000..430e877 --- /dev/null +++ b/src/pyfme/models/velocity.py @@ -0,0 +1,103 @@ +""" +Python Flight Mechanics Engine (PyFME). +Copyright (c) AeroPython Development Team. +Distributed under the terms of the MIT License. + +Velocity +-------- + +The aircraft state has +""" +from abc import abstractmethod + +import numpy as np + + +# TODO: think about generic changes from body to horizon that could be used for +# velocity, accelerations... +# If also changes from attitude of elements in the body (such as sensors) to +# body and horizon coordinates are implemented it would be useful! +class Velocity: + """Velocity + + Attributes + ---------- + + vel_body : ndarray, shape(3) + (u [m/s], v [m/s], w [m/s]) + u + v + w + vel_NED : ndarray, shape(3) + (v_north [m/s], v_east [m/s], v_down [m/s]) + v_north + v_east + v_down + """ + + def __init__(self): + # Body axis + self._vel_body = np.zeros(3) # m/s + # Local horizon (NED) + self._vel_NED = np.zeros(3) # m/s + + @abstractmethod + def set_velocity(self, coords, attitude): + raise NotImplementedError + + @property + def vel_body(self): + return self._vel_body + + @property + def u(self): + return self.vel_body[0] + + @property + def v(self): + return self.vel_body[1] + + @property + def w(self): + return self.vel_body[2] + + @property + def vel_NED(self): + return self._vel_NED + + @property + def v_north(self): + return self._vel_NED[0] + + @property + def v_east(self): + return self._vel_NED[1] + + @property + def v_down(self): + return self._vel_NED[2] + + +class BodyVelocity(Velocity): + + def __init__(self, u, v, w, attitude): + # TODO: docstring + super().__init__() + self.set_velocity(np.array([u, v, w]), attitude) + + def set_velocity(self, value, attitude): + self._vel_body[:] = value + # TODO: transform body vel to horizon vel using attitude + self._vel_NED = np.zeros(3) # m/s + + +class NEDVelocity(Velocity): + def __init__(self, vn, ve, vd, attitude): + # TODO: docstring + super().__init__() + self.set_velocity(np.array([vn, ve, vd]), attitude) + + def set_velocity(self, value, attitude): + self._vel_NED[:] = value + # TODO: transform horizon vel to body vel using attitude + self._vel_body = np.zeros(3) # m/s \ No newline at end of file From 63c673c3d629e202497eb6807674f67ab4a860ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sun, 5 Nov 2017 12:44:29 +0100 Subject: [PATCH 049/104] subclasses for angular velocity --- src/pyfme/models/state_elements.py | 51 +++++++++++++++++++----------- 1 file changed, 33 insertions(+), 18 deletions(-) diff --git a/src/pyfme/models/state_elements.py b/src/pyfme/models/state_elements.py index 93b5beb..c73ad8c 100644 --- a/src/pyfme/models/state_elements.py +++ b/src/pyfme/models/state_elements.py @@ -19,6 +19,7 @@ * angular acceleration """ +from abc import abstractmethod import numpy as np @@ -44,24 +45,9 @@ def __init__(self): # EULER ANGLE RATES (theta_dot, phi_dot, psi_dot) self._euler_ang_rate = np.zeros(3) # rad/s - def set_angular_velocity(self, attitude, vel_ang_body=None, - euler_ang_rates=None): - - if vel_ang_body is not None and euler_ang_rates is not None: - raise ValueError("Only values for vel_ang_body or euler_ang_rates" - " can be given") - elif vel_ang_body is not None: - self._vel_ang_body[:] = vel_ang_body - # TODO: transform angular velocity in body axis to euler angles - # rates - self._euler_ang_rate = np.zeros(3) # rad/s - elif euler_ang_rates is not None: - self._euler_ang_rate[:] = euler_ang_rates - # TODO: transform euler angles rates to angular velocity in body - # axis - self._vel_ang_body[:] = np.zeros(3) # rad/s - else: - raise ValueError("vel_ang_body or euler_angles must be given") + @abstractmethod + def set_angular_velocity(self, coords, attitude): + raise NotImplementedError @property def vel_ang_body(self): @@ -96,6 +82,35 @@ def psi_dot(self): return self._euler_ang_rate[2] +class BodyAngularVelocity(AngularVelocity): + + def __init__(self, p, q, r, attitude): + # TODO: docstring + super().__init__() + self.set_angular_velocity(np.array([p, q, r]), attitude) + + def set_angular_velocity(self, coords, attitude): + self._vel_ang_body[:] = coords + # TODO: transform angular velocity in body axis to euler angles + # rates + self._euler_ang_rate = np.zeros(3) # rad/s + + +class EulerAngularRates(AngularVelocity): + + def __init__(self, theta_dot, phi_dot, psi_dot, attitude): + # TODO: docstring + super().__init__() + self.set_angular_velocity(np.array([theta_dot, phi_dot, psi_dot]), + attitude) + + def set_angular_velocity(self, coords, attitude): + self._euler_ang_rate[:] = coords + # TODO: transform euler angles rates to angular velocity in body + # axis + self._vel_ang_body[:] = np.zeros(3) # rad/s + + class Acceleration: """Acceleration From fc83393382f4ee7ec75ea62f125a5cecaf34cb1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sun, 5 Nov 2017 12:45:27 +0100 Subject: [PATCH 050/104] subclasses for angular acceleration --- src/pyfme/models/state_elements.py | 72 +++++++++++++++++++++++------- 1 file changed, 56 insertions(+), 16 deletions(-) diff --git a/src/pyfme/models/state_elements.py b/src/pyfme/models/state_elements.py index c73ad8c..c78cbb9 100644 --- a/src/pyfme/models/state_elements.py +++ b/src/pyfme/models/state_elements.py @@ -134,20 +134,9 @@ def __init__(self): # Local horizon (NED) self._accel_NED = np.zeros(3) # m/s² - def set_acceleration(self, attitude, accel_body=None, accel_NED=None): - if accel_body is not None and accel_NED is not None: - raise ValueError("Only values for accel_body or accel_NED can be " - "given") - elif accel_NED is None: - self._accel_body[:] = accel_body - # TODO: transform body vel to horizon vel using attitude - self._accel_NED = np.zeros(3) # m/s - elif accel_body is None: - self._accel_NED[:] = accel_NED - # TODO: transform horizon vel to body vel using attitude - self._accel_body = np.zeros(3) # m/s - else: - raise ValueError("accel_body or accel_NED must be given") + @abstractmethod + def set_acceleration(self, coords, attitude): + raise NotImplementedError @property def accel_body(self): @@ -182,6 +171,30 @@ def v_down_dot(self): return self._accel_NED[2] +class BodyAcceleration(Acceleration): + + def __init__(self, u_dot, v_dot, w_dot, attitude): + super().__init__() + self.set_acceleration(np.array([u_dot, v_dot, w_dot]), attitude) + + def set_acceleration(self, coords, attitude): + self._accel_body[:] = coords + # TODO: transform body vel to horizon vel using attitude + self._accel_NED = np.zeros(3) # m/s + + +class NEDAcceleration(Acceleration): + + def __init__(self, vn_dot, ve_dot, vd_dot, attitude): + super().__init__() + self.set_acceleration(np.array([vn_dot, ve_dot, vd_dot]), attitude) + + def set_acceleration(self, coords, attitude): + self._accel_NED[:] = coords + # TODO: transform horizon vel to body vel using attitude + self._accel_body = np.zeros(3) # m/s + + class AngularAcceleration: """Angular Accelerations @@ -205,8 +218,8 @@ def __init__(self): # EULER ANGLE RATES (theta_dot2, phi_dot2, psi_dot2) self._euler_ang_acc = np.zeros(3) # rad/s - def set_angular_velocity(self, attitude, acc_ang_body=None, - euler_ang_acc=None): + @abstractmethod + def set_angular_accel(self, coords, attitude): if acc_ang_body is not None and euler_ang_acc is not None: raise ValueError("Only values for acc_ang_body or euler_ang_acc" @@ -255,3 +268,30 @@ def phi_2dot(self): @property def psi_2dot(self): return self._euler_ang_acc[2] + + +class BodyAngularAcceleration(AngularAcceleration): + + def __init__(self, p_dot, q_dot, r_dot, attitude): + super().__init__() + self.set_angular_accel(np.array([p_dot, q_dot, r_dot]), attitude) + + def set_angular_accel(self, coords, attitude): + self._acc_ang_body[:] = coords + # TODO: transform angular acc in body axis to euler angles + # acc + self._euler_ang_acc = np.zeros(3) # rad/s + + +class EulerAngularAcceleration(AngularAcceleration): + + def __init__(self, theta_dot, phi_dot, psi_dot, attitude): + super().__init__() + self.set_angular_accel(np.array([theta_dot, phi_dot, psi_dot]), + attitude) + + def set_angular_accel(self, coords, attitude): + self._euler_ang_acc[:] = coords + # TODO: transform euler angles acc to angular acceleration in body + # axis + self._acc_ang_body[:] = np.zeros(3) # rad/s \ No newline at end of file From 9f828c07a030fe30440046bed8e30ae7bffcd007 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sun, 5 Nov 2017 12:51:25 +0100 Subject: [PATCH 051/104] split in modules acceleration, angular acceleration, angular velocity --- src/pyfme/models/acceleration.py | 96 ++++++++ src/pyfme/models/angular_acceleration.py | 114 +++++++++ src/pyfme/models/angular_velocity.py | 99 ++++++++ src/pyfme/models/state_elements.py | 297 ----------------------- 4 files changed, 309 insertions(+), 297 deletions(-) create mode 100644 src/pyfme/models/acceleration.py create mode 100644 src/pyfme/models/angular_acceleration.py create mode 100644 src/pyfme/models/angular_velocity.py delete mode 100644 src/pyfme/models/state_elements.py diff --git a/src/pyfme/models/acceleration.py b/src/pyfme/models/acceleration.py new file mode 100644 index 0000000..01fdb90 --- /dev/null +++ b/src/pyfme/models/acceleration.py @@ -0,0 +1,96 @@ +""" +Python Flight Mechanics Engine (PyFME). +Copyright (c) AeroPython Development Team. +Distributed under the terms of the MIT License. + +Acceleration +------------ + +""" +from abc import abstractmethod + +import numpy as np + + +class Acceleration: + """Acceleration + + Attributes + ---------- + accel_body : ndarray, shape(3) + (u_dot [m/s²], v_dot [m/s²], w_dot [m/s²]) + u_dot + v_dot + w_dot + accel_NED : ndarray, shape(3) + (VN_dot [m/s²], VE_dot [m/s²], VD_dot [m/s²]) + VN_dot + VE_dot + VD_dot + """ + + def __init__(self): + # Body axis + self._accel_body = np.zeros(3) # m/s² + # Local horizon (NED) + self._accel_NED = np.zeros(3) # m/s² + + @abstractmethod + def set_acceleration(self, coords, attitude): + raise NotImplementedError + + @property + def accel_body(self): + return self._accel_body + + @property + def u_dot(self): + return self._accel_body[0] + + @property + def v_dot(self): + return self._accel_body[1] + + @property + def w_dot(self): + return self._accel_body[2] + + @property + def accel_NED(self): + return self._accel_NED + + @property + def v_north_dot(self): + return self._accel_NED[0] + + @property + def v_east_dot(self): + return self._accel_NED[1] + + @property + def v_down_dot(self): + return self._accel_NED[2] + + +class BodyAcceleration(Acceleration): + + def __init__(self, u_dot, v_dot, w_dot, attitude): + super().__init__() + self.set_acceleration(np.array([u_dot, v_dot, w_dot]), attitude) + + def set_acceleration(self, coords, attitude): + self._accel_body[:] = coords + # TODO: transform body vel to horizon vel using attitude + self._accel_NED = np.zeros(3) # m/s + + +class NEDAcceleration(Acceleration): + + def __init__(self, vn_dot, ve_dot, vd_dot, attitude): + super().__init__() + self.set_acceleration(np.array([vn_dot, ve_dot, vd_dot]), attitude) + + def set_acceleration(self, coords, attitude): + self._accel_NED[:] = coords + # TODO: transform horizon vel to body vel using attitude + self._accel_body = np.zeros(3) # m/s \ No newline at end of file diff --git a/src/pyfme/models/angular_acceleration.py b/src/pyfme/models/angular_acceleration.py new file mode 100644 index 0000000..d780c65 --- /dev/null +++ b/src/pyfme/models/angular_acceleration.py @@ -0,0 +1,114 @@ +""" +Python Flight Mechanics Engine (PyFME). +Copyright (c) AeroPython Development Team. +Distributed under the terms of the MIT License. + +Angular Acceleration +-------------------- + +""" +from abc import abstractmethod + +import numpy as np + + +class AngularAcceleration: + """Angular Accelerations + + Attributes + ---------- + accel_ang : ndarray, shape(3) + (p_dot [rad/s²], q_dot [rad/s²], r_dot [rad/s²]) + p_dot + q_dot + r_dot + euler_ang_acc : ndarray, shape(3) + (theta_2dot [rad/s²], phi_2dot [rad/s²], psi_2dot [rad/s²]) + theta_2dot + phi_2dot + psi_2dot + """ + + def __init__(self): + # ANGULAR VELOCITY: (p_dot, q_dot, r_dot) + self._acc_ang_body = np.zeros(3) # rad/s + # EULER ANGLE RATES (theta_dot2, phi_dot2, psi_dot2) + self._euler_ang_acc = np.zeros(3) # rad/s + + @abstractmethod + def set_angular_accel(self, coords, attitude): + + if acc_ang_body is not None and euler_ang_acc is not None: + raise ValueError("Only values for acc_ang_body or euler_ang_acc" + " can be given") + elif acc_ang_body is not None: + self._acc_ang_body[:] = acc_ang_body + # TODO: transform angular acc in body axis to euler angles + # acc + self._euler_ang_acc = np.zeros(3) # rad/s + elif euler_ang_acc is not None: + self._euler_ang_acc[:] = euler_ang_acc + # TODO: transform euler angles acc to angular acceleration in body + # axis + self._acc_ang_body[:] = np.zeros(3) # rad/s + else: + raise ValueError("acc_ang_body or euler_angles must be given") + + @property + def acc_ang_body(self): + return self._acc_ang_body + + @property + def p_dot(self): + return self._acc_ang_body[0] + + @property + def q_dot(self): + return self._acc_ang_body[1] + + @property + def r_dot(self): + return self._acc_ang_body[2] + + @property + def euler_ang_acc(self): + return self._euler_ang_acc + + @property + def theta_2dot(self): + return self._euler_ang_acc[0] + + @property + def phi_2dot(self): + return self._euler_ang_acc[1] + + @property + def psi_2dot(self): + return self._euler_ang_acc[2] + + +class BodyAngularAcceleration(AngularAcceleration): + + def __init__(self, p_dot, q_dot, r_dot, attitude): + super().__init__() + self.set_angular_accel(np.array([p_dot, q_dot, r_dot]), attitude) + + def set_angular_accel(self, coords, attitude): + self._acc_ang_body[:] = coords + # TODO: transform angular acc in body axis to euler angles + # acc + self._euler_ang_acc = np.zeros(3) # rad/s + + +class EulerAngularAcceleration(AngularAcceleration): + + def __init__(self, theta_dot, phi_dot, psi_dot, attitude): + super().__init__() + self.set_angular_accel(np.array([theta_dot, phi_dot, psi_dot]), + attitude) + + def set_angular_accel(self, coords, attitude): + self._euler_ang_acc[:] = coords + # TODO: transform euler angles acc to angular acceleration in body + # axis + self._acc_ang_body[:] = np.zeros(3) # rad/s \ No newline at end of file diff --git a/src/pyfme/models/angular_velocity.py b/src/pyfme/models/angular_velocity.py new file mode 100644 index 0000000..a152004 --- /dev/null +++ b/src/pyfme/models/angular_velocity.py @@ -0,0 +1,99 @@ +""" +Python Flight Mechanics Engine (PyFME). +Copyright (c) AeroPython Development Team. +Distributed under the terms of the MIT License. + +Angular Velocity +---------------- + +""" +from abc import abstractmethod + +import numpy as np + + +class AngularVelocity: + """Angular velocity + + vel_ang : ndarray, shape(3) + (p [rad/s], q [rad/s], r [rad/s]) + p + q + r + euler_ang_rates : ndarray, shape(3) + (theta_dot [rad/s], phi_dot [rad/s], psi_dot [rad/s]) + theta + phi + psi + """ + + def __init__(self): + # ANGULAR VELOCITY: (p, q, r) + self._vel_ang_body = np.zeros(3) # rad/s + # EULER ANGLE RATES (theta_dot, phi_dot, psi_dot) + self._euler_ang_rate = np.zeros(3) # rad/s + + @abstractmethod + def set_angular_velocity(self, coords, attitude): + raise NotImplementedError + + @property + def vel_ang_body(self): + return self._vel_ang_body + + @property + def p(self): + return self._vel_ang_body[0] + + @property + def q(self): + return self._vel_ang_body[1] + + @property + def r(self): + return self._vel_ang_body[2] + + @property + def euler_ang_rate(self): + return self._euler_ang_rate + + @property + def theta_dot(self): + return self._euler_ang_rate[0] + + @property + def phi_dot(self): + return self._euler_ang_rate[1] + + @property + def psi_dot(self): + return self._euler_ang_rate[2] + + +class BodyAngularVelocity(AngularVelocity): + + def __init__(self, p, q, r, attitude): + # TODO: docstring + super().__init__() + self.set_angular_velocity(np.array([p, q, r]), attitude) + + def set_angular_velocity(self, coords, attitude): + self._vel_ang_body[:] = coords + # TODO: transform angular velocity in body axis to euler angles + # rates + self._euler_ang_rate = np.zeros(3) # rad/s + + +class EulerAngularRates(AngularVelocity): + + def __init__(self, theta_dot, phi_dot, psi_dot, attitude): + # TODO: docstring + super().__init__() + self.set_angular_velocity(np.array([theta_dot, phi_dot, psi_dot]), + attitude) + + def set_angular_velocity(self, coords, attitude): + self._euler_ang_rate[:] = coords + # TODO: transform euler angles rates to angular velocity in body + # axis + self._vel_ang_body[:] = np.zeros(3) # rad/s \ No newline at end of file diff --git a/src/pyfme/models/state_elements.py b/src/pyfme/models/state_elements.py deleted file mode 100644 index c78cbb9..0000000 --- a/src/pyfme/models/state_elements.py +++ /dev/null @@ -1,297 +0,0 @@ -""" -Python Flight Mechanics Engine (PyFME). -Copyright (c) AeroPython Development Team. -Distributed under the terms of the MIT License. - -State elements --------------- - -The aircraft state has always the same elements even if they are expressed -in a different way. For example, attitude can be expressed with Euler angles -or quaternions, position with geodetic coordinates or Earth coordinates... - -This module provides class to represent: - * position - * attitude - * velocity - * angular velocity - * acceleration - * angular acceleration - -""" -from abc import abstractmethod - -import numpy as np - - -class AngularVelocity: - """Angular velocity - - vel_ang : ndarray, shape(3) - (p [rad/s], q [rad/s], r [rad/s]) - p - q - r - euler_ang_rates : ndarray, shape(3) - (theta_dot [rad/s], phi_dot [rad/s], psi_dot [rad/s]) - theta - phi - psi - """ - - def __init__(self): - # ANGULAR VELOCITY: (p, q, r) - self._vel_ang_body = np.zeros(3) # rad/s - # EULER ANGLE RATES (theta_dot, phi_dot, psi_dot) - self._euler_ang_rate = np.zeros(3) # rad/s - - @abstractmethod - def set_angular_velocity(self, coords, attitude): - raise NotImplementedError - - @property - def vel_ang_body(self): - return self._vel_ang_body - - @property - def p(self): - return self._vel_ang_body[0] - - @property - def q(self): - return self._vel_ang_body[1] - - @property - def r(self): - return self._vel_ang_body[2] - - @property - def euler_ang_rate(self): - return self._euler_ang_rate - - @property - def theta_dot(self): - return self._euler_ang_rate[0] - - @property - def phi_dot(self): - return self._euler_ang_rate[1] - - @property - def psi_dot(self): - return self._euler_ang_rate[2] - - -class BodyAngularVelocity(AngularVelocity): - - def __init__(self, p, q, r, attitude): - # TODO: docstring - super().__init__() - self.set_angular_velocity(np.array([p, q, r]), attitude) - - def set_angular_velocity(self, coords, attitude): - self._vel_ang_body[:] = coords - # TODO: transform angular velocity in body axis to euler angles - # rates - self._euler_ang_rate = np.zeros(3) # rad/s - - -class EulerAngularRates(AngularVelocity): - - def __init__(self, theta_dot, phi_dot, psi_dot, attitude): - # TODO: docstring - super().__init__() - self.set_angular_velocity(np.array([theta_dot, phi_dot, psi_dot]), - attitude) - - def set_angular_velocity(self, coords, attitude): - self._euler_ang_rate[:] = coords - # TODO: transform euler angles rates to angular velocity in body - # axis - self._vel_ang_body[:] = np.zeros(3) # rad/s - - -class Acceleration: - """Acceleration - - Attributes - ---------- - accel_body : ndarray, shape(3) - (u_dot [m/s²], v_dot [m/s²], w_dot [m/s²]) - u_dot - v_dot - w_dot - accel_NED : ndarray, shape(3) - (VN_dot [m/s²], VE_dot [m/s²], VD_dot [m/s²]) - VN_dot - VE_dot - VD_dot - """ - - def __init__(self): - # Body axis - self._accel_body = np.zeros(3) # m/s² - # Local horizon (NED) - self._accel_NED = np.zeros(3) # m/s² - - @abstractmethod - def set_acceleration(self, coords, attitude): - raise NotImplementedError - - @property - def accel_body(self): - return self._accel_body - - @property - def u_dot(self): - return self._accel_body[0] - - @property - def v_dot(self): - return self._accel_body[1] - - @property - def w_dot(self): - return self._accel_body[2] - - @property - def accel_NED(self): - return self._accel_NED - - @property - def v_north_dot(self): - return self._accel_NED[0] - - @property - def v_east_dot(self): - return self._accel_NED[1] - - @property - def v_down_dot(self): - return self._accel_NED[2] - - -class BodyAcceleration(Acceleration): - - def __init__(self, u_dot, v_dot, w_dot, attitude): - super().__init__() - self.set_acceleration(np.array([u_dot, v_dot, w_dot]), attitude) - - def set_acceleration(self, coords, attitude): - self._accel_body[:] = coords - # TODO: transform body vel to horizon vel using attitude - self._accel_NED = np.zeros(3) # m/s - - -class NEDAcceleration(Acceleration): - - def __init__(self, vn_dot, ve_dot, vd_dot, attitude): - super().__init__() - self.set_acceleration(np.array([vn_dot, ve_dot, vd_dot]), attitude) - - def set_acceleration(self, coords, attitude): - self._accel_NED[:] = coords - # TODO: transform horizon vel to body vel using attitude - self._accel_body = np.zeros(3) # m/s - - -class AngularAcceleration: - """Angular Accelerations - - Attributes - ---------- - accel_ang : ndarray, shape(3) - (p_dot [rad/s²], q_dot [rad/s²], r_dot [rad/s²]) - p_dot - q_dot - r_dot - euler_ang_acc : ndarray, shape(3) - (theta_2dot [rad/s²], phi_2dot [rad/s²], psi_2dot [rad/s²]) - theta_2dot - phi_2dot - psi_2dot - """ - - def __init__(self): - # ANGULAR VELOCITY: (p_dot, q_dot, r_dot) - self._acc_ang_body = np.zeros(3) # rad/s - # EULER ANGLE RATES (theta_dot2, phi_dot2, psi_dot2) - self._euler_ang_acc = np.zeros(3) # rad/s - - @abstractmethod - def set_angular_accel(self, coords, attitude): - - if acc_ang_body is not None and euler_ang_acc is not None: - raise ValueError("Only values for acc_ang_body or euler_ang_acc" - " can be given") - elif acc_ang_body is not None: - self._acc_ang_body[:] = acc_ang_body - # TODO: transform angular acc in body axis to euler angles - # acc - self._euler_ang_acc = np.zeros(3) # rad/s - elif euler_ang_acc is not None: - self._euler_ang_acc[:] = euler_ang_acc - # TODO: transform euler angles acc to angular acceleration in body - # axis - self._acc_ang_body[:] = np.zeros(3) # rad/s - else: - raise ValueError("acc_ang_body or euler_angles must be given") - - @property - def acc_ang_body(self): - return self._acc_ang_body - - @property - def p_dot(self): - return self._acc_ang_body[0] - - @property - def q_dot(self): - return self._acc_ang_body[1] - - @property - def r_dot(self): - return self._acc_ang_body[2] - - @property - def euler_ang_acc(self): - return self._euler_ang_acc - - @property - def theta_2dot(self): - return self._euler_ang_acc[0] - - @property - def phi_2dot(self): - return self._euler_ang_acc[1] - - @property - def psi_2dot(self): - return self._euler_ang_acc[2] - - -class BodyAngularAcceleration(AngularAcceleration): - - def __init__(self, p_dot, q_dot, r_dot, attitude): - super().__init__() - self.set_angular_accel(np.array([p_dot, q_dot, r_dot]), attitude) - - def set_angular_accel(self, coords, attitude): - self._acc_ang_body[:] = coords - # TODO: transform angular acc in body axis to euler angles - # acc - self._euler_ang_acc = np.zeros(3) # rad/s - - -class EulerAngularAcceleration(AngularAcceleration): - - def __init__(self, theta_dot, phi_dot, psi_dot, attitude): - super().__init__() - self.set_angular_accel(np.array([theta_dot, phi_dot, psi_dot]), - attitude) - - def set_angular_accel(self, coords, attitude): - self._euler_ang_acc[:] = coords - # TODO: transform euler angles acc to angular acceleration in body - # axis - self._acc_ang_body[:] = np.zeros(3) # rad/s \ No newline at end of file From c9b7482afb31ecc2c9f61de7974731d75244985e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sun, 5 Nov 2017 19:18:47 +0100 Subject: [PATCH 052/104] added time step method --- src/pyfme/models/dynamic_system.py | 31 ++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/pyfme/models/dynamic_system.py b/src/pyfme/models/dynamic_system.py index f37fb1e..d08ea9a 100644 --- a/src/pyfme/models/dynamic_system.py +++ b/src/pyfme/models/dynamic_system.py @@ -131,6 +131,37 @@ def integrate(self, t_end, t_eval=None, dense_output=True): return sol.t, sol.y, sol + def time_step(self, dt): + """Integrate the system from current time to t_end. + + Parameters + ---------- + dt : float + Time step. + + Returns + ------- + y : ndarray, shape (n) + Solution values at t_end. + """ + + x0 = self.state_vector + t_ini = self.time + + t_span = (t_ini, t_ini + dt) + method = self._method + + # TODO: prepare to use jacobian in case it is defined + sol = solve_ivp(self.fun, t_span, x0, method=method, **self._options) + + if sol.status == -1: + raise RuntimeError(f"Integration did not converge at t={t_ini}") + + self._time = sol.t[-1] + self._state_vector = sol.y[:, -1] + + return self._state_vector + @abstractmethod def fun(self, t, x): """ Right-hand side of the system (dy / dt = f(t, y)). The calling From 9421aa0572e4cb984b7fc92ece1a55910c9d6452 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sun, 5 Nov 2017 21:22:56 +0100 Subject: [PATCH 053/104] new AircraftDynamicSystem class parent of particular systems and inheriting from DynamicSystem --- src/pyfme/models/aircraft_state.py | 23 ++++++++ src/pyfme/models/dynamic_system.py | 50 +++++++++++++++- src/pyfme/models/euler_flat_earth.py | 87 ++++++++++++++++++++++++---- 3 files changed, 147 insertions(+), 13 deletions(-) create mode 100644 src/pyfme/models/aircraft_state.py diff --git a/src/pyfme/models/aircraft_state.py b/src/pyfme/models/aircraft_state.py new file mode 100644 index 0000000..76acff9 --- /dev/null +++ b/src/pyfme/models/aircraft_state.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +""" +Python Flight Mechanics Engine (PyFME). +Copyright (c) AeroPython Development Team. +Distributed under the terms of the MIT License. + +Aircraft State +-------------- + +""" + + +class AircraftState: + + def __init__(self, position, attitude, velocity, angular_vel, + acceleration, angular_accel): + + self.position = position + self.attitude = attitude + self.velocity = velocity + self.angular_vel = angular_vel + self.acceleration = acceleration + self.angular_accel = angular_accel diff --git a/src/pyfme/models/dynamic_system.py b/src/pyfme/models/dynamic_system.py index d08ea9a..2c768b6 100644 --- a/src/pyfme/models/dynamic_system.py +++ b/src/pyfme/models/dynamic_system.py @@ -12,6 +12,7 @@ """ from abc import abstractmethod +import numpy as np from scipy.integrate import solve_ivp @@ -53,6 +54,7 @@ def __init__(self, t0, x0, method='Rk45', options=None): if options is None: options = {} self._state_vector = x0 + self._state_vector_dot = np.zeros_like(x0) self._time = t0 self._method = method @@ -62,6 +64,10 @@ def __init__(self, t0, x0, method='Rk45', options=None): def state_vector(self): return self._state_vector + @property + def state_vector_dot(self): + return self._state_vector_dot + @property def time(self): return self._time @@ -115,7 +121,8 @@ def integrate(self, t_end, t_eval=None, dense_output=True): True if the solver reached the interval end or a termination event occurred (status >= 0). """ - + # TODO: intended to return the whole integration history + # How dos it update the full system? x0 = self.state_vector t_ini = self.time @@ -152,7 +159,8 @@ def time_step(self, dt): method = self._method # TODO: prepare to use jacobian in case it is defined - sol = solve_ivp(self.fun, t_span, x0, method=method, **self._options) + sol = solve_ivp(self.fun_wrapped, t_span, x0, method=method, + **self._options) if sol.status == -1: raise RuntimeError(f"Integration did not converge at t={t_ini}") @@ -176,3 +184,41 @@ def fun(self, t, x): (required for stiff solvers). """ raise NotImplementedError + + def fun_wrapped(self, t, x): + # First way that comes to my mind in order to store the derivates + # that are useful for full_state calculation + state_dot = self.fun(t, x) + self._state_vector_dot = state_dot + return state_dot + + +class AircraftDynamicSystem(DynamicSystem): + + def __init__(self, t0, full_state, update, method='Rk45', options=None): + x0 = self._get_state_vector_from_full_state(full_state) + self.full_state = self._adapt_full_state_to_dynamic_system(full_state) + + super().__init__(t0, x0, method=method, options=options) + + self.update_simulation = update + + @abstractmethod + def _adapt_full_state_to_dynamic_system(self, full_state): + raise NotImplementedError + + @abstractmethod + def _update_full_system_state_from_state(self, state, state_dot): + raise NotImplementedError + + @abstractmethod + def _get_state_vector_from_full_state(self, full_state): + raise NotImplementedError + + def time_step(self, dt): + super().time_step(dt) + # Now self.state_vector and state_vector_dot are updated + self._update_full_system_state_from_state(self.state_vector, + self.state_vector_dot) + + return self.full_state diff --git a/src/pyfme/models/euler_flat_earth.py b/src/pyfme/models/euler_flat_earth.py index af26422..2a33fe8 100644 --- a/src/pyfme/models/euler_flat_earth.py +++ b/src/pyfme/models/euler_flat_earth.py @@ -16,22 +16,22 @@ import numpy as np from numpy import sin, cos -from pyfme.models.dynamic_system import DynamicSystem +from pyfme.models.acceleration import BodyAcceleration +from pyfme.models.aircraft_state import AircraftState +from pyfme.models.angular_acceleration import BodyAngularAcceleration +from pyfme.models.angular_velocity import BodyAngularVelocity +from pyfme.models.attitude import EulerAttitude +from pyfme.models.dynamic_system import AircraftDynamicSystem +from pyfme.models.position import EarthPosition +from pyfme.models.velocity import BodyVelocity -class EulerFlatEarth(DynamicSystem): - - def __init__(self, t0, x0, update, method='Rk45', options=None): - - # TODO: use jacobian when it is calculated and implemented in - # Dynamic System - super().__init__(t0, x0, method=method, options=options) - - self.update_simulation = update +class EulerFlatEarth(AircraftDynamicSystem): def fun(self, t, x): - updated_simulation = self.update_simulation(t, x) + self._update_full_system_state_from_state(x, self.state_vector_dot) + updated_simulation = self.update_simulation(t, self.full_state) mass = updated_simulation.aircraft.mass inertia = updated_simulation.aircraft.inertia @@ -42,6 +42,71 @@ def fun(self, t, x): return rv + def _update_full_system_state_from_state(self, state, state_dot): + + self.full_state.velocity.set_velocity(state[0:3]) + self.full_state.angular_vel.set_angular_velocity(state[3:6]) + self.full_state.attitude.set_attitude(state[6:9]) + self.full_state.position.set_position(state[9:12]) + + self.full_state.acceleration.set_acceleration(state_dot[0:3]) + self.full_state.angular_accel.set_angular_accel(state_dot[3:6]) + + def _adapt_full_state_to_dynamic_system(self, full_state): + + pos = EarthPosition(full_state.position.x_earth, + full_state.position.y_earth, + full_state.position.height, + full_state.position.lat, + full_state.position.lon) + + att = EulerAttitude(full_state.attitude.theta, + full_state.attitude.phi, + full_state.attitude.psi) + + vel = BodyVelocity(full_state.velocity.u, + full_state.velocity.v, + full_state.velocity.w, + att) + + ang_vel = BodyAngularVelocity(full_state.angular_vel.p, + full_state.angular_vel.q, + full_state.angular_vel.r, + att) + + accel = BodyAcceleration(full_state.acceleration.u_dot, + full_state.acceleration.v_dot, + full_state.acceleration.w_dot, + att) + + ang_accel = BodyAngularAcceleration(full_state.angular_accel.p_dot, + full_state.angular_accel.q_dot, + full_state.angular_accel.r_dot, + att) + + full_state = AircraftState(pos, att, vel, ang_vel, accel, ang_accel) + return full_state + + def _get_state_vector_from_full_state(self, full_state): + + x0 = np.array( + [ + full_state.velocity.u, + full_state.velocity.v, + full_state.velocity.w, + full_state.angular_vel.p, + full_state.angular_vel.q, + full_state.angular_vel.r, + full_state.attitude.theta, + full_state.attitude.phi, + full_state.attitude.psi, + full_state.position.x_earth, + full_state.position.y_earth, + full_state.position.z_eart + ] + ) + return x0 + # TODO: numba jit def _system_equations(time, state_vector, mass, inertia, forces, moments): From 7a9dd619b5ae851513ce822462b5267f43eccf80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sun, 5 Nov 2017 22:56:15 +0100 Subject: [PATCH 054/104] moved aricraft state class --- src/pyfme/models/aircraft_state.py | 23 ----------------------- src/pyfme/models/dynamic_system.py | 13 +++++++++++++ src/pyfme/models/euler_flat_earth.py | 3 +-- 3 files changed, 14 insertions(+), 25 deletions(-) delete mode 100644 src/pyfme/models/aircraft_state.py diff --git a/src/pyfme/models/aircraft_state.py b/src/pyfme/models/aircraft_state.py deleted file mode 100644 index 76acff9..0000000 --- a/src/pyfme/models/aircraft_state.py +++ /dev/null @@ -1,23 +0,0 @@ -# -*- coding: utf-8 -*- -""" -Python Flight Mechanics Engine (PyFME). -Copyright (c) AeroPython Development Team. -Distributed under the terms of the MIT License. - -Aircraft State --------------- - -""" - - -class AircraftState: - - def __init__(self, position, attitude, velocity, angular_vel, - acceleration, angular_accel): - - self.position = position - self.attitude = attitude - self.velocity = velocity - self.angular_vel = angular_vel - self.acceleration = acceleration - self.angular_accel = angular_accel diff --git a/src/pyfme/models/dynamic_system.py b/src/pyfme/models/dynamic_system.py index 2c768b6..82e15b3 100644 --- a/src/pyfme/models/dynamic_system.py +++ b/src/pyfme/models/dynamic_system.py @@ -222,3 +222,16 @@ def time_step(self, dt): self.state_vector_dot) return self.full_state + + +class AircraftState: + + def __init__(self, position, attitude, velocity, angular_vel, + acceleration, angular_accel): + + self.position = position + self.attitude = attitude + self.velocity = velocity + self.angular_vel = angular_vel + self.acceleration = acceleration + self.angular_accel = angular_accel \ No newline at end of file diff --git a/src/pyfme/models/euler_flat_earth.py b/src/pyfme/models/euler_flat_earth.py index 2a33fe8..fd69580 100644 --- a/src/pyfme/models/euler_flat_earth.py +++ b/src/pyfme/models/euler_flat_earth.py @@ -17,11 +17,10 @@ from numpy import sin, cos from pyfme.models.acceleration import BodyAcceleration -from pyfme.models.aircraft_state import AircraftState from pyfme.models.angular_acceleration import BodyAngularAcceleration from pyfme.models.angular_velocity import BodyAngularVelocity from pyfme.models.attitude import EulerAttitude -from pyfme.models.dynamic_system import AircraftDynamicSystem +from pyfme.models.dynamic_system import AircraftDynamicSystem, AircraftState from pyfme.models.position import EarthPosition from pyfme.models.velocity import BodyVelocity From e326f4b97a5c98993df1e668d53a6b6d004b13b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sun, 5 Nov 2017 22:58:57 +0100 Subject: [PATCH 055/104] removed implementation of abstract method --- src/pyfme/models/angular_acceleration.py | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/src/pyfme/models/angular_acceleration.py b/src/pyfme/models/angular_acceleration.py index d780c65..a26ff7b 100644 --- a/src/pyfme/models/angular_acceleration.py +++ b/src/pyfme/models/angular_acceleration.py @@ -37,22 +37,7 @@ def __init__(self): @abstractmethod def set_angular_accel(self, coords, attitude): - - if acc_ang_body is not None and euler_ang_acc is not None: - raise ValueError("Only values for acc_ang_body or euler_ang_acc" - " can be given") - elif acc_ang_body is not None: - self._acc_ang_body[:] = acc_ang_body - # TODO: transform angular acc in body axis to euler angles - # acc - self._euler_ang_acc = np.zeros(3) # rad/s - elif euler_ang_acc is not None: - self._euler_ang_acc[:] = euler_ang_acc - # TODO: transform euler angles acc to angular acceleration in body - # axis - self._acc_ang_body[:] = np.zeros(3) # rad/s - else: - raise ValueError("acc_ang_body or euler_angles must be given") + raise ValueError @property def acc_ang_body(self): From 8a0c697ce626d7c8e2ac5ee7f303316cc990d96d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sun, 5 Nov 2017 23:01:43 +0100 Subject: [PATCH 056/104] renamed all set_* methods in full state classes to update --- src/pyfme/models/acceleration.py | 10 +++++----- src/pyfme/models/angular_acceleration.py | 12 ++++++------ src/pyfme/models/angular_velocity.py | 12 ++++++------ src/pyfme/models/attitude.py | 10 +++++----- src/pyfme/models/euler_flat_earth.py | 12 ++++++------ src/pyfme/models/position.py | 6 +++--- src/pyfme/models/velocity.py | 10 +++++----- 7 files changed, 36 insertions(+), 36 deletions(-) diff --git a/src/pyfme/models/acceleration.py b/src/pyfme/models/acceleration.py index 01fdb90..9430c26 100644 --- a/src/pyfme/models/acceleration.py +++ b/src/pyfme/models/acceleration.py @@ -36,7 +36,7 @@ def __init__(self): self._accel_NED = np.zeros(3) # m/s² @abstractmethod - def set_acceleration(self, coords, attitude): + def update(self, coords, attitude): raise NotImplementedError @property @@ -76,9 +76,9 @@ class BodyAcceleration(Acceleration): def __init__(self, u_dot, v_dot, w_dot, attitude): super().__init__() - self.set_acceleration(np.array([u_dot, v_dot, w_dot]), attitude) + self.update(np.array([u_dot, v_dot, w_dot]), attitude) - def set_acceleration(self, coords, attitude): + def update(self, coords, attitude): self._accel_body[:] = coords # TODO: transform body vel to horizon vel using attitude self._accel_NED = np.zeros(3) # m/s @@ -88,9 +88,9 @@ class NEDAcceleration(Acceleration): def __init__(self, vn_dot, ve_dot, vd_dot, attitude): super().__init__() - self.set_acceleration(np.array([vn_dot, ve_dot, vd_dot]), attitude) + self.update(np.array([vn_dot, ve_dot, vd_dot]), attitude) - def set_acceleration(self, coords, attitude): + def update(self, coords, attitude): self._accel_NED[:] = coords # TODO: transform horizon vel to body vel using attitude self._accel_body = np.zeros(3) # m/s \ No newline at end of file diff --git a/src/pyfme/models/angular_acceleration.py b/src/pyfme/models/angular_acceleration.py index a26ff7b..6173e40 100644 --- a/src/pyfme/models/angular_acceleration.py +++ b/src/pyfme/models/angular_acceleration.py @@ -36,7 +36,7 @@ def __init__(self): self._euler_ang_acc = np.zeros(3) # rad/s @abstractmethod - def set_angular_accel(self, coords, attitude): + def update(self, coords, attitude): raise ValueError @property @@ -76,9 +76,9 @@ class BodyAngularAcceleration(AngularAcceleration): def __init__(self, p_dot, q_dot, r_dot, attitude): super().__init__() - self.set_angular_accel(np.array([p_dot, q_dot, r_dot]), attitude) + self.update(np.array([p_dot, q_dot, r_dot]), attitude) - def set_angular_accel(self, coords, attitude): + def update(self, coords, attitude): self._acc_ang_body[:] = coords # TODO: transform angular acc in body axis to euler angles # acc @@ -89,10 +89,10 @@ class EulerAngularAcceleration(AngularAcceleration): def __init__(self, theta_dot, phi_dot, psi_dot, attitude): super().__init__() - self.set_angular_accel(np.array([theta_dot, phi_dot, psi_dot]), - attitude) + self.update(np.array([theta_dot, phi_dot, psi_dot]), + attitude) - def set_angular_accel(self, coords, attitude): + def update(self, coords, attitude): self._euler_ang_acc[:] = coords # TODO: transform euler angles acc to angular acceleration in body # axis diff --git a/src/pyfme/models/angular_velocity.py b/src/pyfme/models/angular_velocity.py index a152004..13a6658 100644 --- a/src/pyfme/models/angular_velocity.py +++ b/src/pyfme/models/angular_velocity.py @@ -34,7 +34,7 @@ def __init__(self): self._euler_ang_rate = np.zeros(3) # rad/s @abstractmethod - def set_angular_velocity(self, coords, attitude): + def update(self, coords, attitude): raise NotImplementedError @property @@ -75,9 +75,9 @@ class BodyAngularVelocity(AngularVelocity): def __init__(self, p, q, r, attitude): # TODO: docstring super().__init__() - self.set_angular_velocity(np.array([p, q, r]), attitude) + self.update(np.array([p, q, r]), attitude) - def set_angular_velocity(self, coords, attitude): + def update(self, coords, attitude): self._vel_ang_body[:] = coords # TODO: transform angular velocity in body axis to euler angles # rates @@ -89,10 +89,10 @@ class EulerAngularRates(AngularVelocity): def __init__(self, theta_dot, phi_dot, psi_dot, attitude): # TODO: docstring super().__init__() - self.set_angular_velocity(np.array([theta_dot, phi_dot, psi_dot]), - attitude) + self.update(np.array([theta_dot, phi_dot, psi_dot]), + attitude) - def set_angular_velocity(self, coords, attitude): + def update(self, coords, attitude): self._euler_ang_rate[:] = coords # TODO: transform euler angles rates to angular velocity in body # axis diff --git a/src/pyfme/models/attitude.py b/src/pyfme/models/attitude.py index 01e927d..cf7c5e8 100644 --- a/src/pyfme/models/attitude.py +++ b/src/pyfme/models/attitude.py @@ -39,7 +39,7 @@ def __init__(self): self._quaternions = np.zeros(4) @abstractmethod - def set_attitude(self, value): + def update(self, value): raise NotImplementedError @property @@ -84,9 +84,9 @@ class EulerAttitude(Attitude): def __init__(self, theta, phi, psi): # TODO: docstring super().__init__() - self.set_attitude(np.array([theta, phi, psi])) + self.update(np.array([theta, phi, psi])) - def set_attitude(self, value): + def update(self, value): self._euler_angles[:] = value # TODO: transform quaternions to Euler angles self._quaternions = np.zeros(4) @@ -96,9 +96,9 @@ class QuaternionAttitude(Attitude): def __init__(self, q0, q1, q2, q3): # TODO: docstring super().__init__() - self.set_attitude(np.array([q0, q1, q2, q3])) + self.update(np.array([q0, q1, q2, q3])) - def set_attitude(self, value): + def update(self, value): self._quaternions[:] = value # TODO: transform quaternions to Euler angles self._euler_angles = np.zeros(3) \ No newline at end of file diff --git a/src/pyfme/models/euler_flat_earth.py b/src/pyfme/models/euler_flat_earth.py index fd69580..477617b 100644 --- a/src/pyfme/models/euler_flat_earth.py +++ b/src/pyfme/models/euler_flat_earth.py @@ -43,13 +43,13 @@ def fun(self, t, x): def _update_full_system_state_from_state(self, state, state_dot): - self.full_state.velocity.set_velocity(state[0:3]) - self.full_state.angular_vel.set_angular_velocity(state[3:6]) - self.full_state.attitude.set_attitude(state[6:9]) - self.full_state.position.set_position(state[9:12]) + self.full_state.velocity.update(state[0:3]) + self.full_state.angular_vel.update(state[3:6]) + self.full_state.attitude.update(state[6:9]) + self.full_state.position.update(state[9:12]) - self.full_state.acceleration.set_acceleration(state_dot[0:3]) - self.full_state.angular_accel.set_angular_accel(state_dot[3:6]) + self.full_state.acceleration.update(state_dot[0:3]) + self.full_state.angular_accel.update(state_dot[3:6]) def _adapt_full_state_to_dynamic_system(self, full_state): diff --git a/src/pyfme/models/position.py b/src/pyfme/models/position.py index d84020b..190cc62 100644 --- a/src/pyfme/models/position.py +++ b/src/pyfme/models/position.py @@ -48,7 +48,7 @@ def __init__(self, geodetic, geocentric, earth): self._earth_coordinates = np.asarray(earth) # m @abstractmethod - def set_position(self, coords): + def update(self, coords): raise NotImplementedError @property @@ -112,7 +112,7 @@ def __init__(self, x, y, height, lat=0, lon=0): geocentric = np.zeros(3) # m super().__init__(geodetic, geocentric, earth) - def set_position(self, value): + def update(self, value): # Assuming round earth use changes in x & y to calculate # new lat and lon. z_earth is -height: delta_x, delta_y, _ = value - self.earth_coordinates @@ -140,7 +140,7 @@ def __init__(self, lat, lon, height, x_earth=0, y_earth=0): geocentric = np.zeros(3) # m super().__init__(geodetic, geocentric, earth) - def set_position(self, value): + def update(self, value): # Assuming round earth use changes in x & y to calculate # new x, y from lat and lon. z_earth is -height delta_lat, delta_lon, _ = self.geodetic_coordinates - value diff --git a/src/pyfme/models/velocity.py b/src/pyfme/models/velocity.py index 430e877..852db6b 100644 --- a/src/pyfme/models/velocity.py +++ b/src/pyfme/models/velocity.py @@ -42,7 +42,7 @@ def __init__(self): self._vel_NED = np.zeros(3) # m/s @abstractmethod - def set_velocity(self, coords, attitude): + def update(self, coords, attitude): raise NotImplementedError @property @@ -83,9 +83,9 @@ class BodyVelocity(Velocity): def __init__(self, u, v, w, attitude): # TODO: docstring super().__init__() - self.set_velocity(np.array([u, v, w]), attitude) + self.update(np.array([u, v, w]), attitude) - def set_velocity(self, value, attitude): + def update(self, value, attitude): self._vel_body[:] = value # TODO: transform body vel to horizon vel using attitude self._vel_NED = np.zeros(3) # m/s @@ -95,9 +95,9 @@ class NEDVelocity(Velocity): def __init__(self, vn, ve, vd, attitude): # TODO: docstring super().__init__() - self.set_velocity(np.array([vn, ve, vd]), attitude) + self.update(np.array([vn, ve, vd]), attitude) - def set_velocity(self, value, attitude): + def update(self, value, attitude): self._vel_NED[:] = value # TODO: transform horizon vel to body vel using attitude self._vel_body = np.zeros(3) # m/s \ No newline at end of file From 5f079701f4fdde28b4ca951eceab379e44255695 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sun, 5 Nov 2017 23:19:22 +0100 Subject: [PATCH 057/104] Adapted environment to new system's architecture --- src/pyfme/environment/atmosphere.py | 6 +++--- src/pyfme/environment/environment.py | 8 ++++---- src/pyfme/environment/gravity.py | 19 ++++++++++--------- src/pyfme/environment/wind.py | 2 +- 4 files changed, 18 insertions(+), 17 deletions(-) diff --git a/src/pyfme/environment/atmosphere.py b/src/pyfme/environment/atmosphere.py index 768db26..b33d7fc 100644 --- a/src/pyfme/environment/atmosphere.py +++ b/src/pyfme/environment/atmosphere.py @@ -31,12 +31,12 @@ def __init__(self): self.rho = None # Density (kg/m³). self.a = None # Speed of sound (m/s). - def update(self, system): + def update(self, state): """Update atmosphere state for the given system state. Parameters ---------- - system : System object + state : System object System object with attribute alt_geop (geopotential altitude. @@ -68,7 +68,7 @@ def update(self, system): """ # Geopotential altitude - self.geopotential_alt = geometric2geopotential(system.height) + self.geopotential_alt = geometric2geopotential(state.position.height) self.T, self.p, self.rho, self.a = self.__call__(self.geopotential_alt) @abstractmethod diff --git a/src/pyfme/environment/environment.py b/src/pyfme/environment/environment.py index 6755849..08e8260 100644 --- a/src/pyfme/environment/environment.py +++ b/src/pyfme/environment/environment.py @@ -57,7 +57,7 @@ def body_wind(self): def horizon_wind(self): return self.wind.horizon - def update(self, system): - self.atmosphere.update(system) - self.gravity.update(system) - self.wind.update(system) + def update(self, state): + self.atmosphere.update(state) + self.gravity.update(state) + self.wind.update(state) diff --git a/src/pyfme/environment/gravity.py b/src/pyfme/environment/gravity.py index d94a8b3..f406b1a 100644 --- a/src/pyfme/environment/gravity.py +++ b/src/pyfme/environment/gravity.py @@ -48,11 +48,11 @@ def __init__(self): self._magnitude = GRAVITY self._z_horizon = np.array([0, 0, 1], dtype=float) - def update(self, system): + def update(self, state): self._versor = hor2body(self._z_horizon, - theta=system.theta, - phi=system.phi, - psi=system.psi + theta=state.attitude.theta, + phi=state.attitude.phi, + psi=state.attitude.psi ) self._vector = self.magnitude * self.versor @@ -66,13 +66,14 @@ class VerticalNewton(Gravity): def __init__(self): self._z_horizon = np.array([0, 0, 1], dtype=float) - def update(self, system): - r_squared = system.coord_geocentric @ system.coord_geocentric + def update(self, state): + r_squared = (state.position.coord_geocentric @ + state.position.coord_geocentric) self._magnitude = STD_GRAVITATIONAL_PARAMETER / r_squared self._versor = hor2body(self._z_horizon, - theta=system.theta, - phi=system.phi, - psi=system.psi + theta=state.attittude.theta, + phi=state.attittude.phi, + psi=state.attitude.psi ) self._vector = self.magnitude * self._vector diff --git a/src/pyfme/environment/wind.py b/src/pyfme/environment/wind.py index 22845d3..4d6d51a 100644 --- a/src/pyfme/environment/wind.py +++ b/src/pyfme/environment/wind.py @@ -18,5 +18,5 @@ def __init__(self): self.horizon = np.zeros([3], dtype=float) self.body = np.zeros([3], dtype=float) - def update(self, system): + def update(self, state): pass From 9e993bab993d9c8f6facc85a77b5112ebf4c3c84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sun, 5 Nov 2017 23:25:14 +0100 Subject: [PATCH 058/104] Adapted aircraft to new system's architecture --- src/pyfme/aircrafts/aircraft.py | 8 ++++---- src/pyfme/aircrafts/cessna_172.py | 21 +++++++++++---------- src/pyfme/aircrafts/cessna_310.py | 4 ++-- 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/src/pyfme/aircrafts/aircraft.py b/src/pyfme/aircrafts/aircraft.py index 8ef2957..42ab0f6 100644 --- a/src/pyfme/aircrafts/aircraft.py +++ b/src/pyfme/aircrafts/aircraft.py @@ -104,10 +104,10 @@ def _set_current_controls(self, controls): limits[0])) raise ValueError(msg) - def _calculate_aerodynamics(self, system, environment): + def _calculate_aerodynamics(self, state, environment): # Velocity relative to air: aerodynamic velocity. - aero_vel = system.vel_body - environment.body_wind + aero_vel = state.velocity.vel_body - environment.body_wind self.alpha, self.beta, self.TAS = calculate_alpha_beta_TAS( u=aero_vel[0], v=aero_vel[1], w=aero_vel[2] @@ -130,7 +130,7 @@ def _calculate_aerodynamics_2(self, TAS, alpha, beta, environment): self.q_inf = 0.5 * environment.rho * self.TAS ** 2 @abstractmethod - def calculate_forces_and_moments(self, system, environment, controls): + def calculate_forces_and_moments(self, state, environment, controls): self._set_current_controls(controls) - self._calculate_aerodynamics(system, environment) + self._calculate_aerodynamics(state, environment) diff --git a/src/pyfme/aircrafts/cessna_172.py b/src/pyfme/aircrafts/cessna_172.py index bce76fb..edaac3d 100644 --- a/src/pyfme/aircrafts/cessna_172.py +++ b/src/pyfme/aircrafts/cessna_172.py @@ -210,12 +210,13 @@ def delta_aileron(self): def delta_t(self): return self.controls['delta_t'] - def _calculate_aero_lon_forces_moments_coeffs(self, system): + def _calculate_aero_lon_forces_moments_coeffs(self, state): delta_elev = np.rad2deg(self.controls['delta_elevator']) # deg alpha_DEG = np.rad2deg(self.alpha) # deg c = self.chord # m V = self.TAS # m/s - p, q, r = system.p, system.q, system.r # rad/s + p, q, r = state.angular_vel.p, state.angular_vel.q, \ + state.angular_vel.r # rad/s alpha_dot = self.alpha_dot CD_alpha_interp = np.interp(alpha_DEG, self.alpha_data, self.CD_data) @@ -248,13 +249,13 @@ def _calculate_aero_lon_forces_moments_coeffs(self, system): ) # FIXME: CM_q multiplicado por 2 hasta que alpha_dot pueda ser calculado - def _calculate_aero_lat_forces_moments_coeffs(self, system): + def _calculate_aero_lat_forces_moments_coeffs(self, state): delta_aile = np.rad2deg(self.controls['delta_aileron']) # deg delta_rud_RAD = self.controls['delta_rudder'] # rad alpha_DEG = np.rad2deg(self.alpha) # deg b = self.span V = self.TAS - p, q, r = system.p, system.q, system.r + p, q, r = state.angular_vel.p, state.angualr_vel.q, state.angular_vel.r CY_beta = np.interp(alpha_DEG, self.alpha_data, self.CY_beta_data) CY_p = np.interp(alpha_DEG, self.alpha_data, self.CY_p_data) @@ -296,14 +297,14 @@ def _calculate_aero_lat_forces_moments_coeffs(self, system): b/(2 * V) * (CN_p * p + CN_r * r) ) - def _calculate_aero_forces_moments(self, system): + def _calculate_aero_forces_moments(self, state): q = self.q_inf Sw = self.Sw c = self.chord b = self.span - self._calculate_aero_lon_forces_moments_coeffs(system) - self._calculate_aero_lat_forces_moments_coeffs(system) + self._calculate_aero_lon_forces_moments_coeffs(state) + self._calculate_aero_lat_forces_moments_coeffs(state) L = q * Sw * self.CL D = q * Sw * self.CD @@ -337,12 +338,12 @@ def _calculate_thrust_forces_moments(self, environment): return Ft - def calculate_forces_and_moments(self, system, environment, controls): + def calculate_forces_and_moments(self, state, environment, controls): # Update controls and aerodynamics - super().calculate_forces_and_moments(system, environment, controls) + super().calculate_forces_and_moments(state, environment, controls) Ft = self._calculate_thrust_forces_moments(environment) - L, D, Y, l, m, n = self._calculate_aero_forces_moments(system) + L, D, Y, l, m, n = self._calculate_aero_forces_moments(state) Fg = environment.gravity_vector * self.mass Fa_wind = np.array([-D, Y, -L]) diff --git a/src/pyfme/aircrafts/cessna_310.py b/src/pyfme/aircrafts/cessna_310.py index 2c5a999..69758b6 100644 --- a/src/pyfme/aircrafts/cessna_310.py +++ b/src/pyfme/aircrafts/cessna_310.py @@ -191,10 +191,10 @@ def _calculate_thrust_forces_moments(self): Ft = np.array([q * Sw * self.Ct, 0, 0]) return Ft - def calculate_forces_and_moments(self, system, environment, controls): + def calculate_forces_and_moments(self, state, environment, controls): # Update controls and aerodynamics - super().calculate_forces_and_moments(system, environment, controls) + super().calculate_forces_and_moments(state, environment, controls) Ft = self._calculate_thrust_forces_moments() L, D, Y, l, m, n = self._calculate_aero_forces_moments() From 862482c923765650ef48f2050d419555e6668c4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Thu, 9 Nov 2017 19:09:45 +0100 Subject: [PATCH 059/104] default options to Aircraft State Class --- src/pyfme/models/dynamic_system.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/pyfme/models/dynamic_system.py b/src/pyfme/models/dynamic_system.py index 82e15b3..f89f6cc 100644 --- a/src/pyfme/models/dynamic_system.py +++ b/src/pyfme/models/dynamic_system.py @@ -15,6 +15,10 @@ import numpy as np from scipy.integrate import solve_ivp +from pyfme.models.acceleration import BodyAcceleration +from pyfme.models.angular_acceleration import BodyAngularAcceleration +from pyfme.models.angular_velocity import BodyAngularVelocity + class DynamicSystem: """Dynamic system class to integrate initial value problems numerically. @@ -226,12 +230,20 @@ def time_step(self, dt): class AircraftState: - def __init__(self, position, attitude, velocity, angular_vel, - acceleration, angular_accel): + def __init__(self, position, attitude, velocity, angular_vel=None, + acceleration=None, angular_accel=None): self.position = position self.attitude = attitude self.velocity = velocity + + if angular_vel is None: + angular_vel = BodyAngularVelocity(0, 0, 0, attitude) + if acceleration is None: + acceleration = BodyAcceleration(0, 0, 0, attitude) + if angular_accel is None: + angular_accel = BodyAngularAcceleration(0, 0, 0, attitude) + self.angular_vel = angular_vel self.acceleration = acceleration - self.angular_accel = angular_accel \ No newline at end of file + self.angular_accel = angular_accel From 553d6a495d2c1e88d5f49c968f711914840b5d72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Thu, 9 Nov 2017 19:59:53 +0100 Subject: [PATCH 060/104] added trim function to AircraftDynamicSystem --- src/pyfme/models/dynamic_system.py | 4 ++++ src/pyfme/models/euler_flat_earth.py | 16 ++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/src/pyfme/models/dynamic_system.py b/src/pyfme/models/dynamic_system.py index f89f6cc..d8833ca 100644 --- a/src/pyfme/models/dynamic_system.py +++ b/src/pyfme/models/dynamic_system.py @@ -219,6 +219,10 @@ def _update_full_system_state_from_state(self, state, state_dot): def _get_state_vector_from_full_state(self, full_state): raise NotImplementedError + @abstractmethod + def trim_fun(self, full_state, environment, aircraft, controls): + raise NotImplementedError + def time_step(self, dt): super().time_step(dt) # Now self.state_vector and state_vector_dot are updated diff --git a/src/pyfme/models/euler_flat_earth.py b/src/pyfme/models/euler_flat_earth.py index 477617b..41538b0 100644 --- a/src/pyfme/models/euler_flat_earth.py +++ b/src/pyfme/models/euler_flat_earth.py @@ -41,6 +41,22 @@ def fun(self, t, x): return rv + def trim_fun(self, full_state, environment, aircraft, controls): + + environment.update(full_state) + aircraft.calculate_forces_and_moments(full_state, environment, controls) + + mass = aircraft.mass + inertia = aircraft.inertia + forces = aircraft.forces + moments = aircraft.moments + + t0 = 0 + x0 = self._get_state_vector_from_full_state(full_state) + + rv = _system_equations(t0, x0, mass, inertia, forces, moments) + return rv[:6] + def _update_full_system_state_from_state(self, state, state_dot): self.full_state.velocity.update(state[0:3]) From 336e4c4c5895c1658621ca2ae962d856ccf9b8e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Thu, 9 Nov 2017 20:04:05 +0100 Subject: [PATCH 061/104] moved trimmer to utils, not a simulation method anymore --- src/pyfme/simulator.py | 102 ------------------------- src/pyfme/utils/trimmer.py | 153 +++++++++++++++++++++++++++++++------ 2 files changed, 131 insertions(+), 124 deletions(-) diff --git a/src/pyfme/simulator.py b/src/pyfme/simulator.py index 3d4368f..af6fb3d 100644 --- a/src/pyfme/simulator.py +++ b/src/pyfme/simulator.py @@ -231,105 +231,3 @@ def _get_current_controls(self, time): """ c = {c_name: c_fun(time) for c_name, c_fun in self.controls.items()} return c - - def trim_aircraft(self, geodetic_initial_pos, TAS, gamma, turn_rate, - initial_controls, psi=0, exclude_controls=[], verbose=0): - """Finds a combination of values of the state and control variables - that correspond to a steady-state flight condition. - - Steady-state aircraft flight is defined as a condition in which all - of the motion variables are constant or zero. That is, the linear and - angular velocity components are constant (or zero), thus all - acceleration components are zero. - - Parameters - ---------- - geodetic_initial_pos : arraylike, shape(3) - (Latitude, longitude, height) - TAS : float - True Air Speed (m/s). - gamma : float, optional - Flight path angle (rad). - turn_rate : float, optional - Turn rate, d(psi)/dt (rad/s). - initial_controls : dict - Initial value guess for each control. - psi : float, opt - Initial yaw angle (rad). - exclude_controls : list, optional - List with controls not to be trimmed. If not given, every control - is considered in the trim process. - verbose : {0, 1, 2}, optional - Level of algorithm's verbosity: - * 0 (default) : work silently. - * 1 : display a termination report. - * 2 : display progress during iterations (not supported by 'lm' - method). - - Notes - ----- - See section 3.4 in [1] for the algorithm description. - See section 2.5 in [1] for the definition of steady-state flight - condition. - - References - ---------- - .. [1] Stevens, BL and Lewis, FL, "Aircraft Control and Simulation", - Wiley-lnterscience. - """ - - system = self.system - env = self.environment - ac = self.aircraft - - # Initialize state - system.set_initial_state( - geodetic_coord=geodetic_initial_pos, - euler_angles=np.array([0, 0, psi]) - ) - # Update environment for the current state - env.update(system) - - # Initialize alpha and beta - # TODO: improve initialization method - alpha0 = 0.05 - beta0 = 0.001 * np.sign(turn_rate) - - # For the current alpha, beta, TAS and env, set the aerodynamics of - # the aircraft (q_inf, CAS, EAS...) - ac._calculate_aerodynamics_2(TAS, alpha0, beta0, env) - - # Initialize controls - for control in ac.controls: - if control not in initial_controls: - raise ValueError( - "Control {} not given in initial_controls: {}".format( - control, initial_controls) - ) - else: - ac.controls[control] = initial_controls[control] - - # Select the controls that will be trimmed - controls_to_trim = list(ac.controls.keys() - exclude_controls) - - # Set the variables for the optimization - initial_guess = [alpha0, beta0] - for control in controls_to_trim: - initial_guess.append(initial_controls[control]) - - # Set bounds for each variable to be optimized - lower_bounds = [-0.5, -0.25] # Alpha and beta upper bounds. - upper_bounds = [+0.5, +0.25] # Alpha and beta lower bounds. - for ii in controls_to_trim: - lower_bounds.append(ac.control_limits[ii][0]) - upper_bounds.append(ac.control_limits[ii][1]) - bounds = (lower_bounds, upper_bounds) - - args = (system, ac, env, controls_to_trim, gamma, turn_rate) - - # Trim - results = least_squares(trimming_cost_func, - x0=initial_guess, - args=args, - verbose=verbose, - bounds=bounds) diff --git a/src/pyfme/utils/trimmer.py b/src/pyfme/utils/trimmer.py index 6f779e2..0dd6e55 100644 --- a/src/pyfme/utils/trimmer.py +++ b/src/pyfme/utils/trimmer.py @@ -17,11 +17,127 @@ from math import sqrt, sin, cos, tan, atan import numpy as np +from scipy.optimize import least_squares +from pyfme.models import EulerFlatEarth +from pyfme.models.attitude import EulerAttitude +from pyfme.models.dynamic_system import AircraftState +from pyfme.models.velocity import BodyVelocity from pyfme.utils.coordinates import wind2body from pyfme.models.constants import GRAVITY +def trim(aircraft, environment, pos0, psi, TAS, gamma, turn_rate, controls, + exclude=None, verbose=0): + # TODO: docstring update + """Finds a combination of values of the state and control variables + that correspond to a steady-state flight condition. + + Steady-state aircraft flight is defined as a condition in which all + of the motion variables are constant or zero. That is, the linear and + angular velocity components are constant (or zero), thus all + acceleration components are zero. + + Parameters + ---------- + geodetic_initial_pos : arraylike, shape(3) + (Latitude, longitude, height) + TAS : float + True Air Speed (m/s). + gamma : float, optional + Flight path angle (rad). + turn_rate : float, optional + Turn rate, d(psi)/dt (rad/s). + initial_controls : dict + Initial value guess for each control. + psi : float, opt + Initial yaw angle (rad). + exclude_controls : list, optional + List with controls not to be trimmed. If not given, every control + is considered in the trim process. + verbose : {0, 1, 2}, optional + Level of algorithm's verbosity: + * 0 (default) : work silently. + * 1 : display a termination report. + * 2 : display progress during iterations (not supported by 'lm' + method). + + Notes + ----- + See section 3.4 in [1] for the algorithm description. + See section 2.5 in [1] for the definition of steady-state flight + condition. + + References + ---------- + .. [1] Stevens, BL and Lewis, FL, "Aircraft Control and Simulation", + Wiley-lnterscience. + """ + + # Set initial state + att0 = EulerAttitude(theta=0, phi=0, psi=psi) + vel0 = BodyVelocity(u=TAS, v=0, w=0, attitude=att0) + # Full state + state0 = AircraftState(pos0, att0, vel0) + + # Update environment for the current state + environment.update(state0) + + # Create system: dynamic equations will be used to find the controls and + # state which generate no u_dot, v_dot, w_dot, p_dot. q_dot, r_dot + system = EulerFlatEarth(t0=0, full_state=state0) + + # Initialize alpha and beta + # TODO: improve initialization method + alpha0 = 0.05 + beta0 = 0.001 * np.sign(turn_rate) + + # For the current alpha, beta, TAS and env, set the aerodynamics of + # the aircraft (q_inf, CAS, EAS...) + aircraft._calculate_aerodynamics_2(TAS, alpha0, beta0, environment) + + # Initialize controls + for control in aircraft.controls: + if control not in controls: + raise ValueError( + "Control {} not given in initial_controls: {}".format( + control, controls) + ) + else: + aircraft.controls[control] = controls[control] + + # Select the controls that will be trimmed + controls_to_trim = list(aircraft.controls.keys() - exclude) + + # Set the variables for the optimization + initial_guess = [alpha0, beta0] + for control in controls_to_trim: + initial_guess.append(controls[control]) + + # Set bounds for each variable to be optimized + lower_bounds = [-0.5, -0.25] # Alpha and beta upper bounds. + upper_bounds = [+0.5, +0.25] # Alpha and beta lower bounds. + for ii in controls_to_trim: + lower_bounds.append(aircraft.control_limits[ii][0]) + upper_bounds.append(aircraft.control_limits[ii][1]) + bounds = (lower_bounds, upper_bounds) + + args = (system, aircraft, environment, controls_to_trim, gamma, turn_rate) + + # Trim + results = least_squares(trimming_cost_func, + x0=initial_guess, + args=args, + verbose=verbose, + bounds=bounds) + + trimmed_controls = controls + for key, val in zip(controls_to_trim, results[2:]): + trimmed_controls[key] = val + + return system.full_state, trimmed_controls + + def turn_coord_cons(turn_rate, alpha, beta, TAS, gamma=0): """Calculates phi for coordinated turn. """ @@ -69,8 +185,8 @@ def rate_of_climb_cons(gamma, alpha, beta, phi): return theta -def trimming_cost_func(trimmed_params, system, ac, env, controls2trim, - gamma, turn_rate): +def trimming_cost_func(trimmed_params, system, aircraft, environment, + controls2trim, gamma, turn_rate): """Function to optimize """ alpha = trimmed_params[0] @@ -84,7 +200,7 @@ def trimming_cost_func(trimmed_params, system, ac, env, controls2trim, if abs(turn_rate) < 1e-8: phi = 0 else: - phi = turn_coord_cons(turn_rate, alpha, beta, ac.TAS, gamma) + phi = turn_coord_cons(turn_rate, alpha, beta, aircraft.TAS, gamma) # Rate of climb constrain theta = rate_of_climb_cons(gamma, alpha, beta, phi) @@ -96,25 +212,18 @@ def trimming_cost_func(trimmed_params, system, ac, env, controls2trim, q = turn_rate * sin(phi) * cos(theta) r = turn_rate * cos(theta) * sin(phi) - u, v, w = wind2body((ac.TAS, 0, 0), alpha=alpha, beta=beta) - - state = system.model.trim_system_to_dynamic_system_state( - phi, theta, p, q, r, u, v, w) - - system.model.set_initial_state(state) - system.set_full_system_state(ac.mass, ac.inertia, np.zeros(3), np.zeros(3)) - - env.update(system) + u, v, w = wind2body((aircraft.TAS, 0, 0), alpha=alpha, beta=beta) - forces, moments = ac.calculate_forces_and_moments(system, env, new_controls) + psi = system.full_state.attitude.psi + system.full_state.attitude.update(theta, phi, psi) + attitude = system.full_state.attitude - output = system.model._dynamic_system_equations( - time=0, - state_vector=state, - mass=ac.mass, - inertia=ac.inertia, - forces=forces, - moments=moments - ) + system.full_state.attitude.update(theta, phi, psi) + system.full_state.velocity.update(u, v, w, attitude) + system.full_state.angular_vel.update(p, q, r, attitude) + system.full_state.accelertion.update([0, 0, 0], attitude) + system.full_state.angular_accel.update([0, 0, 0], attitude) - return output[:6] + rv = system.trim_fun(system.full_state, environment, aircraft, + controls2trim, system.full_state) + return rv From 87ec80d2437252fbaddff512961eb3863e947a66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Thu, 9 Nov 2017 21:15:22 +0100 Subject: [PATCH 062/104] mistakes, mispelled names... --- src/pyfme/aircrafts/cessna_172.py | 2 +- src/pyfme/models/euler_flat_earth.py | 6 +++--- src/pyfme/models/position.py | 4 ++-- src/pyfme/utils/trimmer.py | 18 ++++++++++-------- 4 files changed, 16 insertions(+), 14 deletions(-) diff --git a/src/pyfme/aircrafts/cessna_172.py b/src/pyfme/aircrafts/cessna_172.py index edaac3d..25a9175 100644 --- a/src/pyfme/aircrafts/cessna_172.py +++ b/src/pyfme/aircrafts/cessna_172.py @@ -255,7 +255,7 @@ def _calculate_aero_lat_forces_moments_coeffs(self, state): alpha_DEG = np.rad2deg(self.alpha) # deg b = self.span V = self.TAS - p, q, r = state.angular_vel.p, state.angualr_vel.q, state.angular_vel.r + p, q, r = state.angular_vel.p, state.angular_vel.q, state.angular_vel.r CY_beta = np.interp(alpha_DEG, self.alpha_data, self.CY_beta_data) CY_p = np.interp(alpha_DEG, self.alpha_data, self.CY_p_data) diff --git a/src/pyfme/models/euler_flat_earth.py b/src/pyfme/models/euler_flat_earth.py index 41538b0..2b5fab1 100644 --- a/src/pyfme/models/euler_flat_earth.py +++ b/src/pyfme/models/euler_flat_earth.py @@ -48,8 +48,8 @@ def trim_fun(self, full_state, environment, aircraft, controls): mass = aircraft.mass inertia = aircraft.inertia - forces = aircraft.forces - moments = aircraft.moments + forces = aircraft.total_forces + moments = aircraft.total_moments t0 = 0 x0 = self._get_state_vector_from_full_state(full_state) @@ -117,7 +117,7 @@ def _get_state_vector_from_full_state(self, full_state): full_state.attitude.psi, full_state.position.x_earth, full_state.position.y_earth, - full_state.position.z_eart + full_state.position.z_earth ] ) return x0 diff --git a/src/pyfme/models/position.py b/src/pyfme/models/position.py index 190cc62..acc6533 100644 --- a/src/pyfme/models/position.py +++ b/src/pyfme/models/position.py @@ -156,6 +156,6 @@ def update(self, value): self._geodetic_coordinates[:] = value -class GeocentricPosition(Position): +# class GeocentricPosition(Position): # TODO: - raise NotImplementedError \ No newline at end of file + # raise NotImplementedError \ No newline at end of file diff --git a/src/pyfme/utils/trimmer.py b/src/pyfme/utils/trimmer.py index 0dd6e55..e7b120b 100644 --- a/src/pyfme/utils/trimmer.py +++ b/src/pyfme/utils/trimmer.py @@ -85,7 +85,7 @@ def trim(aircraft, environment, pos0, psi, TAS, gamma, turn_rate, controls, # Create system: dynamic equations will be used to find the controls and # state which generate no u_dot, v_dot, w_dot, p_dot. q_dot, r_dot - system = EulerFlatEarth(t0=0, full_state=state0) + system = EulerFlatEarth(t0=0, full_state=state0, update=None) # Initialize alpha and beta # TODO: improve initialization method @@ -106,6 +106,9 @@ def trim(aircraft, environment, pos0, psi, TAS, gamma, turn_rate, controls, else: aircraft.controls[control] = controls[control] + if exclude is None: + exclude = [] + # Select the controls that will be trimmed controls_to_trim = list(aircraft.controls.keys() - exclude) @@ -132,7 +135,7 @@ def trim(aircraft, environment, pos0, psi, TAS, gamma, turn_rate, controls, bounds=bounds) trimmed_controls = controls - for key, val in zip(controls_to_trim, results[2:]): + for key, val in zip(controls_to_trim, results.x[2:]): trimmed_controls[key] = val return system.full_state, trimmed_controls @@ -215,15 +218,14 @@ def trimming_cost_func(trimmed_params, system, aircraft, environment, u, v, w = wind2body((aircraft.TAS, 0, 0), alpha=alpha, beta=beta) psi = system.full_state.attitude.psi - system.full_state.attitude.update(theta, phi, psi) + system.full_state.attitude.update([theta, phi, psi]) attitude = system.full_state.attitude - system.full_state.attitude.update(theta, phi, psi) - system.full_state.velocity.update(u, v, w, attitude) - system.full_state.angular_vel.update(p, q, r, attitude) - system.full_state.accelertion.update([0, 0, 0], attitude) + system.full_state.velocity.update([u, v, w], attitude) + system.full_state.angular_vel.update([p, q, r], attitude) + system.full_state.acceleration.update([0, 0, 0], attitude) system.full_state.angular_accel.update([0, 0, 0], attitude) rv = system.trim_fun(system.full_state, environment, aircraft, - controls2trim, system.full_state) + new_controls) return rv From 5b534d77f826699fccb47ed9e330a7e1369b0756 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Thu, 9 Nov 2017 21:39:47 +0100 Subject: [PATCH 063/104] added __repr__ --- src/pyfme/models/acceleration.py | 5 +++++ src/pyfme/models/angular_acceleration.py | 5 +++++ src/pyfme/models/angular_velocity.py | 3 +++ src/pyfme/models/attitude.py | 5 +++++ src/pyfme/models/dynamic_system.py | 14 ++++++++++++-- src/pyfme/models/position.py | 5 +++++ src/pyfme/models/velocity.py | 3 +++ 7 files changed, 38 insertions(+), 2 deletions(-) diff --git a/src/pyfme/models/acceleration.py b/src/pyfme/models/acceleration.py index 9430c26..7a8f767 100644 --- a/src/pyfme/models/acceleration.py +++ b/src/pyfme/models/acceleration.py @@ -83,6 +83,11 @@ def update(self, coords, attitude): # TODO: transform body vel to horizon vel using attitude self._accel_NED = np.zeros(3) # m/s + def __repr__(self): + rv = (f"u_dot: {self.u_dot} m/s², v_dot: {self.v_dot} m/s², " + f"w_dot: {self.u_dot} m/s²") + return rv + class NEDAcceleration(Acceleration): diff --git a/src/pyfme/models/angular_acceleration.py b/src/pyfme/models/angular_acceleration.py index 6173e40..64f6b36 100644 --- a/src/pyfme/models/angular_acceleration.py +++ b/src/pyfme/models/angular_acceleration.py @@ -84,6 +84,11 @@ def update(self, coords, attitude): # acc self._euler_ang_acc = np.zeros(3) # rad/s + def __repr__(self): + rv = (f"P_dot: {self.p_dot} m/s², Q_dot: {self.q_dot} m/s², " + f"R_dot: {self.r_dot} m/s²") + return rv + class EulerAngularAcceleration(AngularAcceleration): diff --git a/src/pyfme/models/angular_velocity.py b/src/pyfme/models/angular_velocity.py index 13a6658..9653383 100644 --- a/src/pyfme/models/angular_velocity.py +++ b/src/pyfme/models/angular_velocity.py @@ -83,6 +83,9 @@ def update(self, coords, attitude): # rates self._euler_ang_rate = np.zeros(3) # rad/s + def __repr__(self): + return f"P: {self.p} rad/s, Q: {self.q} rad/s, R: {self.r} rad/s" + class EulerAngularRates(AngularVelocity): diff --git a/src/pyfme/models/attitude.py b/src/pyfme/models/attitude.py index cf7c5e8..8ebd0fa 100644 --- a/src/pyfme/models/attitude.py +++ b/src/pyfme/models/attitude.py @@ -91,6 +91,11 @@ def update(self, value): # TODO: transform quaternions to Euler angles self._quaternions = np.zeros(4) + def __repr__(self): + rv = (f"theta: {self.theta} rad, phi: {self.phi} rad, " + f"psi: {self.psi} rad") + return rv + class QuaternionAttitude(Attitude): def __init__(self, q0, q1, q2, q3): diff --git a/src/pyfme/models/dynamic_system.py b/src/pyfme/models/dynamic_system.py index d8833ca..65c9089 100644 --- a/src/pyfme/models/dynamic_system.py +++ b/src/pyfme/models/dynamic_system.py @@ -198,7 +198,6 @@ def fun_wrapped(self, t, x): class AircraftDynamicSystem(DynamicSystem): - def __init__(self, t0, full_state, update, method='Rk45', options=None): x0 = self._get_state_vector_from_full_state(full_state) self.full_state = self._adapt_full_state_to_dynamic_system(full_state) @@ -233,7 +232,6 @@ def time_step(self, dt): class AircraftState: - def __init__(self, position, attitude, velocity, angular_vel=None, acceleration=None, angular_accel=None): @@ -251,3 +249,15 @@ def __init__(self, position, attitude, velocity, angular_vel=None, self.angular_vel = angular_vel self.acceleration = acceleration self.angular_accel = angular_accel + + def __repr__(self): + rv = ( + "Aircraft State \n" + f"{self.position} \n" + f"{self.attitude} \n" + f"{self.velocity} \n" + f"{self.angular_vel} \n" + f"{self.acceleration} \n" + f"{self.angular_accel} \n" + ) + return rv diff --git a/src/pyfme/models/position.py b/src/pyfme/models/position.py index acc6533..663fad4 100644 --- a/src/pyfme/models/position.py +++ b/src/pyfme/models/position.py @@ -127,6 +127,11 @@ def update(self, value): # Update Earth coordinates with value self._earth_coordinates[:] = value + def __repr__(self): + rv = (f"x_e: {self.x_earth} m, y_e: {self.y_earth} m, " + f"z_e: {self.z_earth} m") + return rv + class GeodeticPosition(Position): diff --git a/src/pyfme/models/velocity.py b/src/pyfme/models/velocity.py index 852db6b..e5d021a 100644 --- a/src/pyfme/models/velocity.py +++ b/src/pyfme/models/velocity.py @@ -90,6 +90,9 @@ def update(self, value, attitude): # TODO: transform body vel to horizon vel using attitude self._vel_NED = np.zeros(3) # m/s + def __repr__(self): + return f"u: {self.u} m/s, v: {self.v} m/s, w: {self.w} m/s" + class NEDVelocity(Velocity): def __init__(self, vn, ve, vd, attitude): From 31c950a63610763b2e898bd352e544f8bc9a45e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Thu, 9 Nov 2017 21:40:29 +0100 Subject: [PATCH 064/104] setting accelerations after trimming to check they are close to 0 --- src/pyfme/utils/trimmer.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/pyfme/utils/trimmer.py b/src/pyfme/utils/trimmer.py index e7b120b..fa4f415 100644 --- a/src/pyfme/utils/trimmer.py +++ b/src/pyfme/utils/trimmer.py @@ -134,6 +134,13 @@ def trim(aircraft, environment, pos0, psi, TAS, gamma, turn_rate, controls, verbose=verbose, bounds=bounds) + # Residuals: last trim_function evaluation + u_dot, v_dot, w_dot, p_dot, q_dot, r_dot = results.fun + + att = system.full_state.attitude + system.full_state.acceleration.update([u_dot, v_dot, w_dot], att) + system.full_state.angular_accel.update([p_dot, q_dot, r_dot], att) + trimmed_controls = controls for key, val in zip(controls_to_trim, results.x[2:]): trimmed_controls[key] = val From 326b1dfe2fca002fd917c1f695aba3aa04382fff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Thu, 9 Nov 2017 21:49:49 +0100 Subject: [PATCH 065/104] typo --- src/pyfme/models/dynamic_system.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pyfme/models/dynamic_system.py b/src/pyfme/models/dynamic_system.py index 65c9089..fc91b63 100644 --- a/src/pyfme/models/dynamic_system.py +++ b/src/pyfme/models/dynamic_system.py @@ -190,7 +190,7 @@ def fun(self, t, x): raise NotImplementedError def fun_wrapped(self, t, x): - # First way that comes to my mind in order to store the derivates + # First way that comes to my mind in order to store the derivatives # that are useful for full_state calculation state_dot = self.fun(t, x) self._state_vector_dot = state_dot From 3a2e116a20dd3c615a51ca2101aa68c448179804 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Thu, 9 Nov 2017 21:52:39 +0100 Subject: [PATCH 066/104] state updates were missing attitude --- src/pyfme/models/euler_flat_earth.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/pyfme/models/euler_flat_earth.py b/src/pyfme/models/euler_flat_earth.py index 2b5fab1..0bf9095 100644 --- a/src/pyfme/models/euler_flat_earth.py +++ b/src/pyfme/models/euler_flat_earth.py @@ -59,13 +59,14 @@ def trim_fun(self, full_state, environment, aircraft, controls): def _update_full_system_state_from_state(self, state, state_dot): - self.full_state.velocity.update(state[0:3]) - self.full_state.angular_vel.update(state[3:6]) - self.full_state.attitude.update(state[6:9]) self.full_state.position.update(state[9:12]) + self.full_state.attitude.update(state[6:9]) + att = self.full_state.attitude + self.full_state.velocity.update(state[0:3], att) + self.full_state.angular_vel.update(state[3:6], att) - self.full_state.acceleration.update(state_dot[0:3]) - self.full_state.angular_accel.update(state_dot[3:6]) + self.full_state.acceleration.update(state_dot[0:3], att) + self.full_state.angular_accel.update(state_dot[3:6], att) def _adapt_full_state_to_dynamic_system(self, full_state): From c6576f9e8d4b887638230628767f3c44ce04fcb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Thu, 9 Nov 2017 21:55:21 +0100 Subject: [PATCH 067/104] typo angular accelerations units are rad/s2 --- src/pyfme/models/angular_acceleration.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pyfme/models/angular_acceleration.py b/src/pyfme/models/angular_acceleration.py index 64f6b36..d956ff5 100644 --- a/src/pyfme/models/angular_acceleration.py +++ b/src/pyfme/models/angular_acceleration.py @@ -85,8 +85,8 @@ def update(self, coords, attitude): self._euler_ang_acc = np.zeros(3) # rad/s def __repr__(self): - rv = (f"P_dot: {self.p_dot} m/s², Q_dot: {self.q_dot} m/s², " - f"R_dot: {self.r_dot} m/s²") + rv = (f"P_dot: {self.p_dot} rad/s², Q_dot: {self.q_dot} rad/s², " + f"R_dot: {self.r_dot} rad/s²") return rv From 7eb052ae45c6f7fe7a22f8abb380e86a4d400095 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Thu, 9 Nov 2017 22:12:04 +0100 Subject: [PATCH 068/104] update function for integration is not given in the init --- src/pyfme/models/dynamic_system.py | 4 ++-- src/pyfme/utils/trimmer.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/pyfme/models/dynamic_system.py b/src/pyfme/models/dynamic_system.py index fc91b63..a035930 100644 --- a/src/pyfme/models/dynamic_system.py +++ b/src/pyfme/models/dynamic_system.py @@ -198,13 +198,13 @@ def fun_wrapped(self, t, x): class AircraftDynamicSystem(DynamicSystem): - def __init__(self, t0, full_state, update, method='Rk45', options=None): + def __init__(self, t0, full_state, method='Rk45', options=None): x0 = self._get_state_vector_from_full_state(full_state) self.full_state = self._adapt_full_state_to_dynamic_system(full_state) super().__init__(t0, x0, method=method, options=options) - self.update_simulation = update + self.update_simulation = None @abstractmethod def _adapt_full_state_to_dynamic_system(self, full_state): diff --git a/src/pyfme/utils/trimmer.py b/src/pyfme/utils/trimmer.py index fa4f415..7fa3395 100644 --- a/src/pyfme/utils/trimmer.py +++ b/src/pyfme/utils/trimmer.py @@ -85,7 +85,7 @@ def trim(aircraft, environment, pos0, psi, TAS, gamma, turn_rate, controls, # Create system: dynamic equations will be used to find the controls and # state which generate no u_dot, v_dot, w_dot, p_dot. q_dot, r_dot - system = EulerFlatEarth(t0=0, full_state=state0, update=None) + system = EulerFlatEarth(t0=0, full_state=state0) # Initialize alpha and beta # TODO: improve initialization method From f9687324dd0287467d80244a88d9ea0b27977e99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Thu, 9 Nov 2017 22:15:57 +0100 Subject: [PATCH 069/104] default integrator was misspelled --- src/pyfme/models/dynamic_system.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pyfme/models/dynamic_system.py b/src/pyfme/models/dynamic_system.py index a035930..472ac5e 100644 --- a/src/pyfme/models/dynamic_system.py +++ b/src/pyfme/models/dynamic_system.py @@ -39,7 +39,7 @@ class DynamicSystem: Dynamic system equations """ - def __init__(self, t0, x0, method='Rk45', options=None): + def __init__(self, t0, x0, method='RK45', options=None): """ Dynamic system Parameters @@ -198,7 +198,7 @@ def fun_wrapped(self, t, x): class AircraftDynamicSystem(DynamicSystem): - def __init__(self, t0, full_state, method='Rk45', options=None): + def __init__(self, t0, full_state, method='RK45', options=None): x0 = self._get_state_vector_from_full_state(full_state) self.full_state = self._adapt_full_state_to_dynamic_system(full_state) From 71c2595119be240e899555774e63d4f24592945f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Thu, 9 Nov 2017 22:38:56 +0100 Subject: [PATCH 070/104] aircraft has total_forces and total_moments not forces and moments --- src/pyfme/models/euler_flat_earth.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pyfme/models/euler_flat_earth.py b/src/pyfme/models/euler_flat_earth.py index 0bf9095..ebfaf6c 100644 --- a/src/pyfme/models/euler_flat_earth.py +++ b/src/pyfme/models/euler_flat_earth.py @@ -34,8 +34,8 @@ def fun(self, t, x): mass = updated_simulation.aircraft.mass inertia = updated_simulation.aircraft.inertia - forces = updated_simulation.aircraft.forces - moments = updated_simulation.aircraft.moments + forces = updated_simulation.aircraft.total_forces + moments = updated_simulation.aircraft.total_moments rv = _system_equations(t, x, mass, inertia, forces, moments) From 4715173c8d0c3dc40419128e51b127c7cc3f7bf3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Thu, 9 Nov 2017 22:39:42 +0100 Subject: [PATCH 071/104] height is correctly set and not with negative sign --- src/pyfme/models/position.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pyfme/models/position.py b/src/pyfme/models/position.py index 663fad4..1e795c9 100644 --- a/src/pyfme/models/position.py +++ b/src/pyfme/models/position.py @@ -119,7 +119,7 @@ def update(self, value): delta_lat = delta_x / EARTH_MEAN_RADIUS delta_lon = delta_y / EARTH_MEAN_RADIUS self._geodetic_coordinates = \ - np.array([self.lat + delta_lat, self.lon + delta_lon, value[2]]) + np.array([self.lat + delta_lat, self.lon + delta_lon, -value[2]]) # TODO: make transformation from geodetic to geocentric: self._geocentric_coordinates = np.zeros(3) # m From 687c075c6df66fb1587f499c0abe2484abbc4f01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Thu, 9 Nov 2017 23:21:23 +0100 Subject: [PATCH 072/104] adapted simulator to new structure --- src/pyfme/simulator.py | 139 ++++++++++++++--------------------------- 1 file changed, 47 insertions(+), 92 deletions(-) diff --git a/src/pyfme/simulator.py b/src/pyfme/simulator.py index af6fb3d..f1837f8 100644 --- a/src/pyfme/simulator.py +++ b/src/pyfme/simulator.py @@ -18,7 +18,7 @@ from pyfme.utils.trimmer import trimming_cost_func -class Simulation(object): +class Simulation: """ Simulation class stores the simulation configuration, aircraft, system and environment. It provides methods for simulation running and results @@ -47,7 +47,7 @@ class Simulation(object): 'pressure': 'environment.p', 'rho': 'environment.rho', 'a': 'environment.a', - 'h': 'system.height', + 'h': 'system.full_state.position.height', 'Fx': 'aircraft.Fx', 'Fy': 'aircraft.Fy', 'Fz': 'aircraft.Fz', @@ -63,25 +63,25 @@ class Simulation(object): 'aileron': 'aircraft.delta_aileron', 'elevator': 'aircraft.delta_elevator', 'thrust': 'aircraft.delta_t', - 'x_earth': 'system.x_earth', # system - 'y_earth': 'system.y_earth', - 'z_earth': 'system.z_earth', - 'height': 'system.height', - 'psi': 'system.psi', - 'theta': 'system.theta', - 'phi': 'system.phi', - 'u': 'system.u', - 'v': 'system.v', - 'w': 'system.w', - 'v_north': 'system.v_north', - 'v_east': 'system.v_east', - 'v_down': 'system.v_down', - 'p': 'system.p', - 'q': 'system.q', - 'r': 'system.r' + 'x_earth': 'system.full_state.position.x_earth', # system + 'y_earth': 'system.full_state.position.y_earth', + 'z_earth': 'system.full_state.position.z_earth', + 'height': 'system.full_state.position.height', + 'psi': 'system.full_state.attitude.psi', + 'theta': 'system.full_state.attitude.theta', + 'phi': 'system.full_state.attitude.phi', + 'u': 'system.full_state.velocity.u', + 'v': 'system.full_state.velocity.v', + 'w': 'system.full_state.velocity.w', + 'v_north': 'system.full_state.velocity.v_north', + 'v_east': 'system.full_state.velocity.v_east', + 'v_down': 'system.full_state.velocity.v_down', + 'p': 'system.full_state.angular_vel.p', + 'q': 'system.full_state.angular_vel.q', + 'r': 'system.full_state.angular_vel.r' } - def __init__(self, aircraft, system, environment, save_vars=None): + def __init__(self, aircraft, system, environment, dt=0.01, save_vars=None): """ Simulation object @@ -99,25 +99,32 @@ def __init__(self, aircraft, system, environment, save_vars=None): ones set in `_defaul_save_vars` are used. """ self.system = system - - # This wrap is necessary in order the respect the arguments passed - # by the integration method: time, state (without self). - update_fun = lambda time, state: self._time_step(time, state) - self.system.model.set_forcing_terms(update_fun) - - save_fun = lambda time, state: self._save_time_step() - self.system.model.set_solout(save_fun) - self.aircraft = aircraft self.environment = environment + self.system.update_simulation = self.update + self.controls = {} + self.dt = 0.01 + if not save_vars: self._save_vars = self._default_save_vars # Initialize results structure self.results = {name: [] for name in self._save_vars} + def update(self, time, state): + self.environment.update(state) + + controls = self._get_current_controls(time) + + self.aircraft.calculate_forces_and_moments( + state, + self.environment, + controls + ) + return self + def propagate(self, time): """Run the simulation by integrating the system until time t. @@ -132,73 +139,21 @@ def propagate(self, time): method, so that the number and length of the time steps is automatically chosen. """ + dt = self.dt + + while self.system.time <= time: + t = self.system.time + self.environment.update(self.system.full_state) + controls = self._get_current_controls(t) + self.aircraft.calculate_forces_and_moments(self.system.full_state, + self.environment, + controls) + self.system.time_step(dt) + self._save_time_step() - self.environment.update(self.system) - - t0 = self.system.time - - controls0 = self._get_current_controls(t0) - mass0, inertia0 = self.aircraft.mass, self.aircraft.inertia - forces, moments = self.aircraft.calculate_forces_and_moments( - self.system, self.environment, controls0) - - self.system.model.propagate(time, mass0, inertia0, forces, moments) - - # self.results is a dictionary of lists in order to append results - # of each time step. Due to dense output of the integrator, - # the number of time steps cannot be known in advance. - # Once the integration has finished it can be transformed into a - # DataFrame time = self.results.pop('time') - self.results = pd.DataFrame(self.results, index=time) - self.results.index.name = 'time' - - def _time_step(self, time, state): - """Actions performed at each time step. This method is used as - callback in the integration process. - - Parameters - ---------- - time : float - Current time value - state : ndarray - System state at the given time step - - Notes - ----- - At each time step: - * the full system state is updated given the model state, - * the environment is updated given the current system, - * the aircraft controls for the current time step are set - * forces and moments for the current state, environment and controls - are calculated. - * the selected variables are saved. - """ - self.system.model.time = time - - forces = self.aircraft.total_forces - moments = self.aircraft.total_moments - mass = self.aircraft.mass - inertia = self.aircraft.inertia - self.system.model.state = state - self.system.set_full_system_state(mass, inertia, forces, moments) - - self.environment.update(self.system) - - # TODO: take into account that if the controls are not time - # functions (ie. control system or AP are activated) the function - # signature must be changed. - controls = self._get_current_controls(time) - - forces, moments = self.aircraft.calculate_forces_and_moments( - self.system, - self.environment, - controls - ) - - # self._save_time_step() - return mass, inertia, forces, moments + return pd.DataFrame(self.results, index=time) def _save_time_step(self): """Saves the selected variables for the current system, environment From 52596d7afd5f1349d8f4b848dbc25b0d5f67e796 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Fri, 10 Nov 2017 19:26:54 +0100 Subject: [PATCH 073/104] moved state to a submodule inside models --- src/pyfme/models/__init__.py | 2 +- src/pyfme/models/dynamic_system.py | 36 --------------- src/pyfme/models/euler_flat_earth.py | 12 ++--- src/pyfme/models/state/__init__.py | 19 ++++++++ src/pyfme/models/{ => state}/acceleration.py | 0 src/pyfme/models/state/aircraft_state.py | 46 +++++++++++++++++++ .../{ => state}/angular_acceleration.py | 0 .../models/{ => state}/angular_velocity.py | 0 src/pyfme/models/{ => state}/attitude.py | 0 src/pyfme/models/{ => state}/position.py | 0 src/pyfme/models/{ => state}/velocity.py | 0 src/pyfme/utils/trimmer.py | 4 +- 12 files changed, 72 insertions(+), 47 deletions(-) create mode 100644 src/pyfme/models/state/__init__.py rename src/pyfme/models/{ => state}/acceleration.py (100%) create mode 100644 src/pyfme/models/state/aircraft_state.py rename src/pyfme/models/{ => state}/angular_acceleration.py (100%) rename src/pyfme/models/{ => state}/angular_velocity.py (100%) rename src/pyfme/models/{ => state}/attitude.py (100%) rename src/pyfme/models/{ => state}/position.py (100%) rename src/pyfme/models/{ => state}/velocity.py (100%) diff --git a/src/pyfme/models/__init__.py b/src/pyfme/models/__init__.py index aeeee6f..2f1951d 100644 --- a/src/pyfme/models/__init__.py +++ b/src/pyfme/models/__init__.py @@ -1 +1 @@ -from pyfme.models.euler_flat_earth import EulerFlatEarth +from .euler_flat_earth import EulerFlatEarth diff --git a/src/pyfme/models/dynamic_system.py b/src/pyfme/models/dynamic_system.py index 472ac5e..3383ba6 100644 --- a/src/pyfme/models/dynamic_system.py +++ b/src/pyfme/models/dynamic_system.py @@ -15,10 +15,6 @@ import numpy as np from scipy.integrate import solve_ivp -from pyfme.models.acceleration import BodyAcceleration -from pyfme.models.angular_acceleration import BodyAngularAcceleration -from pyfme.models.angular_velocity import BodyAngularVelocity - class DynamicSystem: """Dynamic system class to integrate initial value problems numerically. @@ -229,35 +225,3 @@ def time_step(self, dt): self.state_vector_dot) return self.full_state - - -class AircraftState: - def __init__(self, position, attitude, velocity, angular_vel=None, - acceleration=None, angular_accel=None): - - self.position = position - self.attitude = attitude - self.velocity = velocity - - if angular_vel is None: - angular_vel = BodyAngularVelocity(0, 0, 0, attitude) - if acceleration is None: - acceleration = BodyAcceleration(0, 0, 0, attitude) - if angular_accel is None: - angular_accel = BodyAngularAcceleration(0, 0, 0, attitude) - - self.angular_vel = angular_vel - self.acceleration = acceleration - self.angular_accel = angular_accel - - def __repr__(self): - rv = ( - "Aircraft State \n" - f"{self.position} \n" - f"{self.attitude} \n" - f"{self.velocity} \n" - f"{self.angular_vel} \n" - f"{self.acceleration} \n" - f"{self.angular_accel} \n" - ) - return rv diff --git a/src/pyfme/models/euler_flat_earth.py b/src/pyfme/models/euler_flat_earth.py index ebfaf6c..cb50eb7 100644 --- a/src/pyfme/models/euler_flat_earth.py +++ b/src/pyfme/models/euler_flat_earth.py @@ -16,13 +16,11 @@ import numpy as np from numpy import sin, cos -from pyfme.models.acceleration import BodyAcceleration -from pyfme.models.angular_acceleration import BodyAngularAcceleration -from pyfme.models.angular_velocity import BodyAngularVelocity -from pyfme.models.attitude import EulerAttitude -from pyfme.models.dynamic_system import AircraftDynamicSystem, AircraftState -from pyfme.models.position import EarthPosition -from pyfme.models.velocity import BodyVelocity +from pyfme.models.dynamic_system import AircraftDynamicSystem +from pyfme.models.state import ( + AircraftState, EarthPosition, EulerAttitude, BodyVelocity, + BodyAngularVelocity, BodyAcceleration, BodyAngularAcceleration +) class EulerFlatEarth(AircraftDynamicSystem): diff --git a/src/pyfme/models/state/__init__.py b/src/pyfme/models/state/__init__.py new file mode 100644 index 0000000..bf5c0f2 --- /dev/null +++ b/src/pyfme/models/state/__init__.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +""" +Python Flight Mechanics Engine (PyFME). +Copyright (c) AeroPython Development Team. +Distributed under the terms of the MIT License. + +Title +----- + +""" +from .aircraft_state import AircraftState + +from .position import EarthPosition, GeodeticPosition +from .attitude import EulerAttitude, QuaternionAttitude +from .velocity import BodyVelocity, NEDVelocity +from .acceleration import BodyAcceleration, NEDAcceleration +from .angular_velocity import BodyAngularVelocity, EulerAngularRates +from .angular_acceleration import (BodyAngularAcceleration, + EulerAngularAcceleration) \ No newline at end of file diff --git a/src/pyfme/models/acceleration.py b/src/pyfme/models/state/acceleration.py similarity index 100% rename from src/pyfme/models/acceleration.py rename to src/pyfme/models/state/acceleration.py diff --git a/src/pyfme/models/state/aircraft_state.py b/src/pyfme/models/state/aircraft_state.py new file mode 100644 index 0000000..e7eff90 --- /dev/null +++ b/src/pyfme/models/state/aircraft_state.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +""" +Python Flight Mechanics Engine (PyFME). +Copyright (c) AeroPython Development Team. +Distributed under the terms of the MIT License. + +Aircraft State +-------------- + +""" + +from .angular_velocity import BodyAngularVelocity +from .acceleration import BodyAcceleration +from .angular_acceleration import BodyAngularAcceleration + + +class AircraftState: + def __init__(self, position, attitude, velocity, angular_vel=None, + acceleration=None, angular_accel=None): + + self.position = position + self.attitude = attitude + self.velocity = velocity + + if angular_vel is None: + angular_vel = BodyAngularVelocity(0, 0, 0, attitude) + if acceleration is None: + acceleration = BodyAcceleration(0, 0, 0, attitude) + if angular_accel is None: + angular_accel = BodyAngularAcceleration(0, 0, 0, attitude) + + self.angular_vel = angular_vel + self.acceleration = acceleration + self.angular_accel = angular_accel + + def __repr__(self): + rv = ( + "Aircraft State \n" + f"{self.position} \n" + f"{self.attitude} \n" + f"{self.velocity} \n" + f"{self.angular_vel} \n" + f"{self.acceleration} \n" + f"{self.angular_accel} \n" + ) + return rv diff --git a/src/pyfme/models/angular_acceleration.py b/src/pyfme/models/state/angular_acceleration.py similarity index 100% rename from src/pyfme/models/angular_acceleration.py rename to src/pyfme/models/state/angular_acceleration.py diff --git a/src/pyfme/models/angular_velocity.py b/src/pyfme/models/state/angular_velocity.py similarity index 100% rename from src/pyfme/models/angular_velocity.py rename to src/pyfme/models/state/angular_velocity.py diff --git a/src/pyfme/models/attitude.py b/src/pyfme/models/state/attitude.py similarity index 100% rename from src/pyfme/models/attitude.py rename to src/pyfme/models/state/attitude.py diff --git a/src/pyfme/models/position.py b/src/pyfme/models/state/position.py similarity index 100% rename from src/pyfme/models/position.py rename to src/pyfme/models/state/position.py diff --git a/src/pyfme/models/velocity.py b/src/pyfme/models/state/velocity.py similarity index 100% rename from src/pyfme/models/velocity.py rename to src/pyfme/models/state/velocity.py diff --git a/src/pyfme/utils/trimmer.py b/src/pyfme/utils/trimmer.py index 7fa3395..b8a2c8f 100644 --- a/src/pyfme/utils/trimmer.py +++ b/src/pyfme/utils/trimmer.py @@ -20,9 +20,7 @@ from scipy.optimize import least_squares from pyfme.models import EulerFlatEarth -from pyfme.models.attitude import EulerAttitude -from pyfme.models.dynamic_system import AircraftState -from pyfme.models.velocity import BodyVelocity +from pyfme.models.state import AircraftState, EulerAttitude, BodyVelocity from pyfme.utils.coordinates import wind2body from pyfme.models.constants import GRAVITY From ec5c0226d16256e6807696f455a0606f26e01a64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Fri, 10 Nov 2017 19:35:30 +0100 Subject: [PATCH 074/104] completed velocity with changes of reference frame --- src/pyfme/models/state/velocity.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/pyfme/models/state/velocity.py b/src/pyfme/models/state/velocity.py index e5d021a..452e9a1 100644 --- a/src/pyfme/models/state/velocity.py +++ b/src/pyfme/models/state/velocity.py @@ -17,6 +17,9 @@ # velocity, accelerations... # If also changes from attitude of elements in the body (such as sensors) to # body and horizon coordinates are implemented it would be useful! +from pyfme.utils.coordinates import body2hor, hor2body + + class Velocity: """Velocity @@ -87,8 +90,10 @@ def __init__(self, u, v, w, attitude): def update(self, value, attitude): self._vel_body[:] = value - # TODO: transform body vel to horizon vel using attitude - self._vel_NED = np.zeros(3) # m/s + self._vel_NED = body2hor(value, + attitude.theta, + attitude.phi, + attitude.psi) # m/s def __repr__(self): return f"u: {self.u} m/s, v: {self.v} m/s, w: {self.w} m/s" @@ -102,5 +107,12 @@ def __init__(self, vn, ve, vd, attitude): def update(self, value, attitude): self._vel_NED[:] = value - # TODO: transform horizon vel to body vel using attitude - self._vel_body = np.zeros(3) # m/s \ No newline at end of file + self._vel_body = hor2body(value, + attitude.theta, + attitude.phi, + attitude.psi) # m/s + + def __repr__(self): + return (f"V_north: {self.v_north} m/s," + f"V_east: {self.v_east} m/s, " + f"V_down: {self.v_down} m/s") From 3d999847301417494008a7d7c1e3ee797ba61905 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Fri, 10 Nov 2017 19:42:19 +0100 Subject: [PATCH 075/104] completed changes of reference frame in acceleration --- src/pyfme/models/state/acceleration.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/pyfme/models/state/acceleration.py b/src/pyfme/models/state/acceleration.py index 7a8f767..3699910 100644 --- a/src/pyfme/models/state/acceleration.py +++ b/src/pyfme/models/state/acceleration.py @@ -11,6 +11,8 @@ import numpy as np +from pyfme.utils.coordinates import body2hor, hor2body + class Acceleration: """Acceleration @@ -80,8 +82,10 @@ def __init__(self, u_dot, v_dot, w_dot, attitude): def update(self, coords, attitude): self._accel_body[:] = coords - # TODO: transform body vel to horizon vel using attitude - self._accel_NED = np.zeros(3) # m/s + self._accel_NED = body2hor(coords, + attitude.theta, + attitude.phi, + attitude.psi) def __repr__(self): rv = (f"u_dot: {self.u_dot} m/s², v_dot: {self.v_dot} m/s², " @@ -97,5 +101,13 @@ def __init__(self, vn_dot, ve_dot, vd_dot, attitude): def update(self, coords, attitude): self._accel_NED[:] = coords - # TODO: transform horizon vel to body vel using attitude - self._accel_body = np.zeros(3) # m/s \ No newline at end of file + self._accel_body = hor2body(coords, + attitude.theta, + attitude.phi, + attitude.psi) + + def __repr__(self): + rv = (f"V_north_dot: {self.v_north_dot} m/s², " + f"V_east_dot: {self.v_east_dot} m/s², " + f"V_down_dot: {self.v_down_dot} m/s²") + return rv From 312faf89fbcf5446fd26edabf4127e077a225efc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Fri, 10 Nov 2017 20:22:48 +0100 Subject: [PATCH 076/104] minor changes --- src/pyfme/models/dynamic_system.py | 3 ++- src/pyfme/models/state/attitude.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/pyfme/models/dynamic_system.py b/src/pyfme/models/dynamic_system.py index 3383ba6..411d738 100644 --- a/src/pyfme/models/dynamic_system.py +++ b/src/pyfme/models/dynamic_system.py @@ -121,7 +121,8 @@ def integrate(self, t_end, t_eval=None, dense_output=True): True if the solver reached the interval end or a termination event occurred (status >= 0). """ - # TODO: intended to return the whole integration history + # TODO: this mehtod is intended to return the whole integration history + # meanwhile, only time_step is called # How dos it update the full system? x0 = self.state_vector t_ini = self.time diff --git a/src/pyfme/models/state/attitude.py b/src/pyfme/models/state/attitude.py index 8ebd0fa..37befb6 100644 --- a/src/pyfme/models/state/attitude.py +++ b/src/pyfme/models/state/attitude.py @@ -106,4 +106,4 @@ def __init__(self, q0, q1, q2, q3): def update(self, value): self._quaternions[:] = value # TODO: transform quaternions to Euler angles - self._euler_angles = np.zeros(3) \ No newline at end of file + self._euler_angles = np.zeros(3) From 6f55859cf0d830361c98cabf4577a5d8451ac161 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Fri, 10 Nov 2017 20:41:48 +0100 Subject: [PATCH 077/104] format to state output: number of decimals --- src/pyfme/models/state/acceleration.py | 10 +++++----- src/pyfme/models/state/angular_acceleration.py | 5 +++-- src/pyfme/models/state/angular_velocity.py | 4 +++- src/pyfme/models/state/attitude.py | 4 ++-- src/pyfme/models/state/position.py | 4 ++-- src/pyfme/models/state/velocity.py | 8 ++++---- 6 files changed, 19 insertions(+), 16 deletions(-) diff --git a/src/pyfme/models/state/acceleration.py b/src/pyfme/models/state/acceleration.py index 3699910..33a2a1c 100644 --- a/src/pyfme/models/state/acceleration.py +++ b/src/pyfme/models/state/acceleration.py @@ -88,8 +88,8 @@ def update(self, coords, attitude): attitude.psi) def __repr__(self): - rv = (f"u_dot: {self.u_dot} m/s², v_dot: {self.v_dot} m/s², " - f"w_dot: {self.u_dot} m/s²") + rv = (f"u_dot: {self.u_dot:.2f} m/s², v_dot: {self.v_dot:.2f} m/s², " + f"w_dot: {self.u_dot:.2f} m/s²") return rv @@ -107,7 +107,7 @@ def update(self, coords, attitude): attitude.psi) def __repr__(self): - rv = (f"V_north_dot: {self.v_north_dot} m/s², " - f"V_east_dot: {self.v_east_dot} m/s², " - f"V_down_dot: {self.v_down_dot} m/s²") + rv = (f"V_north_dot: {self.v_north_dot:.2f} m/s², " + f"V_east_dot: {self.v_east_dot:.2f} m/s², " + f"V_down_dot: {self.v_down_dot:.2f} m/s²") return rv diff --git a/src/pyfme/models/state/angular_acceleration.py b/src/pyfme/models/state/angular_acceleration.py index d956ff5..3538269 100644 --- a/src/pyfme/models/state/angular_acceleration.py +++ b/src/pyfme/models/state/angular_acceleration.py @@ -85,8 +85,9 @@ def update(self, coords, attitude): self._euler_ang_acc = np.zeros(3) # rad/s def __repr__(self): - rv = (f"P_dot: {self.p_dot} rad/s², Q_dot: {self.q_dot} rad/s², " - f"R_dot: {self.r_dot} rad/s²") + rv = (f"P_dot: {self.p_dot:.2f} rad/s², " + f"Q_dot: {self.q_dot:.2f} rad/s², " + f"R_dot: {self.r_dot:.2f} rad/s²") return rv diff --git a/src/pyfme/models/state/angular_velocity.py b/src/pyfme/models/state/angular_velocity.py index 9653383..4d3c56e 100644 --- a/src/pyfme/models/state/angular_velocity.py +++ b/src/pyfme/models/state/angular_velocity.py @@ -84,7 +84,9 @@ def update(self, coords, attitude): self._euler_ang_rate = np.zeros(3) # rad/s def __repr__(self): - return f"P: {self.p} rad/s, Q: {self.q} rad/s, R: {self.r} rad/s" + return (f"P: {self.p:.2f} rad/s, " + f"Q: {self.q:.2f} rad/s, " + f"R: {self.r:.2f} rad/s") class EulerAngularRates(AngularVelocity): diff --git a/src/pyfme/models/state/attitude.py b/src/pyfme/models/state/attitude.py index 37befb6..2d2d288 100644 --- a/src/pyfme/models/state/attitude.py +++ b/src/pyfme/models/state/attitude.py @@ -92,8 +92,8 @@ def update(self, value): self._quaternions = np.zeros(4) def __repr__(self): - rv = (f"theta: {self.theta} rad, phi: {self.phi} rad, " - f"psi: {self.psi} rad") + rv = (f"theta: {self.theta:.3f} rad, phi: {self.phi:.3f} rad, " + f"psi: {self.psi:.3f} rad") return rv diff --git a/src/pyfme/models/state/position.py b/src/pyfme/models/state/position.py index 1e795c9..5f4cf37 100644 --- a/src/pyfme/models/state/position.py +++ b/src/pyfme/models/state/position.py @@ -128,8 +128,8 @@ def update(self, value): self._earth_coordinates[:] = value def __repr__(self): - rv = (f"x_e: {self.x_earth} m, y_e: {self.y_earth} m, " - f"z_e: {self.z_earth} m") + rv = (f"x_e: {self.x_earth:.2f} m, y_e: {self.y_earth:.2f} m, " + f"z_e: {self.z_earth:.2f} m") return rv diff --git a/src/pyfme/models/state/velocity.py b/src/pyfme/models/state/velocity.py index 452e9a1..cef0328 100644 --- a/src/pyfme/models/state/velocity.py +++ b/src/pyfme/models/state/velocity.py @@ -96,7 +96,7 @@ def update(self, value, attitude): attitude.psi) # m/s def __repr__(self): - return f"u: {self.u} m/s, v: {self.v} m/s, w: {self.w} m/s" + return f"u: {self.u:.2f} m/s, v: {self.v:.2f} m/s, w: {self.w:.2f} m/s" class NEDVelocity(Velocity): @@ -113,6 +113,6 @@ def update(self, value, attitude): attitude.psi) # m/s def __repr__(self): - return (f"V_north: {self.v_north} m/s," - f"V_east: {self.v_east} m/s, " - f"V_down: {self.v_down} m/s") + return (f"V_north: {self.v_north:.2f} m/s," + f"V_east: {self.v_east:.2f} m/s, " + f"V_down: {self.v_down:.2f} m/s") From 54de5705ed0f711197148902709f47ef2d8ad3f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Fri, 10 Nov 2017 20:44:03 +0100 Subject: [PATCH 078/104] env and ac are copied during trimming process in order not to change the state to the passed objects --- src/pyfme/utils/trimmer.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/pyfme/utils/trimmer.py b/src/pyfme/utils/trimmer.py index b8a2c8f..eeaabc6 100644 --- a/src/pyfme/utils/trimmer.py +++ b/src/pyfme/utils/trimmer.py @@ -14,6 +14,7 @@ until some solution criterion is met. """ +import copy from math import sqrt, sin, cos, tan, atan import numpy as np @@ -27,7 +28,6 @@ def trim(aircraft, environment, pos0, psi, TAS, gamma, turn_rate, controls, exclude=None, verbose=0): - # TODO: docstring update """Finds a combination of values of the state and control variables that correspond to a steady-state flight condition. @@ -78,6 +78,11 @@ def trim(aircraft, environment, pos0, psi, TAS, gamma, turn_rate, controls, # Full state state0 = AircraftState(pos0, att0, vel0) + # Environment and aircraft are modified in order not to alter their + # state during trimming process + environment = copy.deepcopy(environment) + aircraft = copy.deepcopy(aircraft) + # Update environment for the current state environment.update(state0) From 9b062af4626067cb5ebb5b46f58efebea87022e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Fri, 10 Nov 2017 20:54:58 +0100 Subject: [PATCH 079/104] trimmer documentation --- src/pyfme/utils/trimmer.py | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/src/pyfme/utils/trimmer.py b/src/pyfme/utils/trimmer.py index eeaabc6..e2a78bb 100644 --- a/src/pyfme/utils/trimmer.py +++ b/src/pyfme/utils/trimmer.py @@ -26,7 +26,7 @@ from pyfme.models.constants import GRAVITY -def trim(aircraft, environment, pos0, psi, TAS, gamma, turn_rate, controls, +def trim(aircraft, environment, pos, psi, TAS, controls, gamma=0, turn_rate=0, exclude=None, verbose=0): """Finds a combination of values of the state and control variables that correspond to a steady-state flight condition. @@ -38,23 +38,29 @@ def trim(aircraft, environment, pos0, psi, TAS, gamma, turn_rate, controls, Parameters ---------- - geodetic_initial_pos : arraylike, shape(3) - (Latitude, longitude, height) + aircraft : Aircraft + Aircraft to be trimmed. + environment : Environment + Environment where the aircraft is trimmed including atmosphere, + gravity and wind. + pos : Position + Initial position of the aircraft. + psi : float, opt + Initial yaw angle (rad). TAS : float True Air Speed (m/s). gamma : float, optional Flight path angle (rad). turn_rate : float, optional Turn rate, d(psi)/dt (rad/s). - initial_controls : dict - Initial value guess for each control. - psi : float, opt - Initial yaw angle (rad). - exclude_controls : list, optional + controls : dict + Initial value guess for each control or fixed value if control is + included in exclude. + exclude : list, optional List with controls not to be trimmed. If not given, every control is considered in the trim process. verbose : {0, 1, 2}, optional - Level of algorithm's verbosity: + Level of least_squares verbosity: * 0 (default) : work silently. * 1 : display a termination report. * 2 : display progress during iterations (not supported by 'lm' @@ -76,7 +82,7 @@ def trim(aircraft, environment, pos0, psi, TAS, gamma, turn_rate, controls, att0 = EulerAttitude(theta=0, phi=0, psi=psi) vel0 = BodyVelocity(u=TAS, v=0, w=0, attitude=att0) # Full state - state0 = AircraftState(pos0, att0, vel0) + state0 = AircraftState(pos, att0, vel0) # Environment and aircraft are modified in order not to alter their # state during trimming process From bb0413dfd00cb962a4da081678f6fe65cdb64eb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Fri, 10 Nov 2017 21:24:33 +0100 Subject: [PATCH 080/104] minor changes --- src/pyfme/simulator.py | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/src/pyfme/simulator.py b/src/pyfme/simulator.py index f1837f8..4c31e7b 100644 --- a/src/pyfme/simulator.py +++ b/src/pyfme/simulator.py @@ -43,45 +43,57 @@ class Simulation: _default_save_vars = { 'time': 'system.time', - 'T': 'environment.T', # env + # environment + 'temperature': 'environment.T', 'pressure': 'environment.p', 'rho': 'environment.rho', 'a': 'environment.a', - 'h': 'system.full_state.position.height', + # aircraft 'Fx': 'aircraft.Fx', 'Fy': 'aircraft.Fy', 'Fz': 'aircraft.Fz', + 'Mx': 'aircraft.Mx', 'My': 'aircraft.My', 'Mz': 'aircraft.Mz', - 'TAS': 'aircraft.TAS', # aircraft + + 'TAS': 'aircraft.TAS', 'Mach': 'aircraft.Mach', 'q_inf': 'aircraft.q_inf', + 'alpha': 'aircraft.alpha', 'beta': 'aircraft.beta', + 'rudder': 'aircraft.delta_rudder', 'aileron': 'aircraft.delta_aileron', 'elevator': 'aircraft.delta_elevator', 'thrust': 'aircraft.delta_t', - 'x_earth': 'system.full_state.position.x_earth', # system + # system + 'x_earth': 'system.full_state.position.x_earth', 'y_earth': 'system.full_state.position.y_earth', 'z_earth': 'system.full_state.position.z_earth', + 'height': 'system.full_state.position.height', + 'psi': 'system.full_state.attitude.psi', 'theta': 'system.full_state.attitude.theta', 'phi': 'system.full_state.attitude.phi', + 'u': 'system.full_state.velocity.u', 'v': 'system.full_state.velocity.v', 'w': 'system.full_state.velocity.w', + 'v_north': 'system.full_state.velocity.v_north', 'v_east': 'system.full_state.velocity.v_east', 'v_down': 'system.full_state.velocity.v_down', + 'p': 'system.full_state.angular_vel.p', 'q': 'system.full_state.angular_vel.q', 'r': 'system.full_state.angular_vel.r' } - def __init__(self, aircraft, system, environment, dt=0.01, save_vars=None): + def __init__(self, aircraft, system, environment, controls, dt=0.01, + save_vars=None): """ Simulation object @@ -104,7 +116,7 @@ def __init__(self, aircraft, system, environment, dt=0.01, save_vars=None): self.system.update_simulation = self.update - self.controls = {} + self.controls = controls self.dt = 0.01 @@ -141,7 +153,7 @@ def propagate(self, time): """ dt = self.dt - while self.system.time <= time: + while self.system.time + dt <= time: t = self.system.time self.environment.update(self.system.full_state) controls = self._get_current_controls(t) @@ -152,8 +164,9 @@ def propagate(self, time): self._save_time_step() time = self.results.pop('time') + results = pd.DataFrame(self.results, index=time) - return pd.DataFrame(self.results, index=time) + return results def _save_time_step(self): """Saves the selected variables for the current system, environment From 151f18705b1b0083c2bd6e74eaf3aad2b4839140 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Fri, 10 Nov 2017 22:22:43 +0100 Subject: [PATCH 081/104] DOC: dynamic system and renamed method for trimming function --- src/pyfme/models/dynamic_system.py | 108 ++++++++++++++++++++++++++- src/pyfme/models/euler_flat_earth.py | 12 ++- src/pyfme/utils/trimmer.py | 4 +- 3 files changed, 117 insertions(+), 7 deletions(-) diff --git a/src/pyfme/models/dynamic_system.py b/src/pyfme/models/dynamic_system.py index 411d738..ee04bfc 100644 --- a/src/pyfme/models/dynamic_system.py +++ b/src/pyfme/models/dynamic_system.py @@ -4,11 +4,14 @@ Copyright (c) AeroPython Development Team. Distributed under the terms of the MIT License. -Dynamic System --------------- +Dynamic System & Aircraft Dynamic System +---------------------------------------- Dynamic system class to integrate initial value problems numerically serves as base for implementation of dynamic systems. + +The Aircraft Dynamic Systems extends the Dynamic System taking into account +the Aircraft State. """ from abc import abstractmethod @@ -195,7 +198,36 @@ def fun_wrapped(self, t, x): class AircraftDynamicSystem(DynamicSystem): + """Aircraft's Dynamic System + + Attributes + ---------- + full_state : AircraftState + Current aircraft state. + update_simulation : fun + Function that updates environment and aircraft in order to get + proper forces, moments and mass properties for integration steps. + + Methods + ------- + steady_state_trim_fun + time_step + """ def __init__(self, t0, full_state, method='RK45', options=None): + """Aircraft Dynamic system initialization. + + Parameters + ---------- + t0 : float + Initial time (s). + full_state : AircraftState + Initial aircraft's state. + method : str, opt + Integration method. Any method included in + scipy.integrate.solve_ivp can be used. + options : dict, opt + Options accepted by the integration method. + """ x0 = self._get_state_vector_from_full_state(full_state) self.full_state = self._adapt_full_state_to_dynamic_system(full_state) @@ -205,21 +237,91 @@ def __init__(self, t0, full_state, method='RK45', options=None): @abstractmethod def _adapt_full_state_to_dynamic_system(self, full_state): + """Transforms the given state to the one used in the + AircraftDynamicSystem in order to initialize dynamic's system + initial state. + For example, the full state given may be using quaternions for + attitude representation, but the Aircraft dynamic system may + propagate Euler angles. + + Parameters + ---------- + full_state : AircraftState + + """ raise NotImplementedError @abstractmethod def _update_full_system_state_from_state(self, state, state_dot): + """Updates full system's state (AircraftState) based on the + implemented dynamic's system state vector and derivative of system's + state vector (output of system's equations dx/dt=f(x, t)) + + Parameters + ---------- + state : array_like + State vector. + state_dot : array_like + Derivative of state vector. + + """ raise NotImplementedError @abstractmethod def _get_state_vector_from_full_state(self, full_state): + """Gets the state vector given the full state. + + Parameters + ---------- + full_state : AircraftState + Aircraft's full state + + Returns + ------- + state_vector : ndarray + State vector. + """ raise NotImplementedError @abstractmethod - def trim_fun(self, full_state, environment, aircraft, controls): + def steady_state_trim_fun(self, full_state, environment, aircraft, + controls): + """Output from linear and angular momentum conservation equations: + ax, ay, az, p, q, r, which must be zero after the steady state + trimming process + + Parameters + ---------- + full_state : AircraftState + Full aircraft state. + environment : Environment + Environment in which the aircraft is being trimmed. + aircraft : Aircraft + Aircraft being trimmed. + controls : dict + Controls of the aircraft being trimmed. + + Returns + ------- + rv : ndarray + Output from linear and angular momentum conservation equations: + ax, ay, az, p, q, r. + """ raise NotImplementedError def time_step(self, dt): + """Perform an integration time step + + Parameters + ---------- + dt : float + Time step for integration + + Returns + ------- + full_state : AircraftState + Aircraft's state after integration time step + """ super().time_step(dt) # Now self.state_vector and state_vector_dot are updated self._update_full_system_state_from_state(self.state_vector, diff --git a/src/pyfme/models/euler_flat_earth.py b/src/pyfme/models/euler_flat_earth.py index cb50eb7..f0d1623 100644 --- a/src/pyfme/models/euler_flat_earth.py +++ b/src/pyfme/models/euler_flat_earth.py @@ -24,6 +24,12 @@ class EulerFlatEarth(AircraftDynamicSystem): + """Euler Flat Earth Dynamic System. + + Classical aircraft motion equations assuming no Earth rotation, no Earth + curvature and modelling attitude with Euler angles. Aircraft position is + performed on Earth axis. + """ def fun(self, t, x): @@ -39,10 +45,12 @@ def fun(self, t, x): return rv - def trim_fun(self, full_state, environment, aircraft, controls): + def steady_state_trim_fun(self, full_state, environment, aircraft, + controls): environment.update(full_state) - aircraft.calculate_forces_and_moments(full_state, environment, controls) + aircraft.calculate_forces_and_moments(full_state, environment, + controls) mass = aircraft.mass inertia = aircraft.inertia diff --git a/src/pyfme/utils/trimmer.py b/src/pyfme/utils/trimmer.py index e2a78bb..b4b7dfa 100644 --- a/src/pyfme/utils/trimmer.py +++ b/src/pyfme/utils/trimmer.py @@ -242,6 +242,6 @@ def trimming_cost_func(trimmed_params, system, aircraft, environment, system.full_state.acceleration.update([0, 0, 0], attitude) system.full_state.angular_accel.update([0, 0, 0], attitude) - rv = system.trim_fun(system.full_state, environment, aircraft, - new_controls) + rv = system.steady_state_trim_fun(system.full_state, environment, aircraft, + new_controls) return rv From 719fd0a2d53cfc7c1a2338de04a7d412fec02836 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sat, 11 Nov 2017 00:07:25 +0100 Subject: [PATCH 082/104] renamed trim function and improved docstring --- src/pyfme/utils/trimmer.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/pyfme/utils/trimmer.py b/src/pyfme/utils/trimmer.py index b4b7dfa..9b9c3a2 100644 --- a/src/pyfme/utils/trimmer.py +++ b/src/pyfme/utils/trimmer.py @@ -26,8 +26,8 @@ from pyfme.models.constants import GRAVITY -def trim(aircraft, environment, pos, psi, TAS, controls, gamma=0, turn_rate=0, - exclude=None, verbose=0): +def steady_state_trim(aircraft, environment, pos, psi, TAS, controls, gamma=0, + turn_rate=0, exclude=None, verbose=0): """Finds a combination of values of the state and control variables that correspond to a steady-state flight condition. @@ -49,13 +49,13 @@ def trim(aircraft, environment, pos, psi, TAS, controls, gamma=0, turn_rate=0, Initial yaw angle (rad). TAS : float True Air Speed (m/s). + controls : dict + Initial value guess for each control or fixed value if control is + included in exclude. gamma : float, optional Flight path angle (rad). turn_rate : float, optional Turn rate, d(psi)/dt (rad/s). - controls : dict - Initial value guess for each control or fixed value if control is - included in exclude. exclude : list, optional List with controls not to be trimmed. If not given, every control is considered in the trim process. @@ -66,6 +66,13 @@ def trim(aircraft, environment, pos, psi, TAS, controls, gamma=0, turn_rate=0, * 2 : display progress during iterations (not supported by 'lm' method). + Returns + ------- + state : AircraftState + Trimmed aircraft state. + trimmed_controls : dict + Trimmed aircraft controls + Notes ----- See section 3.4 in [1] for the algorithm description. From c7d600ce496c7154e992d522eb79de5283638859 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sat, 11 Nov 2017 00:07:55 +0100 Subject: [PATCH 083/104] added Envrionment to environment __init__ --- src/pyfme/environment/__init__.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/pyfme/environment/__init__.py b/src/pyfme/environment/__init__.py index e69de29..f105b63 100644 --- a/src/pyfme/environment/__init__.py +++ b/src/pyfme/environment/__init__.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +""" +Python Flight Mechanics Engine (PyFME). +Copyright (c) AeroPython Development Team. +Distributed under the terms of the MIT License. + +Envrionment +----------- + +""" +from .environment import Environment \ No newline at end of file From 97a129fcf7daa988d2dc71cf360cc366d78f4f45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sat, 11 Nov 2017 00:10:37 +0100 Subject: [PATCH 084/104] copied aircraft, env, system in the __init__ --- src/pyfme/simulator.py | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/pyfme/simulator.py b/src/pyfme/simulator.py index 4c31e7b..6af2a87 100644 --- a/src/pyfme/simulator.py +++ b/src/pyfme/simulator.py @@ -9,13 +9,10 @@ model), environment and aircraft. """ +import copy import operator -import numpy as np import pandas as pd -from scipy.optimize import least_squares - -from pyfme.utils.trimmer import trimming_cost_func class Simulation: @@ -110,9 +107,9 @@ def __init__(self, aircraft, system, environment, controls, dt=0.01, the object and attribute where it is calculated. If not given, the ones set in `_defaul_save_vars` are used. """ - self.system = system - self.aircraft = aircraft - self.environment = environment + self.system = copy.deepcopy(system) + self.aircraft = copy.deepcopy(aircraft) + self.environment = copy.deepcopy(environment) self.system.update_simulation = self.update From ed479dcaff07aaa3d4b229eae0f58db5281771a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sat, 11 Nov 2017 00:58:34 +0100 Subject: [PATCH 085/104] added tqdm bar and improved results dataframe --- src/pyfme/simulator.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/pyfme/simulator.py b/src/pyfme/simulator.py index 6af2a87..1af924a 100644 --- a/src/pyfme/simulator.py +++ b/src/pyfme/simulator.py @@ -13,6 +13,7 @@ import operator import pandas as pd +import tqdm class Simulation: @@ -150,6 +151,8 @@ def propagate(self, time): """ dt = self.dt + bar = tqdm.tqdm(total=time, desc='time', initial=self.system.time) + while self.system.time + dt <= time: t = self.system.time self.environment.update(self.system.full_state) @@ -159,9 +162,12 @@ def propagate(self, time): controls) self.system.time_step(dt) self._save_time_step() + bar.update(dt) + + bar.close() - time = self.results.pop('time') - results = pd.DataFrame(self.results, index=time) + results = pd.DataFrame(self.results) + results.set_index('time', inplace=True) return results From e0bd3fde253651d62a2d5cb218ba3c68e29aec62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sat, 11 Nov 2017 01:00:33 +0100 Subject: [PATCH 086/104] example notebook --- examples/How it works.ipynb | 2953 +++++++++++++++++++++++++++++++++++ 1 file changed, 2953 insertions(+) create mode 100644 examples/How it works.ipynb diff --git a/examples/How it works.ipynb b/examples/How it works.ipynb new file mode 100644 index 0000000..5a940fd --- /dev/null +++ b/examples/How it works.ipynb @@ -0,0 +1,2953 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Python Flight Mechanics Engine " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Aircraft " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In order to perform a simulation, the first thing we need is an aircraft:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from pyfme.aircrafts import Cessna172" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "aircraft = Cessna172()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Aircraft will provide the simulator the forces, moments and inertial properties in order to perform the integration of the dynamic system equations:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Aircraft mass: 1043.2616 kg\n", + "Aircraft inertia tensor: \n", + " [[ 1285.3154166 0. 0. ]\n", + " [ 0. 1824.9309607 0. ]\n", + " [ 0. 0. 2666.89390765]] kg/m²\n" + ] + } + ], + "source": [ + "print(f\"Aircraft mass: {aircraft.mass} kg\")\n", + "print(f\"Aircraft inertia tensor: \\n {aircraft.inertia} kg/m²\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "forces: [ 0. 0. 0.] N\n", + "moments: [ 0. 0. 0.] N·m\n" + ] + } + ], + "source": [ + "print(f\"forces: {aircraft.total_forces} N\")\n", + "print(f\"moments: {aircraft.total_moments} N·m\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For the aircraft, in order to calculate its forces and moments it is necessary to set the controls values within the limits: " + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'delta_elevator': 0, 'delta_aileron': 0, 'delta_rudder': 0, 'delta_t': 0}\n" + ] + } + ], + "source": [ + "print(aircraft.controls)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'delta_elevator': (-0.4537856055185257, 0.48869219055841229), 'delta_aileron': (-0.26179938779914941, 0.3490658503988659), 'delta_rudder': (-0.27925268031909273, 0.27925268031909273), 'delta_t': (0, 1)}\n" + ] + } + ], + "source": [ + "print(aircraft.control_limits)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "but also to provide and environment (ie. atmosphere, winds, gravity) and the aircraft state, which will also determine the aerodynamic contribution." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Environment " + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "from pyfme.environment.atmosphere import ISA1976\n", + "from pyfme.environment.wind import NoWind\n", + "from pyfme.environment.gravity import VerticalConstant" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "atmosphere = ISA1976()\n", + "gravity = VerticalConstant()\n", + "wind = NoWind()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The atmosphere, wind and gravity model make up the environment:" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "from pyfme.environment import Environment" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "environment = Environment(atmosphere, gravity, wind)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The environment has an update method which given the state (ie. position, altitude...) updates the environment variables (ie. density, wind magnitude, gravity force...)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Help on method update in module pyfme.environment.environment:\n", + "\n", + "update(state) method of pyfme.environment.environment.Environment instance\n", + "\n" + ] + } + ], + "source": [ + "help(environment.update)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## State " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Even if the state can be set manually by giving the position, attitude, velocity, angular velocities... Most of the times, the user will want to trim the aircraft in a stationary condition. The aircraft controls to flight in that condition will be also provided by the trimmer." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "from pyfme.utils.trimmer import steady_state_trim" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Help on function steady_state_trim in module pyfme.utils.trimmer:\n", + "\n", + "steady_state_trim(aircraft, environment, pos, psi, TAS, controls, gamma=0, turn_rate=0, exclude=None, verbose=0)\n", + " Finds a combination of values of the state and control variables\n", + " that correspond to a steady-state flight condition.\n", + " \n", + " Steady-state aircraft flight is defined as a condition in which all\n", + " of the motion variables are constant or zero. That is, the linear and\n", + " angular velocity components are constant (or zero), thus all\n", + " acceleration components are zero.\n", + " \n", + " Parameters\n", + " ----------\n", + " aircraft : Aircraft\n", + " Aircraft to be trimmed.\n", + " environment : Environment\n", + " Environment where the aircraft is trimmed including atmosphere,\n", + " gravity and wind.\n", + " pos : Position\n", + " Initial position of the aircraft.\n", + " psi : float, opt\n", + " Initial yaw angle (rad).\n", + " TAS : float\n", + " True Air Speed (m/s).\n", + " controls : dict\n", + " Initial value guess for each control or fixed value if control is\n", + " included in exclude.\n", + " gamma : float, optional\n", + " Flight path angle (rad).\n", + " turn_rate : float, optional\n", + " Turn rate, d(psi)/dt (rad/s).\n", + " exclude : list, optional\n", + " List with controls not to be trimmed. If not given, every control\n", + " is considered in the trim process.\n", + " verbose : {0, 1, 2}, optional\n", + " Level of least_squares verbosity:\n", + " * 0 (default) : work silently.\n", + " * 1 : display a termination report.\n", + " * 2 : display progress during iterations (not supported by 'lm'\n", + " method).\n", + " \n", + " Returns\n", + " -------\n", + " state : AircraftState\n", + " Trimmed aircraft state.\n", + " trimmed_controls : dict\n", + " Trimmed aircraft controls\n", + " \n", + " Notes\n", + " -----\n", + " See section 3.4 in [1] for the algorithm description.\n", + " See section 2.5 in [1] for the definition of steady-state flight\n", + " condition.\n", + " \n", + " References\n", + " ----------\n", + " .. [1] Stevens, BL and Lewis, FL, \"Aircraft Control and Simulation\",\n", + " Wiley-lnterscience.\n", + "\n" + ] + } + ], + "source": [ + "help(steady_state_trim)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "from pyfme.models.state.position import EarthPosition" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "pos = EarthPosition(x=0, y=0, height=1000)\n", + "psi = 0.5 # rad\n", + "TAS = 45 # m/s\n", + "controls0 = {'delta_elevator': 0, 'delta_aileron': 0, 'delta_rudder': 0, 'delta_t': 0.5}" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "trimmed_state, trimmed_controls = steady_state_trim(\n", + " aircraft,\n", + " environment,\n", + " pos,\n", + " psi,\n", + " TAS,\n", + " controls0\n", + ") " + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Aircraft State \n", + "x_e: 0.00 m, y_e: 0.00 m, z_e: -1000.00 m \n", + "theta: 0.076 rad, phi: 0.000 rad, psi: 0.500 rad \n", + "u: 44.87 m/s, v: -0.00 m/s, w: 3.40 m/s \n", + "P: 0.00 rad/s, Q: 0.00 rad/s, R: 0.00 rad/s \n", + "u_dot: 0.00 m/s², v_dot: -0.00 m/s², w_dot: 0.00 m/s² \n", + "P_dot: 0.00 rad/s², Q_dot: -0.00 rad/s², R_dot: -0.00 rad/s² " + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "trimmed_state" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'delta_aileron': -2.947320486359587e-18,\n", + " 'delta_elevator': -0.048951124635247867,\n", + " 'delta_rudder': 2.1677315854336833e-17,\n", + " 'delta_t': 0.57799667845248448}" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "trimmed_controls" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, all the necessary elements in order to calculate forces and moments are available " + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "# Environment conditions for the current state:\n", + "environment.update(trimmed_state)\n", + "\n", + "# Forces and moments calculation:\n", + "forces, moments = aircraft.calculate_forces_and_moments(trimmed_state, environment, controls0)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(array([ 1.14823706e-11, -1.19125954e-19, 0.00000000e+00]),\n", + " array([ 1.52897086e-13, -1.45503653e-11, -2.42689127e-14]))" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "forces, moments" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The aircraft is trimmed indeed: the total forces and moments (aerodynamics + gravity + thrust) are zero" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Simulation " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In order to simulate the dynamics of the aircraft under certain inputs in an environment, the user can set up a simulation using a dynamic system:" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "from pyfme.models import EulerFlatEarth" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "system = EulerFlatEarth(t0=0, full_state=trimmed_state)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Constant Controls " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's set the controls for the aircraft during the simulation. As a first step we will set them constant and equal to the trimmed values." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "from pyfme.utils.input_generator import Constant" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "controls = controls = {\n", + " 'delta_elevator': Constant(trimmed_controls['delta_elevator']),\n", + " 'delta_aileron': Constant(trimmed_controls['delta_aileron']),\n", + " 'delta_rudder': Constant(trimmed_controls['delta_rudder']),\n", + " 'delta_t': Constant(trimmed_controls['delta_t'])\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "from pyfme.simulator import Simulation" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "sim = Simulation(aircraft, system, environment, controls)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Once the simulation is set, the propagation can be performed:" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "time: 100%|█████████▉| 9.999999999999831/10 [00:05<00:00, 1.79it/s] \n" + ] + } + ], + "source": [ + "results = sim.propagate(10)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The results are returned in a DataFrame:" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
FxFyFzMachMxMyMzTASaaileron...thrustuvv_downv_eastv_northwx_earthy_earthz_earth
time
0.011.148237e-11-1.309051e-160.000000e+000.1337561.458933e-13-1.410812e-11-2.516985e-1445.0336.434581-2.947320e-18...0.57799744.87164-1.750768e-154.440892e-1621.57414939.4912153.39646400-1000
0.021.148237e-11-1.518488e-160.000000e+000.1337561.391836e-13-1.367932e-11-2.601912e-1445.0336.434581-2.947320e-18...0.57799744.87164-1.750648e-154.440892e-1621.57414939.4912153.39646400-1000
0.031.148237e-11-6.856851e-170.000000e+000.1337561.327555e-13-1.326355e-11-2.681870e-1445.0336.434581-2.947320e-18...0.57799744.87164-1.750447e-154.440892e-1621.57414939.4912153.39646410-1000
0.041.148237e-111.135581e-160.000000e+000.1337561.265969e-13-1.286042e-11-2.757050e-1445.0336.434581-2.947320e-18...0.57799744.87164-1.750165e-154.440892e-1621.57414939.4912153.39646410-1000
0.051.148237e-113.893841e-160.000000e+000.1337561.206963e-13-1.246954e-11-2.827633e-1445.0336.434581-2.947320e-18...0.57799744.87164-1.749801e-154.440892e-1621.57414939.4912153.39646411-1000
0.061.148237e-117.539836e-160.000000e+000.1337561.150425e-13-1.209054e-11-2.893794e-1445.0336.434581-2.947320e-18...0.57799744.87164-1.749354e-154.440892e-1621.57414939.4912153.39646421-1000
0.071.136868e-111.202642e-151.818989e-120.1337561.096252e-13-1.172306e-11-2.955701e-1445.0336.434581-2.947320e-18...0.57799744.87164-1.748824e-154.440892e-1621.57414939.4912153.39646421-1000
0.081.125500e-111.730847e-151.818989e-120.1337561.044341e-13-1.098882e-11-3.047221e-1445.0336.434581-2.947320e-18...0.57799744.87164-1.748210e-150.000000e+0021.57414939.4912153.39646431-1000
0.091.125500e-112.333641e-151.818989e-120.1337569.945634e-14-1.065483e-11-3.100995e-1445.0336.434581-2.947320e-18...0.57799744.87164-1.747513e-15-4.440892e-1621.57414939.4912153.39646431-1000
0.101.102762e-113.005565e-153.637979e-120.1337569.467614e-14-9.950832e-12-2.611375e-1445.0336.434581-2.947320e-18...0.57799744.87164-1.746731e-15-8.881784e-1621.57414939.4912153.39646432-1000
0.111.148237e-113.751901e-159.094947e-120.1337569.013232e-14-9.275783e-12-3.197848e-1445.0336.434581-2.947320e-18...0.57799744.87164-1.745866e-15-8.881784e-1621.57414939.4912153.39646442-1000
0.121.148237e-114.555658e-151.091394e-110.1337568.574588e-14-8.613704e-12-3.004604e-1445.0336.434581-2.947320e-18...0.57799744.87164-1.744917e-15-8.881784e-1621.57414939.4912153.39646442-1000
0.131.159606e-115.424279e-151.091394e-110.1337568.156845e-14-8.351899e-12-3.044730e-1445.0336.434581-2.947320e-18...0.57799744.87164-1.743885e-15-4.440892e-1621.57414939.4912153.39646452-1000
0.141.136868e-116.353882e-151.273293e-110.1337567.758696e-14-7.717900e-12-4.295721e-1445.0336.434581-2.947320e-18...0.57799744.87164-1.742771e-15-4.440892e-1621.57414939.4912153.39646453-1000
0.151.159606e-117.307893e-151.273293e-110.1337567.362115e-14-6.738115e-12-4.595269e-1445.0336.434581-2.947320e-18...0.57799744.87164-1.741569e-150.000000e+0021.57414939.4912153.39646453-1000
0.161.170974e-118.306240e-151.273293e-110.1337566.980467e-14-6.533317e-12-4.621544e-1445.0336.434581-2.947320e-18...0.57799744.87164-1.740262e-150.000000e+0021.57414939.4912153.39646463-1000
0.171.170974e-119.348327e-151.273293e-110.1337566.614481e-14-6.334743e-12-4.644720e-1445.0336.434581-2.947320e-18...0.57799744.87164-1.738848e-150.000000e+0021.57414939.4912153.39646463-1000
0.181.136868e-111.043316e-141.818989e-110.1337566.264539e-14-5.769601e-12-4.429277e-1445.0336.434581-2.947320e-18...0.57799744.87164-1.737329e-154.440892e-1621.57414939.4912153.39646473-1000
0.191.136868e-111.157113e-141.818989e-110.1337565.936687e-14-5.221636e-12-2.966188e-1445.0336.434581-2.947320e-18...0.57799744.87164-1.735710e-154.440892e-1621.57414939.4912153.39646474-1000
0.201.159606e-111.276209e-141.818989e-110.1337565.629898e-14-5.062930e-12-2.985905e-1445.0336.434581-2.947320e-18...0.57799744.87164-1.734011e-158.881784e-1621.57414939.4912153.39646474-1000
0.211.148237e-111.397774e-142.000888e-110.1337565.329535e-14-4.536443e-12-4.416963e-1445.0336.434581-2.947320e-18...0.57799744.87164-1.732233e-158.881784e-1621.57414939.4912153.39646484-1000
0.221.148237e-111.521910e-142.182787e-110.1337565.038453e-14-4.025959e-12-3.485120e-1445.0336.434581-2.947320e-18...0.57799744.87164-1.730359e-158.881784e-1621.57414939.4912153.39646484-1000
0.231.159606e-111.650005e-142.182787e-110.1337564.764104e-14-3.903594e-12-3.496163e-1445.0336.434581-2.947320e-18...0.57799744.87164-1.728400e-151.332268e-1521.57414939.4912153.39646494-1000
0.241.148237e-111.780983e-142.364686e-110.1337564.501165e-14-3.412344e-12-3.471297e-1445.0336.434581-2.947320e-18...0.57799744.87164-1.726356e-151.332268e-1521.57414939.4912153.39646495-1000
0.251.148237e-111.914984e-142.546585e-110.1337564.250968e-14-2.936026e-12-3.074090e-1445.0336.434581-2.947320e-18...0.57799744.87164-1.724231e-151.776357e-1521.57414939.4912153.39646495-1000
0.261.148237e-112.051194e-142.546585e-110.1337564.009381e-14-2.474184e-12-3.921483e-1445.0336.434581-2.947320e-18...0.57799744.87164-1.722026e-151.776357e-1521.57414939.4912153.396464105-1000
0.271.159606e-112.188773e-142.546585e-110.1337563.773377e-14-2.398984e-12-3.922856e-1445.0336.434581-2.947320e-18...0.57799744.87164-1.719735e-151.776357e-1521.57414939.4912153.396464105-1000
0.281.148237e-112.328209e-142.728484e-110.1337563.546382e-14-1.953465e-12-4.056870e-1445.0336.434581-2.947320e-18...0.57799744.87164-1.717353e-152.220446e-1521.57414939.4912153.396464116-1000
0.291.148237e-112.469674e-142.910383e-110.1337563.330005e-14-1.521488e-12-3.582637e-1445.0336.434581-2.947320e-18...0.57799744.87164-1.714882e-152.220446e-1521.57414939.4912153.396464116-1000
0.301.159606e-112.613274e-142.910383e-110.1337563.124828e-14-1.475244e-12-3.579192e-1445.0336.434581-2.947320e-18...0.57799744.87164-1.712327e-152.664535e-1521.57414939.4912153.396464116-1000
..................................................................
9.711.440412e-101.327157e-124.729372e-110.1337562.099150e-151.530658e-259.773915e-1545.0336.434581-2.947320e-18...0.57799744.87164-4.296931e-165.875300e-1321.57414939.4912153.396464383209-1000
9.721.441549e-101.329142e-124.729372e-110.1337562.087753e-151.490378e-259.738770e-1545.0336.434581-2.947320e-18...0.57799744.87164-4.295777e-165.884182e-1321.57414939.4912153.396464383209-1000
9.731.442686e-101.331127e-124.729372e-110.1337562.076231e-151.450097e-259.703977e-1545.0336.434581-2.947320e-18...0.57799744.87164-4.294592e-165.888623e-1321.57414939.4912153.396464384209-1000
9.741.444960e-101.333115e-124.729372e-110.1337562.064585e-151.409817e-259.669541e-1545.0336.434581-2.947320e-18...0.57799744.87164-4.293373e-165.897505e-1321.57414939.4912153.396464384210-1000
9.751.446097e-101.335103e-124.729372e-110.1337562.052819e-151.369536e-259.635465e-1545.0336.434581-2.947320e-18...0.57799744.87164-4.292122e-165.901946e-1321.57414939.4912153.396464385210-1000
9.761.447233e-101.337094e-124.729372e-110.1337562.040934e-151.315829e-259.601752e-1545.0336.434581-2.947320e-18...0.57799744.87164-4.290836e-165.906386e-1321.57414939.4912153.396464385210-1000
9.771.448370e-101.339085e-124.729372e-110.1337562.028933e-151.262122e-259.568407e-1545.0336.434581-2.947320e-18...0.57799744.87164-4.289516e-165.915268e-1321.57414939.4912153.396464385210-1000
9.781.450644e-101.341078e-124.729372e-110.1337562.016819e-151.235268e-259.535431e-1545.0336.434581-2.947320e-18...0.57799744.87164-4.288160e-165.919709e-1321.57414939.4912153.396464386210-1000
9.791.451781e-101.343073e-124.729372e-110.1337562.004593e-151.208414e-259.502830e-1545.0336.434581-2.947320e-18...0.57799744.87164-4.286769e-165.928591e-1321.57414939.4912153.396464386211-1000
9.801.452918e-101.345068e-124.729372e-110.1337561.992258e-151.168134e-259.470605e-1545.0336.434581-2.947320e-18...0.57799744.87164-4.285341e-165.933032e-1321.57414939.4912153.396464387211-1000
9.811.454055e-101.347065e-124.911271e-110.1337561.979818e-151.141280e-259.438761e-1545.0336.434581-2.947320e-18...0.57799744.87164-4.283875e-165.941914e-1321.57414939.4912153.396464387211-1000
9.821.455192e-101.349064e-124.911271e-110.1337561.967273e-151.101000e-259.407299e-1545.0336.434581-2.947320e-18...0.57799744.87164-4.282372e-165.950795e-1321.57414939.4912153.396464387211-1000
9.831.455192e-101.351063e-124.911271e-110.1337561.954626e-151.060719e-259.376224e-1545.0336.434581-2.947320e-18...0.57799744.87164-4.280830e-165.950795e-1321.57414939.4912153.396464388212-1000
9.841.457465e-101.353064e-124.911271e-110.1337561.941881e-151.033866e-259.345538e-1545.0336.434581-2.947320e-18...0.57799744.87164-4.279249e-165.955236e-1321.57414939.4912153.396464388212-1000
9.851.458602e-101.355066e-124.911271e-110.1337561.929039e-151.007012e-259.315245e-1545.0336.434581-2.947320e-18...0.57799744.87164-4.277628e-165.964118e-1321.57414939.4912153.396464388212-1000
9.861.459739e-101.357070e-124.911271e-110.1337561.916102e-159.667315e-269.285346e-1545.0336.434581-2.947320e-18...0.57799744.87164-4.275967e-165.968559e-1321.57414939.4912153.396464389212-1000
9.871.460876e-101.359074e-124.911271e-110.1337561.903074e-159.398779e-269.255845e-1545.0336.434581-2.947320e-18...0.57799744.87164-4.274265e-165.973000e-1321.57414939.4912153.396464389212-1000
9.881.463150e-101.361080e-124.911271e-110.1337561.889956e-159.130242e-269.226744e-1545.0336.434581-2.947320e-18...0.57799744.87164-4.272521e-165.981882e-1321.57414939.4912153.396464390213-1000
9.891.464286e-101.363087e-124.911271e-110.1337561.876751e-158.727437e-269.198046e-1545.0336.434581-2.947320e-18...0.57799744.87164-4.270735e-165.986323e-1321.57414939.4912153.396464390213-1000
9.901.465423e-101.365096e-124.911271e-110.1337561.863461e-158.593169e-269.169753e-1545.0336.434581-2.947320e-18...0.57799744.87164-4.268907e-165.995204e-1321.57414939.4912153.396464390213-1000
9.911.466560e-101.367105e-124.911271e-110.1337561.850090e-158.324632e-269.141869e-1545.0336.434581-2.947320e-18...0.57799744.87164-4.267036e-165.999645e-1321.57414939.4912153.396464391213-1000
9.921.467697e-101.369116e-124.911271e-110.1337561.836638e-158.056096e-269.114395e-1545.0336.434581-2.947320e-18...0.57799744.87164-4.265120e-166.004086e-1321.57414939.4912153.396464391214-1000
9.931.471108e-101.371127e-124.911271e-110.1337561.823109e-157.921828e-269.087333e-1545.0336.434581-2.947320e-18...0.57799744.87164-4.263161e-166.012968e-1321.57414939.4912153.396464392214-1000
9.941.472245e-101.373140e-124.911271e-110.1337561.809506e-157.653291e-269.060687e-1545.0336.434581-2.947320e-18...0.57799744.87164-4.261157e-166.017409e-1321.57414939.4912153.396464392214-1000
9.951.473381e-101.375154e-124.911271e-110.1337561.795829e-157.519023e-269.034457e-1545.0336.434581-2.947320e-18...0.57799744.87164-4.259107e-166.026291e-1321.57414939.4912153.396464392214-1000
9.961.474518e-101.377169e-124.911271e-110.1337561.782083e-157.250486e-269.008647e-1545.0336.434581-2.947320e-18...0.57799744.87164-4.257011e-166.030731e-1321.57414939.4912153.396464393214-1000
9.971.476792e-101.379185e-124.911271e-110.1337561.768268e-157.116218e-268.983258e-1545.0336.434581-2.947320e-18...0.57799744.87164-4.254870e-166.035172e-1321.57414939.4912153.396464393215-1000
9.981.477929e-101.381202e-124.911271e-110.1337561.754388e-156.847682e-268.958292e-1545.0336.434581-2.947320e-18...0.57799744.87164-4.252681e-166.044054e-1321.57414939.4912153.396464394215-1000
9.991.479066e-101.383220e-124.911271e-110.1337561.740446e-156.713413e-268.933751e-1545.0336.434581-2.947320e-18...0.57799744.87164-4.250445e-166.048495e-1321.57414939.4912153.396464394215-1000
10.001.480203e-101.385239e-124.911271e-110.1337561.726442e-156.310608e-268.909637e-1545.0336.434581-2.947320e-18...0.57799744.87164-4.248161e-166.057377e-1321.57414939.4912153.396464394215-1000
\n", + "

1000 rows × 35 columns

\n", + "
" + ], + "text/plain": [ + " Fx Fy Fz Mach Mx \\\n", + "time \n", + "0.01 1.148237e-11 -1.309051e-16 0.000000e+00 0.133756 1.458933e-13 \n", + "0.02 1.148237e-11 -1.518488e-16 0.000000e+00 0.133756 1.391836e-13 \n", + "0.03 1.148237e-11 -6.856851e-17 0.000000e+00 0.133756 1.327555e-13 \n", + "0.04 1.148237e-11 1.135581e-16 0.000000e+00 0.133756 1.265969e-13 \n", + "0.05 1.148237e-11 3.893841e-16 0.000000e+00 0.133756 1.206963e-13 \n", + "0.06 1.148237e-11 7.539836e-16 0.000000e+00 0.133756 1.150425e-13 \n", + "0.07 1.136868e-11 1.202642e-15 1.818989e-12 0.133756 1.096252e-13 \n", + "0.08 1.125500e-11 1.730847e-15 1.818989e-12 0.133756 1.044341e-13 \n", + "0.09 1.125500e-11 2.333641e-15 1.818989e-12 0.133756 9.945634e-14 \n", + "0.10 1.102762e-11 3.005565e-15 3.637979e-12 0.133756 9.467614e-14 \n", + "0.11 1.148237e-11 3.751901e-15 9.094947e-12 0.133756 9.013232e-14 \n", + "0.12 1.148237e-11 4.555658e-15 1.091394e-11 0.133756 8.574588e-14 \n", + "0.13 1.159606e-11 5.424279e-15 1.091394e-11 0.133756 8.156845e-14 \n", + "0.14 1.136868e-11 6.353882e-15 1.273293e-11 0.133756 7.758696e-14 \n", + "0.15 1.159606e-11 7.307893e-15 1.273293e-11 0.133756 7.362115e-14 \n", + "0.16 1.170974e-11 8.306240e-15 1.273293e-11 0.133756 6.980467e-14 \n", + "0.17 1.170974e-11 9.348327e-15 1.273293e-11 0.133756 6.614481e-14 \n", + "0.18 1.136868e-11 1.043316e-14 1.818989e-11 0.133756 6.264539e-14 \n", + "0.19 1.136868e-11 1.157113e-14 1.818989e-11 0.133756 5.936687e-14 \n", + "0.20 1.159606e-11 1.276209e-14 1.818989e-11 0.133756 5.629898e-14 \n", + "0.21 1.148237e-11 1.397774e-14 2.000888e-11 0.133756 5.329535e-14 \n", + "0.22 1.148237e-11 1.521910e-14 2.182787e-11 0.133756 5.038453e-14 \n", + "0.23 1.159606e-11 1.650005e-14 2.182787e-11 0.133756 4.764104e-14 \n", + "0.24 1.148237e-11 1.780983e-14 2.364686e-11 0.133756 4.501165e-14 \n", + "0.25 1.148237e-11 1.914984e-14 2.546585e-11 0.133756 4.250968e-14 \n", + "0.26 1.148237e-11 2.051194e-14 2.546585e-11 0.133756 4.009381e-14 \n", + "0.27 1.159606e-11 2.188773e-14 2.546585e-11 0.133756 3.773377e-14 \n", + "0.28 1.148237e-11 2.328209e-14 2.728484e-11 0.133756 3.546382e-14 \n", + "0.29 1.148237e-11 2.469674e-14 2.910383e-11 0.133756 3.330005e-14 \n", + "0.30 1.159606e-11 2.613274e-14 2.910383e-11 0.133756 3.124828e-14 \n", + "... ... ... ... ... ... \n", + "9.71 1.440412e-10 1.327157e-12 4.729372e-11 0.133756 2.099150e-15 \n", + "9.72 1.441549e-10 1.329142e-12 4.729372e-11 0.133756 2.087753e-15 \n", + "9.73 1.442686e-10 1.331127e-12 4.729372e-11 0.133756 2.076231e-15 \n", + "9.74 1.444960e-10 1.333115e-12 4.729372e-11 0.133756 2.064585e-15 \n", + "9.75 1.446097e-10 1.335103e-12 4.729372e-11 0.133756 2.052819e-15 \n", + "9.76 1.447233e-10 1.337094e-12 4.729372e-11 0.133756 2.040934e-15 \n", + "9.77 1.448370e-10 1.339085e-12 4.729372e-11 0.133756 2.028933e-15 \n", + "9.78 1.450644e-10 1.341078e-12 4.729372e-11 0.133756 2.016819e-15 \n", + "9.79 1.451781e-10 1.343073e-12 4.729372e-11 0.133756 2.004593e-15 \n", + "9.80 1.452918e-10 1.345068e-12 4.729372e-11 0.133756 1.992258e-15 \n", + "9.81 1.454055e-10 1.347065e-12 4.911271e-11 0.133756 1.979818e-15 \n", + "9.82 1.455192e-10 1.349064e-12 4.911271e-11 0.133756 1.967273e-15 \n", + "9.83 1.455192e-10 1.351063e-12 4.911271e-11 0.133756 1.954626e-15 \n", + "9.84 1.457465e-10 1.353064e-12 4.911271e-11 0.133756 1.941881e-15 \n", + "9.85 1.458602e-10 1.355066e-12 4.911271e-11 0.133756 1.929039e-15 \n", + "9.86 1.459739e-10 1.357070e-12 4.911271e-11 0.133756 1.916102e-15 \n", + "9.87 1.460876e-10 1.359074e-12 4.911271e-11 0.133756 1.903074e-15 \n", + "9.88 1.463150e-10 1.361080e-12 4.911271e-11 0.133756 1.889956e-15 \n", + "9.89 1.464286e-10 1.363087e-12 4.911271e-11 0.133756 1.876751e-15 \n", + "9.90 1.465423e-10 1.365096e-12 4.911271e-11 0.133756 1.863461e-15 \n", + "9.91 1.466560e-10 1.367105e-12 4.911271e-11 0.133756 1.850090e-15 \n", + "9.92 1.467697e-10 1.369116e-12 4.911271e-11 0.133756 1.836638e-15 \n", + "9.93 1.471108e-10 1.371127e-12 4.911271e-11 0.133756 1.823109e-15 \n", + "9.94 1.472245e-10 1.373140e-12 4.911271e-11 0.133756 1.809506e-15 \n", + "9.95 1.473381e-10 1.375154e-12 4.911271e-11 0.133756 1.795829e-15 \n", + "9.96 1.474518e-10 1.377169e-12 4.911271e-11 0.133756 1.782083e-15 \n", + "9.97 1.476792e-10 1.379185e-12 4.911271e-11 0.133756 1.768268e-15 \n", + "9.98 1.477929e-10 1.381202e-12 4.911271e-11 0.133756 1.754388e-15 \n", + "9.99 1.479066e-10 1.383220e-12 4.911271e-11 0.133756 1.740446e-15 \n", + "10.00 1.480203e-10 1.385239e-12 4.911271e-11 0.133756 1.726442e-15 \n", + "\n", + " My Mz TAS a aileron ... \\\n", + "time ... \n", + "0.01 -1.410812e-11 -2.516985e-14 45.0 336.434581 -2.947320e-18 ... \n", + "0.02 -1.367932e-11 -2.601912e-14 45.0 336.434581 -2.947320e-18 ... \n", + "0.03 -1.326355e-11 -2.681870e-14 45.0 336.434581 -2.947320e-18 ... \n", + "0.04 -1.286042e-11 -2.757050e-14 45.0 336.434581 -2.947320e-18 ... \n", + "0.05 -1.246954e-11 -2.827633e-14 45.0 336.434581 -2.947320e-18 ... \n", + "0.06 -1.209054e-11 -2.893794e-14 45.0 336.434581 -2.947320e-18 ... \n", + "0.07 -1.172306e-11 -2.955701e-14 45.0 336.434581 -2.947320e-18 ... \n", + "0.08 -1.098882e-11 -3.047221e-14 45.0 336.434581 -2.947320e-18 ... \n", + "0.09 -1.065483e-11 -3.100995e-14 45.0 336.434581 -2.947320e-18 ... \n", + "0.10 -9.950832e-12 -2.611375e-14 45.0 336.434581 -2.947320e-18 ... \n", + "0.11 -9.275783e-12 -3.197848e-14 45.0 336.434581 -2.947320e-18 ... \n", + "0.12 -8.613704e-12 -3.004604e-14 45.0 336.434581 -2.947320e-18 ... \n", + "0.13 -8.351899e-12 -3.044730e-14 45.0 336.434581 -2.947320e-18 ... \n", + "0.14 -7.717900e-12 -4.295721e-14 45.0 336.434581 -2.947320e-18 ... \n", + "0.15 -6.738115e-12 -4.595269e-14 45.0 336.434581 -2.947320e-18 ... \n", + "0.16 -6.533317e-12 -4.621544e-14 45.0 336.434581 -2.947320e-18 ... \n", + "0.17 -6.334743e-12 -4.644720e-14 45.0 336.434581 -2.947320e-18 ... \n", + "0.18 -5.769601e-12 -4.429277e-14 45.0 336.434581 -2.947320e-18 ... \n", + "0.19 -5.221636e-12 -2.966188e-14 45.0 336.434581 -2.947320e-18 ... \n", + "0.20 -5.062930e-12 -2.985905e-14 45.0 336.434581 -2.947320e-18 ... \n", + "0.21 -4.536443e-12 -4.416963e-14 45.0 336.434581 -2.947320e-18 ... \n", + "0.22 -4.025959e-12 -3.485120e-14 45.0 336.434581 -2.947320e-18 ... \n", + "0.23 -3.903594e-12 -3.496163e-14 45.0 336.434581 -2.947320e-18 ... \n", + "0.24 -3.412344e-12 -3.471297e-14 45.0 336.434581 -2.947320e-18 ... \n", + "0.25 -2.936026e-12 -3.074090e-14 45.0 336.434581 -2.947320e-18 ... \n", + "0.26 -2.474184e-12 -3.921483e-14 45.0 336.434581 -2.947320e-18 ... \n", + "0.27 -2.398984e-12 -3.922856e-14 45.0 336.434581 -2.947320e-18 ... \n", + "0.28 -1.953465e-12 -4.056870e-14 45.0 336.434581 -2.947320e-18 ... \n", + "0.29 -1.521488e-12 -3.582637e-14 45.0 336.434581 -2.947320e-18 ... \n", + "0.30 -1.475244e-12 -3.579192e-14 45.0 336.434581 -2.947320e-18 ... \n", + "... ... ... ... ... ... ... \n", + "9.71 1.530658e-25 9.773915e-15 45.0 336.434581 -2.947320e-18 ... \n", + "9.72 1.490378e-25 9.738770e-15 45.0 336.434581 -2.947320e-18 ... \n", + "9.73 1.450097e-25 9.703977e-15 45.0 336.434581 -2.947320e-18 ... \n", + "9.74 1.409817e-25 9.669541e-15 45.0 336.434581 -2.947320e-18 ... \n", + "9.75 1.369536e-25 9.635465e-15 45.0 336.434581 -2.947320e-18 ... \n", + "9.76 1.315829e-25 9.601752e-15 45.0 336.434581 -2.947320e-18 ... \n", + "9.77 1.262122e-25 9.568407e-15 45.0 336.434581 -2.947320e-18 ... \n", + "9.78 1.235268e-25 9.535431e-15 45.0 336.434581 -2.947320e-18 ... \n", + "9.79 1.208414e-25 9.502830e-15 45.0 336.434581 -2.947320e-18 ... \n", + "9.80 1.168134e-25 9.470605e-15 45.0 336.434581 -2.947320e-18 ... \n", + "9.81 1.141280e-25 9.438761e-15 45.0 336.434581 -2.947320e-18 ... \n", + "9.82 1.101000e-25 9.407299e-15 45.0 336.434581 -2.947320e-18 ... \n", + "9.83 1.060719e-25 9.376224e-15 45.0 336.434581 -2.947320e-18 ... \n", + "9.84 1.033866e-25 9.345538e-15 45.0 336.434581 -2.947320e-18 ... \n", + "9.85 1.007012e-25 9.315245e-15 45.0 336.434581 -2.947320e-18 ... \n", + "9.86 9.667315e-26 9.285346e-15 45.0 336.434581 -2.947320e-18 ... \n", + "9.87 9.398779e-26 9.255845e-15 45.0 336.434581 -2.947320e-18 ... \n", + "9.88 9.130242e-26 9.226744e-15 45.0 336.434581 -2.947320e-18 ... \n", + "9.89 8.727437e-26 9.198046e-15 45.0 336.434581 -2.947320e-18 ... \n", + "9.90 8.593169e-26 9.169753e-15 45.0 336.434581 -2.947320e-18 ... \n", + "9.91 8.324632e-26 9.141869e-15 45.0 336.434581 -2.947320e-18 ... \n", + "9.92 8.056096e-26 9.114395e-15 45.0 336.434581 -2.947320e-18 ... \n", + "9.93 7.921828e-26 9.087333e-15 45.0 336.434581 -2.947320e-18 ... \n", + "9.94 7.653291e-26 9.060687e-15 45.0 336.434581 -2.947320e-18 ... \n", + "9.95 7.519023e-26 9.034457e-15 45.0 336.434581 -2.947320e-18 ... \n", + "9.96 7.250486e-26 9.008647e-15 45.0 336.434581 -2.947320e-18 ... \n", + "9.97 7.116218e-26 8.983258e-15 45.0 336.434581 -2.947320e-18 ... \n", + "9.98 6.847682e-26 8.958292e-15 45.0 336.434581 -2.947320e-18 ... \n", + "9.99 6.713413e-26 8.933751e-15 45.0 336.434581 -2.947320e-18 ... \n", + "10.00 6.310608e-26 8.909637e-15 45.0 336.434581 -2.947320e-18 ... \n", + "\n", + " thrust u v v_down v_east v_north \\\n", + "time \n", + "0.01 0.577997 44.87164 -1.750768e-15 4.440892e-16 21.574149 39.491215 \n", + "0.02 0.577997 44.87164 -1.750648e-15 4.440892e-16 21.574149 39.491215 \n", + "0.03 0.577997 44.87164 -1.750447e-15 4.440892e-16 21.574149 39.491215 \n", + "0.04 0.577997 44.87164 -1.750165e-15 4.440892e-16 21.574149 39.491215 \n", + "0.05 0.577997 44.87164 -1.749801e-15 4.440892e-16 21.574149 39.491215 \n", + "0.06 0.577997 44.87164 -1.749354e-15 4.440892e-16 21.574149 39.491215 \n", + "0.07 0.577997 44.87164 -1.748824e-15 4.440892e-16 21.574149 39.491215 \n", + "0.08 0.577997 44.87164 -1.748210e-15 0.000000e+00 21.574149 39.491215 \n", + "0.09 0.577997 44.87164 -1.747513e-15 -4.440892e-16 21.574149 39.491215 \n", + "0.10 0.577997 44.87164 -1.746731e-15 -8.881784e-16 21.574149 39.491215 \n", + "0.11 0.577997 44.87164 -1.745866e-15 -8.881784e-16 21.574149 39.491215 \n", + "0.12 0.577997 44.87164 -1.744917e-15 -8.881784e-16 21.574149 39.491215 \n", + "0.13 0.577997 44.87164 -1.743885e-15 -4.440892e-16 21.574149 39.491215 \n", + "0.14 0.577997 44.87164 -1.742771e-15 -4.440892e-16 21.574149 39.491215 \n", + "0.15 0.577997 44.87164 -1.741569e-15 0.000000e+00 21.574149 39.491215 \n", + "0.16 0.577997 44.87164 -1.740262e-15 0.000000e+00 21.574149 39.491215 \n", + "0.17 0.577997 44.87164 -1.738848e-15 0.000000e+00 21.574149 39.491215 \n", + "0.18 0.577997 44.87164 -1.737329e-15 4.440892e-16 21.574149 39.491215 \n", + "0.19 0.577997 44.87164 -1.735710e-15 4.440892e-16 21.574149 39.491215 \n", + "0.20 0.577997 44.87164 -1.734011e-15 8.881784e-16 21.574149 39.491215 \n", + "0.21 0.577997 44.87164 -1.732233e-15 8.881784e-16 21.574149 39.491215 \n", + "0.22 0.577997 44.87164 -1.730359e-15 8.881784e-16 21.574149 39.491215 \n", + "0.23 0.577997 44.87164 -1.728400e-15 1.332268e-15 21.574149 39.491215 \n", + "0.24 0.577997 44.87164 -1.726356e-15 1.332268e-15 21.574149 39.491215 \n", + "0.25 0.577997 44.87164 -1.724231e-15 1.776357e-15 21.574149 39.491215 \n", + "0.26 0.577997 44.87164 -1.722026e-15 1.776357e-15 21.574149 39.491215 \n", + "0.27 0.577997 44.87164 -1.719735e-15 1.776357e-15 21.574149 39.491215 \n", + "0.28 0.577997 44.87164 -1.717353e-15 2.220446e-15 21.574149 39.491215 \n", + "0.29 0.577997 44.87164 -1.714882e-15 2.220446e-15 21.574149 39.491215 \n", + "0.30 0.577997 44.87164 -1.712327e-15 2.664535e-15 21.574149 39.491215 \n", + "... ... ... ... ... ... ... \n", + "9.71 0.577997 44.87164 -4.296931e-16 5.875300e-13 21.574149 39.491215 \n", + "9.72 0.577997 44.87164 -4.295777e-16 5.884182e-13 21.574149 39.491215 \n", + "9.73 0.577997 44.87164 -4.294592e-16 5.888623e-13 21.574149 39.491215 \n", + "9.74 0.577997 44.87164 -4.293373e-16 5.897505e-13 21.574149 39.491215 \n", + "9.75 0.577997 44.87164 -4.292122e-16 5.901946e-13 21.574149 39.491215 \n", + "9.76 0.577997 44.87164 -4.290836e-16 5.906386e-13 21.574149 39.491215 \n", + "9.77 0.577997 44.87164 -4.289516e-16 5.915268e-13 21.574149 39.491215 \n", + "9.78 0.577997 44.87164 -4.288160e-16 5.919709e-13 21.574149 39.491215 \n", + "9.79 0.577997 44.87164 -4.286769e-16 5.928591e-13 21.574149 39.491215 \n", + "9.80 0.577997 44.87164 -4.285341e-16 5.933032e-13 21.574149 39.491215 \n", + "9.81 0.577997 44.87164 -4.283875e-16 5.941914e-13 21.574149 39.491215 \n", + "9.82 0.577997 44.87164 -4.282372e-16 5.950795e-13 21.574149 39.491215 \n", + "9.83 0.577997 44.87164 -4.280830e-16 5.950795e-13 21.574149 39.491215 \n", + "9.84 0.577997 44.87164 -4.279249e-16 5.955236e-13 21.574149 39.491215 \n", + "9.85 0.577997 44.87164 -4.277628e-16 5.964118e-13 21.574149 39.491215 \n", + "9.86 0.577997 44.87164 -4.275967e-16 5.968559e-13 21.574149 39.491215 \n", + "9.87 0.577997 44.87164 -4.274265e-16 5.973000e-13 21.574149 39.491215 \n", + "9.88 0.577997 44.87164 -4.272521e-16 5.981882e-13 21.574149 39.491215 \n", + "9.89 0.577997 44.87164 -4.270735e-16 5.986323e-13 21.574149 39.491215 \n", + "9.90 0.577997 44.87164 -4.268907e-16 5.995204e-13 21.574149 39.491215 \n", + "9.91 0.577997 44.87164 -4.267036e-16 5.999645e-13 21.574149 39.491215 \n", + "9.92 0.577997 44.87164 -4.265120e-16 6.004086e-13 21.574149 39.491215 \n", + "9.93 0.577997 44.87164 -4.263161e-16 6.012968e-13 21.574149 39.491215 \n", + "9.94 0.577997 44.87164 -4.261157e-16 6.017409e-13 21.574149 39.491215 \n", + "9.95 0.577997 44.87164 -4.259107e-16 6.026291e-13 21.574149 39.491215 \n", + "9.96 0.577997 44.87164 -4.257011e-16 6.030731e-13 21.574149 39.491215 \n", + "9.97 0.577997 44.87164 -4.254870e-16 6.035172e-13 21.574149 39.491215 \n", + "9.98 0.577997 44.87164 -4.252681e-16 6.044054e-13 21.574149 39.491215 \n", + "9.99 0.577997 44.87164 -4.250445e-16 6.048495e-13 21.574149 39.491215 \n", + "10.00 0.577997 44.87164 -4.248161e-16 6.057377e-13 21.574149 39.491215 \n", + "\n", + " w x_earth y_earth z_earth \n", + "time \n", + "0.01 3.396464 0 0 -1000 \n", + "0.02 3.396464 0 0 -1000 \n", + "0.03 3.396464 1 0 -1000 \n", + "0.04 3.396464 1 0 -1000 \n", + "0.05 3.396464 1 1 -1000 \n", + "0.06 3.396464 2 1 -1000 \n", + "0.07 3.396464 2 1 -1000 \n", + "0.08 3.396464 3 1 -1000 \n", + "0.09 3.396464 3 1 -1000 \n", + "0.10 3.396464 3 2 -1000 \n", + "0.11 3.396464 4 2 -1000 \n", + "0.12 3.396464 4 2 -1000 \n", + "0.13 3.396464 5 2 -1000 \n", + "0.14 3.396464 5 3 -1000 \n", + "0.15 3.396464 5 3 -1000 \n", + "0.16 3.396464 6 3 -1000 \n", + "0.17 3.396464 6 3 -1000 \n", + "0.18 3.396464 7 3 -1000 \n", + "0.19 3.396464 7 4 -1000 \n", + "0.20 3.396464 7 4 -1000 \n", + "0.21 3.396464 8 4 -1000 \n", + "0.22 3.396464 8 4 -1000 \n", + "0.23 3.396464 9 4 -1000 \n", + "0.24 3.396464 9 5 -1000 \n", + "0.25 3.396464 9 5 -1000 \n", + "0.26 3.396464 10 5 -1000 \n", + "0.27 3.396464 10 5 -1000 \n", + "0.28 3.396464 11 6 -1000 \n", + "0.29 3.396464 11 6 -1000 \n", + "0.30 3.396464 11 6 -1000 \n", + "... ... ... ... ... \n", + "9.71 3.396464 383 209 -1000 \n", + "9.72 3.396464 383 209 -1000 \n", + "9.73 3.396464 384 209 -1000 \n", + "9.74 3.396464 384 210 -1000 \n", + "9.75 3.396464 385 210 -1000 \n", + "9.76 3.396464 385 210 -1000 \n", + "9.77 3.396464 385 210 -1000 \n", + "9.78 3.396464 386 210 -1000 \n", + "9.79 3.396464 386 211 -1000 \n", + "9.80 3.396464 387 211 -1000 \n", + "9.81 3.396464 387 211 -1000 \n", + "9.82 3.396464 387 211 -1000 \n", + "9.83 3.396464 388 212 -1000 \n", + "9.84 3.396464 388 212 -1000 \n", + "9.85 3.396464 388 212 -1000 \n", + "9.86 3.396464 389 212 -1000 \n", + "9.87 3.396464 389 212 -1000 \n", + "9.88 3.396464 390 213 -1000 \n", + "9.89 3.396464 390 213 -1000 \n", + "9.90 3.396464 390 213 -1000 \n", + "9.91 3.396464 391 213 -1000 \n", + "9.92 3.396464 391 214 -1000 \n", + "9.93 3.396464 392 214 -1000 \n", + "9.94 3.396464 392 214 -1000 \n", + "9.95 3.396464 392 214 -1000 \n", + "9.96 3.396464 393 214 -1000 \n", + "9.97 3.396464 393 215 -1000 \n", + "9.98 3.396464 394 215 -1000 \n", + "9.99 3.396464 394 215 -1000 \n", + "10.00 3.396464 394 215 -1000 \n", + "\n", + "[1000 rows x 35 columns]" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [], + "source": [ + "kwargs = {'marker': '.',\n", + " 'subplots': True,\n", + " 'sharex': True,\n", + " 'figsize': (12, 6)}" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/asaez/miniconda3/envs/pyfme/lib/python3.6/site-packages/pandas/plotting/_core.py:1714: UserWarning: Pandas doesn't allow columns to be created via a new attribute name - see https://pandas.pydata.org/pandas-docs/stable/indexing.html#attribute-access\n", + " series.name = label\n" + ] + }, + { + "data": { + "image/png": "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\n8I6UUgKGIuJjwI/IXKruxpTSf026akmSJB2QWg/Oo6b6+7Df8JxSeuc4X3pTnrVfBb46zuv8EPjh\nAVUnSZIkVRBvzy1JkqSie+6551i5cmXB66+77jpuvvnmCdfcdNNNfOxjH8v7tS996UsHVF+hDM+S\nJEmqOL/3e7/He97znkk/3/AsSZKkknn0pUf55uPf5NGXHp221xweHuZDH/oQxx57LGeddRa9vb38\n+te/5uyzz+akk07iDW94A0899RQAf/Znf8ZXvvIVAB566CGOP/54TjvtNP7kT/5kTAd706ZNnH32\n2axYsYJPfOITAFx55ZX09vZywgkncOmll05b/TD913mWJElSBfvLB/+Sp7Y9NeGanoEefrX9VyQS\nQXD0vKNpaWwZd/1vzv9NPnnKJ/f73uvXr+e73/0u119/PW9/+9v53ve+x9/+7d9y3XXXsWLFCh54\n4AE+8pGP8NOf/nTM897//vezZs0aTj/9dK688soxX3v00Ud55JFHaGpq4uijj+YP/uAPWL16NV/9\n6ld59NHpC/6jDM+SJEkao3uwm5S9n10i0T3YPWF4LtTy5cs54YQTADjppJN47rnn+I//+A8uvvji\nPWv6+/vHPGfHjh10d3dz+umnA/Cud72Lu+66a8/X3/SmN3HwwQcD8OpXv5rnn3+eI444gmIxPEuS\nJNWQQjrEj770KB+6+0MMjgzSMKuB1W9YzQmHnjDl925qatrzeV1dHVu2bOGQQw6ZsEOcuepx4a85\nNDQ05Ton4syzJEmSxjjh0BO4/qzr+diJH+P6s66fluCcz9y5c1m+fDl33HEHkAnKjz322Jg18+bN\no7W1lfvvvx+AW2+9taDXbmhoYHBwcHoLxvAsSZKkPE449AQ+eNwHixacR33nO9/hhhtu4DWveQ3H\nHnssd9555z5rbrjhBlatWsVpp51GSmnPmMZEVq1axfHHHz/tGwZjf63wcmpvb09r164tdxmSJElV\n7cknn+SYY44pdxmT1tPTQ0tLZuZ69erVbN68mWuuuWbSr5fv9yMi1qWU2vf3XGeeJUmSVNH+6Z/+\nib/4i79gaGiII488kptuuqlstRieJUmSVNEuueQSLrnkknKXATjzLEmSVBMqeVS3lKb6+2B4liRJ\nmuGam5vZunVrzQfolBJbt26lubl50q/h2IYkSdIM19bWRkdHB52dneUupeyam5tpa2ub9PMNz5Ik\nSTNcQ0MDy5cvL3cZM4JjG5IkSVKBDM+SJElSgQzPkiRJUoEMz5IkSVKBDM+SJElSgQzPkiRJUoEM\nz5IkSVKBDM+SJElSgQzPkiRJUoEMz5IkSVKBDM+SJElSgQzPkiRJUoEMz5IkSVKBDM+SJElSgQzP\nkiRJUoH2G54j4saIeCkifplzbH5E3BMR67Mf52WPR0RcGxFPR8R/RsRrc57z3uz69RHx3uJ8O5Ik\nSVLxFNJ5vgk4e69jVwI/SSmtAH6SfQxwDrAi+2sV8A3IhG3gT4HXAacAfzoauCVJkqRqUb+/BSml\nn0XEsr0OXwCcmf38W8B9wCezx29OKSXg/og4JCKWZNfek1LaBhAR95AJ5N+d8ndQBHf86g6+//T3\nGRgeYHBkkIZZDXQPdAPQ2tg67ucHsrbUz7M2a6uG51mbtVlb5dc2E78na6uc2pYctISjDjmK83/j\nfE449AQqUWRy7n4WZcLzXSmlldnHO1JKh+R8fXtKaV5E3AWsTin9PHv8J2RC9ZlAc0rpz7PHPwv0\nppS+MtH7tre3p7Vr107m+5q0O351B1+4/wslfU9JkiS9onFWIze8+YaSBuiIWJdSat/fuuneMBh5\njqUJju/7AhGrImJtRKzt7Oyc1uIK8eMNPy75e0qSJOkVgyODrN1S2gZqoSYbnrdkxzHIfnwpe7wD\nOCJnXRuwaYLj+0gprUkptaeU2hctWjTJ8ibvt5f+dsnfU5IkSa9omNVA++L9NoHLYr8zz+P4AfBe\nYHX24505xz8WEbeS2RzYlVLaHBE/Ar6Us0nwLOBTky+7eC4++mIAZ56tzdr8nqzN2qytRr4na6uc\n2qph5nm/4TkivktmZnlhRHSQuWrGauD2iLgc2ABcnF3+Q+Bc4GlgN/B+gJTStoj4IvBQdt0XRjcP\nVqKLj754T4iWJEmSRhW0YbBcyrFhUJIkSbWnXBsGJUmSpBnL8CxJkiQVyPAsSZIkFcjwLEmSJBXI\n8CxJkiQVyPAsSZIkFcjwLEmSJBXI8CxJkiQVyPAsSZIkFcjwLEmSJBXI8CxJkiQVyPAsSZIkFcjw\nLEmSJBXI8CxJkiQVyPAsSZIkFcjwLEmSJBXI8CxJkiQVyPAsSZIkFcjwLEmSJBXI8CxJkiQVyPAs\nSZIkFcjwLEmSJBXI8CxJkiQVyPAsSZIkFcjwLEmSJBXI8CxJkiQVyPAsSZIkFcjwLEmSJBXI8CxJ\n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\nPOJmCwAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "results.plot(y=['x_earth', 'y_earth', 'height'], **kwargs);" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/asaez/miniconda3/envs/pyfme/lib/python3.6/site-packages/pandas/plotting/_core.py:1714: UserWarning: Pandas doesn't allow columns to be created via a new attribute name - see https://pandas.pydata.org/pandas-docs/stable/indexing.html#attribute-access\n", + " series.name = label\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "results.plot(y=['psi', 'theta', 'phi'], **kwargs);" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/asaez/miniconda3/envs/pyfme/lib/python3.6/site-packages/pandas/plotting/_core.py:1714: UserWarning: Pandas doesn't allow columns to be created via a new attribute name - see https://pandas.pydata.org/pandas-docs/stable/indexing.html#attribute-access\n", + " series.name = label\n" + ] + }, + { + "data": { + "image/png": "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\nG2eqOnF3RQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "results.plot(y=['v_north', 'v_east', 'v_down'], **kwargs);" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/asaez/miniconda3/envs/pyfme/lib/python3.6/site-packages/pandas/plotting/_core.py:1714: UserWarning: Pandas doesn't allow columns to be created via a new attribute name - see https://pandas.pydata.org/pandas-docs/stable/indexing.html#attribute-access\n", + " series.name = label\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "results.plot(y=['p', 'q', 'r'], **kwargs);" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/asaez/miniconda3/envs/pyfme/lib/python3.6/site-packages/pandas/plotting/_core.py:1714: UserWarning: Pandas doesn't allow columns to be created via a new attribute name - see https://pandas.pydata.org/pandas-docs/stable/indexing.html#attribute-access\n", + " series.name = label\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "results.plot(y=['alpha', 'beta', 'TAS'], **kwargs);" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/asaez/miniconda3/envs/pyfme/lib/python3.6/site-packages/pandas/plotting/_core.py:1714: UserWarning: Pandas doesn't allow columns to be created via a new attribute name - see https://pandas.pydata.org/pandas-docs/stable/indexing.html#attribute-access\n", + " series.name = label\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "results.plot(y=['Fx', 'Fy', 'Fz'], **kwargs);" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/asaez/miniconda3/envs/pyfme/lib/python3.6/site-packages/pandas/plotting/_core.py:1714: UserWarning: Pandas doesn't allow columns to be created via a new attribute name - see https://pandas.pydata.org/pandas-docs/stable/indexing.html#attribute-access\n", + " series.name = label\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "results.plot(y=['Mx', 'My', 'Mz'], **kwargs);" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/asaez/miniconda3/envs/pyfme/lib/python3.6/site-packages/pandas/plotting/_core.py:1714: UserWarning: Pandas doesn't allow columns to be created via a new attribute name - see https://pandas.pydata.org/pandas-docs/stable/indexing.html#attribute-access\n", + " series.name = label\n" + ] + }, + { + "data": { + "image/png": "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\nAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "results.plot(y=['elevator', 'aileron', 'rudder', 'thrust'], **kwargs);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Doublet " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's set the controls for the aircraft during the simulation. As a first step we will set them constant and equal to the trimmed values." + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [], + "source": [ + "from pyfme.utils.input_generator import Doublet" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [], + "source": [ + "de0 = trimmed_controls['delta_elevator']" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [], + "source": [ + "controls = controls = {\n", + " 'delta_elevator': Doublet(t_init=2, T=1, A=0.1, offset=de0),\n", + " 'delta_aileron': Constant(trimmed_controls['delta_aileron']),\n", + " 'delta_rudder': Constant(trimmed_controls['delta_rudder']),\n", + " 'delta_t': Constant(trimmed_controls['delta_t'])\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [], + "source": [ + "sim = Simulation(aircraft, system, environment, controls)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Once the simulation is set, the propagation can be performed:" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "time: 100%|█████████▉| 89.99/90 [00:16<00:00, 5.44it/s]\n" + ] + } + ], + "source": [ + "results = sim.propagate(90)" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/asaez/miniconda3/envs/pyfme/lib/python3.6/site-packages/pandas/plotting/_core.py:1714: UserWarning: Pandas doesn't allow columns to be created via a new attribute name - see https://pandas.pydata.org/pandas-docs/stable/indexing.html#attribute-access\n", + " series.name = label\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAs8AAAFbCAYAAAAqbWN/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzt3X2clPV97//Xh2VhRRBxUYMiARtj\nVdZAWBVN6lHTeH9E48GmRERrgmlrao/nlwTjXTTR0l9Sqx7TGIw3oDFGk2O0ao6Yqg9rDQpEKjVo\n8Z4NVAGVIIrcfc8fM+ACO7PD7uxcMzuv5+PBY3euuWauz66Xs+/5zuf6fiOlhCRJkqTO9cm6AEmS\nJKlWGJ4lSZKkEhmeJUmSpBIZniVJkqQSGZ4lSZKkEhmeJUmSpBIZniVJkqQSGZ4lSZKkEhmeJUmS\npBL1zbqAYoYOHZpGjhyZdRmSJEnq5ebPn78ipbR7Z/tVdXgeOXIk8+bNy7oMSZIk9XIR8Xop+1V1\neJYkSVLvdcAlv+KDDZu22tYQ8PLfnZRRRZ0zPEuSJKlHjLniYd79YMMOPWZjgj+66MGqDdCGZ0mS\nJHXJqTc8yYK2VWV/3o2p7E9ZNjUXntevX09bWxtr167NupSq1dTUxPDhw2lsbMy6FEmSVMPufPoN\nvnXvwooftyEqfsiS1Vx4bmtrY9CgQYwcOZKIKv7NZiSlxMqVK2lra2PUqFFZlyNJkqpcR33HWbLn\nuczWrl1rcC4iImhubmb58uVZlyJJkqpAV/qOK+3q01qYdNiIrMsoSc2FZ8Dg3Al/P5Ik1Y+e6jsu\npyP3G8qscw/LuoyyqMnwLEmSVC/mv/4Op//wqazLKGr3gf2Ye8nnsy6jIgzPkiRJGau2vuNt9WsI\n/vOqE7MuoyoYnqvctddey9SpUxkwYAAAAwcO5L333su4KkmStCNGX/Z/eW/dxqzLKOqrR+7LtBMP\nyLqMqlcX4Xn+6+8w55WVjN+3mXEfH5J1OSXbuHEj1157LWeeeeaW8CxJkqqPfcf1o9PwHBFNwBNA\n//z+P08pXR4Ro4C7gN2A3wKTU0rrIqI/MAsYB6wE/iyl9Fr+uS4CzgU2An+TUnq4O8Vf8c/P87ul\nfyi6z+q163nhv1azKUGfgD/+2CAGNRWe//jAvXbh8v9+UNHnnDt3Lueeey7PPPMMGzdu5NBDD+Vn\nP/sZo0eP3m7f733ve9x99918+OGHnHbaaVxxxRUAnHrqqSxZsoS1a9dywQUXMHXqVCA3snzhhRfy\n8MMPc9JJJ7F06VKOPvpohg4dymOPPQbAxRdfzAMPPMBOO+3Efffdx5577lm0XkmS1D1ZzXe8I+qp\n7zhLpYw8fwgck1J6LyIagScj4lfAhcA/ppTuiogbyYXiH+a/vpNS+kREfBH4e+DPIuJA4IvAQcBe\nwK8j4pMppR79DOMPazewKb9KzaaUu10sPJfikEMO4ZRTTuGSSy7hgw8+4Mwzz+wwOM+ePZvFixfz\nzDPPkFLilFNO4YknnuDII4/klltuYbfdduODDz7gkEMO4fTTT6e5uZk1a9YwevRorrzySgBuueUW\nHnvsMYYOHQrAmjVrGD9+PFdddRXf+MY3uOmmm7jkkku69fNIkiT45MUPsa6Kl7az77g6dBqeU0oJ\n2Nxk25j/l4BjgEn57TOBb5MLzxPy3wP8HLghcnOnTQDuSil9CLwaES8BhwK/6WrxnY0QQ65l40s/\nnsP6DZto7NuH6744tiytG5dddhmHHHIITU1NXH/99R3uM3v2bGbPns3YsWMBeO+991i8eDFHHnkk\n119/Pffeey8AS5YsYfHixTQ3N9PQ0MDpp59e8Lj9+vXj5JNPBmDcuHE88sgj3f5ZJEmqB7Uw37F9\nx9WvpJ7niGgA5gOfAH4AvAy8m1LafAa2AXvnv98bWAKQUtoQEauA5vz2Oe2etv1j2h9rKjAVYMSI\n7k+WPe7jQ/jJl8eXvef57bff5r333mP9+vWsXbuWnXfeebt9UkpcdNFFnHfeeVttf/zxx/n1r3/N\nb37zGwYMGMBRRx21ZbnxpqYmGhoaCh63sbFxyzzODQ0NbNhQ3S8CkiRVSi30HZ86Zi+u/eLYrMtQ\nN5QUnvOtFWMiYlfgXqCjt0SbP+foaIWOVGT7tseaAcwAaG1tLctnJ+M+PqTsFwpOnTqV73znO7z6\n6qt885vf5IYbbthun+OOO45LL72UL33pSwwcOJDf//73NDY2smrVKoYMGcKAAQN44YUXmDNnTgdH\nyBk0aBCrV6/e0rYhSVK9qoW+4+G7NvHktM9lXYZ60A7NtpFSejciHgfGA7tGRN/86PNwYGl+tzZg\nH6AtIvoCg4G3223frP1jasqsWbPo27cvkyZNYuPGjRxxxBE8+uijHHPMMVvtd+yxx7Jo0SIOP/xw\nIHcx4B133MHxxx/PjTfeyMEHH8z+++/P+PHjCx5r6tSpnHDCCQwbNmzLBYOSJPVWznesahe5luYi\nO0TsDqzPB+edgNnkLgKcAvyi3QWDz6WU/iki/hpoSSl9NX/B4BdSSmdExEHAneT6nPcC/gXYr9gF\ng62trWnevHlbbVu0aBEHHGAvUGf8PUmSqlEt9B1ffVoLkw7rfuuoaktEzE8ptXa2Xykjz8OAmfm+\n5z7A3SmlByLid8BdEfFd4Fng5vz+NwO35y8IfJvcDBuklJ6PiLuB3wEbgL/u6Zk2JElSZdl3rN6u\nlNk2ngO2O8NSSq+QG0XedvtaYGKB57oKuGrHy6xuCxcuZPLkyVtt69+/P08//XRGFUmS1DNqoe/Y\n+Y7Vk2pyhcGU0pYZJ6pBS0sLCxYsyLqMLTprxZEkqRj7jqXCai48NzU1sXLlSpqbm6sqQFeLlBIr\nV66kqakp61IkSVVq9GX/l/fWVXfnpH3HqlY1F56HDx9OW1sby5cvz7qUqtXU1MTw4cOzLkOSlJHP\n/8PjLF6+Jusyijpyv6HMOvewrMuQdljNhefGxkZGjRqVdRmSJGXGvmMpOzUXniVJqgefvPgh1m2s\n3mtY7DtWvTI8S5KUgVroO/7qkfsy7UTXDJDaMzxLktQDnO9Y6p0Mz5IkdUEt9B0P37WJJ6d9Lusy\npF7F8CxJUgHV3ne8U98+LPruCVmXIdUVw7MkqW6NueJh3v1gQ9ZlFOV8x1J1MTxLknot+44llZvh\nWZJUs+w7llRphmdJUlU74JJf8cGGTVmXUZDzHUv1pdPwHBH7ALOAjwGbgBkppesiYjfgZ8BI4DXg\njJTSOxERwHXAicD7wNkppd/mn2sKcEn+qb+bUppZ3h9HklRramG+Y/uOJW1WysjzBuB/pZR+GxGD\ngPkR8QhwNvAvKaXpETENmAZ8EzgB2C//7zDgh8Bh+bB9OdAKpPzz3J9SeqfcP5QkqXrYdyypN+k0\nPKeUlgHL8t+vjohFwN7ABOCo/G4zgcfJhecJwKyUUgLmRMSuETEsv+8jKaW3AfIB/Hjgp2X8eSRJ\nFVYLfce7D+zH3Es+n3UZknqBHep5joiRwFjgaWDPfLAmpbQsIvbI77Y3sKTdw9ry2wpt3/YYU4Gp\nACNG+BGZJFUD+44lKafk8BwRA4FfAH+bUvpDrrW541072JaKbN96Q0ozgBkAra2t1TszvST1IvYd\nS1JpSgrPEdFILjj/JKX0f/Kb34yIYflR52HAW/ntbcA+7R4+HFia337UNtsf73rpkqRSff4fHmfx\n8jVZl1GUfceSakEps20EcDOwKKV0Tbu77gemANPzX+9rt/38iLiL3AWDq/IB+2Hg6ogYkt/vWOCi\n8vwYklTf7DuWpMooZeT5M8BkYGFELMhv+xa50Hx3RJwLvAFMzN/3ELlp6l4iN1XdOQAppbcj4jvA\n3Px+V26+eFCS1LlPXvwQ6zZWbzebfceS6kHkJsWoTq2trWnevHlZlyFJFVELfcdfPXJfpp14QNZl\nSFLZRcT8lFJrZ/u5wqAkVYh9x5JU+wzPklQmtdB3PHzXJp6c9rmsy5CkmmV4lqQd8IlvPUgVT3fM\nTn37sOi7J2RdhiT1WoZnSWqn2hcDAec7lqQsGZ4l1RX7jiVJ3WF4ltSrTH9oETc+8UrWZRRl37Ek\n1S7Ds6SaU+19x853LEm9l+FZUtWp9vmOA/j5Xx7BuI8P6XRfSVLvYniWVHG10HfsYiCSpI4YniWV\nnX3HkqTeyvAsqUs+efFDrNuYsi6jIOc7liT1BMOzpA4d8t1HWP7euqzLKMi+Y0lSFgzPUp2y71iS\npB3XaXiOiFuAk4G3Ukqj89t2A34GjAReA85IKb0TEQFcB5wIvA+cnVL6bf4xU4BL8k/73ZTSzPL+\nKJLas+9YkqTyK2Xk+TbgBmBWu23TgH9JKU2PiGn5298ETgD2y/87DPghcFg+bF8OtAIJmB8R96eU\n3inXDyLVI/uOJUmqrE7Dc0rpiYgYuc3mCcBR+e9nAo+TC88TgFkppQTMiYhdI2JYft9HUkpvA0TE\nI8DxwE+7/RNIvZh9x5IkVZeu9jzvmVJaBpBSWhYRe+S37w0sabdfW35boe3biYipwFSAESNGdLE8\nqTbUQt/xmOGD+eX5n826DEmSqkK5LxiMDralItu335jSDGAGQGtra/V+Hi2V4M6n3+Bb9y7Muoyi\n7DuWJKl0XQ3Pb0bEsPyo8zDgrfz2NmCfdvsNB5bmtx+1zfbHu3hsqarYdyxJUv3oani+H5gCTM9/\nva/d9vMj4i5yFwyuygfsh4GrI2JzY+SxwEVdL1uqnFroO77qtBYmHWabkyRJPa2Uqep+Sm7UeGhE\ntJGbNWM6cHdEnAu8AUzM7/4QuWnqXiI3Vd05ACmltyPiO8Dc/H5Xbr54UMqafceSJKlUkZsYozq1\ntramefPmZV2GapzzHUuSpM5ExPyUUmtn+7nCoHqFT3zrQTZsyrqKwuw7liSpdzA8qyZUe98xwNX2\nHUuS1OsZnlUVPjv9X2h7d23WZRRl37EkSTI8qyL+9q5n+eWCpVmXUdR+u+/MI//rqKzLkCRJVczw\nrLKx71iSJPV2hmeVbMwVD/PuBxuyLqOgAH7+l0cw7uNDOt1XkiSpKwzP2qIWLso7cr+hzDr3sKzL\nkCRJdcrwXEfOuvlpnli8IusyirLvWJIkVTPDcy9T7X3HA/s18B9XHp91GZIkSV1ieK4x1d533BDw\n8t+dlHUZkiRJPcLwXGVqYb5j+44lSVK9MjxX2J1Pv8G37l2YdRlFuRiIJElSxwzPPeCTFz/Euo0p\n6zIK2nWnviy4/Lisy5AkSao5FQ/PEXE8cB3QAPw4pTS90jV0V7VP6dYn4J6vOt+xJElSuVU0PEdE\nA/AD4PNAGzA3Iu5PKf2uknV05tQbnmRB26qsyyjKvmNJkqTKq/TI86HASymlVwAi4i5gAlA14XnC\nDU/y71UQnJ3vWJIkqfpUOjzvDSxpd7sNqKrh0+cqFJx36tuHRd89oSLHkiRJUnlUOjxHB9u2urIu\nIqYCUwFGjBhRiZoKF9NNV5/WwqTDKv8zSJIkqWdUOjy3Afu0uz0cWNp+h5TSDGAGQGtra8WnrDhy\nv6ElL2HtlG6SJEn1pdLheS6wX0SMAn4PfBGYVOEaipp17mGcdfPTPPPa2xw6cjcvypMkSdIWkVJl\nB3cj4kTgWnJT1d2SUrqqyL7LgdcrVds2RgBvZHRsVTfPDRXiuaFiPD9UiOdGdfh4Smn3znaqeHiu\nFRGxvJRfoOqP54YK8dxQMZ4fKsRzo7b0ybqAKvZu1gWoanluqBDPDRXj+aFCPDdqiOG5sOwne1a1\n8txQIZ4bKsbzQ4V4btQQw3NhM7IuQFXLc0OFeG6oGM8PFeK5UUPseZYkSZJK5MizJEmSVCLDsyRJ\nklQiw7MkSZJUIsOzJEmSVCLDsyRJklQiw7MkSZJUIsOzJEmSVCLDsyRJklQiw7MkSZJUIsOzJEmS\nVKJOw3NE7BMRj0XEooh4PiIuyG/fLSIeiYjF+a9D8tsjIq6PiJci4rmI+HS755qS339xREzpuR9L\nkiRJKr9IKRXfIWIYMCyl9NuIGATMB04FzgbeTilNj4hpwJCU0jcj4kTga8CJwGHAdSmlwyJiN2Ae\n0Aqk/POMSym900M/myRJklRWfTvbIaW0DFiW/351RCwC9gYmAEfld5sJPA58M799Vsql8jkRsWs+\ngB8FPJJSehsgIh4Bjgd+WujYQ4cOTSNHjuzKzyVJkiSVbP78+StSSrt3tl+n4bm9iBgJjAWeBvbM\nB2tSSssiYo/8bnsDS9o9rC2/rdD2bY8xFZgKMGLECObNm7cjJUqSJEk7LCJeL2W/ksNzRAwEfgH8\nbUrpDxFRcNcOtqUi27fekNIMYAZAa2tr8Z4SSZIk1ZYbDoUVLxa+Pxrg8rcrV88OKik8R0QjueD8\nk5TS/8lvfjMihuVHnYcBb+W3twH7tHv4cGBpfvtR22x/vOulS5IkqerMOg1eebTrj08b4YrdqjZA\ndxqeIzfEfDOwKKV0Tbu77gemANPzX+9rt/38iLiL3AWDq/IB+2Hg6s2zcgDHAheV58eQJElSxXx3\nGGx4v+eeP23suefuplJGnj8DTAYWRsSC/LZvkQvNd0fEucAbwMT8fQ+Rm2njJeB94ByAlNLbEfEd\nYG5+vys3Xzy4I9avX09bWxtr167d0YfWjaamJoYPH05jY2PWpUiSpFo0fSSszXBCtGjI7tid6HSq\nuiy1trambS8YfPXVVxk0aBDNzc0U6buuWyklVq5cyerVqxk1alTW5UiSpGr0jy2w6o2sq+hYRj3P\nETE/pdTa2X47NNtGNVi7di0jR440OBcQETQ3N7N8+fKsS5EkSVm6Yreqbn9g8Aj4nwuzrmKH1Vx4\nBgzOnfD3I0lSHfjOHrDxw6yrKKxpCEx7Lesqyq4mw7MkSVKvd/VwWLc66yqK+8zfwuevyLqKijI8\nV7lrr72WqVOnMmDAAAAGDhzIe++9l3FVkiSp2773SVjzZtZVFLfvMXDWvVlXUVXqIzwveQZe+1cY\n+Sewz6FZV1OyjRs3cu2113LmmWduCc+SJKlGLHkGbj6WDtaEqx5D94fzn8m6ippS2+H5V9Pgvzpp\nNP/wD/Dmf0DaBNEH9hwN/XcpvP/HWuCE6UWf8tJLL2Xo0KFccMEFAFx88cXsueee/M3f/M12+37v\ne9/j7rvv5sMPP+S0007jiityH22ceuqpLFmyhLVr13LBBRcwdepUIDeyfOGFF/Lwww9z0kknsXTp\nUo4++miGDh3KY489tuV4DzzwADvttBP33Xcfe+65Z/HfgSRJ6hlXDoVN67OuorA+jXDZiqyr6FVq\nOzyXYu2qXHCG3Ne1q4qH5xKce+65fOELX+CCCy5g06ZN3HXXXTzzzPbv2mbPns3ixYt55plnSClx\nyimn8MQTT3DkkUdyyy23sNtuu/HBBx9wyCGHcPrpp9Pc3MyaNWsYPXo0V155JQC33HILjz32GEOH\nDgVgzZo1jB8/nquuuopvfOMb3HTTTVxyySXd+nkkSVIBPb0YSDmcfB20np11FXWjtsNzJyPEQO4j\nk5mnwMZ10NAPTv9xt1s3Ro4cSXNzM88++yxvvvkmY8eOpbm5ebv9Zs+ezezZsxk7diwA7733HosX\nL+bII4/k+uuv5957cz1ES5YsYfHixTQ3N9PQ0MDpp59e8Nj9+vXj5JNPBmDcuHE88sgj3fpZJEmq\na7/4Ciy8O+sqims5A06/KesqlFfb4bkU+xwKU+4ve8/zl7/8ZW677Tb+67/+i7/4i7/ocJ+UEhdd\ndBHnnXfeVtsff/xxfv3rX/Ob3/yGAQMGcNRRR21ZMbGpqYmGhsKr6jQ2Nm6Ziq6hoYENGzaU5eeR\nJKlXmncbPHBB1lUUt9c4mPpo1lWoRL0/PEMuMJf5QsHTTjuNyy67jPXr13PnnXd2uM9xxx3HpZde\nype+9CUGDhzI73//exobG1m1ahVDhgxhwIABvPDCC8yZM6fgcQYNGsTq1au3tG1IkqRtVPtiIPYd\n9yr1EZ57QL9+/Tj66KPZddddC44UH3vssSxatIjDDz8cyF0MeMcdd3D88cdz4403cvDBB7P//vsz\nfvz4gseZOnUqJ5xwAsOGDdtywaAkSXWl6vuOA86dXVMzeqnrIqXqnT6ltbU1zZs3b6ttixYt4oAD\nDsiooo9s2rSJT3/609xzzz3st99+WZeznWr5PUmS1KlZp8ErVd62UIeLgdSbiJifUmrtbD9Hnrvg\nd7/7HSeffDKnnXZaVQZnSZKqyiOXw79dm3UVxfXSpaRVfobnLjjwwAN55ZVXttxeuHAhkydP3mqf\n/v378/TTT1e6NEmSKm/JM3DzccCmrCsprKE/XPpW1lWoFzA8l0FLSwsLFizIugxJknrOP7bAqjey\nrqKwaIDL3866CtWBmgzPKaUt07Vpe9Xcxy5JqlIzjoGl87OuojgXA1EVqLnw3NTUxMqVK2lubjZA\ndyClxMqVK2lqasq6FElSNamFxUDsO1YNqLnwPHz4cNra2li+fHnWpVStpqYmhg8fnnUZkqRKWvIM\n3HwsUMWfPvYdAJcsy7oKqVtqLjw3NjYyatSorMuQJKnyvvdJWPNm1lUU5mIgqgM1F54lSeq1bjgU\nVryYdRXFDd0fzn8m6yqkzBieJUmqlFroO955T/j6f2ZdhVS1DM+SJJVTtS8l3W8QfKst6yqkmmV4\nliRpR0wfCWvfybqKwlwMROpRhmdJktqrhb7jvcbB1EezrkKqS4ZnSVJ9mXUavFLlwXPwCPifC7Ou\nQlIHDM+SpN7nO3vAxg+zrqIwFwORapbhWZJUe6q97xjgM38Ln78i6yoklZnhWZJUff6xBVa9kXUV\nxe17DJx1b9ZVSKoww7MkqfJqYSlpFwOR1AHDsySpZ9h3LKkXMjxLkrqmFvqOT74OWs/OugpJvUin\n4TkibgFOBt5KKY3Ob9sN+BkwEngNOCOl9E5EBHAdcCLwPnB2Sum3+cdMAS7JP+13U0ozy/ujSJLK\nqhb6jlvOgNNvyroKSXWklJHn24AbgFnttk0D/iWlND0ipuVvfxM4Adgv/+8w4IfAYfmwfTnQSq7B\nbX5E3J9SqvIhC0nqxebdBg9ckHUVxdl3LKnKdBqeU0pPRMTIbTZPAI7Kfz8TeJxceJ4AzEopJWBO\nROwaEcPy+z6SUnobICIeAY4Hftrtn0CSVFi19x33aYTLVmRdhSSVrKs9z3umlJYBpJSWRcQe+e17\nA0va7deW31ZouySpO64eDutWZ11FEQHnzoZ9Ds26EEkqi3JfMBgdbEtFtm//BBFTgakAI0aMKF9l\nklSLamEpaec7llRHuhqe34yIYflR52HAW/ntbcA+7fYbDizNbz9qm+2Pd/TEKaUZwAyA1tbWKp4A\nVJLKwL5jSaopXQ3P9wNTgOn5r/e1235+RNxF7oLBVfmA/TBwdUQMye93LHBR18uWpBpyxW6QNmZd\nRWEN/eHStzrfT5JU0lR1PyU3ajw0ItrIzZoxHbg7Is4F3gAm5nd/iNw0dS+Rm6ruHICU0tsR8R1g\nbn6/KzdfPChJNa/aL8oj4ORrne9YksogchNjVKfW1tY0b968rMuQVO9qoe/Y+Y4lqVsiYn5KqbWz\n/VxhUJIeuRz+7dqsqyjOpaQlqSoYniX1fkuegZuPpcAkP9Wh7wC4ZFnWVUiSOmF4ltQ7VPtS0tEA\nl3uphyTVOsOzpNow4xhYOj/rKoo7+TovypOkXs7wLKk6/OIrsPDurKsobuc94ev/mXUVkqQMGZ4l\nVU61LyVt37EkqROGZ0nl871Pwpo3s66isD6NcNmKrKuQJNUww7Ok0tVC3/Fe42Bqlc/JLEmqWYZn\nSR+x71iSpKIMz1K9qfa+436D4FttWVchSVKHDM9Sb1PtfccAn/lb+PwVWVchSdIOMzxLteaGQ2HF\ni1lXUZx9x5KkXsrwLFWjK4fCpvVZV1GYfceSpDpleJay8N1hsOH9rKsozL5jSZI6ZHiWesL0kbD2\nnayrKK7lDDj9pqyrkCSpphiepa74xxZY9UbWVRRn37EkSWVneJYKuWI3SBuzrqKwwSPgfy7MugpJ\nkuqK4Vn16zt7wMYPs66isOgDf/Ew7HNo1pVIkqQ8w7N6r2pfDASc71iSpBpjeFbtqoWlpPc9Bs66\nN+sqJElSmRieVb3m3QYPXJB1FcUN3R/OfybrKiRJUoUYnpWtar8oLxrg8rezrkKSJFUJw7N6VrUv\nBgJw8nXQenbWVUiSpBpgeFb3zDoNXqnyuYRdDESSJJWJ4VnFPXI5/Nu1WVdRnEtJS5KkCjE817sl\nz8DNxwGbsq6ksIb+cOlbWVchSZJkeK4L1b6UtBflSZKkGmF47g1mHANL52ddRXFelCdJknoBw3Mt\nqIW+46YhMO21rKuQJEnqUYbnalHt8x33HQCXLMu6CkmSpEwZniul2vuO+zTCZSuyrkKSJKmqGZ7L\npRbmO3YpaUmSpG6peHiOiOOB64AG4McppemVrqFL5t0GD1yQdRXF7bwnfP0/s65CkiSp16poeI6I\nBuAHwOeBNmBuRNyfUvpdJevo1NXDYd3qrKvYnn3HkiRJmar0yPOhwEsppVcAIuIuYAJQPeE5y+Bs\n37EkSVJVq3R43htY0u52G3BY+x0iYiowFWDEiBGVq2yzng7O9h1LkiTVrEqH5+hgW9rqRkozgBkA\nra2tqYP9e1a/Qd0L0M53LEmS1GtVOjy3Afu0uz0cWFrhGor7Vlvx1g37jiVJkupWpcPzXGC/iBgF\n/B74IjCpwjV07lttWVcgSZKkKhQpVbYzIiJOBK4lN1XdLSmlq4rsuxx4vVK1bWMEUMWrmihDnhsq\nxHNDxXh+qBDPjerw8ZTS7p3tVPHwXCsiYnkpv0DVH88NFeK5oWI8P1SI50Zt6ZN1AVXs3awLUNXy\n3FAhnhsqxvNDhXhu1BDDc2Grsi5AVctzQ4V4bqgYzw8V4rlRQwzPhc3IugBVLc8NFeK5oWI8P1SI\n50YNsedZkiRJKpEjz5IkSVKJajo8R8TEiHg+IjZFRGsJ+388IuZHxIL8475aiTolSZLUO9RMeI6I\noyLitm02/wfwBeCJEp9mGXBESmkMcBgwLSL2Kl+VkiRJ6s1qJjx3JKW0KKX04rbbI6IhIr4XEXMj\n4rmIOC+//7qU0of53fpT4z91WQWMAAAcz0lEQVS/JEmSKqu3hsdzgVUppUOAQ4Cv5JcEJyL2iYjn\ngCXA36eUlmZYpyRJkmpI36wL6ExEPE1ulHggsFtELMjf9c2U0sMFHnYscHBE/I/87cHAfsCrKaUl\n+fv2An4ZET9PKb3Zgz+CJEmSeomqD88ppcMg1/MMnJ1SOruEhwXwtSLhmpTS0oh4HvgT4OdlKFWS\nJEm9XG9t23gY+MuIaASIiE9GxM4RMTwidspvGwJ8BtiuZ1qSJEnqSNWPPBcTEacB/xvYHXgwIhak\nlI4DfgyMBH4bEQEsB04FDgD+ISISudHp76eUFmZSvCRJkmqOKwxKkiRJJeqtbRuSJElS2VV128bQ\noUPTyJEjsy5DkiRJvdz8+fNXpJR272y/qg7PI0eOZN68eVmXIUmSpF4uIl4vZb+qDs9Sdx13z3Es\nfb/jdXCa+jQxd/LcClckSZJqmeFZvca0J6bx4KsPlrz/2k1raZnZstW2wY2DeXLSk+UuTZIk9RKG\nZ9W8sTPHsoENZXmuVetXbQnUew3Yi4cnFlxnR5Ik1SHDs2rWmJlj2MjGHnv+pe8vpWVmC/2iH/PP\nmt9jx5EkqaetX7+etrY21q5dm3UpmWtqamL48OE0NjZ26fGGZ9WccbPGsS6tq9jx1qV1hmhJUk1r\na2tj0KBBjBw5ktz6cfUppcTKlStpa2tj1KhRXXoO53lWzZj0wCRaZrZ0KTi3NLewcMpCFk5ZyDkH\nndOl428O0Z+987NderwkSVlZu3Ytzc3NdR2cASKC5ubmbo3AO/KsmrDthX3FdHbR34WtF3Jh64Vb\nbTtv9nk8teypkp5/c1/0EcOO4EfH/qjkuiRJylK9B+fNuvt7MDyrql0z7xpuff7WTvcLglknzGLM\nHmO6dJz2IXjSA5NYuHJhp495atlTtMzMjWhLkqT6YNuGqtbRdx3daXDuQx8WTlnIc1Oe63Jw3tad\nJ9/JwikLuWz8ZSXt3zKzhUkPTCrLsSVJ6q1ee+01Ro8eXfL+N954I7NmzSq6z2233cb555/f4X1X\nX331DtVXKsOzqtLYmWNZ8eGKovtcNv4y/n3Kv/dYDRP3n1hyiF64cuEOtZZIkqTivvrVr3LWWWd1\n+fGGZ9WNlpktRedt3rlhZxZOWcjE/SdWpJ7NIfqIYUd0um/LzBbuefGeClQlSVLPWvDWAn688Mcs\neGtB2Z5z48aNfOUrX+Gggw7i2GOP5YMPPuDll1/m+OOPZ9y4cfzJn/wJL7zwAgDf/va3+f73vw/A\n3LlzOfjggzn88MP5+te/vtUI9tKlSzn++OPZb7/9+MY3vgHAtGnT+OCDDxgzZgxf+tKXylY/lLHn\nOSKOB64DGoAfp5Smb3N/f2AWMA5YCfxZSum1ch1fvUNno7eXjb+sYqF5W5v7og+5/RDWbip8le6V\nc67kn579Jx774mOVKk2SpJL9/TN/zwtvv1B0n/fWvceL77xIIhEE+w/Zn4H9Bhbc/493+2O+eeg3\nOz324sWL+elPf8pNN93EGWecwS9+8QtuvfVWbrzxRvbbbz+efvpp/uqv/opHH310q8edc845zJgx\ngyOOOIJp06Ztdd+CBQt49tln6d+/P/vvvz9f+9rXmD59OjfccAMLFpQv+G9WlpHniGgAfgCcABwI\n/HlEHLjNbucC76SUPgH8I/D35Th2NRl/x3haZrbw6VmfLuu7tHrRWXCu5GhzMXMnz+20lWPFhyts\n45Ak1azV61eTSAAkEqvXry7L844aNYoxY3LXKI0bN47XXnuNp556iokTJzJmzBjOO+88li1bttVj\n3n33XVavXs0RR+Q+AZ40aevrjD73uc8xePBgmpqaOPDAA3n99dfLUmsh5Rp5PhR4KaX0CkBE3AVM\nAH7Xbp8JwLfz3/8cuCEiIqWUylRD2RxyxyGs3dj1+f/Wp/VM/tVkbj/h9rJdxNbbFQuafejTo73N\nXTFx/4lM3H9ip6PQzsYhSao2pYwQL3hrAV+Z/RXWb1pPY59Gpv/J9LJkmv79+2/5vqGhgTfffJNd\nd9216AhxZ1Fx2+fcsKFw62c5lKvneW9gSbvbbfltHe6TUtoArAKay3T8shl/x/huBef2Jv9qclme\np7crFpx3bti56oJze3Mnz+100ZWWmS1cM++aClUkSVL3jdljDDcdexPnjz2fm469qccGA3fZZRdG\njRrFPffkrhdKKfHv/7713/0hQ4YwaNAg5syZA8Bdd91V0nM3Njayfv368hZM+cJzR7NNb/s2oZR9\niIipETEvIuYtX768LMXtiDUb15T1+QxNxRULzvvusi9zzpxTwWq65sLWCzsdXb71+VtdmVCSVFPG\n7DGGL7d8ucc/Rf/JT37CzTffzKc+9SkOOugg7rvvvu32ufnmm5k6dSqHH344KSUGDx7c6fNOnTqV\ngw8+uOwXDEY5uiYi4nDg2yml4/K3LwJIKf1du30ezu/zm4joC/wXsHuxto3W1tY0b968bte3I8bf\nMb6sAXpAwwCePvPpsj1fb1IsOLc0t3DnyXdWsJry6KyNIwiem/JcBSuSJAkWLVrEAQcckHUZXfbe\ne+8xcGDugsXp06ezbNkyrrvuui4/X0e/j4iYn1Jq7eyx5Rp5ngvsFxGjIqIf8EXg/m32uR+Ykv/+\nfwCPVmO/85wz57Bzw85le75ytYD0NmNnji1437677FuTwRlybRwnjTqp4P2J5IWEkiTtoAcffJAx\nY8YwevRo/vVf/5VLLrkks1rKMvIMEBEnAteSm6rulpTSVRFxJTAvpXR/RDQBtwNjgbeBL26+wLCQ\nLEaeu2vMzDFsZOOW2419Gvnt5N9mWFH1+eydn2XV+lUd3rfXgL14eOLDFa6oZ3QWkr2gVJJUKbU+\n8lxu3Rl5Lts8zymlh4CHttl2Wbvv1wLZzzPWw5r6NrFmw0dtH9Fhq3f9Om/2eQWD89D+Q3tNcIbc\n1HrFAvTkX03mpFEnMf3I6QX3Ue3b9g11OfWmN5uSel5KiQhzSXcHjssWnpXTr6HfVuF53aZ13PPi\nPVUxP3HWFry1gKeWPdXhfU19mnrloiILpyxk3KxxrEvrOrz/wVcf5Nk3nzUA9RI9GZQ7svT9pR2+\nQTvnoHO4sPXCitUhqfo1NTWxcuVKmpub6zpAp5RYuXIlTU1NXX6OsrVt9IRabNu4Zt413Pr8rVtt\n23fwvtx36vZXjtabQqOw1TiPc7kdd89xLH1/acH7m/o0MXfy3ApWpHLo7ALRajG0/9Be+eZUUunW\nr19PW1sba9dW/2tWT2tqamL48OE0NjZutb3Utg3Dcw847CeH8f6G97fc3mvnvXj4f9T3yGKx9oV6\nWUSkozdW7dXDm4jeoNKjyz3Bdg9J2l6lZ9tQO/sM2mer24P6DcqokupwyO2HFLyvXoIzdD4f9CY2\nORNHlTrk9kNomdlCy8yWmg/O8FG7x+Z/97x4T9YlSVLNsOe5B6zftL7o7Xpy3uzzCn6sffsJt1e4\nmurQ2YWELuldHSY9MImFK8vz36EvfXl2yrNleS6ACfdO4JU/FJ2saIdcOedKrpxzJeCotCR1xvDc\nAxr7NBa9XS+KXSB4xLAj6nqatlIC9GXjL/NC0wwUu8CzFOUOyh2577SOr6EoRw92+4sQ+0U/5p81\nv1vPp+qx4K0FnPWrs0jbL+5bUUcMO4IfHfujTGuQusOe5x4w4ZcTeGXVR6NC9XrBYKFwuHPDzjWx\n7HYldBbU9t1l34JBSeWz4K0FTP7V5C4/vlpntzhv9nkF38B2hW/oqldnFyXXKt/AqZK8YDBDZ//q\nbOa/9dH/7OP2GMdtJ9yWXUEZGDtzLBvY0OF9tiRsrbM/ev7x6DnTnpjGg68+uMOPa6CBBVMW9EBF\nPauc7R6+sau8crfr9Ca2G1Wve168Z0tbWKmyeo01PGeo3sNzsV5Rg3PHSglx/u7Kp6sjsr1t5LW7\nLSqb+QavvAzJPae3/T/c0zqbJaonZRGgDc8Z2rZto56mqiv28bcvWsWV0jpggO6erlwEWC9zJJcz\nsLU0t3DnyXeW5bl6s66MyKlyest5XMstPZX+m2d4ztAFj17Ao0se3XI7CGadMKsuLpAr1OfsR2ql\n62y6umrtr61mXQnN9fxmr7s94O3V0+tfMdUUYCpxUWtHPnvnZ1m1flXFj6va5MhzF9VqeO7oD88Z\nnzyDSw+/NKOKKqPQC6OLf+y4g2ceXPSK+HoZDe2uHW3PyCpUVLtyr6TYm9+YlPONR1f0ll50R+Xr\nmz3P3VCr4Rlg0oOTWLjio5GuY/Y5huuOuS7DinpWsb4oWw26prPA4puSwnY0NDsDTOl6YgS1Vn//\n5eoZ31F+kvcR+8NrRy1cG1FqeHae5x6yW//dsi6hogoF53MOOqfClfQecyfPLfqHYfOKhL45+ciO\nXtwyuHEwT056sgcr6n3ah7ZyjQ6u2bimw3alaug5HX/HeNZsXJPJsXvLKHJPKvX3k9Ubnd6iqU8T\ncyfPzbqMquHIcw/Ztu+5N488j5k5psMli2t1NKnalBJQqiFkZGlHQ7Mjdz3j6LuOZsWHKyp6zK6e\n+9XUf1sLI3L1pJr608vJN2Ods20jY/USnot9PO6IaHl1diEh1N/vfEdHPu0VryxH+7ZngJGql20b\nqohCwfn2E26vcCW938IpC4suPgO5gF0Ps3EYmmvDtqOp9RSmvfhU6r0Mz+qyg2ce3OH2luaWup+W\nqqc8O+XZTi+Gu/X5W5n1/KyaXAGvMzs6k4E9zdVl2zDd1RUeq0kQXDr+0l47e4ik7Rme1SUT7p3Q\n4VRqDTTUde9tJfzo2B8Bxds4NrKRlpktHDHsiC3717IdHWn24pbaMP3I6Uw/cvp226ux5/SkUSd1\nWKuk+mN41g5b8NaCgjNA9MbRzmq1cMrCTqeze2rZUzU9I8eOjkwamnuHUi7mLFfA7i1vMCVVjuFZ\nO6zQx+YnjTqpwpVo7uS5Jc000TKzpaaC5Y7O3epsBfXH2VIkZcXwrB1y9F1Hd7i9X/TzI82MXNh6\nIRe2XtjpxYRrN62lZWZLVU8huKMXlBmaJUmVZnhWye558Z6Cc7gaYLL37JRnSxqF3rwgRbXMBrCj\nqwGCMxlIkrLT7fAcEbsBPwNGAq8BZ6SU3ulgv43A5sbLN1JKp3T32LVk1YfVMRl/dxS6YMtVBKvH\n5lHoUhaA2MCGLRcdVrrvc0cXNdmsllpPJEm9UzlGnqcB/5JSmh4R0/K3v9nBfh+klOpm/rLmnZq3\nuv3sW8+y4K0FNTuF2/g7xne4feeGnXv9nMK1aPP0bAfPPLjDWVG2tfnCQui5WQW6c4FXNbeaSJLq\nSznC8wTgqPz3M4HH6Tg815VT/ugUfv6fP98SXDaxiX9++Z9rMjxfM+8a1mxc0+F9Bprq9tyU53Z4\nlPfBVx/caoaLrobpzmYCKYWrsUmSqk23l+eOiHdTSru2u/1OSmlIB/ttABYAG4DpKaVfFni+qcBU\ngBEjRox7/fXXu1VfliY9MImFKz+aIqxWl+guNJ9wPaxk15vU0oIUl42/zEUnJEkVVdbluSPi18DH\nOrjr4h2oaURKaWlE7As8GhELU0ovb7tTSmkGMAOgtbW1e8k+Y0OatnsPUXPGzRrX4fbBjYMNzjVm\n84IUO7pKX6W4hLYkqRaUFJ5TSn9a6L6IeDMihqWUlkXEMOCtAs+xNP/1lYh4HBgLbBeee5O+fWp7\nMpNpT0wrOG2YSx7XrjF7jNmyaEopFxb2JC8AlCTVmnKku/uBKcD0/NftGhQjYgjwfkrpw4gYCnwG\n+P/LcGz1oEIf8d9+wu0VrkQ9pf2boPF3jC/Y215O9jFLkmpZOcLzdODuiDgXeAOYCBARrcBXU0pf\nBg4AfhQRm4A+5Hqef1eGY6uHjJnZ8YWN++6yb01e9KjObXvxZ7nCtL3xkqTepNvhOaW0EvhcB9vn\nAV/Of/8U0PFVZ6o6kx6YxEY2brc9CEcM64gzqUiStL0+WReg6rLgrQVbzRDS3nNTnqtwNZIkSdXF\n8KytFJqF4YhhR1S4EkmSpOpjeNYWhVYRbKChoks3S5IkVSvDs4DiqwgumLKgwtVIkiRVJ8OzAAou\n33zOQedUuBJJkqTqZXgWn5r5qQ63u4qgJEnS1gzPFbTqw+xWcivk6LuOZhObOrzPVQQlSZK2Znju\nQc07NW91+9m3nmXBW9XTP3zNvGtY8eGKDu9zFUFJkqTtGZ570Cl/dApBbLm9iU3888v/nGFFWyvU\n59zS3OIqgpIkSR0wPPegMXuM4RODP7HVtpfffTmjarbWMrPjBR/7RT/uPPnOClcjSZJUGwzPPWzb\nZa7f+fCdjCr5yLhZ4wreN/+s+RWsRJIkqbYYnnvYkP5Dit6utAn3TmBdWtfhfQundLwstyRJknIM\nzz1scP/BRW9X0jXzruGVP7zS4X0njTqpwtVIkiTVHsNznVjw1oKCFwju3LAz04+cXuGKJEmSao/h\nuU5M/tXkDrcHwZwz51S4GkmSpNpkeO5h2y6MksVCKYVm1gB4bspzFaxEkiSpthmee9i2s2tUeraN\nYsHZCwQlSZJ2jOG5hzX2aSx6uycVC86uIChJkrTjDM89bP2m9VvdXvnByooct1hwPmnUSa4gKEmS\n1AWG5x42cpeRW91esXYF97x4T48es1hw3neXfZ1ZQ5IkqYsMzz3snNHnbLftjkV39NjxigXnvQbs\nxX2n3ddjx5YkSertDM89bMweYxjaNHSrbWs3rC37cc6bfV6nwfnhiQ+X/biSJEn1pNvhOSImRsTz\nEbEpIlqL7Hd8RLwYES9FxLTuHreWNO/UvNXtQf0GlfX5PzXzUzy17KmC9xucJUmSyqMcI8//AXwB\neKLQDhHRAPwAOAE4EPjziDiwDMeuCdteJFiuiwY3jzZvYlPBfVqaWwzOkiRJZdK3u0+QUloEEBHF\ndjsUeCml9Ep+37uACcDvunv8WvD++ve3ur163WogF37bjxifNOqkki7m2/ZxhVw2/jIm7j9xB6uV\nJElSId0OzyXaG1jS7nYbcFiFjp25bd9YfLjpQw6eeTCJtNX2B199kAdffZCdG3bucMnsMTPHsJGN\nJR3TBVAkSZLKr6TwHBG/Bj7WwV0Xp5RKmb6ho2Hp1ME2ImIqMBVgxIgRpZRX9fo19GPNhjVbbds2\nOLe3ZuOaohf/FdOXvjw75dkuPVaSJEnFldTznFL605TS6A7+lTrvWRuwT7vbw4GlBY41I6XUmlJq\n3X333Ut8+up26idOrchxThp1ksFZkiSpB1WqbWMusF9EjAJ+D3wRmFShY2fuwtYLufX5W3vs+Qc3\nDubJSU/22PNLkiQpp9vhOSJOA/43sDvwYEQsSCkdFxF7AT9OKZ2YUtoQEecDDwMNwC0ppee7e+xa\n0jf6siFtKOtzGpolSZIqqxyzbdwL3NvB9qXAie1uPwQ81N3j1arJB07ucPS5/RzM056YxoOvPlj0\neexpliRJyk6kVPjCtay1tramefPmZV1G2Vwz75qtAnSpU9NJkiSpZ0XE/JRSwQX/tuxneJYkSVK9\n6xXhOSKWA69ndPgRwBsZHVvVzXNDhXhuqBjPDxXiuVEdPp5S6nSqt6oOz1mKiOWl/AJVfzw3VIjn\nhorx/FAhnhu1paR5nuvUu1kXoKrluaFCPDdUjOeHCvHcqCGG58JWZV2Aqpbnhgrx3FAxnh8qxHOj\nhhieC5uRdQGqWp4bKsRzQ8V4fqgQz40aYs+zJEmSVCJHniVJkqQSGZ4lSZKkEtV1eI6Ibi9PLkmS\npPpRl+E5IvpGxPeBf4iIP826HlWXiDgrIv5bRAzO367L/0+0vYg4PSLGRERD/nZkXZOqg68bKsbX\njt6l7i4YzJ+wPwAGAw8BZwO/BH6cUvoww9KUofx58THgTmAT8BIwCPiblNKKiIhUb/+zCNhybowA\nfg78AVgJvAj8Q0rpXc+N+hYRHwPuAjbi64ba8bWj96rHd8aDgDHAV1NKPwG+D3wSmJhpVcpMRDTk\nX8AGAb9PKX0O+GtgBfCjTItTpiJil/y5sTcwN39uXEruXLkq0+KUqYjYKyKGkjsX2nzdUHsRMTD/\n2rEX8LSvHb1L3YXnlNIfgNfIjTgD/BvwLHB4fgRBdSLfvnM1cHVE/Ddgf3KjR6SUNgAXAEdExH9L\nKSU/hq0vEfHXwBMRcSAwHBiWv+tl4BrgsxFxSP7c8CPYOhERffKvG3OA0eQGYwBfN7TV35V7I+JM\nYAKwS/5uXzt6iXr9n/peYExEDEspvQcsBNbx0R9H9XL5sDwfGELuo9bvAOuBoyPiUID8qMGVwLfz\ntzdlUqwqqt0fs0HAWmAq8AugNSLGppQ2pJTeAG4jN9KIH73WlcnAHwOfSik9DjxILgz5ulHnImII\nuda/XYFrgVOBp4E/jYgxvnb0HvUanp8k13t0NkBKaT5wCLBThjWpsjYB308p/WVK6SbgP4BRwGXA\nD2HLBT/3Assj4uOZVaqKajdauCcfXR9xLHARMB1yrT7APOD9/B9M1YH8G6v9gOtTSu9ExOFAI/Bj\nci2Avm7Ut4HAyJTSX6WUHgQ+AH5Prk3jSvC1o7eoy/CcUlpG7iLBEyJiYkSMJDfCtCHLulRR84G7\nN1/5TK59Z0RK6TagISK+lh8xGg5sTCm9nlGdqrCI6JP/b78CWAPMBs4kN4J0cERMSiltBAYAA1JK\n72RXrSopP0o4FPhCRHwNuAG4kdzH8mMi4qz8rr5u1KGU0hJyofi2iPg1cAS5N93rgc9ExBd97egd\n6jI8A6SUngL+DjgB+L/AL1NKz2RblSolpfR+SunD/AsZwOeB5fnvzwEOiIgHgJ8CvwWnFqoX7T5m\nbwEeJvf6cDC5j2P/CfjziLg7//3T4LlRZ34AjAMOSimNI/dp1Rvk3pAfDNxP7lzxdaM+TQSeApam\nlP6I3BusgcDjwGn5144f4mtHTau7qeq2FRGN5AYUHHWuQ/mR50Sub/FrKaWXIuIT5EYdRwOvppR+\nn2WNykZEXESut3UMsIrc6NHJKaUPIuIU4Nn8SJPqSEQ0kQs/n0opfTq/bSq5tr/rgaOBF33dqF8R\ncTZwcErpwvzt75N7c3Uf8Kf42lHz6nbkebOU0nqDc13bRK5ncQW5j+QfIDed0KaU0pP+AaxrfYA9\nyM3ZeyS5P35/A5BSut8/fvUppbQWmEauvev0iDgA+CKwPuU86utG3XsJGB4R4yNiD+BQoE/+E09f\nO3qBuh95liJiPLmP2Z4Cbk0p3ZxxSaoCEbFTSumD/PcB7JFSejPjslQlIuKzwDHAycBN+QuPpc2f\nTvwl8N/JvQG/PqU0I9uqVE6GZ9W9iBhObvqpa1xlUtuKiL5+OqVC8ossbex8T9WbiBhFbgGd9VnX\novIyPEuSJEklqvueZ0mSJKlUhmdJkiSpRIZnSZIkqUSGZ0mSJKlEhmdJqgERsWtE/FX++70i4udZ\n1yRJ9cjZNiSpBkTESOCBlNLojEuRpLrWN+sCJEklmQ78UUQsABYDB6SURueXAj4VaCC3pPw/AP3I\nzV3+IXBiSuntiPgj4AfA7sD7wFdSSi9U/seQpNpm24Yk1YZpwMsppTHA17e5bzQwidwywFcB76eU\nxgK/Ac7K7zMD+FpKaRzw/wH/VJGqJamXceRZkmrfYyml1cDqiFgF/HN++0Lg4IgYCBwB3JNbaRyA\n/pUvU5Jqn+FZkmpf+2XlN7W7vYnc63wf4N38qLUkqRts25Ck2rAaGNSVB6aU/gC8GhETASLnU+Us\nTpLqheFZkmpASmkl8G8R8R/A97rwFF8Czo2IfweeByaUsz5JqhdOVSdJkiSVyJFnSZIkqUSGZ0mS\nJKlEhmdJkiSpRIZnSZIkqUSGZ0mSJKlEhmdJkiSpRIZnSZIkqUSGZ0mSJKlE/w9YbBqdvZ419gAA\nAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "results.plot(y=['x_earth', 'y_earth', 'height'], **kwargs);" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/asaez/miniconda3/envs/pyfme/lib/python3.6/site-packages/pandas/plotting/_core.py:1714: UserWarning: Pandas doesn't allow columns to be created via a new attribute name - see https://pandas.pydata.org/pandas-docs/stable/indexing.html#attribute-access\n", + " series.name = label\n" + ] + }, + { + "data": { + "image/png": "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\nYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "results.plot(y=['psi', 'theta', 'phi'], **kwargs);" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/asaez/miniconda3/envs/pyfme/lib/python3.6/site-packages/pandas/plotting/_core.py:1714: UserWarning: Pandas doesn't allow columns to be created via a new attribute name - see https://pandas.pydata.org/pandas-docs/stable/indexing.html#attribute-access\n", + " series.name = label\n" + ] + }, + { + "data": { + "image/png": "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\neYoAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "results.plot(y=['v_north', 'v_east', 'v_down'], **kwargs);" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/asaez/miniconda3/envs/pyfme/lib/python3.6/site-packages/pandas/plotting/_core.py:1714: UserWarning: Pandas doesn't allow columns to be created via a new attribute name - see https://pandas.pydata.org/pandas-docs/stable/indexing.html#attribute-access\n", + " series.name = label\n" + ] + }, + { + "data": { + "image/png": "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\nYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "results.plot(y=['p', 'q', 'r'], **kwargs);" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/asaez/miniconda3/envs/pyfme/lib/python3.6/site-packages/pandas/plotting/_core.py:1714: UserWarning: Pandas doesn't allow columns to be created via a new attribute name - see https://pandas.pydata.org/pandas-docs/stable/indexing.html#attribute-access\n", + " series.name = label\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAswAAAFbCAYAAADBWth8AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzt3Xt8VNW5//HPkwSIKCI3qxgw2HpB\nCEUJSJFW1J8XFKtW6bEUBFurtsfayrEt9tRLObW1ra21x3qO1AtYK7booVrRQ23RY1GpBk0NFKmK\nIBFbQoAIYpAkz++PmcRkMplMkpnZe2a+79eLl7Mvs/cTFyTfrFl7LXN3REREREQkvoKgCxARERER\nCTMFZhERERGRBBSYRUREREQSUGAWEREREUlAgVlEREREJAEFZhERERGRBBSYRUREREQSUGAWERER\nEUlAgVlEREREJIGioAuINXjwYC8tLQ26DBERERHJcatXr97m7kM6Oy90gbm0tJSKioqgyxARERGR\nHGdmm5I5L3SBOR+dd/tKqt6u4+B+fbj98+MYd/iAoEsSERERkSiNYQ7YebevpLK6jkaHd97dywX/\n9RyrN+0IuiwRERERiVJgDtgrb9e123fzE+sCqERERERE4tGQjIAVGDR5231vbN0dTDEiIiKSs/bt\n20d1dTX19fVBl5JxxcXFlJSU0KtXr269X4E5QKs37aChqf3+fsXda0wRERGRjlRXV9OvXz9KS0sx\ns6DLyRh3p7a2lurqakaMGNGta2hIRoD+56XquPsbmuKkaBEREZEeqK+vZ9CgQXkVlgHMjEGDBvWo\nZ12BOUA1u/bG3b+3UYFZREREUi/fwnKznn7dCswBGtyvT9z9tbs+0EwZIiIiIiGhwByg0UP7x93v\nwMMdDNcQERERyTWlpaVs27atx+ekS1KB2czONLP1Zva6mc2Lc/xTZvaSmTWY2YUxx2ab2WvRP7NT\nVXguWLul/ZRyzV7/564MViIiIiIiHek0MJtZIfALYCpwLPA5Mzs25rS3gDnAAzHvHQjcAJwATABu\nMDMtYxfV0RhmgO3vfZDBSkRERETaW71pB7946vWUDhU977zzGDduHKNGjWLBggVtjm3cuJFjjjmG\n2bNnM2bMGC688EL27NnTcvw///M/Of744ykrK+PVV18F4IUXXmDSpEkcd9xxTJo0ifXr16es1mbJ\n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\nTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "results.plot(y=['alpha', 'beta', 'TAS'], **kwargs);" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/asaez/miniconda3/envs/pyfme/lib/python3.6/site-packages/pandas/plotting/_core.py:1714: UserWarning: Pandas doesn't allow columns to be created via a new attribute name - see https://pandas.pydata.org/pandas-docs/stable/indexing.html#attribute-access\n", + " series.name = label\n" + ] + }, + { + "data": { + "image/png": "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\nAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "results.plot(y=['Fx', 'Fy', 'Fz'], **kwargs);" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/asaez/miniconda3/envs/pyfme/lib/python3.6/site-packages/pandas/plotting/_core.py:1714: UserWarning: Pandas doesn't allow columns to be created via a new attribute name - see https://pandas.pydata.org/pandas-docs/stable/indexing.html#attribute-access\n", + " series.name = label\n" + ] + }, + { + "data": { + "image/png": "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\nAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "results.plot(y=['Mx', 'My', 'Mz'], **kwargs);" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/asaez/miniconda3/envs/pyfme/lib/python3.6/site-packages/pandas/plotting/_core.py:1714: UserWarning: Pandas doesn't allow columns to be created via a new attribute name - see https://pandas.pydata.org/pandas-docs/stable/indexing.html#attribute-access\n", + " series.name = label\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtUAAAFbCAYAAAAa4XJeAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzt3Xt8XWWV+P/Pog1EoA6lFAVCSVWE\nQoFCQykiFkUuKsPdAUEBFVEZRGdGpIrKDIrWwXHEryBTsOD8QMCpcvHORRBhAEmkI5fSAaHYAANt\noFyUQtus3x/ntIRy0ibdOTk7zef9euWVs/d+9rPXyWpPV588+9mRmUiSJElae+s1OgBJkiRpqLOo\nliRJkgqyqJYkSZIKsqiWJEmSCrKoliRJkgqyqJYkSZIKsqiWJEmSCrKoliRJkgqyqJYkSZIKGjkQ\nnUTEgcC5wAjgosycscrxDYD/BCYDXcBRmTm/euzzwEeB5cCpmfnrNV1vs802y9bW1oEIXZIkSaqp\no6NjUWaO7UvbwkV1RIwAzgP2AzqBuyLi2sy8v0ezjwLPZOZbIuJo4BvAURGxA3A0sCOwJXBDRLw1\nM5ev7pqtra20t7cXDb2hfnjnn/nS1fewvMZT4sduvD53fXG/wQ9KkiRJK0XEo31tOxDTP6YAD2Xm\nw5n5MnAFcMgqbQ4BflB9PRvYNyKiuv+KzHwpMx8BHqr2t0774Z1/5gtX1S6oARa+8DK7f/X6wQ1K\nkiRJa20giuqtgAU9tjur+2q2ycxlwLPAmD6eu8755b1PrLHNwhdeHoRIJEmSNBAGoqiOGvtWHYPt\nrU1fzq10EHFSRLRHRPvChQv7GWK5vGfiFmtsM3bj9QchEkmSJA2EgbhRsRPYusd2C/B4L206I2Ik\n8DfA0308F4DMnAnMBGhra+tl4sTQcMwe4/hj52KuuGtBzeObbjjSOdWSJGmtLV26lM7OTpYsWdLo\nUIaE5uZmWlpaaGpqWus+BqKovgvYNiLGA49RufHwmFXaXAscD9wOHAn8JjMzIq4FfhgR36Jyo+K2\nwO8HIKbS2/PNY7jirgXc8I/TeMvmGwPwsz8+zik/vJsrP/62BkcnSZKGss7OTkaNGkVrayuV29jU\nm8ykq6uLzs5Oxo8fv9b9FC6qM3NZRJwC/JrKknqzMvO+iDgLaM/Ma4HvA/9fRDxEZYT66Oq590XE\n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\nc6pXLK/31UMn8sGp29T1+pIkSVo7RedUzwD2i4gHgf2q20REW0RcBJCZTwNfAe6qfp1V3bcB8OuI\n+CMwB3gMuLBgPENarTnVtR4SI0mSpHIpNFKdmV3AvjX2twMn9tieBcxapc1fgMlFrr+uWblOdY+R\n6hUPiVnPmlqSJKm0fKJiibwyUv2KFa8dqZYkSSovi+pSeW3h3N392seZS5IkqVwsqktk5Uh1j/kf\nK16WdAlvSZIkYVFdKivnVPfY55xqSZKk8rOoLpGoMan6laLaqlqSJKmsLKpLqOeSeiteWVNLkiSV\nl0V1idRaUi8dqZYkSSo9i+oSeeVGxVf2deerj0mSJKl8LKpLJKpj1bVvVLSqliRJKiuL6hKptaRe\nd3flu6t/SJIklZdFdcmtuGnRdaolSZLKy6K6RGo+pry64fQPSZKk8rKoLpGVc6prrFNtSS1JklRe\nFtUl8spgdI851StGqs2UJElSaVmqlVDNkWqnf0iSJJWWRXWJOKdakiRpaLKoLpFac6pfeaJiIyKS\nJElSX1hUl8grI9WvnVMd3qooSZJUWhbVJbKibK41p9qRakmSpPKyqC6RWtOmvVFRkiSp/AoV1RGx\naURcHxEPVr+P7qXdryJicUT8bJX94yPizur5V0bE+kXiGfqqc6p77lp5o+KgByNJkqQ+KjpSPR24\nMTO3BW6sbtdyDvChGvu/Afx79fxngI8WjGdIWzEYferld9M6/ee0Tv85x1x0JwAfueSuBkYmSZKk\n1SlaVB8C/KD6+gfAobUaZeaNwPM990VlPsO7gNlrOn+4OPS7t/Z67C8vL2fSv/x6EKORJElSXxUt\nqt+QmU8AVL9v3o9zxwCLM3NZdbsT2KpgPEPa8y8tX+3xxS8uW+1xSZIkNcbINTWIiBuAN9Y4dEbB\na9eaJZw19q2I4yTgJIBx48YVvHQ5bfK6kastnDd53RrTJUmSpAZY40h1Zr47MyfW+LoGeDIitgCo\nfn+qH9deBGwSESsqxRbg8dXEMTMz2zKzbezYsf24zNAx58wDei2cN3ndSOacecAgRyRJkqS+KDr0\neS1wPDCj+v2avp6YmRkRNwFHAlf05/yOjo5FEfFo/8MtbBzw5wZcl0eB+OdGXHlIaFhe1CtzUj7m\npJzMS/mYk3JqVF626WvDyOx1xsWaT44YA/yIV97o+zPz6YhoAz6RmSdW2/0O2B7YGOgCPpqZv46I\n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\nCUZTn6cYAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "results.plot(y=['elevator', 'aileron', 'rudder', 'thrust'], **kwargs);" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 73b71539f696eeab4eb5c552776715ad186e6e92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sat, 11 Nov 2017 14:10:55 +0100 Subject: [PATCH 087/104] testing Euler Flat Earth --- src/pyfme/models/state/acceleration.py | 5 + src/pyfme/models/state/aircraft_state.py | 9 + .../models/state/angular_acceleration.py | 5 + src/pyfme/models/state/angular_velocity.py | 5 + src/pyfme/models/state/attitude.py | 5 + src/pyfme/models/state/position.py | 6 + src/pyfme/models/state/velocity.py | 5 + .../models/tests/test_euler_flat_earth.py | 227 +++++------------- src/pyfme/models/tests/test_models.py | 24 -- 9 files changed, 106 insertions(+), 185 deletions(-) delete mode 100644 src/pyfme/models/tests/test_models.py diff --git a/src/pyfme/models/state/acceleration.py b/src/pyfme/models/state/acceleration.py index 33a2a1c..140e9ce 100644 --- a/src/pyfme/models/state/acceleration.py +++ b/src/pyfme/models/state/acceleration.py @@ -73,6 +73,11 @@ def v_east_dot(self): def v_down_dot(self): return self._accel_NED[2] + @property + def _value(self): + """Only for testing purposes""" + return np.hstack((self.accel_body, self.accel_NED)) + class BodyAcceleration(Acceleration): diff --git a/src/pyfme/models/state/aircraft_state.py b/src/pyfme/models/state/aircraft_state.py index e7eff90..05d510e 100644 --- a/src/pyfme/models/state/aircraft_state.py +++ b/src/pyfme/models/state/aircraft_state.py @@ -9,6 +9,8 @@ """ +import numpy as np + from .angular_velocity import BodyAngularVelocity from .acceleration import BodyAcceleration from .angular_acceleration import BodyAngularAcceleration @@ -33,6 +35,13 @@ def __init__(self, position, attitude, velocity, angular_vel=None, self.acceleration = acceleration self.angular_accel = angular_accel + @property + def _value(self): + """Only for testing purposes""" + return np.hstack((self.position._value, self.attitude._value, + self.velocity._value, self.angular_vel._value, + self.acceleration._value, self.angular_accel._value)) + def __repr__(self): rv = ( "Aircraft State \n" diff --git a/src/pyfme/models/state/angular_acceleration.py b/src/pyfme/models/state/angular_acceleration.py index 3538269..dfe6c81 100644 --- a/src/pyfme/models/state/angular_acceleration.py +++ b/src/pyfme/models/state/angular_acceleration.py @@ -71,6 +71,11 @@ def phi_2dot(self): def psi_2dot(self): return self._euler_ang_acc[2] + @property + def _value(self): + """Only for testing purposes""" + return np.hstack((self.acc_ang_body, self.euler_ang_acc)) + class BodyAngularAcceleration(AngularAcceleration): diff --git a/src/pyfme/models/state/angular_velocity.py b/src/pyfme/models/state/angular_velocity.py index 4d3c56e..3dcb9d5 100644 --- a/src/pyfme/models/state/angular_velocity.py +++ b/src/pyfme/models/state/angular_velocity.py @@ -69,6 +69,11 @@ def phi_dot(self): def psi_dot(self): return self._euler_ang_rate[2] + @property + def _value(self): + """Only for testing purposes""" + return np.hstack((self.vel_ang_body, self.euler_ang_rate)) + class BodyAngularVelocity(AngularVelocity): diff --git a/src/pyfme/models/state/attitude.py b/src/pyfme/models/state/attitude.py index 2d2d288..7c5e071 100644 --- a/src/pyfme/models/state/attitude.py +++ b/src/pyfme/models/state/attitude.py @@ -78,6 +78,11 @@ def q2(self): def q3(self): return self._quaternions[3] + @property + def _value(self): + """Only for testing purposes""" + return np.hstack((self.euler_angles, self.quaternions)) + class EulerAttitude(Attitude): diff --git a/src/pyfme/models/state/position.py b/src/pyfme/models/state/position.py index 5f4cf37..fae5e90 100644 --- a/src/pyfme/models/state/position.py +++ b/src/pyfme/models/state/position.py @@ -99,6 +99,12 @@ def y_earth(self): def z_earth(self): return self._earth_coordinates[2] + @property + def _value(self): + """Only for testing purposes""" + return np.hstack((self.earth_coordinates, self.geodetic_coordinates, + self.geodetic_coordinates)) + class EarthPosition(Position): diff --git a/src/pyfme/models/state/velocity.py b/src/pyfme/models/state/velocity.py index cef0328..29c15a2 100644 --- a/src/pyfme/models/state/velocity.py +++ b/src/pyfme/models/state/velocity.py @@ -80,6 +80,11 @@ def v_east(self): def v_down(self): return self._vel_NED[2] + @property + def _value(self): + """Only for testing purposes""" + return np.hstack((self.vel_body, self.vel_NED)) + class BodyVelocity(Velocity): diff --git a/src/pyfme/models/tests/test_euler_flat_earth.py b/src/pyfme/models/tests/test_euler_flat_earth.py index e136f82..4394810 100644 --- a/src/pyfme/models/tests/test_euler_flat_earth.py +++ b/src/pyfme/models/tests/test_euler_flat_earth.py @@ -3,196 +3,101 @@ Tests of equations of euler flat earth model. """ +import pytest import numpy as np -from pyfme.models.euler_flat_earth import (lamceq, - lamceq_jac, - kaeq, - kaeq_jac, - kleq) +from pyfme.models.euler_flat_earth import _system_equations, EulerFlatEarth +from pyfme.models.state import (EarthPosition, EulerAttitude, BodyVelocity, + BodyAngularVelocity, BodyAcceleration, + BodyAngularAcceleration, AircraftState) +from pyfme.models.constants import EARTH_MEAN_RADIUS -def test1_linear_and_angular_momentum_eqs(): +pos = EarthPosition(0, 0, 2000) +att = EulerAttitude(5/180*np.pi, 15/180*np.pi, 45/180*np.pi) +vel = BodyVelocity(50, 2, 3, att) +ang_vel = BodyAngularVelocity(1/180*np.pi, 5/180*np.pi, 5/180*np.pi, att) +accel = BodyAcceleration(0, 0, 0, att) +ang_accel = BodyAngularAcceleration(0, 0, 0, att) - time = 0 - vel = np.array([1, 1, 1, 1, 1, 1], dtype=float) - mass = 10 - inertia = np.array([[1000, 0, -100], - [ 0, 100, 0], - [-100, 0, 100]], dtype=float) - forces = np.array([100., 100., 100.], dtype=float) - moments = np.array([100., 1000., 100], dtype=float) - - expected_sol = np.array([10, 10, 10, 11./9, 1, 92./9], dtype=float) - sol = lamceq(time, vel, mass, inertia, forces, - moments) - assert(np.allclose(expected_sol, sol)) +full_state = AircraftState(pos, att, vel, ang_vel, accel, ang_accel) -def test2_linear_and_angular_momentum_eqs(): - +def test_system_equations(): time = 0 - vel = np.array([1, 0, 1, 0, 1, 0], dtype=float) - mass = 10 - inertia = np.array([[100, 0, -10], - [ 0, 100, 0], - [-10, 0, 100]], dtype=float) - forces = np.array([1000, 10, 10], dtype=float) - moments = np.array([100, 100, 100], dtype=float) - - expected_sol = np.array([99, 1, 2, 10./9, 1, 10./9], dtype=float) - sol = lamceq(time, vel, mass, inertia, forces, - moments) - assert(np.allclose(expected_sol, sol)) - + state_vector = np.array( + [1, 1, 1, 1, 1, 1, + np.pi / 4, np.pi / 4, 0, + 1, 1, 1], + dtype=float + ) -def test1_jac_linear_and_angular_momentum_eqs(): - - time = 0 - vel = np.array([1, 1, 1, 1, 1, 1], dtype=float) mass = 10 inertia = np.array([[1000, 0, -100], [ 0, 100, 0], [-100, 0, 100]], dtype=float) - expected_sol = np.zeros([6, 6], dtype=float) - - expected_sol[0, 1] = 1 - expected_sol[0, 2] = - 1 - expected_sol[0, 4] = - 1 - expected_sol[0, 5] = 1 - - expected_sol[1, 0] = - 1 - expected_sol[1, 2] = 1 - expected_sol[1, 3] = 1 - expected_sol[1, 5] = - 1 - - expected_sol[2, 0] = 1 - expected_sol[2, 1] = - 1 - expected_sol[2, 3] = - 1 - expected_sol[2, 4] = 1 - - expected_sol[3, 3] = 10./9 - expected_sol[3, 4] = 1 - expected_sol[3, 5] = - 1./9 - - expected_sol[4, 3] = - 11 - expected_sol[4, 5] = - 7 - - expected_sol[5, 3] = 91./9 - expected_sol[5, 4] = 9 - expected_sol[5, 5] = - 10./9 - - sol = lamceq_jac(time, vel, mass, inertia) - - assert(np.allclose(expected_sol, sol)) - - -def test2_jac_linear_and_angular_momentum_eqs(): - - time = 0 - vel = np.array([1, 0, 1, 0, 1, 0], dtype=float) - mass = 10 - inertia = np.array([[100, 0, -10], - [ 0, 100, 0], - [-10, 0, 100]], dtype=float) - - expected_sol = np.zeros([6, 6], dtype=float) - - expected_sol[0, 2] = - 1 - expected_sol[0, 4] = - 1 - - expected_sol[1, 3] = 1 - expected_sol[1, 5] = - 1 - - expected_sol[2, 0] = 1 - expected_sol[2, 4] = 1 - - expected_sol[3, 3] = 10./99 - expected_sol[3, 5] = - 1./99 - - expected_sol[5, 3] = 1./99 - expected_sol[5, 5] = - 10./99 - - sol = lamceq_jac(time, vel, mass, inertia) - - assert(np.allclose(expected_sol, sol)) - - -def test1_kinematic_angular_eqs(): - - time = 0 - euler_angles = np.array([np.pi / 4, np.pi / 4, 0]) - ang_vel = np.array([1, 1, 1], dtype=float) - - expected_sol = np.array([0, 1 + 2 ** 0.5, 2]) - sol = kaeq(time, euler_angles, ang_vel) - - assert(np.allclose(expected_sol, sol)) - - -def test2_kinematic_angular_eqs(): - - time = 0 - euler_angles = np.array([0, np.pi / 2, 0]) - ang_vel = np.array([0, 1, 0], dtype=float) - - expected_sol = np.array([0, 0, 1], dtype=float) - sol = kaeq(time, euler_angles, ang_vel) - - assert(np.allclose(expected_sol, sol)) - - -def test1_jac_kinematic_angular_eqs(): - - time = 0 - euler_angles = np.array([np.pi / 4, np.pi / 4, 0]) - ang_vel = np.array([1, 1, 1], dtype=float) + forces = np.array([100., 100., 100.], dtype=float) + moments = np.array([100., 1000., 100], dtype=float) - expected_sol = np.zeros([3, 3]) - expected_sol[0, 1] = - 2 ** 0.5 - expected_sol[1, 0] = 2 * 2 ** 0.5 - expected_sol[2, 0] = 2 + exp_sol = np.array( + [10, 10, 10, 11. / 9, 1, 92. / 9, + 0, 1 + 2 ** 0.5, 2, + 1 + (2 ** 0.5) / 2, 0, 1 - (2 ** 0.5) / 2], + dtype=float + ) + sol = _system_equations(time, state_vector, mass, inertia, forces, moments) + np.testing.assert_allclose(sol, exp_sol, rtol=1e-7, atol=1e-15) - sol = kaeq_jac(time, euler_angles, ang_vel) - assert(np.allclose(expected_sol, sol)) +def test_fun_raises_error_if_no_update_simulation_is_defined(): + system = EulerFlatEarth(t0=0, full_state=full_state) + x = np.zeros_like(system.state_vector) + with pytest.raises(TypeError): + system.fun(t=0, x=x) -def test2_jac_kinematic_angular_eqs(): +def test_update_full_system_state_from_state(): + system = EulerFlatEarth(t0=0, full_state=full_state) - time = 0 - euler_angles = np.array([0, np.pi / 2, 0]) - ang_vel = np.array([0, 1, 0], dtype=float) + x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], dtype=float) + x_dot = np.array([13, 14, 15, 16, 17, 18]) - expected_sol = np.zeros([3, 3], dtype=float) - expected_sol[0, 1] = - 1 - expected_sol[1, 0] = 1 - sol = kaeq_jac(time, euler_angles, ang_vel) + # Lat and lon after update in EarthFlatEarth are calculated from + # delta_x, and delta_y with Earth mean radius, so depends on the + # previous state. + # If this test broke after changing the way lat and lon are updated from + # Earth coordinates (ie. taking into account only the first point and + # current status) you are in the right place + dlat = (x[9] - system.full_state.position.x_earth) / EARTH_MEAN_RADIUS + dlon = (x[10] - system.full_state.position.y_earth) / EARTH_MEAN_RADIUS - assert(np.allclose(expected_sol, sol)) + system._update_full_system_state_from_state(x, x_dot) + exp_pos = EarthPosition(10, 11, -12, lat=dlat, lon=dlon) + exp_att = EulerAttitude(7, 8, 9) + exp_vel = BodyVelocity(1, 2, 3, exp_att) + exp_ang_vel = BodyAngularVelocity(4, 5, 6, exp_att) + exp_accel = BodyAcceleration(13, 14, 15, exp_att) + exp_ang_accel = BodyAngularAcceleration(16, 17, 18, exp_att) -def test1_navigation_eqs(): + exp_full_state = AircraftState(exp_pos, exp_att, exp_vel, exp_ang_vel, + exp_accel, exp_ang_accel) - time = 0 - lin_vel = np.array([1, 1, 1], dtype=float) - euler_angles = np.array([np.pi / 4, np.pi / 4, 0]) - - expected_sol = np.array([1 + (2 ** 0.5) / 2, 0, 1 - (2 ** 0.5) / 2]) - sol = kleq(time, lin_vel, euler_angles) + for ii, jj in zip(system.full_state._value, exp_full_state._value): + print(ii, jj) - assert(np.allclose(expected_sol, sol)) + np.testing.assert_allclose(system.full_state._value, exp_full_state._value) -def test2_navigation_eqs(): +def test_get_state_vector_from_full_state(): - time = 0 - lin_vel = np.array([1, 0, 1], dtype=float) - euler_angles = np.array([0, np.pi / 2, 0]) + system = EulerFlatEarth(0, full_state) - expected_sol = np.array([1, - 1, 0], dtype=float) - sol = kleq(time, lin_vel, euler_angles) + x = np.array([50, 2, 3, + 1/180*np.pi, 5/180*np.pi, 5/180*np.pi, + 5/180*np.pi, 15/180*np.pi, 45/180*np.pi, + 0, 0, -2000]) - assert(np.allclose(expected_sol, sol)) + np.testing.assert_allclose(system.state_vector, x) diff --git a/src/pyfme/models/tests/test_models.py b/src/pyfme/models/tests/test_models.py deleted file mode 100644 index db21bc3..0000000 --- a/src/pyfme/models/tests/test_models.py +++ /dev/null @@ -1,24 +0,0 @@ -import numpy as np - -from pyfme.models import EulerFlatEarth -from pyfme.models.systems import System - -mass = 10000 -inertia = np.array([[100, 0, 25], [0, 100, 0], [25, 0, 100]]) -forces = np.ones(3) * 100 -moments = np.ones(3) * 100 - - -def test_euler_flat_earth_dummy_integration_with_callback(): - - def foo(t, y): - system.model.state = y - print(t, y) - print(system.model.time) - print(system.set_full_system_state(mass, inertia, forces, moments)) - print({name: system.__getattribute__(name) for name in - system.full_system_state_names}) - - model = EulerFlatEarth(callback=foo) - system = System(model=model) - system.model.propagate(10, mass, inertia, forces, moments) From b91c3113c7b836bc214aac2cde08c21cf3811148 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sat, 11 Nov 2017 17:39:46 +0100 Subject: [PATCH 088/104] added test checking steady state --- src/pyfme/utils/tests/test_trimmer.py | 59 +++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/src/pyfme/utils/tests/test_trimmer.py b/src/pyfme/utils/tests/test_trimmer.py index fada555..9042681 100644 --- a/src/pyfme/utils/tests/test_trimmer.py +++ b/src/pyfme/utils/tests/test_trimmer.py @@ -10,7 +10,9 @@ -------------------------- """ +from itertools import product +import pytest from numpy.testing import assert_almost_equal from pyfme.utils.trimmer import (rate_of_climb_cons, turn_coord_cons, @@ -88,3 +90,60 @@ def test_turn_coord_cons_big_gamma(): phi = turn_coord_cons(turn_rate, alpha, beta, TAS, gamma) assert_almost_equal(phi, expected_phi) + + +trim_test_data = product( + [30, 45], + [500, 1000, 2000], + [0, 0.005, -0.005], + [0, 0.01, -0.01, 0.05, -0.05] +) + +@pytest.mark.parametrize('TAS, h0, turn_rate, gamma', trim_test_data) +def test_stationary_condition_trimming_Cessna172_ISA1972_NoWind_VerticalConstant( + TAS, h0, turn_rate, gamma +): + import numpy as np + + from pyfme.aircrafts import Cessna172 + from pyfme.environment.environment import Environment + from pyfme.environment.atmosphere import ISA1976 + from pyfme.environment.gravity import VerticalConstant + from pyfme.environment.wind import NoWind + from pyfme.models.state import EarthPosition + from pyfme.utils.trimmer import steady_state_trim + + aircraft = Cessna172() + atmosphere = ISA1976() + gravity = VerticalConstant() + wind = NoWind() + environment = Environment(atmosphere, gravity, wind) + + # Initial conditions. + psi0 = 1.0 # rad + x0, y0 = 0, 0 # m + + pos0 = EarthPosition(x0, y0, h0) + + controls0 = {'delta_elevator': 0.05, + 'delta_aileron': 0.2 * np.sign(turn_rate), + 'delta_rudder': 0.2 * np.sign(turn_rate), + 'delta_t': 0.5, + 'hor_tail_incidence': 0.0} + + trimmed_state, trimmed_controls = steady_state_trim( + aircraft, environment, pos0, psi0, TAS, controls0, gamma, turn_rate, + ) + + # Acceleration + np.testing.assert_almost_equal( + trimmed_state.acceleration._value, + np.zeros_like(trimmed_state.acceleration._value), + decimal=2 + ) + # Angular acceleration + np.testing.assert_almost_equal( + trimmed_state.angular_accel._value, + np.zeros_like(trimmed_state.angular_accel._value), + decimal=2 + ) From 6e47013a09d0fc6f5a946985260a5bc19ea8eed4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sat, 11 Nov 2017 17:40:33 +0100 Subject: [PATCH 089/104] vectorize moved to a decorator --- src/pyfme/utils/input_generator.py | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/pyfme/utils/input_generator.py b/src/pyfme/utils/input_generator.py index fff4c0c..b9ef0f2 100644 --- a/src/pyfme/utils/input_generator.py +++ b/src/pyfme/utils/input_generator.py @@ -14,18 +14,24 @@ from numpy import sin, pi +def vectorize_float(method): + vect_method = vectorize(method, otypes=[float64]) + + def wrapper(self, *args, **kwargs): + return vect_method(self, *args, **kwargs) + + return wrapper + + # TODO: documentation class Control(object): - def __init__(self): - self._vec_fun = vectorize(self._fun, otypes=[float64]) - @abstractmethod def _fun(self, t): raise NotImplementedError def __call__(self, t): - r = self._vec_fun(t) + r = self._fun(t) # NumPy vecotrize returns an numpy.ndarray object with size 1 and no # shape if the input is scalar, however in this case, a float is # expected. @@ -59,9 +65,9 @@ def __mul__(self, other): class Constant(Control): def __init__(self, offset=0): - super().__init__() self.offset = offset + @vectorize_float def _fun(self, t): return self.offset @@ -69,7 +75,6 @@ def _fun(self, t): class Step(Control): def __init__(self, t_init, T, A, offset=0): - super().__init__() self.t_init = t_init self.T = T self.A = A @@ -77,6 +82,7 @@ def __init__(self, t_init, T, A, offset=0): self.t_fin = self.t_init + self.T + @vectorize_float def _fun(self, t): value = self.offset if self.t_init <= t <= self.t_fin: @@ -87,7 +93,6 @@ def _fun(self, t): class Doublet(Control): def __init__(self, t_init, T, A, offset=0): - super().__init__() self.t_init = t_init self.T = T self.A = A @@ -96,6 +101,7 @@ def __init__(self, t_init, T, A, offset=0): self.t_fin1 = self.t_init + self.T / 2 self.t_fin2 = self.t_init + self.T + @vectorize_float def _fun(self, t): value = self.offset @@ -109,7 +115,6 @@ def _fun(self, t): class Ramp(Control): def __init__(self, t_init, T, A, offset=0): - super().__init__() self.t_init = t_init self.T = T self.A = A @@ -118,6 +123,7 @@ def __init__(self, t_init, T, A, offset=0): self.slope = self.A / self.T self.t_fin = self.t_init + self.T + @vectorize_float def _fun(self, t): value = self.offset if self.t_init <= t <= self.t_fin: @@ -137,6 +143,7 @@ def __init__(self, t_init, T, A, freq, phase, offset=0): self.phase = phase self.offset = offset + @vectorize_float def _fun(self, t): value = self.offset From 27b83735278882e4b81c97eaef7e8c74f4c9a144 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sat, 11 Nov 2017 17:54:00 +0100 Subject: [PATCH 090/104] changed private property _value to public value --- src/pyfme/models/state/acceleration.py | 2 +- src/pyfme/models/state/aircraft_state.py | 8 ++++---- src/pyfme/models/state/angular_acceleration.py | 2 +- src/pyfme/models/state/angular_velocity.py | 2 +- src/pyfme/models/state/attitude.py | 2 +- src/pyfme/models/state/position.py | 2 +- src/pyfme/models/state/velocity.py | 2 +- src/pyfme/models/tests/test_euler_flat_earth.py | 5 +---- src/pyfme/utils/tests/test_trimmer.py | 10 +++++----- 9 files changed, 16 insertions(+), 19 deletions(-) diff --git a/src/pyfme/models/state/acceleration.py b/src/pyfme/models/state/acceleration.py index 140e9ce..4488010 100644 --- a/src/pyfme/models/state/acceleration.py +++ b/src/pyfme/models/state/acceleration.py @@ -74,7 +74,7 @@ def v_down_dot(self): return self._accel_NED[2] @property - def _value(self): + def value(self): """Only for testing purposes""" return np.hstack((self.accel_body, self.accel_NED)) diff --git a/src/pyfme/models/state/aircraft_state.py b/src/pyfme/models/state/aircraft_state.py index 05d510e..737e685 100644 --- a/src/pyfme/models/state/aircraft_state.py +++ b/src/pyfme/models/state/aircraft_state.py @@ -36,11 +36,11 @@ def __init__(self, position, attitude, velocity, angular_vel=None, self.angular_accel = angular_accel @property - def _value(self): + def value(self): """Only for testing purposes""" - return np.hstack((self.position._value, self.attitude._value, - self.velocity._value, self.angular_vel._value, - self.acceleration._value, self.angular_accel._value)) + return np.hstack((self.position.value, self.attitude.value, + self.velocity.value, self.angular_vel.value, + self.acceleration.value, self.angular_accel.value)) def __repr__(self): rv = ( diff --git a/src/pyfme/models/state/angular_acceleration.py b/src/pyfme/models/state/angular_acceleration.py index dfe6c81..91c2c6a 100644 --- a/src/pyfme/models/state/angular_acceleration.py +++ b/src/pyfme/models/state/angular_acceleration.py @@ -72,7 +72,7 @@ def psi_2dot(self): return self._euler_ang_acc[2] @property - def _value(self): + def value(self): """Only for testing purposes""" return np.hstack((self.acc_ang_body, self.euler_ang_acc)) diff --git a/src/pyfme/models/state/angular_velocity.py b/src/pyfme/models/state/angular_velocity.py index 3dcb9d5..853a0d1 100644 --- a/src/pyfme/models/state/angular_velocity.py +++ b/src/pyfme/models/state/angular_velocity.py @@ -70,7 +70,7 @@ def psi_dot(self): return self._euler_ang_rate[2] @property - def _value(self): + def value(self): """Only for testing purposes""" return np.hstack((self.vel_ang_body, self.euler_ang_rate)) diff --git a/src/pyfme/models/state/attitude.py b/src/pyfme/models/state/attitude.py index 7c5e071..395b2c9 100644 --- a/src/pyfme/models/state/attitude.py +++ b/src/pyfme/models/state/attitude.py @@ -79,7 +79,7 @@ def q3(self): return self._quaternions[3] @property - def _value(self): + def value(self): """Only for testing purposes""" return np.hstack((self.euler_angles, self.quaternions)) diff --git a/src/pyfme/models/state/position.py b/src/pyfme/models/state/position.py index fae5e90..d51bcf8 100644 --- a/src/pyfme/models/state/position.py +++ b/src/pyfme/models/state/position.py @@ -100,7 +100,7 @@ def z_earth(self): return self._earth_coordinates[2] @property - def _value(self): + def value(self): """Only for testing purposes""" return np.hstack((self.earth_coordinates, self.geodetic_coordinates, self.geodetic_coordinates)) diff --git a/src/pyfme/models/state/velocity.py b/src/pyfme/models/state/velocity.py index 29c15a2..ccbcc99 100644 --- a/src/pyfme/models/state/velocity.py +++ b/src/pyfme/models/state/velocity.py @@ -81,7 +81,7 @@ def v_down(self): return self._vel_NED[2] @property - def _value(self): + def value(self): """Only for testing purposes""" return np.hstack((self.vel_body, self.vel_NED)) diff --git a/src/pyfme/models/tests/test_euler_flat_earth.py b/src/pyfme/models/tests/test_euler_flat_earth.py index 4394810..d660eca 100644 --- a/src/pyfme/models/tests/test_euler_flat_earth.py +++ b/src/pyfme/models/tests/test_euler_flat_earth.py @@ -85,10 +85,7 @@ def test_update_full_system_state_from_state(): exp_full_state = AircraftState(exp_pos, exp_att, exp_vel, exp_ang_vel, exp_accel, exp_ang_accel) - for ii, jj in zip(system.full_state._value, exp_full_state._value): - print(ii, jj) - - np.testing.assert_allclose(system.full_state._value, exp_full_state._value) + np.testing.assert_allclose(system.full_state.value, exp_full_state.value) def test_get_state_vector_from_full_state(): diff --git a/src/pyfme/utils/tests/test_trimmer.py b/src/pyfme/utils/tests/test_trimmer.py index 9042681..2670a9d 100644 --- a/src/pyfme/utils/tests/test_trimmer.py +++ b/src/pyfme/utils/tests/test_trimmer.py @@ -129,7 +129,7 @@ def test_stationary_condition_trimming_Cessna172_ISA1972_NoWind_VerticalConstant 'delta_aileron': 0.2 * np.sign(turn_rate), 'delta_rudder': 0.2 * np.sign(turn_rate), 'delta_t': 0.5, - 'hor_tail_incidence': 0.0} + } trimmed_state, trimmed_controls = steady_state_trim( aircraft, environment, pos0, psi0, TAS, controls0, gamma, turn_rate, @@ -137,13 +137,13 @@ def test_stationary_condition_trimming_Cessna172_ISA1972_NoWind_VerticalConstant # Acceleration np.testing.assert_almost_equal( - trimmed_state.acceleration._value, - np.zeros_like(trimmed_state.acceleration._value), + trimmed_state.acceleration.value, + np.zeros_like(trimmed_state.acceleration.value), decimal=2 ) # Angular acceleration np.testing.assert_almost_equal( - trimmed_state.angular_accel._value, - np.zeros_like(trimmed_state.angular_accel._value), + trimmed_state.angular_accel.value, + np.zeros_like(trimmed_state.angular_accel.value), decimal=2 ) From b857caecd2a4de7d3637e5dd5a8474f136704ed7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sat, 11 Nov 2017 18:16:18 +0100 Subject: [PATCH 091/104] STYLE: unused imports, typos, blank lines... --- src/pyfme/aircrafts/aircraft.py | 7 ++++--- src/pyfme/aircrafts/cessna_172.py | 6 +++--- src/pyfme/aircrafts/cessna_310.py | 1 - src/pyfme/aircrafts/tests/test_cessna_172.py | 2 +- src/pyfme/aircrafts/tests/test_cessna_310.py | 3 +-- src/pyfme/environment/__init__.py | 4 ++-- src/pyfme/environment/atmosphere.py | 2 +- src/pyfme/environment/gravity.py | 4 ++++ src/pyfme/environment/tests/test_isa.py | 1 + src/pyfme/models/state/__init__.py | 2 +- src/pyfme/models/state/angular_acceleration.py | 2 +- src/pyfme/models/state/angular_velocity.py | 2 +- src/pyfme/models/state/position.py | 2 +- src/pyfme/models/tests/test_euler_flat_earth.py | 1 - src/pyfme/simulator.py | 4 ++-- src/pyfme/utils/altimetry.py | 5 +++-- src/pyfme/utils/anemometry.py | 6 +++--- .../utils/tests/test_anemometry_stagnationpressure.py | 9 ++++++--- src/pyfme/utils/tests/test_anemometry_tascaseas.py | 3 ++- src/pyfme/utils/tests/test_inputs_generator.py | 5 ++--- src/pyfme/utils/tests/test_trimmer.py | 6 ++++-- 21 files changed, 43 insertions(+), 34 deletions(-) diff --git a/src/pyfme/aircrafts/aircraft.py b/src/pyfme/aircrafts/aircraft.py index 42ab0f6..1f10875 100644 --- a/src/pyfme/aircrafts/aircraft.py +++ b/src/pyfme/aircrafts/aircraft.py @@ -99,9 +99,10 @@ def _set_current_controls(self, controls): self.controls[control_name] = control_value else: # TODO: maybe raise a warning and assign max deflection - msg = ("Control {} out of range ({} when max={} and min={" - "})".format(control_name, control_value, limits[1], - limits[0])) + msg = ( + f"Control {control_name} out of range ({control_value} " + f"when min={limits[0]} and max={limits[1]})" + ) raise ValueError(msg) def _calculate_aerodynamics(self, state, environment): diff --git a/src/pyfme/aircrafts/cessna_172.py b/src/pyfme/aircrafts/cessna_172.py index 25a9175..8414c41 100644 --- a/src/pyfme/aircrafts/cessna_172.py +++ b/src/pyfme/aircrafts/cessna_172.py @@ -77,7 +77,7 @@ from scipy.interpolate import RectBivariateSpline from pyfme.aircrafts.aircraft import Aircraft -from pyfme.models.constants import ft2m, slugft2_2_kgm2, lbs2kg +from pyfme.models.constants import slugft2_2_kgm2, lbs2kg from pyfme.utils.coordinates import wind2body @@ -215,8 +215,8 @@ def _calculate_aero_lon_forces_moments_coeffs(self, state): alpha_DEG = np.rad2deg(self.alpha) # deg c = self.chord # m V = self.TAS # m/s - p, q, r = state.angular_vel.p, state.angular_vel.q, \ - state.angular_vel.r # rad/s + p, q, r = (state.angular_vel.p, state.angular_vel.q, + state.angular_vel.r) # rad/s alpha_dot = self.alpha_dot CD_alpha_interp = np.interp(alpha_DEG, self.alpha_data, self.CD_data) diff --git a/src/pyfme/aircrafts/cessna_310.py b/src/pyfme/aircrafts/cessna_310.py index 69758b6..2711216 100644 --- a/src/pyfme/aircrafts/cessna_310.py +++ b/src/pyfme/aircrafts/cessna_310.py @@ -50,7 +50,6 @@ from pyfme.aircrafts.aircraft import Aircraft from pyfme.models.constants import ft2m, slugft2_2_kgm2, lbs2kg -from pyfme.utils.coordinates import wind2body class Cessna310(Aircraft): diff --git a/src/pyfme/aircrafts/tests/test_cessna_172.py b/src/pyfme/aircrafts/tests/test_cessna_172.py index 4235cc8..1c41cdb 100644 --- a/src/pyfme/aircrafts/tests/test_cessna_172.py +++ b/src/pyfme/aircrafts/tests/test_cessna_172.py @@ -6,7 +6,7 @@ """ import numpy as np -from numpy.testing import (assert_array_almost_equal, assert_almost_equal) +from numpy.testing import assert_array_almost_equal from pyfme.aircrafts.cessna_172 import Cessna172 diff --git a/src/pyfme/aircrafts/tests/test_cessna_310.py b/src/pyfme/aircrafts/tests/test_cessna_310.py index 138a520..fb93600 100644 --- a/src/pyfme/aircrafts/tests/test_cessna_310.py +++ b/src/pyfme/aircrafts/tests/test_cessna_310.py @@ -11,8 +11,7 @@ @AeroPython """ -import numpy as np -from numpy.testing import (assert_array_almost_equal, assert_almost_equal) +from numpy.testing import assert_array_almost_equal from pyfme.aircrafts.cessna_310 import Cessna310 diff --git a/src/pyfme/environment/__init__.py b/src/pyfme/environment/__init__.py index f105b63..8064602 100644 --- a/src/pyfme/environment/__init__.py +++ b/src/pyfme/environment/__init__.py @@ -4,8 +4,8 @@ Copyright (c) AeroPython Development Team. Distributed under the terms of the MIT License. -Envrionment +Environment ----------- """ -from .environment import Environment \ No newline at end of file +from .environment import Environment diff --git a/src/pyfme/environment/atmosphere.py b/src/pyfme/environment/atmosphere.py index b33d7fc..6ee437b 100644 --- a/src/pyfme/environment/atmosphere.py +++ b/src/pyfme/environment/atmosphere.py @@ -67,7 +67,7 @@ def update(self, state): .. [2] https://en.wikipedia.org/wiki/U.S._Standard_Atmosphere """ - # Geopotential altitude + # Geopotential altitude self.geopotential_alt = geometric2geopotential(state.position.height) self.T, self.p, self.rho, self.a = self.__call__(self.geopotential_alt) diff --git a/src/pyfme/environment/gravity.py b/src/pyfme/environment/gravity.py index f406b1a..e31aff2 100644 --- a/src/pyfme/environment/gravity.py +++ b/src/pyfme/environment/gravity.py @@ -82,4 +82,8 @@ class LatitudeModel(Gravity): # TODO: https://en.wikipedia.org/wiki/Gravity_of_Earth#Latitude_model def __init__(self): + super().__init__() + raise NotImplementedError + + def update(self, system): raise NotImplementedError diff --git a/src/pyfme/environment/tests/test_isa.py b/src/pyfme/environment/tests/test_isa.py index 084395e..3d117df 100644 --- a/src/pyfme/environment/tests/test_isa.py +++ b/src/pyfme/environment/tests/test_isa.py @@ -21,6 +21,7 @@ atmosphere = ISA1976() + def test_sea_level(): h = 0.0 # m expected_T = 288.15 # K diff --git a/src/pyfme/models/state/__init__.py b/src/pyfme/models/state/__init__.py index bf5c0f2..971be7a 100644 --- a/src/pyfme/models/state/__init__.py +++ b/src/pyfme/models/state/__init__.py @@ -16,4 +16,4 @@ from .acceleration import BodyAcceleration, NEDAcceleration from .angular_velocity import BodyAngularVelocity, EulerAngularRates from .angular_acceleration import (BodyAngularAcceleration, - EulerAngularAcceleration) \ No newline at end of file + EulerAngularAcceleration) diff --git a/src/pyfme/models/state/angular_acceleration.py b/src/pyfme/models/state/angular_acceleration.py index 91c2c6a..054df16 100644 --- a/src/pyfme/models/state/angular_acceleration.py +++ b/src/pyfme/models/state/angular_acceleration.py @@ -107,4 +107,4 @@ def update(self, coords, attitude): self._euler_ang_acc[:] = coords # TODO: transform euler angles acc to angular acceleration in body # axis - self._acc_ang_body[:] = np.zeros(3) # rad/s \ No newline at end of file + self._acc_ang_body[:] = np.zeros(3) # rad/s diff --git a/src/pyfme/models/state/angular_velocity.py b/src/pyfme/models/state/angular_velocity.py index 853a0d1..8d7d349 100644 --- a/src/pyfme/models/state/angular_velocity.py +++ b/src/pyfme/models/state/angular_velocity.py @@ -106,4 +106,4 @@ def update(self, coords, attitude): self._euler_ang_rate[:] = coords # TODO: transform euler angles rates to angular velocity in body # axis - self._vel_ang_body[:] = np.zeros(3) # rad/s \ No newline at end of file + self._vel_ang_body[:] = np.zeros(3) # rad/s diff --git a/src/pyfme/models/state/position.py b/src/pyfme/models/state/position.py index d51bcf8..5f330aa 100644 --- a/src/pyfme/models/state/position.py +++ b/src/pyfme/models/state/position.py @@ -169,4 +169,4 @@ def update(self, value): # class GeocentricPosition(Position): # TODO: - # raise NotImplementedError \ No newline at end of file + # raise NotImplementedError diff --git a/src/pyfme/models/tests/test_euler_flat_earth.py b/src/pyfme/models/tests/test_euler_flat_earth.py index d660eca..fa51964 100644 --- a/src/pyfme/models/tests/test_euler_flat_earth.py +++ b/src/pyfme/models/tests/test_euler_flat_earth.py @@ -63,7 +63,6 @@ def test_update_full_system_state_from_state(): x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], dtype=float) x_dot = np.array([13, 14, 15, 16, 17, 18]) - # Lat and lon after update in EarthFlatEarth are calculated from # delta_x, and delta_y with Earth mean radius, so depends on the # previous state. diff --git a/src/pyfme/simulator.py b/src/pyfme/simulator.py index 1af924a..bb7935c 100644 --- a/src/pyfme/simulator.py +++ b/src/pyfme/simulator.py @@ -106,7 +106,7 @@ def __init__(self, aircraft, system, environment, controls, dt=0.01, save_vars : dict, opt Dictionary containing the names of the variables to be saved and the object and attribute where it is calculated. If not given, the - ones set in `_defaul_save_vars` are used. + ones set in `_default_save_vars` are used. """ self.system = copy.deepcopy(system) self.aircraft = copy.deepcopy(aircraft) @@ -116,7 +116,7 @@ def __init__(self, aircraft, system, environment, controls, dt=0.01, self.controls = controls - self.dt = 0.01 + self.dt = dt if not save_vars: self._save_vars = self._default_save_vars diff --git a/src/pyfme/utils/altimetry.py b/src/pyfme/utils/altimetry.py index 6120c8c..35808be 100644 --- a/src/pyfme/utils/altimetry.py +++ b/src/pyfme/utils/altimetry.py @@ -14,8 +14,9 @@ Re = EARTH_MEAN_RADIUS + def geopotential2geometric(h): - """Geometric altiude above MSL (mean sea level) + """Geometric altitude above MSL (mean sea level) This function transforms geopotential altitude into geometric altitude. @@ -44,7 +45,7 @@ def geopotential2geometric(h): def geometric2geopotential(z): - """Geopotential altiude above MSL (mean sea level) + """Geopotential altitude above MSL (mean sea level) This function transforms geometric altitude into geopotential altitude. diff --git a/src/pyfme/utils/anemometry.py b/src/pyfme/utils/anemometry.py index 412825e..fb5ca6e 100644 --- a/src/pyfme/utils/anemometry.py +++ b/src/pyfme/utils/anemometry.py @@ -51,7 +51,7 @@ def calculate_alpha_beta_TAS(u, v, w): ------- alpha : float Angle of attack (rad). - betha : float + beta : float Angle of sideslip (rad). TAS : float True Air Speed. (m/s) @@ -122,7 +122,7 @@ def calculate_viscosity_Sutherland(T): Notes ----------- - Acoording to [1] the limis for this function are: + AcCording to [1] the limits for this function are: p < p_c =36 Atm (3.65 MPa) T < 2000 K @@ -136,7 +136,7 @@ def calculate_viscosity_Sutherland(T): visc_0 = 1.176*1e-5 # kg(m s) T_0 = 273.1 # K - b = 0.4042 # nondimensional + b = 0.4042 # non-dimensional return visc_0 * (T / T_0)**(3 / 2) * ((1 + b)/((T / T_0) + b)) diff --git a/src/pyfme/utils/tests/test_anemometry_stagnationpressure.py b/src/pyfme/utils/tests/test_anemometry_stagnationpressure.py index f9474c4..366404e 100644 --- a/src/pyfme/utils/tests/test_anemometry_stagnationpressure.py +++ b/src/pyfme/utils/tests/test_anemometry_stagnationpressure.py @@ -12,7 +12,8 @@ from pyfme.utils.anemometry import stagnation_pressure from pyfme.environment.atmosphere import ISA1976 -atmosphere=ISA1976() +atmosphere = ISA1976() + def test_stagnation_pressure(): @@ -20,13 +21,15 @@ def test_stagnation_pressure(): _, p, _, a = atmosphere(11000) tas = 240 - #This value is hardcoded from the function result with the current costants + # This value is hardcoded from the function result with the current + # constants p_stagnation_expected = 34962.95478339375 p_stagnation = stagnation_pressure(p, a, tas) assert_almost_equal(p_stagnation, p_stagnation_expected) - #This value is hardcoded from the function result with the current costants + # This value is hardcoded from the function result with the current + # constants # supersonic case _, p, _, a = atmosphere(11000) diff --git a/src/pyfme/utils/tests/test_anemometry_tascaseas.py b/src/pyfme/utils/tests/test_anemometry_tascaseas.py index e664932..bf3abd8 100644 --- a/src/pyfme/utils/tests/test_anemometry_tascaseas.py +++ b/src/pyfme/utils/tests/test_anemometry_tascaseas.py @@ -12,12 +12,13 @@ from pyfme.utils.anemometry import (tas2eas, eas2tas, cas2eas, eas2cas, tas2cas, cas2tas) -from pyfme.models.constants import RHO_0, P_0, SOUND_VEL_0, GAMMA_AIR +from pyfme.models.constants import RHO_0, P_0 from pyfme.environment.atmosphere import ISA1976 atmosphere = ISA1976() + def test_tas2eas(): # sea level diff --git a/src/pyfme/utils/tests/test_inputs_generator.py b/src/pyfme/utils/tests/test_inputs_generator.py index e4960e9..1a5b547 100644 --- a/src/pyfme/utils/tests/test_inputs_generator.py +++ b/src/pyfme/utils/tests/test_inputs_generator.py @@ -9,12 +9,12 @@ Test functions for input generator module. """ -import pytest import numpy as np from numpy.testing import assert_almost_equal from pyfme.utils.input_generator import (Step, Doublet, Ramp, Harmonic, Constant) + def test_input_scalar_output_scalar(): control = Constant(1.5) control_value = control(1.5) @@ -264,7 +264,6 @@ def test_add_controls_02(): assert_almost_equal(real_input, expected_input) - def test_subtract_controls_01(): time = np.linspace(0, 10, 11) @@ -291,7 +290,7 @@ def test_subtract_controls_01(): ramp_input = Ramp(t_init, T, A, offset=0) - # Sutract both + # Subtract both composed_input = ramp_input - harmonic_input real_input = composed_input(time) diff --git a/src/pyfme/utils/tests/test_trimmer.py b/src/pyfme/utils/tests/test_trimmer.py index 2670a9d..0bdc8c8 100644 --- a/src/pyfme/utils/tests/test_trimmer.py +++ b/src/pyfme/utils/tests/test_trimmer.py @@ -5,10 +5,11 @@ Distributed under the terms of the MIT License. Test functions for trimmer +-------------------------- -These values are hardcoded from the function results with the current costants. +These values are hardcoded from the function results with the current +constants. --------------------------- """ from itertools import product @@ -99,6 +100,7 @@ def test_turn_coord_cons_big_gamma(): [0, 0.01, -0.01, 0.05, -0.05] ) + @pytest.mark.parametrize('TAS, h0, turn_rate, gamma', trim_test_data) def test_stationary_condition_trimming_Cessna172_ISA1972_NoWind_VerticalConstant( TAS, h0, turn_rate, gamma From 19d241b29a187ade159b6a495b096e35e63009f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sun, 12 Nov 2017 00:34:42 +0100 Subject: [PATCH 092/104] add test of full simulation --- src/pyfme/tests/test_PyFME.py | 155 ---------------------------------- src/pyfme/tests/test_pyfme.py | 47 +++++++++++ 2 files changed, 47 insertions(+), 155 deletions(-) delete mode 100644 src/pyfme/tests/test_PyFME.py create mode 100644 src/pyfme/tests/test_pyfme.py diff --git a/src/pyfme/tests/test_PyFME.py b/src/pyfme/tests/test_PyFME.py deleted file mode 100644 index abd0de0..0000000 --- a/src/pyfme/tests/test_PyFME.py +++ /dev/null @@ -1,155 +0,0 @@ -import numpy as np - -from pyfme.aircrafts import Cessna310, Cessna172 -from pyfme.environment.atmosphere import ISA1976 -from pyfme.environment.environment import Environment -from pyfme.environment.gravity import VerticalConstant -from pyfme.environment.wind import NoWind -from pyfme.models import EulerFlatEarth -from pyfme.models.systems import System -from pyfme.simulator import Simulation - -from pyfme.utils.input_generator import Constant, Harmonic - - -def test_simulation(): - aircraft = Cessna310() - system = System(model=EulerFlatEarth()) - environment = Environment(ISA1976(), VerticalConstant(), NoWind()) - - simulation = Simulation(aircraft, system, environment) - - simulation.system.set_initial_state( - geodetic_coord=np.array([0., 0., 1000.]), - vel_body=np.array([100, 0.2, 1]), - euler_angles=np.array([0.01, 0.0, np.pi]) - ) - - simulation.controls = {'delta_elevator': Constant(0.1), - 'hor_tail_incidence': Harmonic(1, 3, 1, 2, 0), - 'delta_aileron': Constant(0.2), - 'delta_rudder': Constant(0.3), - 'delta_t': Constant(0.5)} - - simulation.propagate(10) - - for n, v in simulation.results.items(): - print("{}: {}".format(n, v)) - - -def test_trimmer_00(): - aircraft = Cessna310() - system = System(model=EulerFlatEarth()) - environment = Environment(ISA1976(), VerticalConstant(), NoWind()) - - simulation = Simulation(aircraft, system, environment) - - initial_controls = {'delta_elevator': 0, - 'hor_tail_incidence': 0, - 'delta_aileron': 0, - 'delta_rudder': 0, - 'delta_t': 0} - - simulation.trim_aircraft(geodetic_initial_pos=(0, 0, 1000), - TAS=100, - gamma=0.0, - turn_rate=0.0, - initial_controls=initial_controls, - exclude_controls=['hor_tail_incidence']) - - simulation.propagate(10) - - for n, v in simulation.results.items(): - print("{}: {}".format(n, v)) - - -def test_trimmer_01(): - aircraft = Cessna310() - system = System(model=EulerFlatEarth()) - environment = Environment(ISA1976(), VerticalConstant(), NoWind()) - - simulation = Simulation(aircraft, system, environment) - - initial_controls = {'delta_elevator': 0, - 'hor_tail_incidence': 0, - 'delta_aileron': 0, - 'delta_rudder': 0, - 'delta_t': 0} - - simulation.trim_aircraft(geodetic_initial_pos=(0, 0, 1000), - TAS=60, - gamma=0.05, - turn_rate=0.0, - initial_controls=initial_controls, - exclude_controls=['hor_tail_incidence']) - - simulation.propagate(10) - - -def test_trimmer_02(): - aircraft = Cessna310() - system = System(model=EulerFlatEarth()) - environment = Environment(ISA1976(), VerticalConstant(), NoWind()) - - simulation = Simulation(aircraft, system, environment) - - initial_controls = {'delta_elevator': 0, - 'hor_tail_incidence': 0, - 'delta_aileron': 0, - 'delta_rudder': 0, - 'delta_t': 0} - - simulation.trim_aircraft(geodetic_initial_pos=(0, 0, 1000), - TAS=60, - gamma=0.00, - turn_rate=0.05, - initial_controls=initial_controls, - exclude_controls=['hor_tail_incidence']) - - simulation.propagate(10) - - -def test_trimmer_03(): - aircraft = Cessna310() - system = System(model=EulerFlatEarth()) - environment = Environment(ISA1976(), VerticalConstant(), NoWind()) - - simulation = Simulation(aircraft, system, environment) - - initial_controls = {'delta_elevator': 0, - 'hor_tail_incidence': 0, - 'delta_aileron': 0, - 'delta_rudder': 0, - 'delta_t': 0} - - simulation.trim_aircraft(geodetic_initial_pos=(0, 0, 1000), - TAS=60, - gamma=0.05, - turn_rate=0.05, - initial_controls=initial_controls, - exclude_controls=['hor_tail_incidence']) - - simulation.propagate(10) - - -def test_simulator_cessna_172(): - aircraft = Cessna172() - system = System(model=EulerFlatEarth()) - environment = Environment(ISA1976(), VerticalConstant(), NoWind()) - - simulation = Simulation(aircraft, system, environment) - - initial_controls = {'delta_elevator': 0, - 'hor_tail_incidence': 0, - 'delta_aileron': 0, - 'delta_rudder': 0, - 'delta_t': 0} - - simulation.trim_aircraft(geodetic_initial_pos=(0, 0, 1000), - TAS=60, - gamma=0.05, - turn_rate=0.05, - initial_controls=initial_controls, - exclude_controls=['hor_tail_incidence']) - - simulation.propagate(10) diff --git a/src/pyfme/tests/test_pyfme.py b/src/pyfme/tests/test_pyfme.py new file mode 100644 index 0000000..997c574 --- /dev/null +++ b/src/pyfme/tests/test_pyfme.py @@ -0,0 +1,47 @@ +from pyfme.aircrafts import Cessna172 +from pyfme.environment.environment import Environment +from pyfme.environment.atmosphere import ISA1976 +from pyfme.environment.gravity import VerticalConstant +from pyfme.environment.wind import NoWind +from pyfme.models.state.position import EarthPosition +from pyfme.utils.trimmer import steady_state_trim +from pyfme.models import EulerFlatEarth +from pyfme.simulator import Simulation + +from pyfme.utils.input_generator import Constant, Doublet + + +def test_simulation(): + + atmosphere = ISA1976() + gravity = VerticalConstant() + wind = NoWind() + + environment = Environment(atmosphere, gravity, wind) + aircraft = Cessna172() + + initial_position = EarthPosition(0, 0, 1000) + + controls_0 = {'delta_elevator': 0.05, + 'delta_aileron': 0, + 'delta_rudder': 0, + 'delta_t': 0.5, + } + + trimmed_state, trimmed_controls = steady_state_trim( + aircraft, environment, initial_position, psi=1, TAS=50, + controls=controls_0 + ) + + system = EulerFlatEarth(t0=0, full_state=trimmed_state) + + controls = { + 'delta_elevator': Doublet(2, 1, 0.1, + trimmed_controls['delta_elevator']), + 'delta_aileron': Constant(trimmed_controls['delta_aileron']), + 'delta_rudder': Constant(trimmed_controls['delta_rudder']), + 'delta_t': Constant(trimmed_controls['delta_t']) + } + + simulation = Simulation(aircraft, system, environment, controls) + simulation.propagate(10) From 456f0efb3bf676bce97bfc1407d5e4155df0ad4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sun, 12 Nov 2017 00:45:49 +0100 Subject: [PATCH 093/104] skipping aircraft test: aircraft class is to be refactored --- src/pyfme/aircrafts/tests/test_cessna_172.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/pyfme/aircrafts/tests/test_cessna_172.py b/src/pyfme/aircrafts/tests/test_cessna_172.py index 1c41cdb..a0aedb9 100644 --- a/src/pyfme/aircrafts/tests/test_cessna_172.py +++ b/src/pyfme/aircrafts/tests/test_cessna_172.py @@ -4,6 +4,7 @@ Copyright (c) AeroPython Development Team. Distributed under the terms of the MIT License. """ +import pytest import numpy as np from numpy.testing import assert_array_almost_equal @@ -11,6 +12,7 @@ from pyfme.aircrafts.cessna_172 import Cessna172 +@pytest.mark.skip(reason="aircraft class is to be refactored") def test_calculate_aero_forces_moments(): aircraft = Cessna172() aircraft.q_inf = 0.5 * 1.225 * 45 ** 2 From 9ea8e375d43d74554d311785404ffbedde0a30ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sun, 12 Nov 2017 00:50:11 +0100 Subject: [PATCH 094/104] removed old examples --- .../example_000_no_controls.ipynb | 359 ------------- .../example_001_stationary_horizontal.ipynb | 353 ------------- .../example_002_stationary_descent.ipynb | 353 ------------- .../example_003_stationary_ascent.ipynb | 353 ------------- ...ample_004_stationary_horizontal_turn.ipynb | 352 ------------- ...le_005_stationary_turn_during_ascent.ipynb | 486 ------------------ .../example_006_elevator_doublet.ipynb | 385 -------------- .../example_007_rudder_doublet.ipynb | 385 -------------- .../example_008_ailerons_doublet.ipynb | 386 -------------- .../example_009_elev_aile_rud_doublet.ipynb | 406 --------------- .../example_000_no_controls.py | 129 ----- .../example_001_stationary_horizontal.py | 126 ----- .../example_002_stationary_descent.py | 126 ----- .../example_003_stationary_ascent.py | 126 ----- .../example_004_stationary_horizontal_turn.py | 125 ----- ...ample_005_stationary_turn_during_ascent.py | 125 ----- .../example_006_elevator_doublet.py | 136 ----- .../example_007_rudder_doublet.py | 137 ----- .../example_008_ailerons_doublet.py | 136 ----- .../example_009_elev_aile_rud_doublet.py | 158 ------ index.ipynb | 116 ----- 21 files changed, 5258 deletions(-) delete mode 100644 examples/examples_as_notebooks/example_000_no_controls.ipynb delete mode 100644 examples/examples_as_notebooks/example_001_stationary_horizontal.ipynb delete mode 100644 examples/examples_as_notebooks/example_002_stationary_descent.ipynb delete mode 100644 examples/examples_as_notebooks/example_003_stationary_ascent.ipynb delete mode 100644 examples/examples_as_notebooks/example_004_stationary_horizontal_turn.ipynb delete mode 100644 examples/examples_as_notebooks/example_005_stationary_turn_during_ascent.ipynb delete mode 100644 examples/examples_as_notebooks/example_006_elevator_doublet.ipynb delete mode 100644 examples/examples_as_notebooks/example_007_rudder_doublet.ipynb delete mode 100644 examples/examples_as_notebooks/example_008_ailerons_doublet.ipynb delete mode 100644 examples/examples_as_notebooks/example_009_elev_aile_rud_doublet.ipynb delete mode 100644 examples/examples_as_scripts/example_000_no_controls.py delete mode 100644 examples/examples_as_scripts/example_001_stationary_horizontal.py delete mode 100644 examples/examples_as_scripts/example_002_stationary_descent.py delete mode 100644 examples/examples_as_scripts/example_003_stationary_ascent.py delete mode 100644 examples/examples_as_scripts/example_004_stationary_horizontal_turn.py delete mode 100644 examples/examples_as_scripts/example_005_stationary_turn_during_ascent.py delete mode 100644 examples/examples_as_scripts/example_006_elevator_doublet.py delete mode 100644 examples/examples_as_scripts/example_007_rudder_doublet.py delete mode 100644 examples/examples_as_scripts/example_008_ailerons_doublet.py delete mode 100644 examples/examples_as_scripts/example_009_elev_aile_rud_doublet.py delete mode 100644 index.ipynb diff --git a/examples/examples_as_notebooks/example_000_no_controls.ipynb b/examples/examples_as_notebooks/example_000_no_controls.ipynb deleted file mode 100644 index 6a9cb25..0000000 --- a/examples/examples_as_notebooks/example_000_no_controls.ipynb +++ /dev/null @@ -1,359 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# EXAMPLE 000\n", - "\n", - "This is the first example of PyFME.\n", - "\n", - "The aircraft used is a Cessna 172, ISA1976 integrated with Flat Earth (Euler angles).\n", - "\n", - "Evolution of the aircraft with no deflecion of control surfaces.\n", - "Trimmed in stationary, horizontal, symmetric, wings level flight." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# -*- coding: utf-8 -*-" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Import python libreries needed." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "%matplotlib inline\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "from mpl_toolkits.mplot3d import Axes3D" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Import PyFME classes" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "from pyfme.aircrafts import Cessna172\n", - "from pyfme.environment.environment import Environment\n", - "from pyfme.environment.atmosphere import ISA1976\n", - "from pyfme.environment.gravity import VerticalConstant\n", - "from pyfme.environment.wind import NoWind\n", - "from pyfme.models.systems import EulerFlatEarth\n", - "from pyfme.simulator import BatchSimulation\n", - "from pyfme.utils.trimmer import steady_state_flight_trimmer\n", - "from pyfme.utils.input_generator import doublet" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Initialize variables" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "aircraft = Cessna172()\n", - "atmosphere = ISA1976()\n", - "gravity = VerticalConstant()\n", - "wind = NoWind()\n", - "environment = Environment(atmosphere, gravity, wind)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Initial conditions" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "TAS = 45 # m/s\n", - "h0 = 2000 # m\n", - "psi0 = 1.0 # rad\n", - "x0, y0 = 0, 0 # m\n", - "turn_rate = 0.0 # rad/s\n", - "gamma0 = 0.0 # rad" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Define system" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "system = EulerFlatEarth(lat=0, lon=0, h=h0, psi=psi0, x_earth=x0, y_earth=y0)\n", - "\n", - "not_trimmed_controls = {'delta_elevator': 0.05,\n", - " 'delta_aileron': 0.01 * np.sign(turn_rate),\n", - " 'delta_rudder': 0.01 * np.sign(turn_rate),\n", - " 'delta_t': 0.5}\n", - "\n", - "controls2trim = ['delta_elevator', 'delta_aileron', 'delta_rudder', 'delta_t']" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "trimmed_ac, trimmed_sys, trimmed_env, results = steady_state_flight_trimmer(\n", - " aircraft, system, environment, TAS=TAS, controls_0=not_trimmed_controls,\n", - " controls2trim=controls2trim, gamma=gamma0, turn_rate=turn_rate, verbose=1)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Steady state flight trimmer results" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "print('delta_elevator = ',\"%8.4f\" % np.rad2deg(results['delta_elevator']), 'deg')\n", - "print('delta_aileron = ', \"%8.4f\" % np.rad2deg(results['delta_aileron']), 'deg')\n", - "print('delta_rudder = ', \"%8.4f\" % np.rad2deg(results['delta_rudder']), 'deg')\n", - "print('delta_t = ', \"%8.4f\" % results['delta_t'], '%')\n", - "print()\n", - "print('alpha = ', \"%8.4f\" % np.rad2deg(results['alpha']), 'deg')\n", - "print('beta = ', \"%8.4f\" % np.rad2deg(results['beta']), 'deg')\n", - "print()\n", - "print('u = ', \"%8.4f\" % results['u'], 'm/s')\n", - "print('v = ', \"%8.4f\" % results['v'], 'm/s')\n", - "print('w = ', \"%8.4f\" % results['w'], 'm/s')\n", - "print()\n", - "print('psi = ', \"%8.4f\" % np.rad2deg(psi0), 'deg')\n", - "print('theta = ', \"%8.4f\" % np.rad2deg(results['theta']), 'deg')\n", - "print('phi = ', \"%8.4f\" % np.rad2deg(results['phi']), 'deg')\n", - "print()\n", - "print('p =', \"%8.4f\" % results['p'], 'rad/s')\n", - "print('q =', \"%8.4f\" % results['q'], 'rad/s')\n", - "print('r =', \"%8.4f\" % results['r'], 'rad/s')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Initialise simulation with no_controls" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "no_controls = {'delta_elevator': 0.0,\n", - " 'delta_aileron': 0.0,\n", - " 'delta_rudder': 0.0,\n", - " 'delta_t': 0.0}\n", - "\n", - "my_simulation = BatchSimulation(trimmed_ac, trimmed_sys, trimmed_env)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "tfin = 20 # seconds\n", - "N = tfin * 100 + 1\n", - "time = np.linspace(0, tfin, N)\n", - "\n", - "initial_controls = no_controls" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "controls = {}\n", - "for control_name, control_value in initial_controls.items():\n", - " controls[control_name] = np.ones_like(time) * control_value\n", - "\n", - "my_simulation.set_controls(time, controls)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "par_list = ['x_earth', 'y_earth', 'height',\n", - " 'psi', 'theta', 'phi',\n", - " 'u', 'v', 'w',\n", - " 'v_north', 'v_east', 'v_down',\n", - " 'p', 'q', 'r',\n", - " 'alpha', 'beta', 'TAS',\n", - " 'F_xb', 'F_yb', 'F_zb',\n", - " 'M_xb', 'M_yb', 'M_zb']" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Run Simulation" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "my_simulation.set_par_dict(par_list)\n", - "my_simulation.run_simulation()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Plot results" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "plt.style.use('ggplot')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false, - "scrolled": false - }, - "outputs": [], - "source": [ - "for ii in range(len(par_list) // 3):\n", - " three_params = par_list[3 * ii:3 * ii + 3]\n", - " fig, ax = plt.subplots(3, 1, sharex=True)\n", - " for jj, par in enumerate(three_params):\n", - " ax[jj].plot(time, my_simulation.par_dict[par])\n", - " ax[jj].set_ylabel(par)\n", - " ax[jj].set_xlabel('time (s)')\n", - "\n", - "fig = plt.figure()\n", - "ax = Axes3D(fig)\n", - "ax.plot(my_simulation.par_dict['x_earth'],\n", - " my_simulation.par_dict['y_earth'],\n", - " my_simulation.par_dict['height'])\n", - "\n", - "ax.plot(my_simulation.par_dict['x_earth'],\n", - " my_simulation.par_dict['y_earth'],\n", - " my_simulation.par_dict['height'] * 0)\n", - "ax.set_xlabel('x_earth')\n", - "ax.set_ylabel('y_earth')\n", - "ax.set_zlabel('z_earth')\n", - "\n", - "plt.show()" - ] - } - ], - "metadata": { - "anaconda-cloud": {}, - "celltoolbar": "Raw Cell Format", - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.5.1" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} diff --git a/examples/examples_as_notebooks/example_001_stationary_horizontal.ipynb b/examples/examples_as_notebooks/example_001_stationary_horizontal.ipynb deleted file mode 100644 index 44da72b..0000000 --- a/examples/examples_as_notebooks/example_001_stationary_horizontal.ipynb +++ /dev/null @@ -1,353 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# EXAMPLE 001\n", - "\n", - "Cessna 172, ISA1976 integrated with Flat Earth (Euler angles).\n", - "\n", - "Example with trimmed aircraft: stationary, horizontal, symmetric,\n", - "wings level flight.\n", - "\n", - "The main purpose of this example is to check if the aircraft trimmed \n", - "in a given state maintains the trimmed flight condition." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# -*- coding: utf-8 -*-" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Import python libreries needed." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "%matplotlib inline\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "from mpl_toolkits.mplot3d import Axes3D" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Import PyFME classes" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "from pyfme.aircrafts import Cessna172\n", - "from pyfme.environment.environment import Environment\n", - "from pyfme.environment.atmosphere import ISA1976\n", - "from pyfme.environment.gravity import VerticalConstant\n", - "from pyfme.environment.wind import NoWind\n", - "from pyfme.models.systems import EulerFlatEarth\n", - "from pyfme.simulator import BatchSimulation\n", - "from pyfme.utils.trimmer import steady_state_flight_trimmer" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Initialize variables" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "aircraft = Cessna172()\n", - "atmosphere = ISA1976()\n", - "gravity = VerticalConstant()\n", - "wind = NoWind()\n", - "environment = Environment(atmosphere, gravity, wind)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Initial conditions" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "TAS = 45 # m/s\n", - "h0 = 2000 # m\n", - "psi0 = 1.0 # rad\n", - "x0, y0 = 0, 0 # m\n", - "turn_rate = 0.0 # rad/s\n", - "gamma0 = 0.0 # rad" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Define system" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "system = EulerFlatEarth(lat=0, lon=0, h=h0, psi=psi0, x_earth=x0, y_earth=y0)\n", - "\n", - "not_trimmed_controls = {'delta_elevator': 0.05,\n", - " 'delta_aileron': 0.01 * np.sign(turn_rate),\n", - " 'delta_rudder': 0.01 * np.sign(turn_rate),\n", - " 'delta_t': 0.5}\n", - "\n", - "controls2trim = ['delta_elevator', 'delta_aileron', 'delta_rudder', 'delta_t']" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "trimmed_ac, trimmed_sys, trimmed_env, results = steady_state_flight_trimmer(\n", - " aircraft, system, environment, TAS=TAS, controls_0=not_trimmed_controls,\n", - " controls2trim=controls2trim, gamma=gamma0, turn_rate=turn_rate, verbose=1)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Steady state flight trimmer results" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "print('delta_elevator = ',\"%8.4f\" % np.rad2deg(results['delta_elevator']), 'deg')\n", - "print('delta_aileron = ', \"%8.4f\" % np.rad2deg(results['delta_aileron']), 'deg')\n", - "print('delta_rudder = ', \"%8.4f\" % np.rad2deg(results['delta_rudder']), 'deg')\n", - "print('delta_t = ', \"%8.4f\" % results['delta_t'], '%')\n", - "print()\n", - "print('alpha = ', \"%8.4f\" % np.rad2deg(results['alpha']), 'deg')\n", - "print('beta = ', \"%8.4f\" % np.rad2deg(results['beta']), 'deg')\n", - "print()\n", - "print('u = ', \"%8.4f\" % results['u'], 'm/s')\n", - "print('v = ', \"%8.4f\" % results['v'], 'm/s')\n", - "print('w = ', \"%8.4f\" % results['w'], 'm/s')\n", - "print()\n", - "print('psi = ', \"%8.4f\" % np.rad2deg(psi0), 'deg')\n", - "print('theta = ', \"%8.4f\" % np.rad2deg(results['theta']), 'deg')\n", - "print('phi = ', \"%8.4f\" % np.rad2deg(results['phi']), 'deg')\n", - "print()\n", - "print('p =', \"%8.4f\" % results['p'], 'rad/s')\n", - "print('q =', \"%8.4f\" % results['q'], 'rad/s')\n", - "print('r =', \"%8.4f\" % results['r'], 'rad/s')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Initialise simulation" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "my_simulation = BatchSimulation(trimmed_ac, trimmed_sys, trimmed_env)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "tfin = 10 # seconds\n", - "N = tfin * 100 + 1\n", - "time = np.linspace(0, tfin, N)\n", - "initial_controls = trimmed_ac.controls" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "controls = {}\n", - "for control_name, control_value in initial_controls.items():\n", - " controls[control_name] = np.ones_like(time) * control_value\n", - "\n", - "my_simulation.set_controls(time, controls)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "par_list = ['x_earth', 'y_earth', 'height',\n", - " 'psi', 'theta', 'phi',\n", - " 'u', 'v', 'w',\n", - " 'v_north', 'v_east', 'v_down',\n", - " 'p', 'q', 'r',\n", - " 'alpha', 'beta', 'TAS',\n", - " 'F_xb', 'F_yb', 'F_zb',\n", - " 'M_xb', 'M_yb', 'M_zb']" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Run Simulation" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "my_simulation.set_par_dict(par_list)\n", - "my_simulation.run_simulation()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Plot results" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "plt.style.use('ggplot')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false, - "scrolled": false - }, - "outputs": [], - "source": [ - "for ii in range(len(par_list) // 3):\n", - " three_params = par_list[3 * ii:3 * ii + 3]\n", - " fig, ax = plt.subplots(3, 1, sharex=True)\n", - " for jj, par in enumerate(three_params):\n", - " ax[jj].plot(time, my_simulation.par_dict[par])\n", - " ax[jj].set_ylabel(par)\n", - " ax[jj].set_xlabel('time (s)')\n", - "\n", - "fig = plt.figure()\n", - "ax = Axes3D(fig)\n", - "ax.plot(my_simulation.par_dict['x_earth'],\n", - " my_simulation.par_dict['y_earth'],\n", - " my_simulation.par_dict['height'])\n", - "\n", - "ax.plot(my_simulation.par_dict['x_earth'],\n", - " my_simulation.par_dict['y_earth'],\n", - " my_simulation.par_dict['height'] * 0)\n", - "ax.set_xlabel('x_earth')\n", - "ax.set_ylabel('y_earth')\n", - "ax.set_zlabel('z_earth')\n", - "\n", - "plt.show()" - ] - } - ], - "metadata": { - "anaconda-cloud": {}, - "celltoolbar": "Raw Cell Format", - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.5.1" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} diff --git a/examples/examples_as_notebooks/example_002_stationary_descent.ipynb b/examples/examples_as_notebooks/example_002_stationary_descent.ipynb deleted file mode 100644 index 6ca5e02..0000000 --- a/examples/examples_as_notebooks/example_002_stationary_descent.ipynb +++ /dev/null @@ -1,353 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# EXAMPLE 002\n", - "\n", - "Cessna 172, ISA1976 integrated with Flat Earth (Euler angles).\n", - "\n", - "Example with trimmed aircraft: stationary descent, symmetric, wings level\n", - "flight.\n", - "\n", - "The main purpose of this example is to check if the aircraft trimmed \n", - "in a given state maintains the trimmed flight condition." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# -*- coding: utf-8 -*-" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Import python libreries needed." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "%matplotlib inline\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "from mpl_toolkits.mplot3d import Axes3D" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Import PyFME classes" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "from pyfme.aircrafts import Cessna172\n", - "from pyfme.environment.environment import Environment\n", - "from pyfme.environment.atmosphere import ISA1976\n", - "from pyfme.environment.gravity import VerticalConstant\n", - "from pyfme.environment.wind import NoWind\n", - "from pyfme.models.systems import EulerFlatEarth\n", - "from pyfme.simulator import BatchSimulation\n", - "from pyfme.utils.trimmer import steady_state_flight_trimmer" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Initialize variables" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "aircraft = Cessna172()\n", - "atmosphere = ISA1976()\n", - "gravity = VerticalConstant()\n", - "wind = NoWind()\n", - "environment = Environment(atmosphere, gravity, wind)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Initial conditions" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "TAS = 45 # m/s\n", - "h0 = 2000 # m\n", - "psi0 = 1.0 # rad\n", - "x0, y0 = 0, 0 # m\n", - "turn_rate = 0.0 # rad/s\n", - "gamma0 = -0.1 # rad" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Define system" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "system = EulerFlatEarth(lat=0, lon=0, h=h0, psi=psi0, x_earth=x0, y_earth=y0)\n", - "\n", - "not_trimmed_controls = {'delta_elevator': 0.05,\n", - " 'delta_aileron': 0.01 * np.sign(turn_rate),\n", - " 'delta_rudder': 0.01 * np.sign(turn_rate),\n", - " 'delta_t': 0.5}\n", - "\n", - "controls2trim = ['delta_elevator', 'delta_aileron', 'delta_rudder', 'delta_t']" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "trimmed_ac, trimmed_sys, trimmed_env, results = steady_state_flight_trimmer(\n", - " aircraft, system, environment, TAS=TAS, controls_0=not_trimmed_controls,\n", - " controls2trim=controls2trim, gamma=gamma0, turn_rate=turn_rate, verbose=1)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Steady state flight trimmer results" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "print('delta_elevator = ',\"%8.4f\" % np.rad2deg(results['delta_elevator']), 'deg')\n", - "print('delta_aileron = ', \"%8.4f\" % np.rad2deg(results['delta_aileron']), 'deg')\n", - "print('delta_rudder = ', \"%8.4f\" % np.rad2deg(results['delta_rudder']), 'deg')\n", - "print('delta_t = ', \"%8.4f\" % results['delta_t'], '%')\n", - "print()\n", - "print('alpha = ', \"%8.4f\" % np.rad2deg(results['alpha']), 'deg')\n", - "print('beta = ', \"%8.4f\" % np.rad2deg(results['beta']), 'deg')\n", - "print()\n", - "print('u = ', \"%8.4f\" % results['u'], 'm/s')\n", - "print('v = ', \"%8.4f\" % results['v'], 'm/s')\n", - "print('w = ', \"%8.4f\" % results['w'], 'm/s')\n", - "print()\n", - "print('psi = ', \"%8.4f\" % np.rad2deg(psi0), 'deg')\n", - "print('theta = ', \"%8.4f\" % np.rad2deg(results['theta']), 'deg')\n", - "print('phi = ', \"%8.4f\" % np.rad2deg(results['phi']), 'deg')\n", - "print()\n", - "print('p =', \"%8.4f\" % results['p'], 'rad/s')\n", - "print('q =', \"%8.4f\" % results['q'], 'rad/s')\n", - "print('r =', \"%8.4f\" % results['r'], 'rad/s')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Initialise simulation" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "my_simulation = BatchSimulation(trimmed_ac, trimmed_sys, trimmed_env)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "tfin = 150 # seconds\n", - "N = tfin * 100 + 1\n", - "time = np.linspace(0, tfin, N)\n", - "initial_controls = trimmed_ac.controls" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "controls = {}\n", - "for control_name, control_value in initial_controls.items():\n", - " controls[control_name] = np.ones_like(time) * control_value\n", - "\n", - "my_simulation.set_controls(time, controls)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "par_list = ['x_earth', 'y_earth', 'height',\n", - " 'psi', 'theta', 'phi',\n", - " 'u', 'v', 'w',\n", - " 'v_north', 'v_east', 'v_down',\n", - " 'p', 'q', 'r',\n", - " 'alpha', 'beta', 'TAS',\n", - " 'F_xb', 'F_yb', 'F_zb',\n", - " 'M_xb', 'M_yb', 'M_zb']" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Run Simulation" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "my_simulation.set_par_dict(par_list)\n", - "my_simulation.run_simulation()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Plot results" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "plt.style.use('ggplot')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false, - "scrolled": false - }, - "outputs": [], - "source": [ - "for ii in range(len(par_list) // 3):\n", - " three_params = par_list[3 * ii:3 * ii + 3]\n", - " fig, ax = plt.subplots(3, 1, sharex=True)\n", - " for jj, par in enumerate(three_params):\n", - " ax[jj].plot(time, my_simulation.par_dict[par])\n", - " ax[jj].set_ylabel(par)\n", - " ax[jj].set_xlabel('time (s)')\n", - "\n", - "fig = plt.figure()\n", - "ax = Axes3D(fig)\n", - "ax.plot(my_simulation.par_dict['x_earth'],\n", - " my_simulation.par_dict['y_earth'],\n", - " my_simulation.par_dict['height'])\n", - "\n", - "ax.plot(my_simulation.par_dict['x_earth'],\n", - " my_simulation.par_dict['y_earth'],\n", - " my_simulation.par_dict['height'] * 0)\n", - "ax.set_xlabel('x_earth')\n", - "ax.set_ylabel('y_earth')\n", - "ax.set_zlabel('z_earth')\n", - "\n", - "plt.show()" - ] - } - ], - "metadata": { - "anaconda-cloud": {}, - "celltoolbar": "Raw Cell Format", - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.5.1" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} diff --git a/examples/examples_as_notebooks/example_003_stationary_ascent.ipynb b/examples/examples_as_notebooks/example_003_stationary_ascent.ipynb deleted file mode 100644 index 3dd69c8..0000000 --- a/examples/examples_as_notebooks/example_003_stationary_ascent.ipynb +++ /dev/null @@ -1,353 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# EXAMPLE 003\n", - "\n", - "Cessna 172, ISA1976 integrated with Flat Earth (Euler angles).\n", - "\n", - "Example with trimmed aircraft: stationary ascent, symmetric, wings level\n", - "flight.\n", - "\n", - "The main purpose of this example is to check if the aircraft trimmed \n", - "in a given state maintains the trimmed flight condition." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# -*- coding: utf-8 -*-" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Import python libreries needed." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "%matplotlib inline\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "from mpl_toolkits.mplot3d import Axes3D" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Import PyFME classes" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "from pyfme.aircrafts import Cessna172\n", - "from pyfme.environment.environment import Environment\n", - "from pyfme.environment.atmosphere import ISA1976\n", - "from pyfme.environment.gravity import VerticalConstant\n", - "from pyfme.environment.wind import NoWind\n", - "from pyfme.models.systems import EulerFlatEarth\n", - "from pyfme.simulator import BatchSimulation\n", - "from pyfme.utils.trimmer import steady_state_flight_trimmer" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Initialize variables" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "aircraft = Cessna172()\n", - "atmosphere = ISA1976()\n", - "gravity = VerticalConstant()\n", - "wind = NoWind()\n", - "environment = Environment(atmosphere, gravity, wind)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Initial conditions" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "TAS = 45 # m/s\n", - "h0 = 2000 # m\n", - "psi0 = 1.0 # rad\n", - "x0, y0 = 0, 0 # m\n", - "turn_rate = 0.0 # rad/s\n", - "gamma0 = 0.1 # rad" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Define system" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "system = EulerFlatEarth(lat=0, lon=0, h=h0, psi=psi0, x_earth=x0, y_earth=y0)\n", - "\n", - "not_trimmed_controls = {'delta_elevator': 0.05,\n", - " 'delta_aileron': 0.01 * np.sign(turn_rate),\n", - " 'delta_rudder': 0.01 * np.sign(turn_rate),\n", - " 'delta_t': 0.5}\n", - "\n", - "controls2trim = ['delta_elevator', 'delta_aileron', 'delta_rudder', 'delta_t']" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "trimmed_ac, trimmed_sys, trimmed_env, results = steady_state_flight_trimmer(\n", - " aircraft, system, environment, TAS=TAS, controls_0=not_trimmed_controls,\n", - " controls2trim=controls2trim, gamma=gamma0, turn_rate=turn_rate, verbose=1)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Steady state flight trimmer results" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "print('delta_elevator = ',\"%8.4f\" % np.rad2deg(results['delta_elevator']), 'deg')\n", - "print('delta_aileron = ', \"%8.4f\" % np.rad2deg(results['delta_aileron']), 'deg')\n", - "print('delta_rudder = ', \"%8.4f\" % np.rad2deg(results['delta_rudder']), 'deg')\n", - "print('delta_t = ', \"%8.4f\" % results['delta_t'], '%')\n", - "print()\n", - "print('alpha = ', \"%8.4f\" % np.rad2deg(results['alpha']), 'deg')\n", - "print('beta = ', \"%8.4f\" % np.rad2deg(results['beta']), 'deg')\n", - "print()\n", - "print('u = ', \"%8.4f\" % results['u'], 'm/s')\n", - "print('v = ', \"%8.4f\" % results['v'], 'm/s')\n", - "print('w = ', \"%8.4f\" % results['w'], 'm/s')\n", - "print()\n", - "print('psi = ', \"%8.4f\" % np.rad2deg(psi0), 'deg')\n", - "print('theta = ', \"%8.4f\" % np.rad2deg(results['theta']), 'deg')\n", - "print('phi = ', \"%8.4f\" % np.rad2deg(results['phi']), 'deg')\n", - "print()\n", - "print('p =', \"%8.4f\" % results['p'], 'rad/s')\n", - "print('q =', \"%8.4f\" % results['q'], 'rad/s')\n", - "print('r =', \"%8.4f\" % results['r'], 'rad/s')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Initialise simulation" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "my_simulation = BatchSimulation(trimmed_ac, trimmed_sys, trimmed_env)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "tfin = 150 # seconds\n", - "N = tfin * 100 + 1\n", - "time = np.linspace(0, tfin, N)\n", - "initial_controls = trimmed_ac.controls" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "controls = {}\n", - "for control_name, control_value in initial_controls.items():\n", - " controls[control_name] = np.ones_like(time) * control_value\n", - "\n", - "my_simulation.set_controls(time, controls)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "par_list = ['x_earth', 'y_earth', 'height',\n", - " 'psi', 'theta', 'phi',\n", - " 'u', 'v', 'w',\n", - " 'v_north', 'v_east', 'v_down',\n", - " 'p', 'q', 'r',\n", - " 'alpha', 'beta', 'TAS',\n", - " 'F_xb', 'F_yb', 'F_zb',\n", - " 'M_xb', 'M_yb', 'M_zb']" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Run Simulation" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "my_simulation.set_par_dict(par_list)\n", - "my_simulation.run_simulation()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Plot results" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "plt.style.use('ggplot')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false, - "scrolled": false - }, - "outputs": [], - "source": [ - "for ii in range(len(par_list) // 3):\n", - " three_params = par_list[3 * ii:3 * ii + 3]\n", - " fig, ax = plt.subplots(3, 1, sharex=True)\n", - " for jj, par in enumerate(three_params):\n", - " ax[jj].plot(time, my_simulation.par_dict[par])\n", - " ax[jj].set_ylabel(par)\n", - " ax[jj].set_xlabel('time (s)')\n", - "\n", - "fig = plt.figure()\n", - "ax = Axes3D(fig)\n", - "ax.plot(my_simulation.par_dict['x_earth'],\n", - " my_simulation.par_dict['y_earth'],\n", - " my_simulation.par_dict['height'])\n", - "\n", - "ax.plot(my_simulation.par_dict['x_earth'],\n", - " my_simulation.par_dict['y_earth'],\n", - " my_simulation.par_dict['height'] * 0)\n", - "ax.set_xlabel('x_earth')\n", - "ax.set_ylabel('y_earth')\n", - "ax.set_zlabel('z_earth')\n", - "\n", - "plt.show()" - ] - } - ], - "metadata": { - "anaconda-cloud": {}, - "celltoolbar": "Raw Cell Format", - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.5.1" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} diff --git a/examples/examples_as_notebooks/example_004_stationary_horizontal_turn.ipynb b/examples/examples_as_notebooks/example_004_stationary_horizontal_turn.ipynb deleted file mode 100644 index 6702cd4..0000000 --- a/examples/examples_as_notebooks/example_004_stationary_horizontal_turn.ipynb +++ /dev/null @@ -1,352 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# EXAMPLE 004\n", - "\n", - "Cessna 172, ISA1976 integrated with Flat Earth (Euler angles).\n", - "\n", - "Example with trimmed aircraft: stationary, horizontal turn.\n", - "\n", - "The main purpose of this example is to check if the aircraft trimmed \n", - "in a given state maintains the trimmed flight condition." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# -*- coding: utf-8 -*-" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Import python libreries needed." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "%matplotlib inline\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "from mpl_toolkits.mplot3d import Axes3D" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Import PyFME classes" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "from pyfme.aircrafts import Cessna172\n", - "from pyfme.environment.environment import Environment\n", - "from pyfme.environment.atmosphere import ISA1976\n", - "from pyfme.environment.gravity import VerticalConstant\n", - "from pyfme.environment.wind import NoWind\n", - "from pyfme.models.systems import EulerFlatEarth\n", - "from pyfme.simulator import BatchSimulation\n", - "from pyfme.utils.trimmer import steady_state_flight_trimmer" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Initialize variables" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "aircraft = Cessna172()\n", - "atmosphere = ISA1976()\n", - "gravity = VerticalConstant()\n", - "wind = NoWind()\n", - "environment = Environment(atmosphere, gravity, wind)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Initial conditions" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "TAS = 45 # m/s\n", - "h0 = 3000 # m\n", - "psi0 = 1.0 # rad\n", - "x0, y0 = 0, 0 # m\n", - "turn_rate = 0.005 # rad/s\n", - "gamma0 = 0.0 # rad" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Define system" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "system = EulerFlatEarth(lat=0, lon=0, h=h0, psi=psi0, x_earth=x0, y_earth=y0)\n", - "\n", - "not_trimmed_controls = {'delta_elevator': 0.05,\n", - " 'delta_aileron': 0.01 * np.sign(turn_rate),\n", - " 'delta_rudder': 0.01 * np.sign(turn_rate),\n", - " 'delta_t': 0.5}\n", - "\n", - "controls2trim = ['delta_elevator', 'delta_aileron', 'delta_rudder', 'delta_t']" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "trimmed_ac, trimmed_sys, trimmed_env, results = steady_state_flight_trimmer(\n", - " aircraft, system, environment, TAS=TAS, controls_0=not_trimmed_controls,\n", - " controls2trim=controls2trim, gamma=gamma0, turn_rate=turn_rate, verbose=1)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Steady state flight trimmer results" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "print('delta_elevator = ',\"%8.4f\" % np.rad2deg(results['delta_elevator']), 'deg')\n", - "print('delta_aileron = ', \"%8.4f\" % np.rad2deg(results['delta_aileron']), 'deg')\n", - "print('delta_rudder = ', \"%8.4f\" % np.rad2deg(results['delta_rudder']), 'deg')\n", - "print('delta_t = ', \"%8.4f\" % results['delta_t'], '%')\n", - "print()\n", - "print('alpha = ', \"%8.4f\" % np.rad2deg(results['alpha']), 'deg')\n", - "print('beta = ', \"%8.4f\" % np.rad2deg(results['beta']), 'deg')\n", - "print()\n", - "print('u = ', \"%8.4f\" % results['u'], 'm/s')\n", - "print('v = ', \"%8.4f\" % results['v'], 'm/s')\n", - "print('w = ', \"%8.4f\" % results['w'], 'm/s')\n", - "print()\n", - "print('psi = ', \"%8.4f\" % np.rad2deg(psi0), 'deg')\n", - "print('theta = ', \"%8.4f\" % np.rad2deg(results['theta']), 'deg')\n", - "print('phi = ', \"%8.4f\" % np.rad2deg(results['phi']), 'deg')\n", - "print()\n", - "print('p =', \"%8.4f\" % results['p'], 'rad/s')\n", - "print('q =', \"%8.4f\" % results['q'], 'rad/s')\n", - "print('r =', \"%8.4f\" % results['r'], 'rad/s')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Initialise simulation" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "my_simulation = BatchSimulation(trimmed_ac, trimmed_sys, trimmed_env)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "tfin = 100 # seconds\n", - "N = tfin * 100 + 1\n", - "time = np.linspace(0, tfin, N)\n", - "initial_controls = trimmed_ac.controls" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "controls = {}\n", - "for control_name, control_value in initial_controls.items():\n", - " controls[control_name] = np.ones_like(time) * control_value\n", - "\n", - "my_simulation.set_controls(time, controls)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "par_list = ['x_earth', 'y_earth', 'height',\n", - " 'psi', 'theta', 'phi',\n", - " 'u', 'v', 'w',\n", - " 'v_north', 'v_east', 'v_down',\n", - " 'p', 'q', 'r',\n", - " 'alpha', 'beta', 'TAS',\n", - " 'F_xb', 'F_yb', 'F_zb',\n", - " 'M_xb', 'M_yb', 'M_zb']" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Run Simulation" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "my_simulation.set_par_dict(par_list)\n", - "my_simulation.run_simulation()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Plot results" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "plt.style.use('ggplot')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false, - "scrolled": false - }, - "outputs": [], - "source": [ - "for ii in range(len(par_list) // 3):\n", - " three_params = par_list[3 * ii:3 * ii + 3]\n", - " fig, ax = plt.subplots(3, 1, sharex=True)\n", - " for jj, par in enumerate(three_params):\n", - " ax[jj].plot(time, my_simulation.par_dict[par])\n", - " ax[jj].set_ylabel(par)\n", - " ax[jj].set_xlabel('time (s)')\n", - "\n", - "fig = plt.figure()\n", - "ax = Axes3D(fig)\n", - "ax.plot(my_simulation.par_dict['x_earth'],\n", - " my_simulation.par_dict['y_earth'],\n", - " my_simulation.par_dict['height'])\n", - "\n", - "ax.plot(my_simulation.par_dict['x_earth'],\n", - " my_simulation.par_dict['y_earth'],\n", - " my_simulation.par_dict['height'] * 0)\n", - "ax.set_xlabel('x_earth')\n", - "ax.set_ylabel('y_earth')\n", - "ax.set_zlabel('z_earth')\n", - "\n", - "plt.show()" - ] - } - ], - "metadata": { - "anaconda-cloud": {}, - "celltoolbar": "Raw Cell Format", - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.5.1" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} diff --git a/examples/examples_as_notebooks/example_005_stationary_turn_during_ascent.ipynb b/examples/examples_as_notebooks/example_005_stationary_turn_during_ascent.ipynb deleted file mode 100644 index 16b6186..0000000 --- a/examples/examples_as_notebooks/example_005_stationary_turn_during_ascent.ipynb +++ /dev/null @@ -1,486 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# EXAMPLE 005\n", - "\n", - "Cessna 172, ISA1976 integrated with Flat Earth (Euler angles).\n", - "\n", - "Example with trimmed aircraft: stationary, turn during ascent.\n", - "\n", - "The main purpose of this example is to check if the aircraft trimmed \n", - "in a given state maintains the trimmed flight condition." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# -*- coding: utf-8 -*-" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Import python libreries needed." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "%matplotlib inline\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "from mpl_toolkits.mplot3d import Axes3D" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Import PyFME classes" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "from pyfme.aircrafts import Cessna172\n", - "from pyfme.environment.environment import Environment\n", - "from pyfme.environment.atmosphere import ISA1976\n", - "from pyfme.environment.gravity import VerticalConstant\n", - "from pyfme.environment.wind import NoWind\n", - "from pyfme.models.systems import EulerFlatEarth\n", - "from pyfme.simulator import BatchSimulation\n", - "from pyfme.utils.trimmer import steady_state_flight_trimmer" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Initialize variables" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "aircraft = Cessna172()\n", - "atmosphere = ISA1976()\n", - "gravity = VerticalConstant()\n", - "wind = NoWind()\n", - "environment = Environment(atmosphere, gravity, wind)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Initial conditions" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "TAS = 45 # m/s\n", - "h0 = 3000 # m\n", - "psi0 = 1.0 # rad\n", - "x0, y0 = 0, 0 # m\n", - "turn_rate = 0.25 # rad/s\n", - "gamma0 = 0.05 # rad" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Define system" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "system = EulerFlatEarth(lat=0, lon=0, h=h0, psi=psi0, x_earth=x0, y_earth=y0)\n", - "\n", - "not_trimmed_controls = {'delta_elevator': 0.05,\n", - " 'delta_aileron': 0.01 * np.sign(turn_rate),\n", - " 'delta_rudder': 0.01 * np.sign(turn_rate),\n", - " 'delta_t': 0.5}\n", - "\n", - "controls2trim = ['delta_elevator', 'delta_aileron', 'delta_rudder', 'delta_t']" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "`gtol` termination condition is satisfied.\n", - "Function evaluations: 14, initial cost: 3.4806e+01, final cost 4.9421e-03, first-order optimality 1.10e-09.\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "c:\\python35-32\\lib\\site-packages\\pyfme\\utils\\trimmer.py:138: RuntimeWarning: Trim process did not converge\n", - " warn(\"Trim process did not converge\", RuntimeWarning)\n" - ] - } - ], - "source": [ - "trimmed_ac, trimmed_sys, trimmed_env, results = steady_state_flight_trimmer(\n", - " aircraft, system, environment, TAS=TAS, controls_0=not_trimmed_controls,\n", - " controls2trim=controls2trim, gamma=gamma0, turn_rate=turn_rate, verbose=1)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Steady state flight trimmer results" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "delta_elevator = -10.1681 deg\n", - "delta_aileron = -1.2980 deg\n", - "delta_rudder = 4.7543 deg\n", - "delta_t = 0.8857 %\n", - "\n", - "alpha = 9.0153 deg\n", - "beta = -14.3239 deg\n", - "\n", - "u = 43.0624 m/s\n", - "v = -11.1332 m/s\n", - "w = 6.8322 m/s\n", - "\n", - "psi = 57.2958 deg\n", - "theta = -1.7740 deg\n", - "phi = 47.4607 deg\n", - "\n", - "p = 0.0077 rad/s\n", - "q = 0.1841 rad/s\n", - "r = 0.1841 rad/s\n" - ] - } - ], - "source": [ - "print('delta_elevator = ',\"%8.4f\" % np.rad2deg(results['delta_elevator']), 'deg')\n", - "print('delta_aileron = ', \"%8.4f\" % np.rad2deg(results['delta_aileron']), 'deg')\n", - "print('delta_rudder = ', \"%8.4f\" % np.rad2deg(results['delta_rudder']), 'deg')\n", - "print('delta_t = ', \"%8.4f\" % results['delta_t'], '%')\n", - "print()\n", - "print('alpha = ', \"%8.4f\" % np.rad2deg(results['alpha']), 'deg')\n", - "print('beta = ', \"%8.4f\" % np.rad2deg(results['beta']), 'deg')\n", - "print()\n", - "print('u = ', \"%8.4f\" % results['u'], 'm/s')\n", - "print('v = ', \"%8.4f\" % results['v'], 'm/s')\n", - "print('w = ', \"%8.4f\" % results['w'], 'm/s')\n", - "print()\n", - "print('psi = ', \"%8.4f\" % np.rad2deg(psi0), 'deg')\n", - "print('theta = ', \"%8.4f\" % np.rad2deg(results['theta']), 'deg')\n", - "print('phi = ', \"%8.4f\" % np.rad2deg(results['phi']), 'deg')\n", - "print()\n", - "print('p =', \"%8.4f\" % results['p'], 'rad/s')\n", - "print('q =', \"%8.4f\" % results['q'], 'rad/s')\n", - "print('r =', \"%8.4f\" % results['r'], 'rad/s')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Initialise simulation" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "my_simulation = BatchSimulation(trimmed_ac, trimmed_sys, trimmed_env)" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "tfin = 80 # seconds\n", - "N = tfin * 100 + 1\n", - "time = np.linspace(0, tfin, N)\n", - "initial_controls = trimmed_ac.controls" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "controls = {}\n", - "for control_name, control_value in initial_controls.items():\n", - " controls[control_name] = np.ones_like(time) * control_value\n", - "\n", - "my_simulation.set_controls(time, controls)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "par_list = ['x_earth', 'y_earth', 'height',\n", - " 'psi', 'theta', 'phi',\n", - " 'u', 'v', 'w',\n", - " 'v_north', 'v_east', 'v_down',\n", - " 'p', 'q', 'r',\n", - " 'alpha', 'beta', 'TAS',\n", - " 'F_xb', 'F_yb', 'F_zb',\n", - " 'M_xb', 'M_yb', 'M_zb']" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Run Simulation" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "my_simulation.set_par_dict(par_list)\n", - "my_simulation.run_simulation()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Plot results" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "plt.style.use('ggplot')" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": { - "collapsed": false, - "scrolled": false - }, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n6tSpw4IFC8jIyKBFixbce++9tst5oU2bNnH99dcD9nvfQ0JCGDp0KAkJCfj7+9OpUyc6depU7pxX\ndVGp7n65YJk3ORwOXnrpJe69994yZzDwdlbDMJg9ezYFBQW8+OKLHDx48KJtvJ3x/DW0Zs2alZqX\n7pe8nRPg2WefJTg4mNzcXGbNmlXmvHnezmmaJunp6TzwwAO0bNmSZcuW8d577120nbdznud0OklO\nTmbMmDFlft7bOc+ePUtycjILFiwgMDCQl156iS+//PKi7S6X86ouKlZPUlnZgoKCOH36tPvfevXq\neTsSACUlJcyZM4f4+Hi6d+8O2DdrYGAg7du3JzU11XYZd+3aRXJyMikpKRQVFVFYWMjLL79su5wA\nwcHBgGsNo+7du7N3717b5QwJCSE0NJSWLVsC0LNnT9577z3b5TwvNTWVFi1aULduXcB+P0Pbt28n\nPDyc2rVrAxAXF8fu3bvLnfOqvqZS3kkqq9ovz1vHxsayfv16ANavX2+brAsXLiQiIoIhQ4a477NT\n1tzcXPfppKKiIrZv306TJk1slRHg7rvvZuHChSQmJvLoo48SHR3NpEmTbJfz3LlzOBwOwHWE+v33\n3xMZGWm7nEFBQYSGhpKVlQW4filGRETYLud5X331Fdddd537tt1yhoWFsWfPHoqKitBaV/j1vOo7\n6lNTU1m6dKl7kkq7DCmeP38+aWlp5OXlUa9ePe688066d+/O3Llzyc7Opn79+kyePPmii/lVbdeu\nXcyYMYPIyEiUUiilGD16NK1atbJN1szMTF555RVM00RrTe/evbn99tvJz8+3TcZfSktLY+3ate4h\nxXbKefz4cV544QWUUpSUlNCnTx9GjBhhu5wABw4cYNGiRTidTho0aEBCQgKmadou57lz50hISCAx\nMZGaNWsC2PL1XLVqFZs2bcLHx4dmzZrx8MMP43A4ypXzqi8qQgghqs5VffpLCCFE1ZKiIoQQwjJS\nVIQQQlhGiooQQgjLSFERQghhGSkqQgghLCNFRYgKys7OZty4cRdNvFhZPv30U5KSki673Zw5c0hN\nTa2CREJcTIqKEB6aMGECO3bscN8OCwsjKSmpSuZscjqdrF69muHDh1922+HDh7Ny5cpKzyREWaSo\nCFENJCcnExER4Z4t9lJatWpFYWEh+/fvr4JkQpR2VU8oKYRVEhMTyc7O5h//+AeGYTBy5Eh69erF\nxIkTWbFiBYZhMHPmTNq2bcvOnTvJyMggOjqahIQElixZwtatW2nSpAlTpkwhLCwMgMOHD7N06VL2\n79/vnqqnV69eZT5/SkoKUVFR7tvFxcW8+uqrpKamYpomjRo1Ytq0ae7JCtu3b8+2bdto0aJF5b84\nQlxAjlSE8MDEiRMJCwtj6tSpJCUlMWzYsDK327x5M5MmTWLRokUcPXqU6dOn079/f5YuXUrjxo1Z\ntWoV4JoLatasWfTp04fFixfzyCOPsHjxYg4fPlzmfjMzM0tNP//FF19QWFjIq6++ypIlS3jwwQfx\n8/Nzf75JkyZkZGRY+AoI4RkpKkJY6IYbbiA8PJyaNWsSExNDgwYNiI6OxjAMevXqxYEDBwDYunUr\n4eHh9O3bF6UUzZo1Iy4ujs2bN5e534KCAvdEhOBa5TAvL48jR46glKJ58+al1rmpWbNmqYXAhKgq\ncvpLCAtduNaEn5/fRbfPTymfnZ3Nnj17uO+++9yfN02TPn36lLnfWrVqUVhY6L7dt29fcnJymDdv\nHgUFBfTp04fRo0djGK6/EwsLCwkMDLT0axPCE1JUhPCQlaO8QkND6dChA08++aRH20dGRnLkyBH3\nbcMwGDVqFKNGjSI7O5vnn3+exo0bu9drP3z4ME2bNrUsrxCektNfQngoKCiIY8eOWbKv2NhYsrKy\n2LBhAyUlJTidTvbt2/er11S6du1KWlqa+/bOnTvJzMzENE0CAgLw8fEpVfTS0tLo0qWLJVmFKA85\nUhHCQyNGjGDJkiW88cYbjBw5kh49elR4XwEBAUyfPp2kpCSWL1+O1ppmzZpxzz33lLl9bGwsSUlJ\npZZ1fe211zh58iQBAQH07t2b+Ph4APbu3UvNmjXdy+wKUZVkkS4hqol169Zx6NAhxo0bd8nt5syZ\nw4ABA4iJiamiZEL8TIqKEEIIy8g1FSGEEJaRoiKEEMIyUlSEEEJYRoqKEEIIy0hREUIIYRkpKkII\nISwjRUUIIYRlpKgIIYSwzP8D0itc4F/Thr4AAAAASUVORK5CYII=\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\nSBRFURSn/D+AJHT7bzJrRQAAAABJRU5ErkJggg==\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n6Cmqpp4AAAAASUVORK5CYII=\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZwAAAEWCAYAAABSaiGHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXd4FdX6tu81KaSQENIooYdepEpRSkIViJCfIh5sCBYE\n8SB4EFBBEFRCEdQocBQQPzyCHAEFAaWKItJDr0qRToCQXmd9f8xJJJCy986uYd3XxUV29po1z54k\n884q7/sIKaVEoVAoFAobozlagEKhUCjuDVTAUSgUCoVdUAFHoVAoFHZBBRyFQqFQ2AUVcBQKhUJh\nF1TAUSgUCoVdcHfESePi4vjiiy+QUhIZGUl0dHS+9y9evMinn37K6dOnGTBgAFFRUXnvrVmzho0b\nNwLQpUsXevXqBcCyZcvYuHEj5cqVA2DAgAE0a9bMTp9IoVAoFMVh9xGOruvMnz+fN998k5kzZ7Jt\n2zYuXLiQr03ZsmUZPHgwDz/8cL7v//XXX2zatImpU6cyffp09uzZw5UrV/Lej4qKIiYmhpiYGJOD\nzeHDh0v+oeyA0mldXEGnK2gEpdPalGaddg84p06dolKlSoSEhODu7s6DDz7Irl278rXx9/enVq1a\nuLm55fv+hQsXqF27Nh4eHmiaRsOGDdmxY0fe+5bksJbmH64jUDqthytoBKXT2pRmnXYPODdu3CAo\nKCjvdWBgIDdu3DDp2KpVq3Ls2DGSk5PJyMhg3759XL9+Pe/9devWMXr0aObOnUtqaqrVtSsUCoXC\nchyyhmMpYWFh9O3blylTpuDl5UWNGjXQNCNm9ujRg379+iGEYMmSJSxatIihQ4c6WLFCoVAochH2\nrqV24sQJli1bxptvvgnAypUrAe7aOADGRgBvb+98mwZu5+uvvyYoKIju3bvn+/61a9eIiYlhxowZ\ndx1z+PDhfEPB/v37W/xZFAqF4l7mm2++yfu6UaNGNGrUqMj2dh/h1K5dm8uXL3Pt2jXKly/Ptm3b\nGDFiRKHt74yHiYmJ+Pv7Ex8fz86dO3n33XcBSEhIICAgAIAdO3ZQtWrVAvsr6KJcvHixJB/JLvj5\n+ZGUlORoGcWidFoPV9AISqe1cRWdlStXNvuB3e4BR9M0nnvuOaZMmYKUks6dO1OlShXWr1+PEIKu\nXbuSkJDAuHHjSEtLQwjBmjVrmDVrFl5eXsycOZPk5GTc3Nx4/vnn8fHxAWDx4sWcOXMGIQQhISG8\n+OKL9v5oCoVCoSgChyV+CiEQQuS97tatG127dgUgNTWVoKAgsrKyePTRR5kzZw5eXl4AtGnTBoCc\nnBzOnj2bd/yzzz5LQEAAmZmZZGVl4enpacdPo1AoFIriKDV5OCtXrqRJkyZ8+OGHNGrUiBUrVtjt\nMykUCoWieEpNHs7u3bvp1KkTABEREXf1qVAoFArHUmrycG7dupW3aSAgIIBbt25ZX7xCoVAoLKbU\n5OHcye3rQwqFQmFr5NH96CsXw/nTULEqWvRTiCYtHS3LqbB7wAkMDCQ+Pj7v9Y0bNwgMDDT5+MjI\nSCIjI4G/83DAGNXkbo1OSEjIK+J5JwXl4fj5+VnyUeyKp6en0mlFXEGnK2gEpRMgY8Mq0r/9Ep9n\nh+Nx3/1kH9lP6vxZlHnkKcp07eM0Oq3NPZuH07JlS7Zs2UJ0dDRbtmyhVatWBfZX0EVxhT3vrrI3\nX+m0Hq6gEZROeWAX+n8XoY1+j4zQSmRk50DdxojXppA2bSwZAcGIek0crtPa+Pn53bt5ONHR0cya\nNYvNmzcTEhLCyJEj7f3RFArFPYa8cQ39i4/Qho1DhFbK954IrYQ26FX0+bPQJsUivH0cpNJ5sHtp\nG2dEVRqwHkqn9XAFjXBv68z59D1ElRpofZ4otI2+8EMo64/22CCT+nSV61m5cmWzj3E5A7bVq1ez\nefNmhBBUq1aNYcOG4e7urgzYFAqFXZH7d8KFc4gX/lVkO/HoM+hvD0d2euiuUdC9ht0DTm7i54QJ\nEyhfvjzjxo3j/vvvJywsLK9NbuLnzp078x1748YN1q1bx+zZs3F3d2fWrFls27YtL/8mKiqq0EKf\nCoVCYS1kdjb6N/PRBgxBeBRd1UT4l0dE9kau+QbxbOHr1fcCLpX4CUbASk9PJycnh4yMDMqXL5/3\nnpodVCgU9kBu3wTlgxGNW5jUXnTtg9y/E3n1ko2VOTculfgZGBhIVFQUw4YN46WXXsLX15f77rsv\n731lwKZQKGyNzMpCrl6CFv2UyccIn7KIiN7Itf+1oTLnx6USP1NSUti9ezeffvopPj4+zJw5k19/\n/ZX27dubbMCm8nBsi9JpPVxBI9x7OjPWLSerejhlm7c26zi9z+MkjXwa36deQgsoPPfQVa4nuEAe\nTkkSPw8ePEhoaChly5YFjMrRx48fp3379vj7++e169KlCzExMQX2ofJwbIvSaT1cQSPcWzplRgb6\niq/QXhlvfl/CDVq2J2n1N2h9n7SpTntgSR6O3afUbk/8zM7OZtu2bYUmaUL+dZng4GBOnjxJZmYm\nUkoOHjyYt9kgISEhr11RBmwKhUJhKXLLDxBeH1E93KLjRbc+yJ/XITMyrKzMNbBohHPmzBmOHj1K\nUlJSvoDw+OOPF3tsSRI/a9euTdu2bRkzZgxubm7UqFEjz0NHGbApFApbItNTkT+uQHvtXYv7EBWr\nQK16yO2bEBE9rajONTB7hLNhwwbGjx/PoUOH+O677zh37hyrV6/m8uXLZvVjqQGbt7d3XsFOXdfz\njlcGbAqFwpbIDasQDZohwqqVqB+tWzRyw/fI2+5f9wpmB5zvvvuON954g9GjR+Pp6cno0aMZNWpU\ngVuYC6IkBmy5eTgxMTHMmDGDnJwctm3bBigDNoVCYTtkSjJy4/eIh/9R8s7qNgIvbziws/i2pQyz\nA05iYiINGjQAjFGKrus0b96cPXv2mHS8tfNwcjccKAM2hUJhK+T6lYimrREVw4pvXAxCCESPR9B/\nvPceis0OOIGBgVy9ehWASpUqsXv3bo4ePYq7u2nLQdbOw2nSxKjCqgzYFAqFLZBJicgtaxFRVhjd\n/A/Roh3cuok8ddRqfboCZm8a6Nu3LxcuXCA0NJR+/frxwQcfkJ2dzaBBphWmKwlF5eHcSWEGbCoP\nx7YondbDFTRC6deZ9v1XyHaR+NSsbVU9GVH9yd60Ct878nlc5XqCHfJwIiIi8r5u3rw5CxcuJDs7\nO29RvzhslYdjqgGbysOxLUqn9XAFjVC6dcpbN9E3/oD29kdW/4yyZQf0/y4i8eRRY/daCXQ6Arvm\n4dy6dYsrV65w/fr1vK9NwVZ5OLkGbECRBmwKhUJhKnLtfxHtIhGBwVbvW5Qpg4joifxppdX7dlbM\nHuHExcUxZ86cfImWuSxdurTY422Vh6MM2BSKkiMz0pF7tiH37YDL5wEJFasYC+atOyI8yzhaot2Q\nN64ht29Ge+cTm51DRPZGf2soss8TiCLK3ZQWzA448+fP59FHHyUiIqJEuS53rrF069Yt7+vcPJw7\n/XAuXrzIrl278PT0RErJrl27qFWrFr169WLt2rVcuHCBcuXKkZSUxMmTJ5UfjkJhIjI728iAX7sM\nqtdG3N8BUbUmCIE8fwb5+xbkd/9B+8fziJYPOlquXZA/LEN06I4oV774xhYi/MohHuhsjKQGlP5k\ndbMDTnJyMt26dSt0Ub44SuKHU7lyZaZNm5bXz9ChQ2nTpk3e+8oPR6EwH3n+jOFK6VsW7Z9vI6rV\nyve+qFwNWndEnjyC/uXHiCP7EQNeQLh7OEix7ZHXLiP3bEObMsfm5xI9+6FPeBnZPRoRFGrz8zkS\ns9dwOnfuzObNmy0+YUnzcHI5ePAgFSpUyLfFWvnhKBTmIfduR5/5FiKiJ9rId+4KNrcj6jREe2Mm\nMvEm+oeTkBnpdlRqX+TqpYjIXoiy/sU3LiHCPwDRqSdy1RKbn8vRmDTCmTBhQt6IRkrJmjVr+O67\n7/LyXnKZNGlSsX0VlIdz6tQpczQD8Ntvv/Hgg/mH9uvWrWPr1q2Eh4fzzDPP4OPjY3a/CsW9gtyz\nDf3rz9BenYiobtqWX+HtgzZ0LPLLWPTZE9H+OQFcZAuvqcjLF5AHdqG9O9du5xQ9otHffAl56S/w\na2i381qKvm0DPPaM2ceZFHA6d+5c5Gt7k52dze7du3nyyb9LfCs/HOdA6bQettSYffwQKf+ZR9k3\npuNew/z8EvnyG6QtmI0+dyoeEz5w+msJpl/PlIXL8Oz9GF4VKtlB1f/w8yPjkafJWrYAj4kfOvX1\n1BMTSFq2EB57xjZ5OLfn3pSUkuTh5BIXF0etWrXyeeAoPxznQOm0HrbSKK9cRJ85Hm3QCNKCKoCF\n55CPDUb+ewYJsyaRM/hVhGZaPUVHYcr1lBfOoh/cQ86AF8my8++HfKAr+sbVpPyynoxGLe16bnPQ\nly+G/20csUsezqZNm5g8eTKjRo1i8uTJbNq0yeT1k5Lk4eTy66+/3jWdpvxwFIrikUm30D+ciOj7\nJKJxyW5qQnNDPDcKmZyIXDrfSgodi77i/yF6PILwsv90vHBzQ3tiCGn/bw4yPc3u5zcFmXAD+ctP\niN7mBZpczN6ltnjxYnbt2kXv3r0JDg4mPj6eVatWcfHiRZ56qniP75Lk4Xh5eZGRkcHBgwcZMmTI\nXbqUH45CUTgyMwP9k3cRrdqjdexhlT6Fhwe+r73DrbFD0H/fgtY2wir9OgJ5eB9cPIcYMsZhGkTd\nxrg1bEr29/9B9H/OYToKQ675BvFAZ4sTYc0e4WzZsoUJEybQvXt3WrRoQffu3XnzzTfN3rlmiR/O\nxYsXGT9+PMHBwbz99tsMHDiQNWvWAMoPR6EoCqnr6AtmIYJCEdHFPxiag/Api/bSGOTSz41FbxdE\nZmejL/0crf9ghIdjt3t7Pz3MyHs6+4dDddyJvHweuesXRM9+FvdhdsDx9vbG29v7ru+ZuiOsJH44\nuXk4MTExTJ06FS8vr7w8HOWHo1AUjlz+JdxKQDz7T4RmfWd5UbUm4pFn0OdNQ2a6nn2y3PIDBARC\n0zbFN7Yxmn8Aot+z6F/GInNyHC0HMJY29P/MQ/Tuj/AruE6lKZj9m9erVy9mzJjBgQMHOH/+PPv3\n7+eDDz6gd+/eXLlyJe9fYdgqD0f54SgUBaNvXYfctx1t2BsID9uN/EX7bojK1ZDfuNZ6jrx2GfnD\nN2hPDLE4od3aiHadwccXuWm1o6UAIHf9Akm3EJElS6w3ew3niy++AMi3tRjg0KFDLFy4MO91YXXV\nbJWHo/xwFAUhs7Pg0nm4dROyMqGMF4RURPr6OlqaXZCH9hglaV6fivCzbRKjEAKefhl98qvI3b8i\nWt1tG+JsSCnRv4xFPPRovorNjkYIgfbUMPSpo5Et2jm0AoG8dRP5zXy0oeMQJjo7F4bZAceUAp22\npqA8nDtxlicVhf2Rt24id/+K3LMNzv4BQaFQPgg8PCE9Da5eIjEzHRq1RLTuAE1aOv2WXkuQp46i\nz5+F9vIbiAqV7XJO4e2D9uJo9I/eQateGxFS0S7ntRS5ZQ2kpyG69nW0lLsQFSojuvZF/2ou2ivj\nHXJPk7qOvnC2MXoNr1/i/swOOCXFVnk4pvrhqMRP2+JIndlnTpGxagnZcTtxb9kOz0eexr3+fQjv\nu9cX3ZJukbp9C5lrliGXLcCz7xN4RjzkVIGnJNcy+8wpUuZOxXf4m3g0a138ASXgLp1NWpAe/QRZ\nC2ZRduJHCBPdgG3NnTqzT58gZdUS/CZ9jNsdVVMcye06Zb9nSBr7Il6H9+DZLtLuWtK/+5qs9DTK\nDnihwJ+jTRI/by9tUxSmlLa5PQ+nfPnybNu2jREjRhTa3tQ8nFw/nOjo6CL9cFTip21xhE559RL6\nsgVw5hSi68OI/s+j+/iSDpCdU2Bio59fOTLbdUa2jYSTR0j7bjFpPyxDe/x5RIOmdtVfGJZeS3np\nPPrMt9AGvEh6eAPSbfzzKEin7PAQetwuEhd+hPaPF2x6flO5XadMTUb/4G3EgCGk+gVYnPxqC+66\nnk8OJXVuDOk16yN8y9pNh4zbgb72v2jjppOcdndekCUGbEKakLGZa2xWHKZWJIiLi2PhwoV5eTjR\n0dFF5uF4eXnly8MZNmwYsbGx+XbLJScnM2vWLOLj4/P8cHxNnKe/ePGiSe0ciQo4dyPTU5FrlhmJ\naN3/D9G1j8mL4nfqlFLCvt/Rv5mPqN8E8dhzdv3jLgiLHCrPn0afPQnxyNNoD3SxkbL8FKZTpiSj\nTx2N6ByFFtnbLlqKIlenzM5C/+gdROVqThMMb6eg66n/Zx7yZryxjmKDXYZ3Ik8dRf/kXWMqr1a9\nAttUrmz+NK1FpW0SEhI4deqU8cOzsEKzJX44ADk5OTRq1Ig33ngDIQRDhw6lTp06yg/nHkLqupGn\nsOJLRP2maG9/hAgIKv7AIhBCQIt2aA2bIr/9En3icLQnhyKaOX6brKnI0yfQP56MGDAE7X7HL9iL\n/9kd6DFjkIGhiKb3O1oSUkrkl7HgWQbRf7Cj5ZiM6D8YOett5PJFiH6DbHou+ccx9E/fQ3tuZKHB\nxlLMnlzduXMnsbGxVKxYkb/++ouqVavy119/Ub9+fZOKepbEDwdg4cKFNG/enFGjRpGTk0NGxt97\n/pUfTulHnj6B/vW/QUq0l8ZaZSHzdoSXD+LJl5Ct2qMv+gixZxviHy8gfJ17/Uzu34m+6GO0gf90\niht7LiKkItrQceixU4yfV73GDtMidR351RzklYtooyY71XpdcQh3D7ShY9GnjkH3C0Dr8X82OY/c\nvwt90Udog14tcemjgjB7bLZ06VKGDh3KtGnT8PLyYtq0abz44ovUrFnTpONLkoeTmprKsWPHiIw0\nFs/c3NzyJZwqP5zSi0y4gb5gNvon7yE69UQbN93qweZ2RL3GaG9/BN6+6BNfQe6/++HHGZBSoq/9\nFn3xHGP6w4mCTS4ivL6xc21eDPLkEYdokHoOaZ/NRF44i/bqJEQZL4foKAmirD/aqMnIn9ei/7jc\nqn1LXUdf9y36//sEbfhbiCa2KR5qdsCJj4+nXbt2+b7XqVMntm7datLxBeXh3Lhxw6Rjr169ip+f\nH59++iljxoxh3rx5ZGZm5r2/bt06Ro8ezdy5c0lNTTWpT4VzI7My0dcsQ5/0CviXQ5v8KdqDXewy\njy3KeKE9MQTt+dfQl3yGvmAWMiXZ5uc1FZmShD53quFMOW46omZdR0sqFNGgKdrzo9DnvI88dsCu\n55apKeix76LHX0EbMbHAXYuugggMRvvXe8hf16Mv+cwqlQjkjXj02W8j43agjZtm9Wm02zH7r9bf\n3z+vMnNISAgnTpzgypUr6LpudXF3ous6p0+fpkePHsTExFCmTBlWrlwJGH44sbGxTJ8+nYCAABYt\nWmRzPQrbIaU0DMLGD0OeOYk2bgZav0EOuVmIek2M0Y6XtzHaOeD4Khby6H70d0YgAkPRxsRYXEzR\nnoiGzdGGvI7+7+nov1vuGmwO8uI59KmvI4JD8R0zFeHlXfxBTo4IDEYbOx15+Tz6B28hr1q26Ulm\nZKCvWoI+eQSibmO00e/bPMHU7DWcLl26cOzYMdq2bUvv3r2ZNGkSQgiT105KkocTGBhIUFAQ4eHh\nALRt2zYv4Jjqh6PycGxLSXVKKcmO20H6si+QOdn4Dh2DR+MWVlRoYLZOPz8YMpqsw/tImzsNtwO7\n8Hp6KJoNLYgL0qjfuknaV/PIPrQH3yGj8Whq2xwbUzDrWrZ6gJwKs0iOGYd7/BW8Hhtkkzwdqetk\nrFtOxorFeA94gTKde+Pp6ek0OUFFYdL19PNDvjmdjDXfkjH1dTy6PEyZXv3Q/IvPJ9Ljr5KxcTWZ\nG1fh3rAZXu/9G7dQyxJ0bZKHczvR0dF5X3fq1IlGjRqRnp5OlSqmlYUoSR5OQEAAQUFBXLx4kcqV\nK3Pw4MG88+YmfULRfjiumIcjMzLwvnKe1BOH4eI55JWLkHTL+JeVCUKApkFZf/APQJQPhsrVEJWr\nQfVwCAyxW5ayxbkjUsKhveirvob0NLS+T0DzdqRrmk3ySCzevl2tNkyYTdbyL8kc+QyiZz9ERC+b\nVBjOlzeSkYHcsgb543JEu0jEpFjSvXxsnmNjCmZfy4BgxLjpZCyYRcaE4cZuqFDrVUKQp46gL/kc\nPDzRxk4jM7QSmUlJpTO1oFNPRKMWZK79lowRT0G9JojGLRBVaoB/ALi5QWoyXL2MPPsH8sg+uHYZ\ncX97xOj30CtWIRUsykOyWR6OtSlJHs6ZM2eYN28e2dnZVKhQgWHDhuHj40NsbOxdfjgBJmYPO1se\njpQSzv2JjNuBPH4Azv2JW7Va6GHVoXJ1RMUw8C9vPHV7lgEJ5GRDciIkJiCvXzMC04WzcPYUuLkj\najeAOo2MXUKVqtosAJn7Ry0zMpC/b0ZuXAVubkZNq/vb23wHkTVuPvLCOfRvv4DL543A0zbCqsUx\n/fz8SLx8CbltPfKn7yC8PlqfJxBh1ax2Dmtg8UOGriM3rjI8Vjr0MK6hhVOmUko4eQT9pxVw7k/E\nI88gWnfMt9ZXKgPObciUZGTcDjh5CHn+rHE/yMkGXz/jobN6OKJOI6jb2CojPUvycBwScJwNZwg4\nUtfh9Ank3u1GDTA3N0TztoiGzSC8Af7BIZaPHK5eQp48DCePII8fhMwMRL0mxtNQ/SZQIcxqAcgk\nG18p4c/jRqDZ/SuEN0Dr2sfQ4+QjsYKQxw8Zu4bOnkJ06I5oE4GoZHkhSJmTAycO4b53G5k7fkE0\naWm4UFarZRW91qak11ImXEd++yXy4G6jZlf7bsZDlSnH3rhm1M3b8bNRE61bNKJdZ0SZMlbXaS9c\nRafLBJy4uDi++OILpJRERkbmm6YDIwB8+umnBSZ+pqamMnfuXP766698iZ/JycnMnj2ba9euERoa\nysiRI0326HFUwJF6Dpw6agSZvdvByxvR8gFEiwegSo18N1+r3iDjrxiB5/hB4/8c3Rj55AagkEoW\n3/gLzTrPzoY/jiIP7EbG/Q6ahmgbiWjTCRFcoaQfyWo6S4K8cA7563qjlLtfOUSj5sb1rF4byvoX\nek1ldhZcPo/84zicOoI8tAeCKuD1YGcyW7ZHmDAv70isdS3ltcvITauRu36Fsn6IOg2hak1EuSDw\n8YXsLEhLRcZfhot/GQ9RKcnGg1nrjlCvcZEjY1e5kbuKTpcIOLquM2LEiHyJn6+++mq+xM/ExETi\n4+PZuXMnZcuWzRdwPvnkExo2bEhkZGRe4qePjw+LFy/Gz8+Pvn37snLlSlJSUoqsJn079gw4uU+v\ncs825L7fwb88omU7RIsHjDWXQrDVL6GUEuKvGFtVcwMQwrhR1m2MCKsOFcMQPqaVefHz8yPx1i1I\nuAEXzyL/PIE8fRz+PG4EsvtaIe67H6rXdmhFb1v+Uec9SBw7YFzP82cAAcGh4O1rTINmZ0FGunGd\nEm9CcAVErfoQXg/RqCUiKMRlbjzW1pk32j99HP46g0xMgLQUcPcwHspCKkKFysY0ceXqJm+Rv1ev\np62wWWkba3J74ieQl/h5e8Dx9/fH39+fPXv25Ds2N/Hz5ZdfBvInfu7evZuJEycCRimeiRMnmhxw\nbI28cQ159AAciTMW7YIrIFo8gDZmqlUXSy1BCAEhFY0/4g7d/56CO34AThxC37IWrlwET08IDAE/\nf0TZcuDtDUIzNixkZ0FqCjIlmcTkW+iXL4C3D1SsgqhVF63jQzDoVad/UrcWQnMzgnVdI6teSmls\n8LgZD2mpkJEBHh5G4ClX3phfL6HPSGlCaBqE17dpYq/CMdg94JTEgO32xM+zZ89Sq1YtBg0ahKen\np1MZsMmUZGO0cGw/8uh+SE4yKhA3aIr2yDOIoBCHaSsOIYTx9FihMnR8CPjfDTPhBiRch6RbyORE\nSEsDJEgd3NzBpyyab1l8KoaRWtYf4eW6yXXWRghh7Bi6RwKuQlEYzr8p/TZyEz+fe+45wsPD+eKL\nL1i5cmWBW/MKm66xRR6OTE8j+9hBsg/vJfvwPvSLf+FetxHuTVri3j0at+rhJc6Md3gejr8/VKtR\nbDNPT0/cb6v+4Kw4/HqagCtoBKXT2riKTrBDHk5JsVXip6kGbNbKw5EJN5AHdiLjdsKJw1CtJqJ+\nU8Sjg9Bq1UW6e5AFZAGkpJjd/524yryu0mk9XEEjKJ3WxpV0mpuHY/eAY6vET1MN2EqCTLyJ3LkV\nufMXuHIB0bilkXvx/GsIH9O8dxQKheJepdQkftrKgE1mZ0HcDvTfNsGpo4hmrRFtIowtmO7Wzy4v\nDFd66lE6rYMraASl09q4ik6X2KWWi6UGbNOnT8fHxwchBNevX8/bpVYSAzZ9xWJEVP98WeLy8gXk\nLz8ht28yysQ82BUx5HWXLGuuUCgUzoDdA05JDdiEELz99tuULXt3XoilBmzyynnkpBGIrg8biWUH\ndsHVS4gHuhiVeCs4duuyQqFQlAZcKg8H/le2vpBZQEtnB91eGovcv9NIxPTyRuvZDxo2s+uUmUKh\nUJR2XCoPB4wRzpQpU9A0jS5dutC1a9e899atW8fWrVsJDw/nmWeeMbm0DYBo2hrhBKXeFQqForTi\nUnk4AJMnT6Z8+fIkJiYyefJkqlSpQv369enRowf9+vVDCMGSJUtYtGgRQ4cOvev4gvJwLFn8cgSu\nsjdf6bQerqARlE5r4yo6zc3Dsb1P7x2UJA8HoHz58oAx7da6deu80ZG//9/FEbt06cIff/xR4PGN\nGjWif//+ef9uv2DOjNJpXVxBpytoBKXT2riSztvvpcUFG3BAwLk9Dyc7O5tt27YVmTNz+7pMRkYG\n6enpAKSnp3PgwIE8o7Vc22so2oBNoVAoFI7B7lNqmqbx3HPPMWXKlLw8nCpVqhSZh7NmzRpmzZpF\nYmIi06dPRwhBTk4OHTp0oGnTpgAsXrz4LgM2hUKhUDgP97wB2+HDh00aCjoapdO6uIJOV9AISqe1\nKc067/mAo1AoFAr7YPc1HIWitBMfH8/AgQMtzgszl/Xr17No0aJi282cOZO4uDg7KFIoCkYFHIWi\nhLz88stJE9b5AAAgAElEQVQcOnQo73VwcDCLFi2yi6NpdnY2y5cvp2/fvsW27du3L0uWLLG5JoWi\nMFTAUShcmN27d1OlSpU888GiqF27Nmlpafz55592UKZQ3I1TJH4mJycze/Zsrl27RmhoKCNHjiyw\nSkBcXBxffPEFUkoiIyOJjo4GYNmyZWzcuDHPA2fAgAEmF+4szQt0juBe0xkbG0t8fDwxMTFomsaj\njz5Ku3btGD58OF9//TWapjFp0iTq1avH4cOHOXv2LI0bN2bYsGEsWLCAPXv2EBYWxqhRowgODgbg\nwoULLFy4kBMnThAUFET//v1p165dgefft28fDRo0yHudlZXF3LlziYuLQ9d1KlWqxNixY/H39weg\nYcOG7N27l1q1apX4s+dyr/3MbU1p1ukUI5yVK1fSpEkTPvzwQxo1asSKFSvuapNb9PPNN99k5syZ\nbNu2jQsXLuS9HxUVRUxMDDExMSYHGyBf1QFnRum0LtbSOXz4cIKDgxkzZgyLFi2iT58+Bbbbvn07\nr7zyCvPmzePy5cu89dZbdO7cmYULF1K5cmWWLVsGGLlmU6ZMoUOHDkRFRTFixAjmz5+f73f9ds6d\nO5evUsbPP/9MWloac+fOZcGCBbzwwgt4ev5dBT0sLIyzZ89a5bPncq/9zG1NadbpFAFn9+7ddOrU\nCYCIiAh27dp1V5vbi366u7vnFf3MRW22UzgzERERhIaG4u3tTbNmzahQoQKNGzdG0zTatWvHmTNn\nANizZw+hoaF5fw81atSgdevWbN++vcB+U1NT8fb2znvt5uZGUlISly5dQghBzZo18fL621LD29ub\n1NRU231QhaIInGJK7datW3lz0AEBAdy6deuuNsUV/SxJ4U6Fwtbcbnnu6el51+vcChrx8fGcPHmS\nQYMGkZmZydq1a9F1nQ4dOhTYr6+vL2lpaXmvO3XqxPXr15k9ezapqal06NCBAQMGoGnGs2VaWpr6\n21A4DLvl4UyePDlfIJFSIoTgH//4B5988gkLFy7Me2/w4MEsWLAg3/G///47+/fvZ8iQIQBs3bqV\nU6dOMXjwYBITE/Hz88sr3Hnz5s0CC3dCwcU7FQqFQmE+5hbvtNsIZ/z48YW+FxAQQEJCQt7/tz/9\n5VJU0c/cBVEwCnfGxMQUeq6CLkpRFtPOgqvYziqd1sMVNILSaW1cRWflypXNfmB3ijWcli1bsmXL\nFgC2bNlSYDHPoop+qsKdCoVC4fw4xRpOdHQ0s2bNYvPmzYSEhDBy5EgAbt68ybx58xg7dmyhRT9B\nFe5UKBQKV0DVUkNNqVkTpdN6uIJGUDqtjavotMS40imm1BQKhUJR+lEBR6FQKOyATElCXr92T+cM\nOsUajkKhUJRWZHoacslnyL2/gbsHBIagPTcSUene29ykRjgKhUJhI2RmBvrHkyE7C23aArSZXyI6\ndkefOR557bKj5dkdFXAUCoXCRshv5oOfP2LwSISXD0IItI4PIbpHo8//AJmT42iJdkUFHIVCYRYy\nJwd5/SoyXdVkKwp5cA/y0F60Z15BaPlvtaJrH9A05G8bHaTOMag1HIVCYRIyIx256mvk1p+gjBek\npULj5uiD/gllVH2225HZ2ehLP0d78iWEj+9d7wtNQ+s3CH3O+8g2nRCeZRyg0v44RcAx1Q9nzpw5\n7N27l3LlyjFjxgyzj1coFJYh46+gfzgJUaM22sSPEIEhxmL4hu9IGv8y4uW3ENXDHS3TaZA/r4Og\nUGjcstA2olY9qFoLueNnRIfudlTnOJxiSs0UPxyAyMhI3nzzTYuPVygU5iOvX0Of+Rai00Noz41C\nBIYAILy80aL+gfezr6B/PBl5/ZqDlToHMisLuXYZWr9ni7UZ17r2QW74/p7ZKu0UAccUPxyA+vXr\n4+t79/DU1OMVCoV5yMwM9E+mGMGma8Hmcp5tOiG69UH/bDpSv7cWwQtC7voFwqojqtYsvnGDpsb/\nxw/aVpST4BQBxxQ/HFser1AoCkZ+NRdRqSqixyNFthPdosHNHblhlZ2UOSdSSuTG7wsNzncihEA8\n2BW5fbONlTkHdlvDKcoP506KG4YWR0mPVygUIPfvQp46gjbhw2L/poSmoQ0cjv7+aGTbTgj/8nZS\n6WScOAyZGdCohcmHiDad0CcMQ2YMQZTxKv4AF8Zl/HCKwpzjCzJg8/PzM+t8jsDT01PptCKuoNOR\nGmVGOknffI7vcyPxCA4psm2eTr96pHXsgfxxOT6DX7WTUtOxx/VM+XkNZXo9Rhlz7mF+fiTXbYzn\n0Tg8O3Rzid/NXJzWgK0ocv1woqOjC/XDyUVKedcCmznHF3RRXKEyq6tUkFU6rYcjNeorFkO1cNJr\n1Se9GA2365TdotHHDyM7ojcipKI9pJqMra+nvHoJ/eh+cgb+k0wzz6O3fJDUX9aT0aytS/xugnE9\nXdKALTo6moMHDzJixAgOHTpEdHQ0YPjhTJ06Na/dhx9+yPjx47l06RJDhw5l8+bNRR6vUCjMR14+\nj9y6FvH4c2YfK8r6Izo+hPzp3tspKjetRrTvbtG0mLjvfjhxqNQn0yo/HJQfjjVxBZ1S1/H+4wip\nv6xHnj4BSYng44uoWQ/xQGdo2Mwp1gEdcS2llOizJiDua4XWta9Jx9ypUyYmoI8fhjb5E6day7Hl\n9ZSpKejjXkB7+8O8bePmkvPhRMQDXSnXuafT/w2BZX44TjGlplDYC3n8IPrX/ybdwxMe6IzW4xHw\nD4DkROO9ZQvA2xdt4HBExSqOlmt35K5fICkRERllcR/CPwDRpiNyw/eIRwZaUZ3zIrdtQDRqbnGw\nARDN28K+7dC5pxWVORdOMaWmUNgamZWF/tVc9M8/QOvzBGXfn4cW2RsRVh3hVw5RqSpaRC9jR1ar\n9ugxY5H77618Lpmagly2AO2poQg3txL1Jbr2Rf6yHpmZYSV1zovUc5AbVxn10UqAaNYGeWgvMivT\nSsqcD7NHOGlpaSQlJeVbuK9QoYJVRSkU1kQm3ECf8z4EBKJN+hjhU7bQKTOhaYguUciaddA/fR+R\nNhCtbaSdFTsG+f1/EE1aIcLrl7gvEVoJatRB7voV8WAXK6hzYuJ2QECgUaqmBAj/8hBWjezDcRDe\nwErinAuTA8758+f56KOPOHv27F3vLV261KqiFAprIS+eQ589EdGxO6JX/7uq9haGqFUPbdQ76B+M\nR3qUQbR8wMZKHYs89wdy1y9ok2Kt1qcW2Qv9+6+hlAccff33iC4lG93kIpq0Iivu91IbcEyeUvv8\n889p1KgRCxYswMfHh4ULF9KtWzdefvllW+pTKCxGnj+N/sF4RPRTaFH/MDnY5CIqV0P75wT0xZ8i\nz5y0kUrHI3UdffEcxP89jSjrb72OG7eAlCRjY0YpRZ45CTeuIlq0s0p/4r5WZO/dUWprq5n8F3j2\n7FmefPJJfH19kVLi4+PDU089pUY3ToSU0qjgm5lRan9hTUWe/QN91tuIx59He6Czxf2IauFoT79s\nlJG/ddOKCp0H+etPoGmIB6w7EhGaGyKiJ3LzD1bt15mQG75HdI4q8ZpXHmE1kNmZcOWCdfpzMkye\nUvPw8CAnJwd3d3f8/PyIj4/H19eX5ORkW+pTFIKMv4I8dgBOn0ReOgeXL0BqMri5g65DTg4EhUCl\nqog6jRBNWkBYDafY7mtr5OkT6B9PRntqmFWePEWLdojzp9H/PR3ttckIzUo3FydAJt1CrvwKbdQ7\nZo8ATUE82BX9zSHIpESEnxVHT06AvBGPPLgHbcAQq/UphMC9WRuyDu4plbskTQ449evXZ/v27URE\nRNC2bVvee+89PDw8ii1loLAe8sI55M6fja2r6WmI+vdBeAO0Vg9CxSqGla27h9E2OxuuX4ULZ5HH\nDqDHvmvkmkT0RLTrgvDwcPCnsQ3y1BH0T99HG/hPRNP7rdaviHoceeIwcs1/EVGPW61fRyO/WYBo\nF4moYkJlYwsQZf0RTdsgf9tQbAFQV0NuWm1cO9+yVu3XvXlbMtf8F7qZlgflSliU+KnrOr/++ivp\n6el06tSJMmVK5lZXUgO2ZcuWsXHjxrwaagMGDKBZs2Ymn9+ZEz+lrsPB3YgN35Nz+QKiTUfE/R2h\nWi2zRitS1+HofvQN38OlvxB9BiDaRlr9qdaRiZ/y+EH0edMMz5ZGzYtsa4lOefM6+pSRaEPHIWrb\nflHX5qVYju5HX/Qx2qTYEhWNLE6nPH0C/bMZaFPm2mQUZSrWvJ4yPdVI9HxjptVL+JT1cOfWkEfR\nZnyB8PK2at/WxKaJn99//z19+hg7MTRNo2PHjgCsXr2aqCjLk8TgbwO1vn37snLlSlasWMGTTz55\nV7vIyEh69uxJbOzdO2mioqJKrKM45J5t6D+uAM8yaD0eQTQp3M3PKuc7eQR96ecgdXyinyS9YQuL\n54qFpkGj5rg1am70u2wB8pf1aM8MR1Ry/aG7PLQXff4HaENeN0Z+NkCUDzLWcz6fiTZhNsLHuk+2\n9kRmZaIv/hRtgB0qFNeoAz5l4ci+Ih0wXQn56wZEvftsUi9OeHlDrbpwbD80a2v1/h2JyY8b3377\nrVnfN4eSGrABNl8k13/fjL5sIVqfAWiRvdEXf4K+4TubnEumpaIv/BD98xmIbn3R3pqF5wOdrbYw\nKeo0RBsbg7i/Pfq0Meg/LjdGQC6K3L8LfcEstJffsFmwyUU0a4O4737k//vUpTdmyNXfQJWaVp12\nLAwhBCKiJ/qWtTY/lz2QOTnGZoHutqvZKJq0Qh7cY7P+HUWxI5xDhw4BxjRa7te5XLlyBW/vkg/5\nrGGgtm7dOrZu3Up4eDjPPPNMgVNyliITbiCXzkd7bQqiSg0AtJp10WNeRy8XhHZ/e+ud649j6J/P\nRDRshjbpE5sNqYXmhugchWzaGv2zGcgj+9EGv4oo5zy1r0xB7vkN/as5aK+MR9Ssa5dzin7Por/3\nL9i2AdG+m13OaU3k6RPIX35EmzDbbucU93dEfvsFMv4KIti1E8Xlrl8gMLjEiZ5FIZq0RF//XZ5v\nWGmh2IAzZ84cADIzM/O+BuOppVy5cgwePNikE9nSgK1Hjx7069cPIQRLlixh0aJFDB06tMC2lvjh\npC3/Ejr1wLtBk7+/6edHzpj3SZ7yL3zqN8atclWzNBdE5tafSFs8B58XXsPzjiBmM48MPz/kO7Gk\n/3cRme+Owvul1/Fo2tri7uzp5ZHx03ekL/+Ssm/OwL1GbbOOLZlOP3JefZvkd0bi07QVbpWrWdhP\n0djiWsr0NJIWzMbnuVfxrFrDKn2apNPPj7QOPeD3zXgPeMEq5zUXa1xPqeeQtGYZPoNH4GGj33NP\nT0/8atcnycMT35tXcatu3u+2PbG6H84nn3wCQGxsLMOHD7dYmC0N2Pz9/95u2aVLF2JiYgpta64f\njkxNRv95HdrbH5F9Z7vACvDwAJI+fMeYonK3bOeX1HXkysVGpveoKWSEVSPjjnPZfDG+12OIWvVI\nmTPN2JgQ/ZRFn8cemwakriOXf4mM24E2+n3SgiqAmecssc6AYOgzgKTZk9DGTrfJrj9bXEv9qzlQ\nPZyMRi3v+h2zFFN1ygc6o08bR1aPRx2yS9Ia11P/fQvS14+06nWK9QmyFD8/P5KTk5FNWpL82xa0\nQOccEdrUD2f48OFkZ2dz9OhRfvvtNwDS09NJT083T2UB5BqoARYZsCUkJOR9vWPHDqpWLfloI+98\nu35FNGiKCAwu8H0R0RMCApErFlvWf3Y2cuGHyBOH0N6YgQizzdOyKYj696FN+BB56bxRvPLaZYdp\nKQyZlor+72mG9fHYGKNml4MQnXpCYChyxZcO02AO+o6fkYf3IZ6wXt6IOYiKVaBKDeTe3xxy/pIi\n9Rzk6qVofQbYZZpLNG2NPFC6CsiaHHDOnTvHiBEjmDdvXt7U2pEjR/JNs1lKSQ3YFi9ezL/+9S9G\njx7NkSNHGDjQeiXR5a5fEG06Ffq+EAJt4D+Ru35BHtxtXt8ZGUYGe3Ii2sjJCD/zRna2QPj5ow1/\ny/BZf+9f6Dt+drSkPOT5M+jvvobw9TfW06xZhsUCjJ/9cOTubchDzr3AK8+fQS75zNjS7cDddVpE\nL6SLbh6Qv66HcuXBxhtT8qjTEK5cKFUVLkzOwxk/fjzdunWjY8eODBo0iIULF5Kenp4XhFyZwvJw\nZMJ19LeHo81YhPDwLLIPeeIw+rwYtDc/KHQ0lK99ajL6x1MQQSGIZ0cg3Iue3XSIGdfZP9D/PR1R\nuwGi/3MmJbjZQqdR/n01cs03iP7Po7UrefVmq+ZkHD9o5JmMibHqNllraZSJCehTX0f0GWCTytfm\n6JQ5Oehjn0cbMcFmyaaFUZLrKVNT0CcMQ3tlAqJ6uJWV5ed2nfq8adCwGVqH7jY9pyVYkodj8gjn\n/PnzdOjQId/3vLy8yMwsvd4N8sBuROOWxQYbAFG3ESKytzHdk1G0B4iMv4I+bRyiejhi8Mhig42j\nENXD0cZ/AB4e6G+/bMxf23krsDx/2pjei9uBNm66VYKNtRH1miB69kOPnYJMcy6LYJmeiv7RO4g2\nnZzCZkG4uSEieyF/dC0LarlmGaJRC5sHm7toej9y/077ntOGmBxwQkJC+PPPP/N979SpU1SsaP3E\nJ6fh5GGo16T4dv9D9HoMEVoJ/dP3kOlpBbaRh/ehvz8a0b4b4vHnHZp5bQrCywftqWFow95A/rQC\nPWYM8uh+mwceeeOakYv0wQREu87GFFqo+U9U9kJ0jkLUbYQ+LwaZneVoOQDIjHTD06daLUSfJxwt\nJw8R0Qt5aA/yqvNW+LgdeeGc4ej5f0/Z/dyicUs4frDUGNm5TZw4caIpDQMDA5k9ezbp6ekcO3YM\nIQSLFy/m2WefdfmgU9AwW0qJXPo5WtTjJq8VCCHgvtZw4hDy+68RFcIgKNR48+JfyGULkJtWoQ0e\nidamk1kLj2XKlHHoaFKUD0Z06A4ensj/foHcvQ08PSG0cr6E1JLolFLCmZNG/8sWIOo1QXvxdbQ6\nDa2+SGvt6ymEgIbNkft+R+7ZZhT8LGGRzxJdy9QU9I8mGVO2Tw+36YONuTqFhydkZMChPYhmbWym\n604suZ5Sz0H/5F0jAdtOaze36xSeZZCH9iACgoz7iRNhyRZzs2qpnTlzhg0bNhAfH09QUBBdunSh\nVq1aZp/U2ShoDUfGX0F/f7SxfmPmzU5KaWwi+OEbuBkPmht4eCI6dEN0j0Z4mZ+U6sgaZXcic3Jg\n33b0rT/CX6cNl8im90O9JvhXCjNLp8zMMCpeH96L3LMNpERE9EK072rTxW1bXU+ZnYU+NwakRHvh\nXyVK3LVUo7x22bhJ1m2M+McLNh9FW1SXLiUJ/c2X0N60fi2ywrBEp/7TCuT+XcYI206zEXfq1H9c\nAVcvoj3tXN5jNq2llp2dzY4dO9i/fz83b94kMDAQPz8/qlSpgqdn8WscroY8cdgo62/Bk7UQAtG6\nI7TuiExOBD0H/AJKTcawcHODVu1xa9Ueef0qcv9O9F/Xw6KPueXrh6xSAxEUCuWDjBpaHh7g5gGZ\nGZCWAsmJcPUS8spFw/cjrDqiXmO0F183uyipsyHcPdBeGoNc/Cl6zBi0YW/Y7YYKGD+LRR8joh5H\nRPZ22mspfP0Q3fqi/3chbkPHOVpOgcg/jyPXLUcbN92hU9+ieVv0qa8jn3jJer47DsLkgPPZZ59x\n8eJFBg8eTEhICPHx8SxfvpwbN24wbNgwW2p0DCcOQd2SWy84euuurRFBoYjOUdA5Cqnr+KYkknLi\nMPJGPNyIh0t/QVY2MicL4VkGvH3Btyzc1wotpJJRz6uE1cadDeHuAQP/CRtXob/3GuLhAYYthA19\ndGRiAvKb+cg/j6MNG4eo3dBm57IWoltf5ISXkccO2LwGnrnI5ETD/+ipYXZ9YCgIEVrJmJo/ut9w\nUXVhTA44u3bt4uOPP84rnlmlShVq167NK6+8YjNxjkSePIzW1To+5fcKQtNwq1wV4ReAcz5X2w8h\nBKJrH2SjFuiLP0Fu+gHRqx+iZXurBliZdAu5YRXy57WIB7ugvf2R7as/WwnhWQat/3Poi+egjZ/l\nNLplZgb6J+8hWj5oNevokiLadETu3Iq4VwJOQEAAGRkZ+ao1Z2ZmUr58yYs9muKHc/36dWJjY7l1\n6xZCCLp06UKvXr1MPt4cZMJ1SE4CG9XIUtw7iEpV0P71nuFF9NMK5NLPEU1aQf37jFFIaEWzRz4y\nKRF5NA72bkceiUO0etC4YeduUHEhRIt2iH3bDSO4px0/UyKzs43iueWDEI9aL4G8pIhW7dFXLUFm\nZZqUpuGsFBlwbq8O3bFjR9577z0eeughgoKCuH79Oj/++GOeL05JMMUPx83NjYEDB1KjRg3S09MZ\nM2YMTZs2JSwszGQ/HVORJw5DnYZOv2VZ4RoYO9ia4dawmVF5fP9OIwCtXgqJCRBaCQJDEP7loGw5\n8PEFN3fSfXzQ09MhNQVSk5HxV4wpyuREqNsY0aSV4WfkU7Blh6sgBgxBf3cU+tYf0Tr2cJgOmZmB\n/u/pkJODeGG0U/39i4AgqFoLDuyClg86Wo7FFBlwCipbs2JF/oStDRs25JWisZTdu3eTuzs7IiKC\niRMn3hUwAgIC8iwMvLy8CAsL48aNG4SFhZl0vFmcPIyo29jy4xWKQhABgYhOD0GnhwAjV4YrF+Dm\ndWRighFMUlNAz0FPSYTMTCMAhVRAq9cEKlWFkIpOmyxsCcLHF23E2+jTxqF7ejokQVUmXEefN83Y\n/j/4VYsL8doS0b4b+tYfcSutASe3UrStMdcP5+rVq5w9e5Y6depYdHxxyOOH0B7sWqI+FApTEGW8\noFo4VAu/a93Lx4m2wtsaEVoZbeRk9I/fQf/rNKLPk3bZTCKlhP070RfPMTZ29HrMqUY2tyNaPmhs\nDLl8AVHRuXJyTMVuj0nW8sNJT0/ngw8+4Nlnn8XLq+BFxpJsBZVJtyDhujF8VSgUdkOEVUN7YwZy\nyWfobw1BdOiBuK8VVKlhkxGHPH0CfdUSuHbZyJmq59yzGsLDA9G+m7FB5PHnHS3HIuwWcKzhh5OT\nk8PMmTPp2LEj999/v9nHQ/EGbJlH48is25iy/xsxOQv2NDYrCUqn9XAFjWBlnX5+8No75Jz9g4zN\nP5C96CP0SxcQ/gEIH19j1OPphSjjhSjrh/DzN6qHlyuPCAhECwhElCtv/H/HrjcPTcPn5jWyDuwm\na8fPyJvX8e79GJ7d+jjVFFpR11Pv/RhJY1/At/8gNH/H36PMNWAzq9KArVi8eDFly5YlOjqalStX\nkpKSUuAaTGxsLH5+fnfZD5h6fGHcXmlAX/IZ+Aeg9XrM8g9kA5yp0kBRKJ3WwxU0gu11ypwcuHUD\n0tKM5OHMDMhIQ6YkQ0qisaM06ZZRxj8xwfh36ya4u4N/AHiWMdbFkhMNa+g6jRDN20LD5k6ZSFnc\n9dS/mgueZdAeG2RHVXdj00oDtiQ6OppZs2axefNmQkJCGDlyJGD44cybN4+xY8dy7NgxfvnlF6pV\nq8brr7+OEIIBAwbQrFmzQo+3BHnyMNoAxxhUKRSKuxFubhAYcvf3izhGSglpqZB406jb5uOLX1hV\nkjOdo7BqSRC9HkOf9E9kRE+HJ6Wai1OMcBxN7ghHpqagvz4IbfZXTjXEBvW0a21cQacraASl09qY\nolP/cTny8D60ke84rHyRTf1w7glOHYEadZwu2CgUCsXtiK59ITMDuWqJo6WYhQo4tyFPqPwbhULh\n/Ag3N7Rh45DbN6GvXorU9SLbSymLbWMPnGINx1mQJw6hOVE5C4VCoSgM4V8ebUwM+typyLgdiA7d\nEZWrgdSRN6/DhTPI82fh2iW4cc1IItY0oxBo1ZqGg2mz1gj/kpcnMxUVcP6HTE2Bi+egVj1HS1Eo\nFAqTEAGBaK9PhbjfkXu3o2/fBJpmBJGw6mgdukNoZQgKRnj5GG60164gz5yEg7vRv/0CGjRF69TT\nqO9n4/UgFXByOXkEatZ16cJ4CoXi3kNoGrR4ANHigeLbuntApSqISlWgXSQyNQW542cjHURKROfe\niLaRJTIOLAoVcP6HPO58nhwKhUJhS4SPLyKyFzKiJxw/iL5pNXLlV4h2kYjIXohQ83eiFYUKOP9D\nHolzOgtXhUKhsAdCCKh/H2717zNcfLesRX//dahRBy2iJzRsZpXZHxVwMDzgSUyAmnUcLUWhUCgc\niggKRTw6EPnwP5C7fkFftxw+nwn1miDq34eoUQeqWVZr0ikCTkkN2JYtW8bGjRvzaqjlViAwFRm3\nA9GsjU0tgBUKhcKVEJ5lEA92hQe7IpMTkYf3wYnD6Ns3w+W/YMVvZvfpFAGnpAZsAFFRUURFRVl0\nfrl9E9qjz5b0YygUCkWpRJT1R7TpBG06ASCzLCsR5BSJn7t376ZTJ+ODREREsGvXrrvaBAQEUKNG\nDSC/AVsuJarQk5EBDZpafrxCoVDcQwgPy6qxOMUIp6QGbADr1q1j69athIeH88wzz9w1JVcU2iPP\nOK3pkkKhUJQWSoUBW48ePejXrx9CCJYsWcKiRYsYOnRogccX5IcT9nA/Sz+WXXEFbxRQOq2JK2gE\npdPauIpOc/1wkE7Aq6++Km/evCmllPLmzZvy1VdfLbBddna2nDJlivzhhx8K7evq1avytddeM/nc\nS5cuNU+sg1A6rYsr6HQFjVIqndamNOt0inmkli1bsmXLFgC2bNlCq1atCmw3Z84cqlSpkrc7LZeE\nhIS8r3fs2EHVqlVtplWhUCgUluEUazglNWBbvHgxZ86cQQhBSEgIL774ooM/kUKhUCju5J43YDt8\n+HDx845OgNJpXVxBpytoBKXT2pRmnfd8wFEoFAqFfXCKNRyFojQRHx/PwIEDS5YbZgbr169n0aJF\nxbabOXMmcXFxdlCkUBSMCjgKRQl5+eWXOXToUN7r4OBgFi1aZBev+ezsbJYvX07fvn2Lbdu3b1+W\nLNe+K28AACAASURBVHEtS2JF6UIFHIXChdm9ezdVqlTJS5wuitq1a5OWlsaff/5pB2UKxd04xS41\nS9B1nXHjxhEYGMiYMWMAWLt2LT/99BOaptGiRYu76rEVRGleoHME95rO2NhY4uPjiYmJQdM0Hn30\nUdq1a8fw4cP5+uuv0TSNSZMmUa9ePQ4fPszZs2dp3Lgxw4YNY8GCBezZs4ewsDBGjRpFcHAwABcu\nXGDhwoWcOHGCoKAg+vfvT7t27Qo8/759+2jQoEHe66ysLObOnUtcXBy6rlOpUiXGjh2Lv78/AA0b\nNmTv3r3UqmVZtd+CuNd+5ramNOt02RHOmjVr8gp3Ahw6dIg9e/YwY8YMZs6cycMPP2xSP7dXHXBm\nlE7rYi2dw4cPJzg4mDFjxrBo0SL69OlTYLvt27fzyiuvMG/ePC5fvsxbb71F586dWbhwIZUrV2bZ\nsmUAZGRkMGXKFDp06EBUVBQjRoxg/vz5XLhwocB+z507R+XKf5tk/fzzz6SlpTF37lwWLFjACy+8\ngKfn3z4mYWFhnD171iqfPZd77Wdua0qzTpcMONevX2ffvn106dIl73vr168nOjoaNzfDYiD3iU6h\ncAYiIiIIDQ3F29ubZs2aUaFCBRo3boymabRr144zZ84AsGfPHkJDQ/OK2daoUYPWrVuzffv2AvtN\nTU3F2/tvO2A3NzeSkpK4dOkSQghq1qyZVwIKwNvbm9TUVNt9UIWiCFxySm3RokU8/fTT+f5wLl26\nxJEjR/j666/x9PTkqaeeIjw83IEqFYq/yfVqAvD09LzrdXp6OmDscDt58iSDBg0iMzOTtWvXous6\nHTp0KLBfX19f0tLS8l536tSJ69evM3v2bFJTU+nQoQMDBgxA+19x2rS0NLMK2yoU1sTl8nD27t3L\nvn37eO655zh8+DCrV69mzJgxvPbaazRu3JhBgwZx6tQpZs+eTWxs7F3HF1S8U6FQKBTmY27xTpcb\n4Rw7dozdu3ezb98+MjMzSUtLIzY2luDgYNq0aQMYu3GEECQlJd1VdbWgi3Lx4kW76bcUPz8/kpKS\nHC2jWJRO6+EKGsH+OmVWJqSmgJcPokwZk49T19O6VK5c2ewHdpcLOE888QRPPPEEAEeOHGHVqlUM\nHz6c9evXc+jQIRo2bMjFixfJyckpUYlvmZUJaSmQmgppqSB18CsH5cojPE3/JVcoFCVH6jpy1y/I\nn9fC2VNQxhsy0qBCGKJ9N0SHHhabginsh8sFnFx0XWfu3Ll589eRkZHMmTOHF198kYSEhLyt0qaQ\nEzMWMjMgPc0IMmmpgARvX/D2Mf4XApJuQVICBFVAhNdHNGsDDZqqAKRQ2BB59RL6glmg62g9+0HD\n5ogyZZDZ2XDyMPr675AbV6O98BqiRp1i+7uXkHoO/HUaEm4YD8zVwhHujrvtu2zAWbNmTV4iG4C7\nuztPPPEEc+fOxcPDg3r16pncl/Z/T0OZMlDGywguPr4ID88C28rsLLh4DnniEPpPK+GLDxEPdEV0\n7o0ICrXKZ1PcO0hdh8QE0I0RtHpKz488cRh9Xgyi56OIzg/nc+YV7u7QoCluDZoi92xD/+gdtCeG\nIFq1d6Bi50BmZyO3rEGuWw6+ZSEoFG5eh5vxxr3qoUcd8qDskgEnd1v0I488wurVq/O+n7t7LSYm\nxqz+RF3Tk5eEu4fxlFAtHLr2Rf7/9s47PKpi/eOfOZtOAiEUpRgiBOmhCdIJoIKIgKIo8qOJIkLw\n0kHpCgjSL0FAmkGUCypF5IIUqSpeAomUgJfQEaQESEJ69szvj71ZKQmkbDkL83keH9zsnJnvTjbn\nPWfOd9736l/Inf9GnzgI0aAl4sXXEL7Kkq3IGWk2IyP3In/bBf89Ah6eYDJB0i0oUw5Rrymi6fPg\nIlUf7YU8eRx9/idobw9BVKt937aibmO0x0qjzx6PkBKtXvauvkcBmXADff4UcPdAGzgeUTbo7/eu\nXET/bjly0hC0/h8iSpbOuSM74JIBJztb9P79+ylWrBiBgYEO1SJKPI547S1k65eRG1ahj+2PeLUX\nomELh+TSUrgW8mgU+srPLXczoS8geg9GFPK1vJeRDrHHkHu3om/+jrTX30LWD30kv0fy0nn0eZPQ\neg96YLDJQpR9Em3gBPSZY5BFiyGCq9pZpfGQ8TfQPx2JqN8M8VKXO+4IAUTJ0mh9RyB3bkKf9iHa\nwAmIMuUcps/lAs7BgwcpUqQIQUFBVntzeno669atY/To0dZ2Obm9s7NF26R+uJ8f9B1G5umOpCz8\nFHHwF3zeHYYWULzgfWPZq2HUOufmP8+RceBnzCeOkXjxHHpSIkiJKFIUU9kg3CqH4P5MM7QiRZ0t\n1Yqj51NmZpCyfB4ZB/dRqPcg3GrVzz6Q1G8C9ZtgPneKlIWfoh34lUIDRiF8fB2mNa/Yei5lSjKJ\nC6bi3fVdPBuG5u3gKjXI6PcByZ9Pw3fifLRiJeym017kV6dMSSbxnxPwat4Gr07d79+4/eukFw0g\nZe7H+E78DK1osXxpzast2uX24Xz99dfs2bMHk8lktUXXrl2bY8eO4enpiZSS69evExAQwOTJk+/Y\nYJcTtrZFy8xM5KZvkbs2ofUamOsrtPthNKukNJuRB35Gbl0PN+MsBoqnquMbXJkkoQECEm4gz5+G\nY78jD0VClZpoL72OKPuks+U7dD5lUiL6Z5+ATyHL98GnUK6O8/X2JmHJLOR/j6K9PxYRUOLBBzkB\nW86llBL5+TTw9kHrHpbvfvSNq5F/HLZcwf/vKt9of0M5kR+dUkrk4hng4YnoHpbru2J942rk7/9B\nGz4lz2aC21Mq5RaXCzi3k2WLvtuR1r9/f6ZOnYqvb+6uCu21D0f+cRh98QxE42cR7bsgNFO++zLS\nH4s8cgB99VIo5IfW+mUIedr62XLSKVNTkHu2IDd/h6hRF/Fab+tSkjNw1HzKxHj06aMQ1WojXu2Z\np++An58fCQkJyC3rLBcvwz9B+OfvStSe2HIu9d92ITd9izZqRo7GndwgzWb0aR8gnm6C9mx7m+u0\nJ/nRqe/ZgvzpB7QPpuXJDCClRJ/7MeKJJy3mqTyQn4DjkrnU4G9bdGxsLAArVqxg0KBBDBs2jISE\nBEPkixKVaqCNmYWMPYYePgmZ4nxNBUEm3MQ8bzL6ykVonXpYToC1nsnVSVR4eaM91wFt0gLw8EIf\nH4Y8GuUA1c5D3kpAnzkGUasB4rW38nXBIYRAa/0yomlr9JljkbcS7KDUGMj4G8hVi9F6vl+gYAMg\nTCa0twYiN65CXv3LRgqNibwZh1yzHO3toXl2ngkh0HoOQP68DRl7zE4K/8Y0fvz48XYfxQ5s3LgR\nIQSFCxemSROLDbJbt260bt2alJQUTp8+TY0aNXLVlz2veoSnN6J+czh1HLnuK0T1uvm6svf09CQ9\nPd0OCnOHjNqHHv4xomottHeHI0oHZnvb/iCdws0dUeNpRLkK6EtmQWYGBFd1+INxe8+nTE9DnzUO\nUSUE8Ur3fH2+2zWKilXh2hXk9g2I+s3veRjsTGw1l/qyOZbvV8OWNlAFopAfmM3In7eh1W/m9L+h\n3JJXnfKLuYhqddDq58+ZJzy9wb8Ycs2XiKbP5/q7lZ/nTMb51uaB7LJFh4SEWBMUVqxYkbi4OGfJ\nuwfh5obW9T1EixfRpwxH/nHY2ZJyjTSb0VctQV+9BK3vCLRXuttkr4ioVANt1Axk9G/IpbMtm/ge\nEqSuI5fORpQohejU02bBVHTqDu4eyNVLbNKfkZBHo+D8KcRLb9i0X/H8y3DxPPLQfpv2axTk0Sjk\nuZOIF18rUD+iXlMo5IvcuclGyrLHJQNOli06pz/kHTt2ULt2wR/U2xqtRVu0t4egfz4NffePzpbz\nQGRSIvo/JyAvnkUbPdPmNlNRtBjakEmWceZ/gkxPs2n/zkJuWIm8GYfoOcCmd25CM6G9MwR59CD6\n/j0269fZyMxM9FWL0Tq/VeCltLsR7u5oXd5BX7XkobqoAcuFjb4mAq1TjwJv4hRCoL35LvKHfyGT\n7Lfi43IB53ZbtJTyHvvzmjVrMJlM1mU2oyGq1EQbPgW5dR36vxYhzWZnS8oW+ec59ElDEGXKob0/\nzrI8YQeEpydavw8RXj7ocz+27EVxYWT0b8hffrJ8JhufPAGEjy/a20ORKz9Hxl2xef/OQO7aDP4B\nUPMZ+wxQrQ4EFCfdzlfvjkZG7gXNBHUa2aQ/UToQUbsB8sc1Nukv2zFczaWWnS36mWeeISwsjJ07\nd7J9+3bGjh2Lew7LPtntw3GGc0VPukXy7AmgCQr9Y+wD91l4eHg4bP05I3IvyQun493tPTyatc7T\nsfnVKXUzyeGTkSnJFBrykSWjgx2xx3zq16+S+MG7FBo8AbdKuXt+eD/upzF1/ddkRP2G79iZBXI/\n2oKCzKWeGE/ikJ74jpmJ6Qn72eUzTx4necZY/GYtR3h6PfgAJ5Kb+ZSZmSQO6YH3O0Nwr17HZmPr\ncVdJHPE2ftOXofkH3Letn5/fw78P53Zut0VHR0ezfPlyJkyYkOeHWc4qTyDNZuSqxcjjh9DCRiNK\nlsqxrSMsnVJK5MbVyF2b0d4biSif+3x0WRREp8zMRF84FUwmtHeGIUz2O5Haej6lbkafMcZyB9vu\ndZv0eT+N1vFq1kN7/mWbjJdfCjKX+prlcCuhQHtucou2aDqZZZ9Ee6GT3ccqCLmZT/2X7chfd2Aa\nMtHm4+url0BmJtqb79633SNli76bpUuXkpqaysSJExkxYgSLFy92tqQHIkwmS7LBlu3Qp45wqplA\npqagL5yKPLQfbdT0fAWbgiLc3ND6DIfkJOS/FuWYLcKIyH9/C0Ig2r7qkPGEZkLrEWbZYOyitl+Z\nmIDc/SPiRccUQfR6/S3k1nXI1JQHNzYwUteRm9fYLXCKNp2Qv+1CJtywed8uG3B0XSciIsL6evLk\nyZQuXZrU1FQKFy5srZnjCmihL1jMBAs/dYqZQF79C33KcISnN9qwyU7dXCjc3dH6jkSeOIrcus5p\nOvKCjI1B7tiI1nuwQ5e3RMnSiNavoK/4zKWCcxZy61pE3cYOy7JuKlMO8VR1pAsYdu7L4Uhwd4cq\ntezSvSjsj6jfFLn9hwc3ziMuG3D+/e9/U6ZMGevrdevWUaNGDebMmUO1atVYu3atE9XlHauZYMs6\n9C8/c5hjSx773RJsmrVG2GDDnS0QPoXQ3h+L3LYBeeBnZ8u5LzLpFvqiGWjdwxD5zEdVEMRzHeFW\nAvLXnxw+dkGQifHI3VsQbQtm580rou2rlrscFzan6Ju+RbR51a5718TzLyN3b0am2nazuksGnOz2\n4URGRtK8eXMAQkND2b/f9Xz34vEyaB9Oh5Qk9ElDkH+etdtYUjejb1yNvmQmWp9haC3bGSorsQgo\ngRY2Gn3FfIfsgM4PUkr05eGI2g0QNes7RYMwmdC6hyG/i0Am3XKKhvwgt6xDPN0YUcyx+eFEYAV4\nojzy5+0OHddWyNhjkHATUbehXccRJR5HVKll87tBlww42e3DiY+Px9/fHwB/f3/i4+OdJa9ACJ9C\niHeGIp7viD59FPq27y1V+2yIvH4VfcYY5LHf0T6cgbCBo8oeiMDyaG8NQl8wBXnlkrPl3IPc/SNc\nvYTo1NOpOkS5YIud9fuvnaojt8jEeOSeLYgXHHt3k4XW9jXk5u9ccl+O3LUJ0eJFhyzditavILdv\nsOnWjYeiPEF25HS1brfyBLamzcuYQ+qSvGgG7N+DeG8EfgW0jUrdTPqW9aR+txyvF1/Ds/0bNv/i\n2jwFfKNQ0m7dJG3eRAp9NA/N1zZ9F1Sn+fxpbq3/Cr8J/8QUcH/7aH7Ji0b9//qSOKQnPm1exhRY\n3i56ciKvc5ny/VfIRi3wCXKSztr1SSxZCs+Yg3g0bvXgAx1MTvOp30og4dB+CvceiOaIc1b1WiQW\nfwzP/x7GI4e0OXm1RTst4Bw6dIhz585RsWLFPJWDPn78OJGRkURFRVn34cydOxd/f39u3rxp/Ten\nsgTZTYphM8j6FUUO+hj5y3ZuThwClUIQL72OeLxsnrqRUsKhSPT1K8DHF23oJDJKB5KRZPtkonax\nbzdshTx3moRpoywVDG2wR6dA9u30NPTZExCdepDsVxTs9P3Jm0YN2r1B4uJZaEMnOXR5NC86ZcJN\n9O0b0cbNcfjf3e06Zct2JG9YRWqNeoZaSoac51Pf/gOiel2S0Oz2nbtnzGZtSN70HWnZGBT8/Pzo\n3DlvDkOHJO+cPXs2SUlJlC9vuaJZv349CxcuJCEhgR9++IHixYtTrlzuqs7VqFGDdu3a0bZtWypU\nqMDNmzcZPHgw165d4+LFi1SuXJnNmzdTokQJQkJCctWnYQMOljs1EVgevxc6kXbxPPLLecgTRy0P\n9wNK3reGhUxMQP6yDbl8HvL472jt3kB06oEo7G83vXZLkFi1JjJqHxw/BDWfKfBJoiA65dcLET6+\niA5d7XqyyrPGwPLI7RugkJ9DqzjmRaf8fiXi8bJozzS3s6p7uUNnyVLIH9cggoINV2cou/mUUiKX\nh6O1ex1R/DHHiXm8DHLNckTI0wi/Oy/i87NC4JA7nD/++INevXoBFjvz999/z/vvv0+DBg2Iiori\n66+/plmzZrnqKyMjg3HjxpGZmUlSUhJu/zvh1qlTh6lTp7J69Wrc3d0ZNmyY3T6PMxA+hdBe7Ix8\ntj3ywM/o2zfA0llQLhhR+gkIKGFJc5GeBtevIs/EwrW/ECH10F7tCVVqGirDcF4RmsliHZ/2AWz6\n1uHupiz0/XstG3XHzDLclbEwmdC69EFfMhMZUs9wO+plwk3k3q1o4/7pbCkIzYRo1R592/eYXKEU\n9ak/ICMDnqru0GGFmzuiWWvkjo2IN/sWuD+HBJzk5GTrEteZM2fIyMigfn2Lq6dWrVrMmTMn1325\nu7szbtw4PD090XWdMWPGcOLECdauXcvgwYOpWbMmUVFRfPfdd1Sv7thfjiMQnl6IRq2gUSuLZTH2\nOPLyRbhxDXQzuHtAUEW0Js9ZglEeq/gZGeHljRY2Bn3KMPQSpdDqOTZfnrz6F3LlQrR/jEN4+Th0\n7NwinqqOqFAFuXkNooOx9qLJH9cgnmmGsFHZ9YIiGrdC/rASee2yY+8a8oHc8yOi2fNOucgRzdqg\njx+AfKV7gb/3Drnk9fPz48oVS6LBI0eO8NRTT1lLCaSlpVn/P7d4eloyo2ZkZGA2my3LTkJYi64l\nJSVRtGhRG34CYyK8fBDV66C1aof2ak+0zr3RXu6G1rwNokLlhyrYZCGKFkPrPxr59QLkyeMOG1dm\nZKB/Pg3R9jVEuWCHjZsfRKeeyB0bDZXcUybcQO7d5jRnWnYIL29Eo2eRP9l+g6MtkclJyKh9CBvV\nCcoromgxeKo6cv/eAvflkIDTsmVLpkyZQkREBOvXryc0NNT6XkxMzB0bOHODrusMHz6cPn36EBIS\nQnBwMD169ODLL7/kvffe46uvvnKpTAOKvCECy6P1+oelpIED0rpIKZFfL4CA4ohWL9l9vIIiipVA\ntGyH/GaZs6VYkZvXIJ5p7pTNsfdDtHwR+ctPNt/gaEvkf3YhqtSy67PXB6E1eQ65d2uB+3FY8s6d\nO3dy6tQpKlasSNOmTe/4uY+Pj3WJLS8kJyczffp0evXqxbZt26hWrRr169dn3759bN26lTFjxtxz\njFGyRecVR2aLLgiO1Jm2eQ1pW7/H96NwtDxWUc2LzrTNa0nbvgG/j+chvLzzIzVfFGQuZVoqCUN6\n4vPeSNyr2ScFShYP0qnfvE7ikJ74TVuK5sTltJx0Js0aj1uVEDzbvOIEVfdyu04pJbc+6INX1764\n16jrNE3SbCYh7A18R03DVDYIcNFs0bquEx0dTZ06+Uux/e233+Lp6cmaNWtYtuzvK7oePXrckWvt\nfjgrW3RecES2aFvgaJ36ys+Rl86jDRiTp7Q8udUpj/2OvngG2shPESUeL4jUPFPQuZSRe9E3rrYY\nHOy4UfBBOvVVS0A3o3XpYzcNuSEnnfJEDPoX/0T7+DNDGGvusG+fOYG+8FO0SQudrk1fsxwyM9A6\n9wZcLFv02bNnWb58OX379mXevHm5Pi4hIcH6rCY9PZ3Dhw9TpkwZihYtSkxMDACHDx/O12QoXA/x\nem+Ejy/6Z5Ntnh9Lno1FXzQdrc9whwcbm1C3Mfj4IndvcZoEeTMO+ct2xAuOyaKdL4KrgJc3HD3o\nbCX3IHf/iGj6vNODDYBo8ixy305kZka++3DoU+X4+Hj27NnD7t27OXv2LEIIevXqRYsWLXLdx9Wr\nVxk/fjy6rgNQqVIl6tSpg4+PD3PmzCEhIQEhBA0b2jfXkMIYCM0E7wyFJTPRwyei9R9V4HK7APLS\nBfS5H6N164+o5JpuRyEE2utvo88eh6zXFJHHZUdbIDd9h2jcCvGAYl7ORAiBaNUOfdsGTDWedrYc\nKzI1GXngZ7QJub8gtyeiZGko9QT8vh/q5q/KqEPC5q+//sqUKVPo27cvO3fupFGjRoSHh1O4cGEa\nNGiAh0ful0IqVKjA4sWL+eqrr/jyyy9JS0sjNjYWs9lMmTJlWL58OStWrKBbt252/EQKIyFMJkTv\nwYjC/ugzRhe4joc8dxJ9xijEKz0QtRvYSKVzEIHlEbUbIjesdPjY8vo15G+7EAZ5NnI/RL1mcOE0\n8tJ5Z0uxIv+zByrVMFSwFo2fRS+AecAhAWf27NmcOHGCQYMGMX36dDp27EiJEvnf3Xu3LRpgy5Yt\ndOzYEdP/qkQWLly44MIVLoMwmRC9BiKq1UafPAx57mS++pFHDqDPHo/25rtojZxjQ7U1omNXS0Gt\ni+ccOq7c9A2iyXOIwsbfoiDc3RHN2hjKIi13/4jWNG8l3u2NqNsYTv2BvH4tX8c7JOC89957BAYG\nMnPmTEaNGsWmTZuIj4/P9yam7GzRly5dIiYmhlGjRjFhwgROnszfCUfhughNQ2v/JqJTT/TZ49E3\nrs51RmCZkY6+9kv0iHC0viMRdfK3ZGBEhF8RxIud0VctdlihNhl3Bbl/L6K18e9ushDN2yD/s9sQ\nZR7kuZOQGA92dhjmFeHpiajbCPnbznwd75CAExoayrhx45g7dy61a9dm8+bN9O3bl4SEBKKioqzP\nY3KLpml8+umnzJ8/n9jYWM6fP4/ZbCYpKYlJkybRtWtXZs2aZadPozA6Wr0maKNnImOPoY/rj75v\nBzIj+wedMjMD/bdd6OPCLG63MTMRT93f2umKiNC2cCMOfv+PQ8aT679ChL6A8HOdlQbhH4Co8TTy\n54LvNykocs8Wy92hAyvI5hbRqCXyl/wV/HOaLfr48ePs2rWLffv24eHhwcKFC/PVT5Yt+siRI3To\n0IGqVS15kQYMGMDkyZPvSTCn9uHYF6PpzDhykLS1KzCfPYlb9TqYgoIRPr5o6amknzlJ5qH9mJ54\nEs/2XXCvWc/Zcu/A1nOZcSiSlCWz8Ju+zKaVXe/WmXn6vyRN/YDCs75EeBsnBVBu5jMz9hjJcz7C\nb84Kp53s3XUz1955Gb9Pl6A5uEBdbpBSkjioG2WWrDdmeYK9e/fSpMmdea8qV65M5cqVeeutt/JU\nnTMhIQE3Nzd8fHystugOHTrg7e3NkSNHqFq1KhcvXsRsNmebzdSlyhPchtqHk0/KVYSBExDXr5L5\nxxEyL5yBi+fxKOxP5pNPIdq+hizxOKlAqpF0Y4e5fLIS+uNlSVj7NdoLnWzW7R37RqRE/yIc0e4N\nbmWaHZZGPzfkaj4fK4vuV4TEvT85zTDicWAvskJlkjy8DDV/d9B/NECeyxM4JOAsWrTonoCThbu7\nO40a5X69/ObNm8ybNw9d15FS0qhRI+rUqUNmZibz589nyJAhuLu7ExYWZiv5iocAEVAC0fBv+723\nnx+ZRv1jtiNa597onwxF1m9mn/LOh/ZbSiA3ec72fTsI0eol9O0bMDkp4KRv34jW+mWnjJ1bxON5\nS0eWhUOe4dhy1a5UqVKYTCaEEEgprS41Nzc3BgwYQGhoKKdPnyYwMNBmYyoUDwuiZCnEcx3RI/5p\ncwOBTE9DX7UYrfNbCJPxnj3kFlGnEVz+E3nhtMPHln+eRY+7DNWdl8bGnjjkDkfXdY4cOXLfNrkt\nJZBdeYLatWsTHBxMXFwchw4donhxY6Q/VyiMiGj9CjJqn2UXe/M2NutXblyNKBeMcPGTpXBzQ4S2\nRW7/AdFjgEPHlnu24BH6ApkuHLDvh0MCTkZGBgsWLMjxikoIQXh4eK77y24fDkBERATdunVj6tSp\nBROsUDzECJPJkm172ofIqrVskrZH/nkWuWcL2tjc17YyMqJZa/TRfZGv9HCY006mpyF/24nnJ5+T\nOzO/6+GQgOPl5ZWngPIgdF1n5MiRXL58mdatWxMcHExkZCTFihVTS2kKRS4QpQMRL75mSQw5YirC\n3T3ffcmMdPQlMxEd/89Qu+ILgvArgqjdwFL4zEHVZWXkXniyElqJx41rFiggLlmhK2sfTlZ5gnPn\nzrF27VpGjx5tbZPT3VR2tuj81OZ2NB4eHkqnDXEFnfbWKDt2Jfn0CcSaCHzeHpTvftK+WoD742Xw\nadvJcGW3byev82lu/wa3pn6Ib6fuDilmmLh3K14du7rEdzMLQ5Yn6N69O8uXL7dL399++y1CCDZv\n3oynpydSSq5fv05AQACTJ0+2lra+H6o8ge1QOm2HIzTKlGT0SUMQz7ZHC30h78dH7kV++wVi9EyE\nr7E3eeZnPs3TPkSEvoBWr+mDGxcAef60JVnsJ4so7O9v+O8m5K88gUPucGwZbHLah7No0SJrm/79\n+zN16lR8fR2fHVehcCWEtw/a+2PRp32A9PVDPJ399oXskCePo3+1AN9R00kxeLDJL1qrduhb1oG9\nA87uzZYyBA+pWSALl1tSy6k8wYoVKzhw4ABubm7Wmjkq4CgUD0aULIX2/jj0WWMR6em5Sloql++U\nVAAAD69JREFUY4+hfzYZ7a2BuD1Z8aF95kCtZ2D1UuSZE4iginYZQqYmI/+zB238XLv0byScX9Un\nj+RUniAkJIQZM2Ywbdo02rRpw7Zt25wtVaFwGcQTT6INm4z8/mv0b5bmWMxOSon+8zb0eZPQ3hqI\nMFD9GHsgNBOixYvI7fbLIi1/2w1PVUcULWa3MYyCywUcyN4WHRISgva/qngVK1YkLi7OafoUCldE\nlHoCbdQMiLuKPi4Mfee/LRU7pUSmpSJ/32+pN7R1PdrQyS6/3ya3iCbPIQ/tR8YXrM5Sdkgpkds3\noLV80eZ9GxGXW1KD7G3Rt7Njxw4aN27sJHUKhesi/Iog+o5A/vcI8qeN6GtXQFoqaBoEBSMatUI0\nbPnQP2u4HVHIF1GvCXLXJkT7N23b+dGDYHKDyiG27degOC1btC1ITk5m2rRp9O7dm7JlywKwZs0a\nTp06xdChQ7M9RmWLti9Kp+0wikaZng5ubggt+wURo+h8EAXRaf7zLLc+GkThf36N8PSymaZbk4bh\n0fRZPJr9XWjNVebTz8/PmNmi7YWPjw/VqlUjOjqasmXLsnPnTqKiohg7dmyOx6hs0fZF6bQdhtKY\nlpbjW4bSeR8KpLNwALJCFRI2rLZZYk154Qz6uVPoNeqRdpsuV5rPvGaLdrlnOFkONMBqiy5dujTR\n0dF8//33DB8+HPcC7JpWKBSK7NDav4n8cQ0yNdkm/clN3yJatUO4PTrnK5e7w8nJFh0WFsaNGzd4\n9913cXd3p2HDhvTt29fJahUKxcOCKBOIqFoLue17RLs3CtSXvHgOeex3tG79bKTONXC5gJNli749\nW3RsbCwNGjTAz8+PDh06sG7dOpKSkpwtVaFQPGSI9l3QPxmGbP4Cwu/BWUxyQv6wCvFcR4SXcSqi\nOgKXW1KD7G3RkZGRNG/eHIDQ0NA8VRFVKBSK3CBKlkY0aIFck//sKfLcSeQfhxEt2tpQmWvgkgFH\n13WGDx9Onz59CAkJITg4mPj4ePz9/QHw9/cnPj7eySoVCsXDiHipC/LwAeTJ43k+VkqJvvJzRIeu\nCC9vO6gzNi4ZcLKyRc+fP5/Y2FjOnz9/TxsjZ61VKBSui/AphHi1B/qK+ciMjDwdK3/bCenpiCbP\n2kecwXG5Zzi34+PjQ9WqVYmOjsbf35+bN29a/80pS7QqT2BflE7b4Qoa4dHUKZ99iaTf/4Pp36vx\n/r/cmZP061dJ/PYLfIdNwq2Iv0N02htDliewJXdni540aRIdOnQgJiYGX19fOnbsaDUNdO3aNVd9\nqvIEtkPptB2uoBEeXZ0yMQH944FoXfsiata/f1uzGX3OeERwVbT2XRyq014YtjyBLTlz5gzTp0+3\nmgWqV69OnTp18PLyYurUqaxevRp3d3eGDRvmZKUKheJhRvgVRus7wlLHJmw0okLlbNtJKZErF4IQ\niBfztlHyYcPlAk5gYCAfffQRQUFBpKamMnLkSC5cuMDatWsZPHgwNWvWJCoqiu+++47q1as7W65C\noXiIEeUrob01ED18IlqPMEStBne8LzMykCsXIs+dQhsy8ZHKQZcdLhdw/P39rW40Ly8vSpcuzY0b\nNxBCWDMQJCUlUbRoUWfKVCgUjwiixtNoA8agfz4Nft2B1rAlFCmKPH8KuXU9lA5EGzrpkXSl3Y3L\nBZzbuXLlCmfPnqVixYr06NGDSZMmWauLfvzxx05Wp1AoHhVE+UpoE+Yh925B37ERbiUiHiuN9vrb\nUK2Ocs3+D5cNOKmpqcycOZOePXvi5eXFli1b6NmzJ/Xr12ffvn3Mnz+fMWPGOFumQqF4RBCenohW\nL0Grl5wtxbC4nEsNwGw2M2XKFGrXrk3btpbduj179uSLL76wtunRowcRERH3HJudLVqhUCgUeSev\ntmiX3Pg5f/58ypYtaw02AAEBAcTExABYM0hnR7Vq1ejcubP1v9snzMgonbbFFXS6gkZQOm2NK+m8\n/Vz6oGADLrikdvz4cfbs2UNgYCDDhw9HCEGXLl149913WbZsGbqu4+7uTp8+fZwtVaFQKBS34XIB\np3LlyqxatSrb96ZMmeJgNQqFQqHILabx48ePd7YIZ1OyZElnS8gVSqdtcQWdrqARlE5b87DqdEnT\ngEKhUChcD5c0DSgUCoXC9VABR6FQKBQOweVMA7YiOjqaL774AiklLVq0oGPHjs6WZGX+/PkcPHiQ\nIkWKMH36dABu3brF7NmzuXr1KiVLlmTQoEH4+DivPG1cXBzh4eHEx8cjhKBVq1a0bdvWcDozMjIY\nN24cmZmZmM1mGjRowGuvvWY4nWApLPjBBx8QEBDAiBEjDKkRoH///vj4+CCEwGQy8cknnxhOa3Jy\nMgsWLOD8+fMIIXjvvfcoVaqUoTRevHiR2bNnI4RASsnly5d5/fXXadasmaF0Avzwww/s2LEDIQSB\ngYH069eP1NTUvOuUjyBms1mGhYXJK1euyIyMDDl06FB54cIFZ8uycuzYMXn69Gk5ZMgQ68++/PJL\nuW7dOimllGvXrpUrVqxwljwppZQ3btyQp0+fllJKmZKSIt9//3154cIFw+mUUsrU1FQppeX3/uGH\nH8oTJ04YUueGDRvknDlz5JQpU6SUxvudZ9G/f3+ZmJh4x8+MpjU8PFz+9NNPUkopMzMzZVJSkuE0\n3o7ZbJZ9+vSRV69eNZzOuLg42b9/f5mRkSGllHLmzJlyx44d+dL5SC6pxcbGUqpUKUqUKIGbmxuN\nGzdm//79zpZlpXLlyhQqVOiOn0VGRtK8eXMAQkNDna7X39+foKAgwJJEtUyZMsTFxRlOJ4Cnpydg\nudvJKmthNJ1xcXFERUXRqlUr68+MpjELKSXyLq+RkbQmJydz/PhxWrRoAYDJZMLHx8dQGu/m8OHD\nPPbYYxQvXtyQOnVdJzU1FbPZTHp6OgEBAfnS+UguqV2/fp1ixYpZXwcEBBAbG+tERQ8mPj7emiXb\n39+f+Ph4Jyv6m6wkqk899ZQhdeq6zsiRI7l8+TKtW7cmODjYcDojIiLo1q2bNeM5GPd3LoRg4sSJ\naJrGs88+S6tWrQyl9cqVK/j5+fHZZ59x9uxZypcvT8+ePQ2l8W5++eUXmjRpAhjv9x4QEEC7du3o\n168fnp6ehISEEBISki+dj2TAeRgwSvbZu5Oo3o0RdGqaxqeffkpycjLTp0/n/Pnz97Rxps6s53VB\nQUF35Pm7GyPMJVgysRctWpSEhAQmTpyYbRopZ2rVdZ3Tp0/Tu3dvKlSowBdffMG6devuaWeU+czM\nzCQyMjLHCsXO1pmUlERkZCSfffYZPj4+zJw5kz179tzTLjc6H8mAExAQwLVr16yvr1+/TkBAgBMV\nPRh/f39u3rxp/bdIkSLOloTZbGbGjBk0a9aMevXqAcbUmYWPjw9Vq1YlOjraUDqPHz9OZGQkUVFR\npKenk5KSwty5cw2l8Xayak0VLlyYevXqERsbayitAQEBFCtWjAoVKgDQoEED1q1bZyiNtxMdHU35\n8uUpXLgwYLy/ocOHD1OyZEl8fX0BqF+/Pn/88Ue+dD6Sz3CCg4P566+/uHr1KpmZmfz88888/fTT\nzpZ1B3evk9etW5edO3cCsHPnTkPozS6JqtF0JiQkWJep0tPTOXz4MGXKlDGUzjfffJP58+cTHh7O\nwIEDqV69OgMGDDCUxizS0tJITU0FLHe3hw4dIjAw0FBa/f39KVasGBcvXgQsJ8yyZcsaSuPt7N27\nl8aNG1tfG01n8eLFOXHiBOnp6UgpCzSfj2ymgejoaJYtW4aUkpYtWxrKFj1nzhxiYmJITEykSJEi\ndO7cmXr16jFr1iyuXbtGiRIlGDRo0D3GAkdy/Phxxo0bR2BgIEIIaxLV4OBgQ+k8d+4c8+bNQ9d1\npJQ0atSIV155hVu3bhlKZxYxMTFs2LDBaos2msYrV64wbdo0hBCYzWaaNm1Kx44dDaf1zJkzLFy4\nkMzMTB577DH69euHruuG0giWAN6vXz/Cw8Px9rZUBDXaXAJ88803/PLLL5hMJoKCgujbty+pqal5\n1vnIBhyFQqFQOJZHcklNoVAoFI5HBRyFQqFQOAQVcBQKhULhEFTAUSgUCoVDUAFHoVAoFA5BBRyF\nQqFQOAQVcBQKG3Pt2jV69OhxT4JLe7F161YiIiIe2G7GjBlER0c7QJFCkT0q4CgUBaR///4cOXLE\n+rp48eJEREQ4JAdWZmYma9asoUOHDg9s26FDB/71r3/ZXZNCkRMq4CgULkxkZCRly5a1Zu29H8HB\nwaSkpHDq1CkHKFMo7uWRTN6pUNiK8PBwrl27xtSpU9E0jU6dOtGwYUPCwsJYuXIlmqYxYcIEKlWq\nxNGjRzl79izVq1enX79+LF26lAMHDlCmTBkGDx5M8eLFAfjzzz9ZtmwZp06dsqY2atiwYbbjR0VF\nUaVKFevrjIwMFixYQHR0NLquU6pUKUaOHGlNDFm1alUOHjxI+fLl7T85CsVdqDschaIAhIWFUbx4\ncUaMGEFERATt27fPtt2vv/7KgAEDWLhwIX/99RejR4+mZcuWLFu2jNKlS/PNN98AltxaEydOpGnT\npixZsoR//OMfLFmyhD///DPbfs+dO3dHeYBdu3aRkpLCggULWLp0Ke+88w4eHh7W98uUKcPZs2dt\nOAMKRe5RAUehcAChoaGULFkSb29vatWqxWOPPUb16tXRNI2GDRty5swZAA4cOEDJkiVp3rw5QgiC\ngoKoX78+v/76a7b9JicnW5M+gqW6ZWJiIpcuXUIIwZNPPnlHnSJvb+87irwpFI5ELakpFA7g9loh\nHh4e97zOSvl/7do1Tpw4Qa9evazv67pO06ZNs+23UKFCpKSkWF83b96cuLg4Zs+eTXJyMk2bNqVL\nly5omuXaMiUlBR8fH5t+NoUit6iAo1AUEFu60YoVK0a1atUYNWpUrtoHBgZy6dIl62tN03j11Vd5\n9dVXuXbtGpMnT6Z06dK0aNECsDwfKleunM30KhR5QS2pKRQFxN/fn8uXL9ukr7p163Lx4kV2796N\n2WwmMzOTkydP5vgMp06dOsTExFhfHz16lHPnzqHrOl5eXphMpjsCYkxMDLVr17aJVoUir6g7HIWi\ngHTs2JGlS5eyYsUKOnXqxDPPPJPvvry8vBg9ejQREREsX74cKSVBQUF079492/Z169YlIiLijlK/\nixYt4vr163h5edGoUSOaNWsGQGxsLN7e3tbSywqFo1EF2BQKF2f79u1cuHCBHj163LfdjBkzaNWq\nFbVq1XKQMoXiTlTAUSgUCoVDUM9wFAqFQuEQVMBRKBQKhUNQAUehUCgUDkEFHIVCoVA4BBVwFAqF\nQuEQVMBRKBQKhUNQAUehUCgUDkEFHIVCoVA4hP8H5YuLWX/71x8AAAAASUVORK5CYII=\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\nGpQURVEU0/h/xLL9bkp3sdYAAAAASUVORK5CYII=\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\nAAAAAElFTkSuQmCC\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "for ii in range(len(par_list) // 3):\n", - " three_params = par_list[3 * ii:3 * ii + 3]\n", - " fig, ax = plt.subplots(3, 1, sharex=True)\n", - " for jj, par in enumerate(three_params):\n", - " ax[jj].plot(time, my_simulation.par_dict[par])\n", - " ax[jj].set_ylabel(par)\n", - " ax[jj].set_xlabel('time (s)')\n", - "\n", - "fig = plt.figure()\n", - "ax = Axes3D(fig)\n", - "ax.plot(my_simulation.par_dict['x_earth'],\n", - " my_simulation.par_dict['y_earth'],\n", - " my_simulation.par_dict['height'])\n", - "\n", - "ax.plot(my_simulation.par_dict['x_earth'],\n", - " my_simulation.par_dict['y_earth'],\n", - " my_simulation.par_dict['height'] * 0)\n", - "ax.set_xlabel('x_earth')\n", - "ax.set_ylabel('y_earth')\n", - "ax.set_zlabel('z_earth')\n", - "\n", - "plt.show()" - ] - } - ], - "metadata": { - "anaconda-cloud": {}, - "celltoolbar": "Raw Cell Format", - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.5.1" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} diff --git a/examples/examples_as_notebooks/example_006_elevator_doublet.ipynb b/examples/examples_as_notebooks/example_006_elevator_doublet.ipynb deleted file mode 100644 index fa97e6a..0000000 --- a/examples/examples_as_notebooks/example_006_elevator_doublet.ipynb +++ /dev/null @@ -1,385 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# EXAMPLE 006\n", - "\n", - "Cessna 172, ISA1976 integrated with Flat Earth (Euler angles).\n", - "\n", - "Evolution of the aircraft after a pitch perturbation (delta doublet \n", - "applied on the elevator).\n", - "\n", - "Trimmed in stationary, horizontal, symmetric, wings level flight." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# -*- coding: utf-8 -*-" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Import python libreries needed." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "%matplotlib inline\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "from mpl_toolkits.mplot3d import Axes3D" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Import PyFME classes" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "from pyfme.aircrafts import Cessna172\n", - "from pyfme.environment.environment import Environment\n", - "from pyfme.environment.atmosphere import ISA1976\n", - "from pyfme.environment.gravity import VerticalConstant\n", - "from pyfme.environment.wind import NoWind\n", - "from pyfme.models.systems import EulerFlatEarth\n", - "from pyfme.simulator import BatchSimulation\n", - "from pyfme.utils.trimmer import steady_state_flight_trimmer\n", - "from pyfme.utils.input_generator import doublet" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Initialize variables" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "aircraft = Cessna172()\n", - "atmosphere = ISA1976()\n", - "gravity = VerticalConstant()\n", - "wind = NoWind()\n", - "environment = Environment(atmosphere, gravity, wind)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Initial conditions" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "TAS = 45 # m/s\n", - "h0 = 2000 # m\n", - "psi0 = 1 # rad\n", - "x0, y0 = 0, 0 # m\n", - "turn_rate = 0.0 # rad/s\n", - "gamma0 = 0.00 # rad" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Define system" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "system = EulerFlatEarth(lat=0, lon=0, h=h0, psi=psi0, x_earth=x0, y_earth=y0)\n", - "\n", - "not_trimmed_controls = {'delta_elevator': 0.0,\n", - " 'delta_aileron': 0.01 * np.sign(turn_rate),\n", - " 'delta_rudder': 0.01 * np.sign(turn_rate),\n", - " 'delta_t': 0.5}\n", - "\n", - "controls2trim = ['delta_elevator', 'delta_aileron', 'delta_rudder', 'delta_t']" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "trimmed_ac, trimmed_sys, trimmed_env, results = steady_state_flight_trimmer(\n", - " aircraft, system, environment, TAS=TAS, controls_0=not_trimmed_controls,\n", - " controls2trim=controls2trim, gamma=gamma0, turn_rate=turn_rate, verbose=1)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Steady state flight trimmer results" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "print('delta_elevator = ',\"%8.4f\" % np.rad2deg(results['delta_elevator']), 'deg')\n", - "print('delta_aileron = ', \"%8.4f\" % np.rad2deg(results['delta_aileron']), 'deg')\n", - "print('delta_rudder = ', \"%8.4f\" % np.rad2deg(results['delta_rudder']), 'deg')\n", - "print('delta_t = ', \"%8.4f\" % results['delta_t'], '%')\n", - "print()\n", - "print('alpha = ', \"%8.4f\" % np.rad2deg(results['alpha']), 'deg')\n", - "print('beta = ', \"%8.4f\" % np.rad2deg(results['beta']), 'deg')\n", - "print()\n", - "print('u = ', \"%8.4f\" % results['u'], 'm/s')\n", - "print('v = ', \"%8.4f\" % results['v'], 'm/s')\n", - "print('w = ', \"%8.4f\" % results['w'], 'm/s')\n", - "print()\n", - "print('psi = ', \"%8.4f\" % np.rad2deg(psi0), 'deg')\n", - "print('theta = ', \"%8.4f\" % np.rad2deg(results['theta']), 'deg')\n", - "print('phi = ', \"%8.4f\" % np.rad2deg(results['phi']), 'deg')\n", - "print()\n", - "print('p =', \"%8.4f\" % results['p'], 'rad/s')\n", - "print('q =', \"%8.4f\" % results['q'], 'rad/s')\n", - "print('r =', \"%8.4f\" % results['r'], 'rad/s')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Initialise simulation" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "my_simulation = BatchSimulation(trimmed_ac, trimmed_sys, trimmed_env)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "tfin = 10 # seconds\n", - "N = tfin * 100 + 1\n", - "time = np.linspace(0, tfin, N)\n", - "initial_controls = trimmed_ac.controls" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "controls = {}\n", - "for control_name, control_value in initial_controls.items():\n", - " controls[control_name] = np.ones_like(time) * control_value" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Elevator doublet; Elevator travel: +28º/-26º" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "amplitude = np.deg2rad(20)\n", - "controls['delta_elevator'] = doublet(t_init=2,\n", - " T=1,\n", - " A=amplitude,\n", - " time=time,\n", - " offset=initial_controls['delta_elevator'])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "my_simulation.set_controls(time, controls)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "par_list = ['x_earth', 'y_earth', 'height',\n", - " 'psi', 'theta', 'phi',\n", - " 'u', 'v', 'w',\n", - " # 'v_north', 'v_east', 'v_down',\n", - " 'p', 'q', 'r',\n", - " 'alpha', 'beta', 'TAS',\n", - " # 'F_xb', 'F_yb', 'F_zb',\n", - " 'M_xb', 'M_yb', 'M_zb']" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Run Simulation" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "my_simulation.set_par_dict(par_list)\n", - "my_simulation.run_simulation()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Plot results" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "plt.style.use('ggplot')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false, - "scrolled": false - }, - "outputs": [], - "source": [ - "for ii in range(len(par_list) // 3):\n", - " three_params = par_list[3 * ii:3 * ii + 3]\n", - " fig, ax = plt.subplots(3, 1, sharex=True)\n", - " for jj, par in enumerate(three_params):\n", - " ax[jj].plot(time, my_simulation.par_dict[par])\n", - " ax[jj].set_ylabel(par)\n", - " ax[jj].set_xlabel('time (s)')\n", - "\n", - "fig = plt.figure()\n", - "ax = Axes3D(fig)\n", - "ax.plot(my_simulation.par_dict['x_earth'],\n", - " my_simulation.par_dict['y_earth'],\n", - " my_simulation.par_dict['height'])\n", - "\n", - "ax.plot(my_simulation.par_dict['x_earth'],\n", - " my_simulation.par_dict['y_earth'],\n", - " my_simulation.par_dict['height'] * 0)\n", - "ax.set_xlabel('x_earth')\n", - "ax.set_ylabel('y_earth')\n", - "ax.set_zlabel('z_earth')\n", - "\n", - "plt.show()" - ] - } - ], - "metadata": { - "anaconda-cloud": {}, - "celltoolbar": "Raw Cell Format", - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.5.1" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} diff --git a/examples/examples_as_notebooks/example_007_rudder_doublet.ipynb b/examples/examples_as_notebooks/example_007_rudder_doublet.ipynb deleted file mode 100644 index 704e628..0000000 --- a/examples/examples_as_notebooks/example_007_rudder_doublet.ipynb +++ /dev/null @@ -1,385 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# EXAMPLE 007\n", - "\n", - "Cessna 172, ISA1976 integrated with Flat Earth (Euler angles).\n", - "\n", - "Evolution of the aircraft after a yaw perturbation (delta doublet \n", - "applied on the rudder).\n", - "\n", - "Trimmed in stationary, horizontal, symmetric, wings level flight." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# -*- coding: utf-8 -*-" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Import python libreries needed." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "%matplotlib inline\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "from mpl_toolkits.mplot3d import Axes3D" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Import PyFME classes" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "from pyfme.aircrafts import Cessna172\n", - "from pyfme.environment.environment import Environment\n", - "from pyfme.environment.atmosphere import ISA1976\n", - "from pyfme.environment.gravity import VerticalConstant\n", - "from pyfme.environment.wind import NoWind\n", - "from pyfme.models.systems import EulerFlatEarth\n", - "from pyfme.simulator import BatchSimulation\n", - "from pyfme.utils.trimmer import steady_state_flight_trimmer\n", - "from pyfme.utils.input_generator import doublet" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Initialize variables" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "aircraft = Cessna172()\n", - "atmosphere = ISA1976()\n", - "gravity = VerticalConstant()\n", - "wind = NoWind()\n", - "environment = Environment(atmosphere, gravity, wind)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Initial conditions" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "TAS = 45 # m/s\n", - "h0 = 2000 # m\n", - "psi0 = 1 # rad\n", - "x0, y0 = 0, 0 # m\n", - "turn_rate = 0.0 # rad/s\n", - "gamma0 = 0.00 # rad" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Define system" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "system = EulerFlatEarth(lat=0, lon=0, h=h0, psi=psi0, x_earth=x0, y_earth=y0)\n", - "\n", - "not_trimmed_controls = {'delta_elevator': 0.05,\n", - " 'delta_aileron': 0.01 * np.sign(turn_rate),\n", - " 'delta_rudder': 0.01 * np.sign(turn_rate),\n", - " 'delta_t': 0.5}\n", - "\n", - "controls2trim = ['delta_elevator', 'delta_aileron', 'delta_rudder', 'delta_t']" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "trimmed_ac, trimmed_sys, trimmed_env, results = steady_state_flight_trimmer(\n", - " aircraft, system, environment, TAS=TAS, controls_0=not_trimmed_controls,\n", - " controls2trim=controls2trim, gamma=gamma0, turn_rate=turn_rate, verbose=1)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Steady state flight trimmer results" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "print('delta_elevator = ',\"%8.4f\" % np.rad2deg(results['delta_elevator']), 'deg')\n", - "print('delta_aileron = ', \"%8.4f\" % np.rad2deg(results['delta_aileron']), 'deg')\n", - "print('delta_rudder = ', \"%8.4f\" % np.rad2deg(results['delta_rudder']), 'deg')\n", - "print('delta_t = ', \"%8.4f\" % results['delta_t'], '%')\n", - "print()\n", - "print('alpha = ', \"%8.4f\" % np.rad2deg(results['alpha']), 'deg')\n", - "print('beta = ', \"%8.4f\" % np.rad2deg(results['beta']), 'deg')\n", - "print()\n", - "print('u = ', \"%8.4f\" % results['u'], 'm/s')\n", - "print('v = ', \"%8.4f\" % results['v'], 'm/s')\n", - "print('w = ', \"%8.4f\" % results['w'], 'm/s')\n", - "print()\n", - "print('psi = ', \"%8.4f\" % np.rad2deg(psi0), 'deg')\n", - "print('theta = ', \"%8.4f\" % np.rad2deg(results['theta']), 'deg')\n", - "print('phi = ', \"%8.4f\" % np.rad2deg(results['phi']), 'deg')\n", - "print()\n", - "print('p =', \"%8.4f\" % results['p'], 'rad/s')\n", - "print('q =', \"%8.4f\" % results['q'], 'rad/s')\n", - "print('r =', \"%8.4f\" % results['r'], 'rad/s')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Initialise simulation" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "my_simulation = BatchSimulation(trimmed_ac, trimmed_sys, trimmed_env)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "tfin = 20 # seconds\n", - "N = tfin * 100 + 1\n", - "time = np.linspace(0, tfin, N)\n", - "initial_controls = trimmed_ac.controls" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "controls = {}\n", - "for control_name, control_value in initial_controls.items():\n", - " controls[control_name] = np.ones_like(time) * control_value" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Rudder doublet; Rudder travel: +16º/-16º" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "amplitude = np.deg2rad(20)\n", - "controls['delta_rudder'] = doublet(t_init=2,\n", - " T=2,\n", - " A=amplitude,\n", - " time=time,\n", - " offset=np.deg2rad(0))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "my_simulation.set_controls(time, controls)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "par_list = ['x_earth', 'y_earth', 'height',\n", - " 'psi', 'theta', 'phi',\n", - " 'u', 'v', 'w',\n", - " # 'v_north', 'v_east', 'v_down',\n", - " 'p', 'q', 'r',\n", - " 'alpha', 'beta', 'TAS',\n", - " # 'F_xb', 'F_yb', 'F_zb',\n", - " 'M_xb', 'M_yb', 'M_zb']" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Run Simulation" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "my_simulation.set_par_dict(par_list)\n", - "my_simulation.run_simulation()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Plot results" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "plt.style.use('ggplot')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false, - "scrolled": false - }, - "outputs": [], - "source": [ - "for ii in range(len(par_list) // 3):\n", - " three_params = par_list[3 * ii:3 * ii + 3]\n", - " fig, ax = plt.subplots(3, 1, sharex=True)\n", - " for jj, par in enumerate(three_params):\n", - " ax[jj].plot(time, my_simulation.par_dict[par])\n", - " ax[jj].set_ylabel(par)\n", - " ax[jj].set_xlabel('time (s)')\n", - "\n", - "fig = plt.figure()\n", - "ax = Axes3D(fig)\n", - "ax.plot(my_simulation.par_dict['x_earth'],\n", - " my_simulation.par_dict['y_earth'],\n", - " my_simulation.par_dict['height'])\n", - "\n", - "ax.plot(my_simulation.par_dict['x_earth'],\n", - " my_simulation.par_dict['y_earth'],\n", - " my_simulation.par_dict['height'] * 0)\n", - "ax.set_xlabel('x_earth')\n", - "ax.set_ylabel('y_earth')\n", - "ax.set_zlabel('z_earth')\n", - "\n", - "plt.show()" - ] - } - ], - "metadata": { - "anaconda-cloud": {}, - "celltoolbar": "Raw Cell Format", - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.5.1" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} diff --git a/examples/examples_as_notebooks/example_008_ailerons_doublet.ipynb b/examples/examples_as_notebooks/example_008_ailerons_doublet.ipynb deleted file mode 100644 index 65031ca..0000000 --- a/examples/examples_as_notebooks/example_008_ailerons_doublet.ipynb +++ /dev/null @@ -1,386 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# EXAMPLE 008\n", - "\n", - "Cessna 172, ISA1976 integrated with Flat Earth (Euler angles).\n", - "\n", - "Evolution of the aircraft after a roll perturbation (delta doublet \n", - "applied on the ailerons).\n", - "\n", - "Trimmed in stationary, horizontal, symmetric, wings level flight." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# -*- coding: utf-8 -*-" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Import python libreries needed." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "%matplotlib inline\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "from mpl_toolkits.mplot3d import Axes3D" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Import PyFME classes" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "from pyfme.aircrafts import Cessna172\n", - "from pyfme.environment.environment import Environment\n", - "from pyfme.environment.atmosphere import ISA1976\n", - "from pyfme.environment.gravity import VerticalConstant\n", - "from pyfme.environment.wind import NoWind\n", - "from pyfme.models.systems import EulerFlatEarth\n", - "from pyfme.simulator import BatchSimulation\n", - "from pyfme.utils.trimmer import steady_state_flight_trimmer\n", - "from pyfme.utils.input_generator import doublet" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Initialize variables" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "aircraft = Cessna172()\n", - "atmosphere = ISA1976()\n", - "gravity = VerticalConstant()\n", - "wind = NoWind()\n", - "environment = Environment(atmosphere, gravity, wind)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Initial conditions" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "TAS = 45 # m/s\n", - "h0 = 2000 # m\n", - "psi0 = 1.0 # rad\n", - "x0, y0 = 0, 0 # m\n", - "turn_rate = 0.0 # rad/s\n", - "gamma0 = 0.0 # rad" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Define system" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "system = EulerFlatEarth(lat=0, lon=0, h=h0, psi=psi0, x_earth=x0, y_earth=y0)\n", - "\n", - "not_trimmed_controls = {'delta_elevator': 0.05,\n", - " 'delta_aileron': 0.01 * np.sign(turn_rate),\n", - " 'delta_rudder': 0.01 * np.sign(turn_rate),\n", - " 'delta_t': 0.5}\n", - "\n", - "controls2trim = ['delta_elevator', 'delta_aileron', 'delta_rudder', 'delta_t']" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "trimmed_ac, trimmed_sys, trimmed_env, results = steady_state_flight_trimmer(\n", - " aircraft, system, environment, TAS=TAS, controls_0=not_trimmed_controls,\n", - " controls2trim=controls2trim, gamma=gamma0, turn_rate=turn_rate, verbose=1)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Steady state flight trimmer results" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "print('delta_elevator = ',\"%8.4f\" % np.rad2deg(results['delta_elevator']), 'deg')\n", - "print('delta_aileron = ', \"%8.4f\" % np.rad2deg(results['delta_aileron']), 'deg')\n", - "print('delta_rudder = ', \"%8.4f\" % np.rad2deg(results['delta_rudder']), 'deg')\n", - "print('delta_t = ', \"%8.4f\" % results['delta_t'], '%')\n", - "print()\n", - "print('alpha = ', \"%8.4f\" % np.rad2deg(results['alpha']), 'deg')\n", - "print('beta = ', \"%8.4f\" % np.rad2deg(results['beta']), 'deg')\n", - "print()\n", - "print('u = ', \"%8.4f\" % results['u'], 'm/s')\n", - "print('v = ', \"%8.4f\" % results['v'], 'm/s')\n", - "print('w = ', \"%8.4f\" % results['w'], 'm/s')\n", - "print()\n", - "print('psi = ', \"%8.4f\" % np.rad2deg(psi0), 'deg')\n", - "print('theta = ', \"%8.4f\" % np.rad2deg(results['theta']), 'deg')\n", - "print('phi = ', \"%8.4f\" % np.rad2deg(results['phi']), 'deg')\n", - "print()\n", - "print('p =', \"%8.4f\" % results['p'], 'rad/s')\n", - "print('q =', \"%8.4f\" % results['q'], 'rad/s')\n", - "print('r =', \"%8.4f\" % results['r'], 'rad/s')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Initialise simulation" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "my_simulation = BatchSimulation(trimmed_ac, trimmed_sys, trimmed_env)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "tfin = 20 # seconds\n", - "N = tfin * 100 + 1\n", - "time = np.linspace(0, tfin, N)\n", - "initial_controls = trimmed_ac.controls" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "controls = {}\n", - "for control_name, control_value in initial_controls.items():\n", - " controls[control_name] = np.ones_like(time) * control_value" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Aileron doublet; Aileron travel: +20º/-15º" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "amplitude = np.deg2rad(15)\n", - "controls['delta_aileron'] = doublet(t_init=2,\n", - " T=1,\n", - " A=amplitude,\n", - " time=time,\n", - " offset=np.deg2rad(0))\n", - "# offset=initial_controls['delta_aileron'])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "my_simulation.set_controls(time, controls)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "par_list = ['x_earth', 'y_earth', 'height',\n", - " 'psi', 'theta', 'phi',\n", - " 'u', 'v', 'w',\n", - " 'v_north', 'v_east', 'v_down',\n", - " 'p', 'q', 'r',\n", - " 'alpha', 'beta', 'TAS',\n", - " 'F_xb', 'F_yb', 'F_zb',\n", - " 'M_xb', 'M_yb', 'M_zb']" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Run Simulation" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "my_simulation.set_par_dict(par_list)\n", - "my_simulation.run_simulation()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Plot results" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "plt.style.use('ggplot')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false, - "scrolled": false - }, - "outputs": [], - "source": [ - "for ii in range(len(par_list) // 3):\n", - " three_params = par_list[3 * ii:3 * ii + 3]\n", - " fig, ax = plt.subplots(3, 1, sharex=True)\n", - " for jj, par in enumerate(three_params):\n", - " ax[jj].plot(time, my_simulation.par_dict[par])\n", - " ax[jj].set_ylabel(par)\n", - " ax[jj].set_xlabel('time (s)')\n", - "\n", - "fig = plt.figure()\n", - "ax = Axes3D(fig)\n", - "ax.plot(my_simulation.par_dict['x_earth'],\n", - " my_simulation.par_dict['y_earth'],\n", - " my_simulation.par_dict['height'])\n", - "\n", - "ax.plot(my_simulation.par_dict['x_earth'],\n", - " my_simulation.par_dict['y_earth'],\n", - " my_simulation.par_dict['height'] * 0)\n", - "ax.set_xlabel('x_earth')\n", - "ax.set_ylabel('y_earth')\n", - "ax.set_zlabel('z_earth')\n", - "\n", - "plt.show()" - ] - } - ], - "metadata": { - "anaconda-cloud": {}, - "celltoolbar": "Raw Cell Format", - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.5.1" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} diff --git a/examples/examples_as_notebooks/example_009_elev_aile_rud_doublet.ipynb b/examples/examples_as_notebooks/example_009_elev_aile_rud_doublet.ipynb deleted file mode 100644 index e72dbbd..0000000 --- a/examples/examples_as_notebooks/example_009_elev_aile_rud_doublet.ipynb +++ /dev/null @@ -1,406 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# EXAMPLE 009\n", - "\n", - "Cessna 172, ISA1976 integrated with Flat Earth (Euler angles).\n", - "\n", - "Evolution of the aircraft after a pitch perturbation (delta doublet\n", - "applied to the elevator) at t=2, a roll perturbation (delta doublet\n", - "applied to the ailerons) at t=5 and a yaw perturbation (delta doublet\n", - "applied to the rudder) at t=10.\n", - "\n", - "Initially trimmed to a stationary, horizontal, symmetric, wings level\n", - "flight." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# -*- coding: utf-8 -*-" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Import python libreries needed." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "%matplotlib inline\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "from mpl_toolkits.mplot3d import Axes3D" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Import PyFME classes" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "from pyfme.aircrafts import Cessna172\n", - "from pyfme.environment.environment import Environment\n", - "from pyfme.environment.atmosphere import ISA1976\n", - "from pyfme.environment.gravity import VerticalConstant\n", - "from pyfme.environment.wind import NoWind\n", - "from pyfme.models.systems import EulerFlatEarth\n", - "from pyfme.simulator import BatchSimulation\n", - "from pyfme.utils.trimmer import steady_state_flight_trimmer\n", - "from pyfme.utils.input_generator import doublet" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Initialize variables" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "aircraft = Cessna172()\n", - "atmosphere = ISA1976()\n", - "gravity = VerticalConstant()\n", - "wind = NoWind()\n", - "environment = Environment(atmosphere, gravity, wind)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Initial conditions" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "TAS = 45 # m/s\n", - "h0 = 2000 # m\n", - "psi0 = 1 # rad\n", - "x0, y0 = 0, 0 # m\n", - "turn_rate = 0.0 # rad/s\n", - "gamma0 = 0.00 # rad" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Define system" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "system = EulerFlatEarth(lat=0, lon=0, h=h0, psi=psi0, x_earth=x0, y_earth=y0)\n", - "\n", - "not_trimmed_controls = {'delta_elevator': 0.0,\n", - " 'delta_aileron': 0.01 * np.sign(turn_rate),\n", - " 'delta_rudder': 0.01 * np.sign(turn_rate),\n", - " 'delta_t': 0.5}\n", - "\n", - "controls2trim = ['delta_elevator', 'delta_aileron', 'delta_rudder', 'delta_t']" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "trimmed_ac, trimmed_sys, trimmed_env, results = steady_state_flight_trimmer(\n", - " aircraft, system, environment, TAS=TAS, controls_0=not_trimmed_controls,\n", - " controls2trim=controls2trim, gamma=gamma0, turn_rate=turn_rate, verbose=1)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Steady state flight trimmer results" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "print('delta_elevator = ',\"%8.4f\" % np.rad2deg(results['delta_elevator']), 'deg')\n", - "print('delta_aileron = ', \"%8.4f\" % np.rad2deg(results['delta_aileron']), 'deg')\n", - "print('delta_rudder = ', \"%8.4f\" % np.rad2deg(results['delta_rudder']), 'deg')\n", - "print('delta_t = ', \"%8.4f\" % results['delta_t'], '%')\n", - "print()\n", - "print('alpha = ', \"%8.4f\" % np.rad2deg(results['alpha']), 'deg')\n", - "print('beta = ', \"%8.4f\" % np.rad2deg(results['beta']), 'deg')\n", - "print()\n", - "print('u = ', \"%8.4f\" % results['u'], 'm/s')\n", - "print('v = ', \"%8.4f\" % results['v'], 'm/s')\n", - "print('w = ', \"%8.4f\" % results['w'], 'm/s')\n", - "print()\n", - "print('psi = ', \"%8.4f\" % np.rad2deg(psi0), 'deg')\n", - "print('theta = ', \"%8.4f\" % np.rad2deg(results['theta']), 'deg')\n", - "print('phi = ', \"%8.4f\" % np.rad2deg(results['phi']), 'deg')\n", - "print()\n", - "print('p =', \"%8.4f\" % results['p'], 'rad/s')\n", - "print('q =', \"%8.4f\" % results['q'], 'rad/s')\n", - "print('r =', \"%8.4f\" % results['r'], 'rad/s')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Initialise simulation" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "my_simulation = BatchSimulation(trimmed_ac, trimmed_sys, trimmed_env)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "tfin = 15 # seconds\n", - "N = tfin * 100 + 1\n", - "time = np.linspace(0, tfin, N)\n", - "initial_controls = trimmed_ac.controls" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "controls = {}\n", - "for control_name, control_value in initial_controls.items():\n", - " controls[control_name] = np.ones_like(time) * control_value" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "* Elevator, aileron and rudder doublets\n", - "* Elevator max travel: +28º/-26º\n", - "* Aileron max travel: +20º/-15º\n", - "* Rudder max travel: +16º/-16º" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "amplitude_elev = np.deg2rad(26)\n", - "controls['delta_elevator'] = initial_controls['delta_elevator'] + \\\n", - " doublet(t_init=2,\n", - " T=2,\n", - " A=amplitude_elev,\n", - " time=time,\n", - " offset=np.deg2rad(0.0))\n", - "\n", - "amplitude_aile = np.deg2rad(15)\n", - "controls['delta_aileron'] = doublet(t_init=5,\n", - " T=2,\n", - " A=amplitude_aile,\n", - " time=time,\n", - " offset=np.deg2rad(0.0))\n", - "\n", - "amplitude_rud = np.deg2rad(32)\n", - "controls['delta_rudder'] = doublet(t_init=10,\n", - " T=2,\n", - " A=amplitude_rud,\n", - " time=time,\n", - " offset=np.deg2rad(0.0))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "my_simulation.set_controls(time, controls)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "par_list = ['x_earth', 'y_earth', 'height',\n", - " 'psi', 'theta', 'phi',\n", - " 'u', 'v', 'w',\n", - " 'v_north', 'v_east', 'v_down',\n", - " 'p', 'q', 'r',\n", - " 'alpha', 'beta', 'TAS',\n", - " 'F_xb', 'F_yb', 'F_zb',\n", - " 'M_xb', 'M_yb', 'M_zb']" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Run Simulation" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "my_simulation.set_par_dict(par_list)\n", - "my_simulation.run_simulation()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Plot results" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "plt.style.use('ggplot')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false, - "scrolled": false - }, - "outputs": [], - "source": [ - "for ii in range(len(par_list) // 3):\n", - " three_params = par_list[3 * ii:3 * ii + 3]\n", - " fig, ax = plt.subplots(3, 1, sharex=True)\n", - " for jj, par in enumerate(three_params):\n", - " ax[jj].plot(time, my_simulation.par_dict[par])\n", - " ax[jj].set_ylabel(par)\n", - " ax[jj].set_xlabel('time (s)')\n", - "\n", - "fig = plt.figure()\n", - "ax = Axes3D(fig)\n", - "ax.plot(my_simulation.par_dict['x_earth'],\n", - " my_simulation.par_dict['y_earth'],\n", - " my_simulation.par_dict['height'])\n", - "\n", - "ax.plot(my_simulation.par_dict['x_earth'],\n", - " my_simulation.par_dict['y_earth'],\n", - " my_simulation.par_dict['height'] * 0)\n", - "ax.set_xlabel('x_earth')\n", - "ax.set_ylabel('y_earth')\n", - "ax.set_zlabel('z_earth')\n", - "\n", - "plt.show()" - ] - } - ], - "metadata": { - "anaconda-cloud": {}, - "celltoolbar": "Raw Cell Format", - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.5.1" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} diff --git a/examples/examples_as_scripts/example_000_no_controls.py b/examples/examples_as_scripts/example_000_no_controls.py deleted file mode 100644 index 024ce54..0000000 --- a/examples/examples_as_scripts/example_000_no_controls.py +++ /dev/null @@ -1,129 +0,0 @@ -# -*- coding: utf-8 -*- -""" -Python Flight Mechanics Engine (PyFME). -Copyright (c) AeroPython Development Team. -Distributed under the terms of the MIT License. - -Example 000 -------- - -Cessna 172, ISA1976 integrated with Flat Earth (Euler angles). - -Evolution of the aircraft with no deflecion of control surfaces. - -Initially trimmed. -""" - -import numpy as np -import matplotlib.pyplot as plt -from mpl_toolkits.mplot3d import Axes3D - -from pyfme.aircrafts import Cessna172, Cessna310 -from pyfme.environment.environment import Environment -from pyfme.environment.atmosphere import ISA1976 -from pyfme.environment.gravity import VerticalConstant -from pyfme.environment.wind import NoWind -from pyfme.models import EulerFlatEarth -from pyfme.models.systems import System -from pyfme.simulator import Simulation - -from pyfme.utils.input_generator import Constant, Harmonic, Doublet, Step, Ramp - -aircraft = Cessna172() -atmosphere = ISA1976() -gravity = VerticalConstant() -wind = NoWind() -environment = Environment(atmosphere, gravity, wind) - -# Initial conditions. -TAS = 45 # m/s -h0 = 2000 # m -psi0 = 1.0 # rad -x0, y0 = 0, 0 # m -turn_rate = 0.0 # rad/s -gamma0 = 0.0 # rad - -system = System(EulerFlatEarth()) - -simulation = Simulation(aircraft, system, environment) - -not_trimmed_controls = {'delta_elevator': 0.05, - 'hor_tail_incidence': 0.0, - 'delta_aileron': 0.01 * np.sign(turn_rate), - 'delta_rudder': 0.01 * np.sign(turn_rate), - 'delta_t': 0.5} -simulation.trim_aircraft((0, 0, h0), TAS, gamma0, turn_rate, - not_trimmed_controls, psi0) - -trimmed_controls = simulation.aircraft.controls - -simulation.controls = {'delta_elevator': - Doublet( - 2, 0.5, 0.1, - trimmed_controls['delta_elevator'] - ), - 'delta_aileron': - Constant(trimmed_controls['delta_aileron']), - 'delta_rudder': - Constant(trimmed_controls['delta_rudder']), - 'delta_t': - Constant(trimmed_controls['delta_t']) - } - -tfin = 20 # seconds - -simulation.propagate(tfin) - -kwargs = {'marker':'.'} - -simulation.results.plot(y=['x_earth', 'y_earth', 'height'], - subplots=True, - layout=(3, 1), - sharex=True, - **kwargs) - -simulation.results.plot(y=['psi', 'theta', 'phi'], - subplots=True, - layout=(3, 1), - sharex=True, - **kwargs) - -simulation.results.plot(y=['v_north', 'v_east', 'v_down'], - subplots=True, - layout=(3, 1), - sharex=True, - **kwargs) - -simulation.results.plot(y=['p', 'q', 'r'], - subplots=True, - layout=(3, 1), - sharex=True, - **kwargs) - -simulation.results.plot(y=['alpha', 'beta', 'TAS'], - subplots=True, - layout=(3, 1), - sharex=True, - **kwargs) - -simulation.results.plot(y=['Fx', 'Fy', 'Fz'], - subplots=True, - layout=(3, 1), - sharex=True, - **kwargs) - -simulation.results.plot(y=['Mx', 'My', 'Mz'], - subplots=True, - layout=(3, 1), - sharex=True, - **kwargs) - -simulation.results.plot(y=['elevator', 'aileron', 'rudder', 'thrust'], - subplots=True, - layout=(4, 1), - sharex=True, - **kwargs) - -print(simulation.results) - -plt.show() diff --git a/examples/examples_as_scripts/example_001_stationary_horizontal.py b/examples/examples_as_scripts/example_001_stationary_horizontal.py deleted file mode 100644 index d93564b..0000000 --- a/examples/examples_as_scripts/example_001_stationary_horizontal.py +++ /dev/null @@ -1,126 +0,0 @@ -# -*- coding: utf-8 -*- -""" -Python Flight Mechanics Engine (PyFME). -Copyright (c) AeroPython Development Team. -Distributed under the terms of the MIT License. - -Example 001 -------- - -Cessna 172, ISA1976 integrated with Flat Earth (Euler angles). - -Example with trimmed aircraft: stationary, horizontal, symmetric, -wings level flight. - -The purpose of this example is to check if during the aircraft's -evolution it maintains the initially trimmed flight condition. -""" - -import numpy as np -import matplotlib.pyplot as plt -from mpl_toolkits.mplot3d import Axes3D - -from pyfme.aircrafts import Cessna172 -from pyfme.environment.environment import Environment -from pyfme.environment.atmosphere import ISA1976 -from pyfme.environment.gravity import VerticalConstant -from pyfme.environment.wind import NoWind -from pyfme.models.systems import EulerFlatEarth -from pyfme.simulator import BatchSimulation -from pyfme.utils.trimmer import steady_state_flight_trimmer - -aircraft = Cessna172() -atmosphere = ISA1976() -gravity = VerticalConstant() -wind = NoWind() -environment = Environment(atmosphere, gravity, wind) - -# Initial conditions. -TAS = 45 # m/s -h0 = 2000 # m -psi0 = 1.0 # rad -x0, y0 = 0, 0 # m -turn_rate = 0.0 # rad/s -gamma0 = 0.0 # rad - -system = EulerFlatEarth(lat=0, lon=0, h=h0, psi=psi0, x_earth=x0, y_earth=y0) - -not_trimmed_controls = {'delta_elevator': 0.05, - 'delta_aileron': 0.01 * np.sign(turn_rate), - 'delta_rudder': 0.01 * np.sign(turn_rate), - 'delta_t': 0.5} - -controls2trim = ['delta_elevator', 'delta_aileron', 'delta_rudder', 'delta_t'] - -trimmed_ac, trimmed_sys, trimmed_env, results = steady_state_flight_trimmer( - aircraft, system, environment, TAS=TAS, controls_0=not_trimmed_controls, - controls2trim=controls2trim, gamma=gamma0, turn_rate=turn_rate, verbose=1) - -print() -print('delta_elev = ', "%8.4f" % np.rad2deg(results['delta_elevator']), 'deg') -print('delta_aile = ', "%8.4f" % np.rad2deg(results['delta_aileron']), 'deg') -print('delta_rud = ', "%8.4f" % np.rad2deg(results['delta_rudder']), 'deg') -print('delta_t = ', "%8.4f" % results['delta_t'], '%', '\n') -print('alpha = ', "%8.4f" % np.rad2deg(results['alpha']), 'deg') -print('beta = ', "%8.4f" % np.rad2deg(results['beta']), 'deg', '\n') -print('u = ', "%8.4f" % results['u'], 'm/s') -print('v = ', "%8.4f" % results['v'], 'm/s') -print('w = ', "%8.4f" % results['w'], 'm/s', '\n') -print('psi = ', "%8.4f" % np.rad2deg(psi0), 'deg') -print('theta = ', "%8.4f" % np.rad2deg(results['theta']), 'deg') -print('phi = ', "%8.4f" % np.rad2deg(results['phi']), 'deg', '\n') -print('p =', "%8.4f" % results['p'], 'rad/s') -print('q =', "%8.4f" % results['q'], 'rad/s') -print('r =', "%8.4f" % results['r'], 'rad/s') - -my_simulation = BatchSimulation(trimmed_ac, trimmed_sys, trimmed_env) - -tfin = 10 # seconds -N = tfin * 100 + 1 -time = np.linspace(0, tfin, N) -initial_controls = trimmed_ac.controls - -controls = {} -for control_name, control_value in initial_controls.items(): - controls[control_name] = np.ones_like(time) * control_value - -my_simulation.set_controls(time, controls) - -par_list = ['x_earth', 'y_earth', 'height', - 'psi', 'theta', 'phi', - 'u', 'v', 'w', - 'v_north', 'v_east', 'v_down', - 'p', 'q', 'r', - 'alpha', 'beta', 'TAS', - 'F_xb', 'F_yb', 'F_zb', - 'M_xb', 'M_yb', 'M_zb'] - -my_simulation.set_par_dict(par_list) -my_simulation.run_simulation() - -# print(my_simulation.par_dict) - -plt.style.use('ggplot') - -for ii in range(len(par_list) // 3): - three_params = par_list[3 * ii:3 * ii + 3] - fig, ax = plt.subplots(3, 1, sharex=True) - for jj, par in enumerate(three_params): - ax[jj].plot(time, my_simulation.par_dict[par]) - ax[jj].set_ylabel(par) - ax[jj].set_xlabel('time (s)') - -fig = plt.figure() -ax = Axes3D(fig) -ax.plot(my_simulation.par_dict['x_earth'], - my_simulation.par_dict['y_earth'], - my_simulation.par_dict['height']) - -ax.plot(my_simulation.par_dict['x_earth'], - my_simulation.par_dict['y_earth'], - my_simulation.par_dict['height'] * 0) -ax.set_xlabel('x_earth') -ax.set_ylabel('y_earth') -ax.set_zlabel('z_earth') - -plt.show() diff --git a/examples/examples_as_scripts/example_002_stationary_descent.py b/examples/examples_as_scripts/example_002_stationary_descent.py deleted file mode 100644 index ca9b32a..0000000 --- a/examples/examples_as_scripts/example_002_stationary_descent.py +++ /dev/null @@ -1,126 +0,0 @@ -# -*- coding: utf-8 -*- -""" -Python Flight Mechanics Engine (PyFME). -Copyright (c) AeroPython Development Team. -Distributed under the terms of the MIT License. - -Example 002 -------- - -Cessna 172, ISA1976 integrated with Flat Earth (Euler angles). - -Example with trimmed aircraft: stationary descent, symmetric, wings -level flight. - -The purpose of this example is to check if during the aircraft's -evolution it maintains the initially trimmed flight condition. -""" - -import numpy as np -import matplotlib.pyplot as plt -from mpl_toolkits.mplot3d import Axes3D - -from pyfme.aircrafts import Cessna172 -from pyfme.environment.environment import Environment -from pyfme.environment.atmosphere import ISA1976 -from pyfme.environment.gravity import VerticalConstant -from pyfme.environment.wind import NoWind -from pyfme.models.systems import EulerFlatEarth -from pyfme.simulator import BatchSimulation -from pyfme.utils.trimmer import steady_state_flight_trimmer - -aircraft = Cessna172() -atmosphere = ISA1976() -gravity = VerticalConstant() -wind = NoWind() -environment = Environment(atmosphere, gravity, wind) - -# Initial conditions. -TAS = 45 # m/s -h0 = 2000 # m -psi0 = 1.0 # rad -x0, y0 = 0, 0 # m -turn_rate = 0.0 # rad/s -gamma0 = -0.1 # rad - -system = EulerFlatEarth(lat=0, lon=0, h=h0, psi=psi0, x_earth=x0, y_earth=y0) - -not_trimmed_controls = {'delta_elevator': 0.05, - 'delta_aileron': 0.01 * np.sign(turn_rate), - 'delta_rudder': 0.01 * np.sign(turn_rate), - 'delta_t': 0.5} - -controls2trim = ['delta_elevator', 'delta_aileron', 'delta_rudder', 'delta_t'] - -trimmed_ac, trimmed_sys, trimmed_env, results = steady_state_flight_trimmer( - aircraft, system, environment, TAS=TAS, controls_0=not_trimmed_controls, - controls2trim=controls2trim, gamma=gamma0, turn_rate=turn_rate, verbose=1) - -print() -print('delta_elev = ', "%8.4f" % np.rad2deg(results['delta_elevator']), 'deg') -print('delta_aile = ', "%8.4f" % np.rad2deg(results['delta_aileron']), 'deg') -print('delta_rud = ', "%8.4f" % np.rad2deg(results['delta_rudder']), 'deg') -print('delta_t = ', "%8.4f" % results['delta_t'], '%', '\n') -print('alpha = ', "%8.4f" % np.rad2deg(results['alpha']), 'deg') -print('beta = ', "%8.4f" % np.rad2deg(results['beta']), 'deg', '\n') -print('u = ', "%8.4f" % results['u'], 'm/s') -print('v = ', "%8.4f" % results['v'], 'm/s') -print('w = ', "%8.4f" % results['w'], 'm/s', '\n') -print('psi = ', "%8.4f" % np.rad2deg(psi0), 'deg') -print('theta = ', "%8.4f" % np.rad2deg(results['theta']), 'deg') -print('phi = ', "%8.4f" % np.rad2deg(results['phi']), 'deg', '\n') -print('p =', "%8.4f" % results['p'], 'rad/s') -print('q =', "%8.4f" % results['q'], 'rad/s') -print('r =', "%8.4f" % results['r'], 'rad/s') - -my_simulation = BatchSimulation(trimmed_ac, trimmed_sys, trimmed_env) - -tfin = 150 # seconds -N = tfin * 100 + 1 -time = np.linspace(0, tfin, N) -initial_controls = trimmed_ac.controls - -controls = {} -for control_name, control_value in initial_controls.items(): - controls[control_name] = np.ones_like(time) * control_value - -my_simulation.set_controls(time, controls) - -par_list = ['x_earth', 'y_earth', 'height', - 'psi', 'theta', 'phi', - 'u', 'v', 'w', - 'v_north', 'v_east', 'v_down', - 'p', 'q', 'r', - 'alpha', 'beta', 'TAS', - 'F_xb', 'F_yb', 'F_zb', - 'M_xb', 'M_yb', 'M_zb'] - -my_simulation.set_par_dict(par_list) -my_simulation.run_simulation() - -# print(my_simulation.par_dict) - -plt.style.use('ggplot') - -for ii in range(len(par_list) // 3): - three_params = par_list[3 * ii:3 * ii + 3] - fig, ax = plt.subplots(3, 1, sharex=True) - for jj, par in enumerate(three_params): - ax[jj].plot(time, my_simulation.par_dict[par]) - ax[jj].set_ylabel(par) - ax[jj].set_xlabel('time (s)') - -fig = plt.figure() -ax = Axes3D(fig) -ax.plot(my_simulation.par_dict['x_earth'], - my_simulation.par_dict['y_earth'], - my_simulation.par_dict['height']) - -ax.plot(my_simulation.par_dict['x_earth'], - my_simulation.par_dict['y_earth'], - my_simulation.par_dict['height'] * 0) -ax.set_xlabel('x_earth') -ax.set_ylabel('y_earth') -ax.set_zlabel('z_earth') - -plt.show() diff --git a/examples/examples_as_scripts/example_003_stationary_ascent.py b/examples/examples_as_scripts/example_003_stationary_ascent.py deleted file mode 100644 index f78fbf0..0000000 --- a/examples/examples_as_scripts/example_003_stationary_ascent.py +++ /dev/null @@ -1,126 +0,0 @@ -# -*- coding: utf-8 -*- -""" -Python Flight Mechanics Engine (PyFME). -Copyright (c) AeroPython Development Team. -Distributed under the terms of the MIT License. - -Example 003 -------- - -Cessna 172, ISA1976 integrated with Flat Earth (Euler angles). - -Example with trimmed aircraft: stationary ascent, symmetric, wings -level flight. - -The purpose of this example is to check if during the aircraft's -evolution it maintains the initially trimmed flight condition. -""" - -import numpy as np -import matplotlib.pyplot as plt -from mpl_toolkits.mplot3d import Axes3D - -from pyfme.aircrafts import Cessna172 -from pyfme.environment.environment import Environment -from pyfme.environment.atmosphere import ISA1976 -from pyfme.environment.gravity import VerticalConstant -from pyfme.environment.wind import NoWind -from pyfme.models.systems import EulerFlatEarth -from pyfme.simulator import BatchSimulation -from pyfme.utils.trimmer import steady_state_flight_trimmer - -aircraft = Cessna172() -atmosphere = ISA1976() -gravity = VerticalConstant() -wind = NoWind() -environment = Environment(atmosphere, gravity, wind) - -# Initial conditions. -TAS = 45 # m/s -h0 = 2000 # m -psi0 = 1.0 # rad -x0, y0 = 0, 0 # m -turn_rate = 0.0 # rad/s -gamma0 = 0.1 # rad - -system = EulerFlatEarth(lat=0, lon=0, h=h0, psi=psi0, x_earth=x0, y_earth=y0) - -not_trimmed_controls = {'delta_elevator': 0.05, - 'delta_aileron': 0.01 * np.sign(turn_rate), - 'delta_rudder': 0.01 * np.sign(turn_rate), - 'delta_t': 0.5} - -controls2trim = ['delta_elevator', 'delta_aileron', 'delta_rudder', 'delta_t'] - -trimmed_ac, trimmed_sys, trimmed_env, results = steady_state_flight_trimmer( - aircraft, system, environment, TAS=TAS, controls_0=not_trimmed_controls, - controls2trim=controls2trim, gamma=gamma0, turn_rate=turn_rate, verbose=1) - -print() -print('delta_elev = ', "%8.4f" % np.rad2deg(results['delta_elevator']), 'deg') -print('delta_aile = ', "%8.4f" % np.rad2deg(results['delta_aileron']), 'deg') -print('delta_rud = ', "%8.4f" % np.rad2deg(results['delta_rudder']), 'deg') -print('delta_t = ', "%8.4f" % results['delta_t'], '%', '\n') -print('alpha = ', "%8.4f" % np.rad2deg(results['alpha']), 'deg') -print('beta = ', "%8.4f" % np.rad2deg(results['beta']), 'deg', '\n') -print('u = ', "%8.4f" % results['u'], 'm/s') -print('v = ', "%8.4f" % results['v'], 'm/s') -print('w = ', "%8.4f" % results['w'], 'm/s', '\n') -print('psi = ', "%8.4f" % np.rad2deg(psi0), 'deg') -print('theta = ', "%8.4f" % np.rad2deg(results['theta']), 'deg') -print('phi = ', "%8.4f" % np.rad2deg(results['phi']), 'deg', '\n') -print('p =', "%8.4f" % results['p'], 'rad/s') -print('q =', "%8.4f" % results['q'], 'rad/s') -print('r =', "%8.4f" % results['r'], 'rad/s') - -my_simulation = BatchSimulation(trimmed_ac, trimmed_sys, trimmed_env) - -tfin = 150 # seconds -N = tfin * 100 + 1 -time = np.linspace(0, tfin, N) -initial_controls = trimmed_ac.controls - -controls = {} -for control_name, control_value in initial_controls.items(): - controls[control_name] = np.ones_like(time) * control_value - -my_simulation.set_controls(time, controls) - -par_list = ['x_earth', 'y_earth', 'height', - 'psi', 'theta', 'phi', - 'u', 'v', 'w', - 'v_north', 'v_east', 'v_down', - 'p', 'q', 'r', - 'alpha', 'beta', 'TAS', - 'F_xb', 'F_yb', 'F_zb', - 'M_xb', 'M_yb', 'M_zb'] - -my_simulation.set_par_dict(par_list) -my_simulation.run_simulation() - -# print(my_simulation.par_dict) - -plt.style.use('ggplot') - -for ii in range(len(par_list) // 3): - three_params = par_list[3 * ii:3 * ii + 3] - fig, ax = plt.subplots(3, 1, sharex=True) - for jj, par in enumerate(three_params): - ax[jj].plot(time, my_simulation.par_dict[par]) - ax[jj].set_ylabel(par) - ax[jj].set_xlabel('time (s)') - -fig = plt.figure() -ax = Axes3D(fig) -ax.plot(my_simulation.par_dict['x_earth'], - my_simulation.par_dict['y_earth'], - my_simulation.par_dict['height']) - -ax.plot(my_simulation.par_dict['x_earth'], - my_simulation.par_dict['y_earth'], - my_simulation.par_dict['height'] * 0) -ax.set_xlabel('x_earth') -ax.set_ylabel('y_earth') -ax.set_zlabel('z_earth') - -plt.show() diff --git a/examples/examples_as_scripts/example_004_stationary_horizontal_turn.py b/examples/examples_as_scripts/example_004_stationary_horizontal_turn.py deleted file mode 100644 index fdf35ab..0000000 --- a/examples/examples_as_scripts/example_004_stationary_horizontal_turn.py +++ /dev/null @@ -1,125 +0,0 @@ -# -*- coding: utf-8 -*- -""" -Python Flight Mechanics Engine (PyFME). -Copyright (c) AeroPython Development Team. -Distributed under the terms of the MIT License. - -Example 004 -------- - -Cessna 172, ISA1976 integrated with Flat Earth (Euler angles). - -Example with trimmed aircraft: stationary, horizontal turn. - -The purpose of this example is to check if during the aircraft's -evolution it maintains the initially trimmed flight condition. -""" - -import numpy as np -import matplotlib.pyplot as plt -from mpl_toolkits.mplot3d import Axes3D - -from pyfme.aircrafts import Cessna172 -from pyfme.environment.environment import Environment -from pyfme.environment.atmosphere import ISA1976 -from pyfme.environment.gravity import VerticalConstant -from pyfme.environment.wind import NoWind -from pyfme.models.systems import EulerFlatEarth -from pyfme.simulator import BatchSimulation -from pyfme.utils.trimmer import steady_state_flight_trimmer - -aircraft = Cessna172() -atmosphere = ISA1976() -gravity = VerticalConstant() -wind = NoWind() -environment = Environment(atmosphere, gravity, wind) - -# Initial conditions. -TAS = 45 # m/s -h0 = 3000 # m -psi0 = 1.0 # rad -x0, y0 = 0, 0 # m -turn_rate = 0.005 # rad/s -gamma0 = 0.0 # rad - -system = EulerFlatEarth(lat=0, lon=0, h=h0, psi=psi0, x_earth=x0, y_earth=y0) - -not_trimmed_controls = {'delta_elevator': 0.05, - 'delta_aileron': 0.01 * np.sign(turn_rate), - 'delta_rudder': 0.01 * np.sign(turn_rate), - 'delta_t': 0.5} - -controls2trim = ['delta_elevator', 'delta_aileron', 'delta_rudder', 'delta_t'] - -trimmed_ac, trimmed_sys, trimmed_env, results = steady_state_flight_trimmer( - aircraft, system, environment, TAS=TAS, controls_0=not_trimmed_controls, - controls2trim=controls2trim, gamma=gamma0, turn_rate=turn_rate, verbose=1) - -print() -print('delta_elev = ', "%8.4f" % np.rad2deg(results['delta_elevator']), 'deg') -print('delta_aile = ', "%8.4f" % np.rad2deg(results['delta_aileron']), 'deg') -print('delta_rud = ', "%8.4f" % np.rad2deg(results['delta_rudder']), 'deg') -print('delta_t = ', "%8.4f" % results['delta_t'], '%', '\n') -print('alpha = ', "%8.4f" % np.rad2deg(results['alpha']), 'deg') -print('beta = ', "%8.4f" % np.rad2deg(results['beta']), 'deg', '\n') -print('u = ', "%8.4f" % results['u'], 'm/s') -print('v = ', "%8.4f" % results['v'], 'm/s') -print('w = ', "%8.4f" % results['w'], 'm/s', '\n') -print('psi = ', "%8.4f" % np.rad2deg(psi0), 'deg') -print('theta = ', "%8.4f" % np.rad2deg(results['theta']), 'deg') -print('phi = ', "%8.4f" % np.rad2deg(results['phi']), 'deg', '\n') -print('p =', "%8.4f" % results['p'], 'rad/s') -print('q =', "%8.4f" % results['q'], 'rad/s') -print('r =', "%8.4f" % results['r'], 'rad/s') - -my_simulation = BatchSimulation(trimmed_ac, trimmed_sys, trimmed_env) - -tfin = 100 # seconds -N = tfin * 100 + 1 -time = np.linspace(0, tfin, N) -initial_controls = trimmed_ac.controls - -controls = {} -for control_name, control_value in initial_controls.items(): - controls[control_name] = np.ones_like(time) * control_value - -my_simulation.set_controls(time, controls) - -par_list = ['x_earth', 'y_earth', 'height', - 'psi', 'theta', 'phi', - 'u', 'v', 'w', - 'v_north', 'v_east', 'v_down', - 'p', 'q', 'r', - 'alpha', 'beta', 'TAS', - 'F_xb', 'F_yb', 'F_zb', - 'M_xb', 'M_yb', 'M_zb'] - -my_simulation.set_par_dict(par_list) -my_simulation.run_simulation() - -# print(my_simulation.par_dict) - -plt.style.use('ggplot') - -for ii in range(len(par_list) // 3): - three_params = par_list[3 * ii:3 * ii + 3] - fig, ax = plt.subplots(3, 1, sharex=True) - for jj, par in enumerate(three_params): - ax[jj].plot(time, my_simulation.par_dict[par]) - ax[jj].set_ylabel(par) - ax[jj].set_xlabel('time (s)') - -fig = plt.figure() -ax = Axes3D(fig) -ax.plot(my_simulation.par_dict['x_earth'], - my_simulation.par_dict['y_earth'], - my_simulation.par_dict['height']) - -ax.plot(my_simulation.par_dict['x_earth'], - my_simulation.par_dict['y_earth'], - my_simulation.par_dict['height'] * 0) -ax.set_xlabel('x_earth') -ax.set_ylabel('y_earth') -ax.set_zlabel('z_earth') - -plt.show() diff --git a/examples/examples_as_scripts/example_005_stationary_turn_during_ascent.py b/examples/examples_as_scripts/example_005_stationary_turn_during_ascent.py deleted file mode 100644 index 3f3672b..0000000 --- a/examples/examples_as_scripts/example_005_stationary_turn_during_ascent.py +++ /dev/null @@ -1,125 +0,0 @@ -# -*- coding: utf-8 -*- -""" -Python Flight Mechanics Engine (PyFME). -Copyright (c) AeroPython Development Team. -Distributed under the terms of the MIT License. - -Example 005 -------- - -Cessna 172, ISA1976 integrated with Flat Earth (Euler angles). - -Example with trimmed aircraft: stationary, turn during ascent. - -The purpose of this example is to check if during the aircraft's -evolution it maintains the initially trimmed flight condition. -""" - -import numpy as np -import matplotlib.pyplot as plt -from mpl_toolkits.mplot3d import Axes3D - -from pyfme.aircrafts import Cessna172 -from pyfme.environment.environment import Environment -from pyfme.environment.atmosphere import ISA1976 -from pyfme.environment.gravity import VerticalConstant -from pyfme.environment.wind import NoWind -from pyfme.models.systems import EulerFlatEarth -from pyfme.simulator import BatchSimulation -from pyfme.utils.trimmer import steady_state_flight_trimmer - -aircraft = Cessna172() -atmosphere = ISA1976() -gravity = VerticalConstant() -wind = NoWind() -environment = Environment(atmosphere, gravity, wind) - -# Initial conditions. -TAS = 45 # m/s -h0 = 3000 # m -psi0 = 1.0 # rad -x0, y0 = 0, 0 # m -turn_rate = 0.25 # rad/s -gamma0 = 0.05 # rad - -system = EulerFlatEarth(lat=0, lon=0, h=h0, psi=psi0, x_earth=x0, y_earth=y0) - -not_trimmed_controls = {'delta_elevator': 0.05, - 'delta_aileron': 0.01 * np.sign(turn_rate), - 'delta_rudder': 0.01 * np.sign(turn_rate), - 'delta_t': 0.5} - -controls2trim = ['delta_elevator', 'delta_aileron', 'delta_rudder', 'delta_t'] - -trimmed_ac, trimmed_sys, trimmed_env, results = steady_state_flight_trimmer( - aircraft, system, environment, TAS=TAS, controls_0=not_trimmed_controls, - controls2trim=controls2trim, gamma=gamma0, turn_rate=turn_rate, verbose=1) - -print() -print('delta_elev = ', "%8.4f" % np.rad2deg(results['delta_elevator']), 'deg') -print('delta_aile = ', "%8.4f" % np.rad2deg(results['delta_aileron']), 'deg') -print('delta_rud = ', "%8.4f" % np.rad2deg(results['delta_rudder']), 'deg') -print('delta_t = ', "%8.4f" % results['delta_t'], '%', '\n') -print('alpha = ', "%8.4f" % np.rad2deg(results['alpha']), 'deg') -print('beta = ', "%8.4f" % np.rad2deg(results['beta']), 'deg', '\n') -print('u = ', "%8.4f" % results['u'], 'm/s') -print('v = ', "%8.4f" % results['v'], 'm/s') -print('w = ', "%8.4f" % results['w'], 'm/s', '\n') -print('psi = ', "%8.4f" % np.rad2deg(psi0), 'deg') -print('theta = ', "%8.4f" % np.rad2deg(results['theta']), 'deg') -print('phi = ', "%8.4f" % np.rad2deg(results['phi']), 'deg', '\n') -print('p =', "%8.4f" % results['p'], 'rad/s') -print('q =', "%8.4f" % results['q'], 'rad/s') -print('r =', "%8.4f" % results['r'], 'rad/s') - -my_simulation = BatchSimulation(trimmed_ac, trimmed_sys, trimmed_env) - -tfin = 80 # seconds -N = tfin * 100 + 1 -time = np.linspace(0, tfin, N) -initial_controls = trimmed_ac.controls - -controls = {} -for control_name, control_value in initial_controls.items(): - controls[control_name] = np.ones_like(time) * control_value - -my_simulation.set_controls(time, controls) - -par_list = ['x_earth', 'y_earth', 'height', - 'psi', 'theta', 'phi', - 'u', 'v', 'w', - 'v_north', 'v_east', 'v_down', - 'p', 'q', 'r', - 'alpha', 'beta', 'TAS', - 'F_xb', 'F_yb', 'F_zb', - 'M_xb', 'M_yb', 'M_zb'] - -my_simulation.set_par_dict(par_list) -my_simulation.run_simulation() - -# print(my_simulation.par_dict) - -plt.style.use('ggplot') - -for ii in range(len(par_list) // 3): - three_params = par_list[3 * ii:3 * ii + 3] - fig, ax = plt.subplots(3, 1, sharex=True) - for jj, par in enumerate(three_params): - ax[jj].plot(time, my_simulation.par_dict[par]) - ax[jj].set_ylabel(par) - ax[jj].set_xlabel('time (s)') - -fig = plt.figure() -ax = Axes3D(fig) -ax.plot(my_simulation.par_dict['x_earth'], - my_simulation.par_dict['y_earth'], - my_simulation.par_dict['height']) - -ax.plot(my_simulation.par_dict['x_earth'], - my_simulation.par_dict['y_earth'], - my_simulation.par_dict['height'] * 0) -ax.set_xlabel('x_earth') -ax.set_ylabel('y_earth') -ax.set_zlabel('z_earth') - -plt.show() diff --git a/examples/examples_as_scripts/example_006_elevator_doublet.py b/examples/examples_as_scripts/example_006_elevator_doublet.py deleted file mode 100644 index 6b2a577..0000000 --- a/examples/examples_as_scripts/example_006_elevator_doublet.py +++ /dev/null @@ -1,136 +0,0 @@ -# -*- coding: utf-8 -*- -""" -Python Flight Mechanics Engine (PyFME). -Copyright (c) AeroPython Development Team. -Distributed under the terms of the MIT License. - -Example 006 -------- - -Cessna 172, ISA1976 integrated with Flat Earth (Euler angles). - -Evolution of the aircraft after a pitch perturbation (delta doublet -applied to the elevator) at t=1. - -Initially trimmed to a stationary, horizontal, symmetric, wings level -flight. -""" - -import numpy as np -import matplotlib.pyplot as plt -from mpl_toolkits.mplot3d import Axes3D - -from pyfme.aircrafts import Cessna172 -from pyfme.environment.environment import Environment -from pyfme.environment.atmosphere import ISA1976 -from pyfme.environment.gravity import VerticalConstant -from pyfme.environment.wind import NoWind -from pyfme.models.systems import EulerFlatEarth -from pyfme.simulator import BatchSimulation -from pyfme.utils.trimmer import steady_state_flight_trimmer -from pyfme.utils.input_generator import doublet - -aircraft = Cessna172() -atmosphere = ISA1976() -gravity = VerticalConstant() -wind = NoWind() -environment = Environment(atmosphere, gravity, wind) - -# Initial conditions. -TAS = 45 # m/s -h0 = 2000 # m -psi0 = 1 # rad -x0, y0 = 0, 0 # m -turn_rate = 0.0 # rad/s -gamma0 = 0.00 # rad - -system = EulerFlatEarth(lat=0, lon=0, h=h0, psi=psi0, x_earth=x0, y_earth=y0) - -not_trimmed_controls = {'delta_elevator': 0.0, - 'delta_aileron': 0.01 * np.sign(turn_rate), - 'delta_rudder': 0.01 * np.sign(turn_rate), - 'delta_t': 0.5} - -controls2trim = ['delta_elevator', 'delta_aileron', 'delta_rudder', 'delta_t'] - -trimmed_ac, trimmed_sys, trimmed_env, results = steady_state_flight_trimmer( - aircraft, system, environment, TAS=TAS, controls_0=not_trimmed_controls, - controls2trim=controls2trim, gamma=gamma0, turn_rate=turn_rate, verbose=1) - -print() -print('delta_elev = ', "%8.4f" % np.rad2deg(results['delta_elevator']), 'deg') -print('delta_aile = ', "%8.4f" % np.rad2deg(results['delta_aileron']), 'deg') -print('delta_rud = ', "%8.4f" % np.rad2deg(results['delta_rudder']), 'deg') -print('delta_t = ', "%8.4f" % results['delta_t'], '%', '\n') -print('alpha = ', "%8.4f" % np.rad2deg(results['alpha']), 'deg') -print('beta = ', "%8.4f" % np.rad2deg(results['beta']), 'deg', '\n') -print('u = ', "%8.4f" % results['u'], 'm/s') -print('v = ', "%8.4f" % results['v'], 'm/s') -print('w = ', "%8.4f" % results['w'], 'm/s', '\n') -print('psi = ', "%8.4f" % np.rad2deg(psi0), 'deg') -print('theta = ', "%8.4f" % np.rad2deg(results['theta']), 'deg') -print('phi = ', "%8.4f" % np.rad2deg(results['phi']), 'deg', '\n') -print('p =', "%8.4f" % results['p'], 'rad/s') -print('q =', "%8.4f" % results['q'], 'rad/s') -print('r =', "%8.4f" % results['r'], 'rad/s') - -my_simulation = BatchSimulation(trimmed_ac, trimmed_sys, trimmed_env) - -tfin = 10 # seconds -N = tfin * 100 + 1 -time = np.linspace(0, tfin, N) -initial_controls = trimmed_ac.controls - -controls = {} -for control_name, control_value in initial_controls.items(): - controls[control_name] = np.ones_like(time) * control_value - -# Elevator doublet -# Elevator max travel: +28º/-26º -amplitude = np.deg2rad(20) -controls['delta_elevator'] = doublet(t_init=2, - T=1, - A=amplitude, - time=time, - offset=initial_controls['delta_elevator']) - -my_simulation.set_controls(time, controls) - -par_list = ['x_earth', 'y_earth', 'height', - 'psi', 'theta', 'phi', - 'u', 'v', 'w', - 'v_north', 'v_east', 'v_down', - 'p', 'q', 'r', - 'alpha', 'beta', 'TAS', - 'F_xb', 'F_yb', 'F_zb', - 'M_xb', 'M_yb', 'M_zb'] - -my_simulation.set_par_dict(par_list) -my_simulation.run_simulation() - -# print(my_simulation.par_dict) - -plt.style.use('ggplot') - -for ii in range(len(par_list) // 3): - three_params = par_list[3 * ii:3 * ii + 3] - fig, ax = plt.subplots(3, 1, sharex=True) - for jj, par in enumerate(three_params): - ax[jj].plot(time, my_simulation.par_dict[par]) - ax[jj].set_ylabel(par) - ax[jj].set_xlabel('time (s)') - -fig = plt.figure() -ax = Axes3D(fig) -ax.plot(my_simulation.par_dict['x_earth'], - my_simulation.par_dict['y_earth'], - my_simulation.par_dict['height']) - -ax.plot(my_simulation.par_dict['x_earth'], - my_simulation.par_dict['y_earth'], - my_simulation.par_dict['height'] * 0) -ax.set_xlabel('x_earth') -ax.set_ylabel('y_earth') -ax.set_zlabel('z_earth') - -plt.show() diff --git a/examples/examples_as_scripts/example_007_rudder_doublet.py b/examples/examples_as_scripts/example_007_rudder_doublet.py deleted file mode 100644 index 69b826c..0000000 --- a/examples/examples_as_scripts/example_007_rudder_doublet.py +++ /dev/null @@ -1,137 +0,0 @@ -# -*- coding: utf-8 -*- -""" -Python Flight Mechanics Engine (PyFME). -Copyright (c) AeroPython Development Team. -Distributed under the terms of the MIT License. - -Example 007 -------- - -Cessna 172, ISA1976 integrated with Flat Earth (Euler angles). - -Evolution of the aircraft after a yaw perturbation (delta doublet -applied to the rudder) at t=2. - -Initially trimmed to a stationary, horizontal, symmetric, wings level -flight. -""" - -import numpy as np -import matplotlib.pyplot as plt -from mpl_toolkits.mplot3d import Axes3D - -from pyfme.aircrafts import Cessna172 -from pyfme.environment.environment import Environment -from pyfme.environment.atmosphere import ISA1976 -from pyfme.environment.gravity import VerticalConstant -from pyfme.environment.wind import NoWind -from pyfme.models.systems import EulerFlatEarth -from pyfme.simulator import BatchSimulation -from pyfme.utils.trimmer import steady_state_flight_trimmer -from pyfme.utils.input_generator import doublet - -aircraft = Cessna172() -atmosphere = ISA1976() -gravity = VerticalConstant() -wind = NoWind() -environment = Environment(atmosphere, gravity, wind) - -# Initial conditions. -TAS = 45 # m/s -h0 = 2000 # m -psi0 = 1 # rad -x0, y0 = 0, 0 # m -turn_rate = 0.0 # rad/s -gamma0 = 0.00 # rad - -system = EulerFlatEarth(lat=0, lon=0, h=h0, psi=psi0, x_earth=x0, y_earth=y0) - -not_trimmed_controls = {'delta_elevator': 0.05, - 'delta_aileron': 0.01 * np.sign(turn_rate), - 'delta_rudder': 0.01 * np.sign(turn_rate), - 'delta_t': 0.5} - -controls2trim = ['delta_elevator', 'delta_aileron', 'delta_rudder', 'delta_t'] - -trimmed_ac, trimmed_sys, trimmed_env, results = steady_state_flight_trimmer( - aircraft, system, environment, TAS=TAS, controls_0=not_trimmed_controls, - controls2trim=controls2trim, gamma=gamma0, turn_rate=turn_rate, verbose=1) - -print() -print('delta_elev = ', "%8.4f" % np.rad2deg(results['delta_elevator']), 'deg') -print('delta_aile = ', "%8.4f" % np.rad2deg(results['delta_aileron']), 'deg') -print('delta_rud = ', "%8.4f" % np.rad2deg(results['delta_rudder']), 'deg') -print('delta_t = ', "%8.4f" % results['delta_t'], '%', '\n') -print('alpha = ', "%8.4f" % np.rad2deg(results['alpha']), 'deg') -print('beta = ', "%8.4f" % np.rad2deg(results['beta']), 'deg', '\n') -print('u = ', "%8.4f" % results['u'], 'm/s') -print('v = ', "%8.4f" % results['v'], 'm/s') -print('w = ', "%8.4f" % results['w'], 'm/s', '\n') -print('psi = ', "%8.4f" % np.rad2deg(psi0), 'deg') -print('theta = ', "%8.4f" % np.rad2deg(results['theta']), 'deg') -print('phi = ', "%8.4f" % np.rad2deg(results['phi']), 'deg', '\n') -print('p =', "%8.4f" % results['p'], 'rad/s') -print('q =', "%8.4f" % results['q'], 'rad/s') -print('r =', "%8.4f" % results['r'], 'rad/s') - -my_simulation = BatchSimulation(trimmed_ac, trimmed_sys, trimmed_env) - -tfin = 20 # seconds -N = tfin * 100 + 1 -time = np.linspace(0, tfin, N) -initial_controls = trimmed_ac.controls - -controls = {} -for control_name, control_value in initial_controls.items(): - controls[control_name] = np.ones_like(time) * control_value - -# Rudder doublet -# Rudder max travel: +16º/-16º -amplitude = np.deg2rad(32) - -controls['delta_rudder'] = doublet(t_init=2, - T=2, - A=amplitude, - time=time, - offset=np.deg2rad(0.0)) - -my_simulation.set_controls(time, controls) - -par_list = ['x_earth', 'y_earth', 'height', - 'psi', 'theta', 'phi', - 'u', 'v', 'w', - 'v_north', 'v_east', 'v_down', - 'p', 'q', 'r', - 'alpha', 'beta', 'TAS', - 'F_xb', 'F_yb', 'F_zb', - 'M_xb', 'M_yb', 'M_zb'] - -my_simulation.set_par_dict(par_list) -my_simulation.run_simulation() - -# print(my_simulation.par_dict) - -plt.style.use('ggplot') - -for ii in range(len(par_list) // 3): - three_params = par_list[3 * ii:3 * ii + 3] - fig, ax = plt.subplots(3, 1, sharex=True) - for jj, par in enumerate(three_params): - ax[jj].plot(time, my_simulation.par_dict[par]) - ax[jj].set_ylabel(par) - ax[jj].set_xlabel('time (s)') - -# fig = plt.figure() -# ax = Axes3D(fig) -# ax.plot(my_simulation.par_dict['x_earth'], -# my_simulation.par_dict['y_earth'], -# my_simulation.par_dict['height']) - -# ax.plot(my_simulation.par_dict['x_earth'], -# my_simulation.par_dict['y_earth'], -# my_simulation.par_dict['height'] * 0) -# ax.set_xlabel('x_earth') -# ax.set_ylabel('y_earth') -# ax.set_zlabel('z_earth') - -plt.show() diff --git a/examples/examples_as_scripts/example_008_ailerons_doublet.py b/examples/examples_as_scripts/example_008_ailerons_doublet.py deleted file mode 100644 index edefead..0000000 --- a/examples/examples_as_scripts/example_008_ailerons_doublet.py +++ /dev/null @@ -1,136 +0,0 @@ -# -*- coding: utf-8 -*- -""" -Python Flight Mechanics Engine (PyFME). -Copyright (c) AeroPython Development Team. -Distributed under the terms of the MIT License. - -Example 008 -------- - -Cessna 172, ISA1976 integrated with Flat Earth (Euler angles). - -Evolution of the aircraft after a roll perturbation (delta doublet -applied to the ailerons) at t=1. - -Initially trimmed to a stationary, horizontal, symmetric, wings level -flight. -""" - -import numpy as np -import matplotlib.pyplot as plt -from mpl_toolkits.mplot3d import Axes3D - -from pyfme.aircrafts import Cessna172 -from pyfme.environment.environment import Environment -from pyfme.environment.atmosphere import ISA1976 -from pyfme.environment.gravity import VerticalConstant -from pyfme.environment.wind import NoWind -from pyfme.models.systems import EulerFlatEarth -from pyfme.simulator import BatchSimulation -from pyfme.utils.trimmer import steady_state_flight_trimmer -from pyfme.utils.input_generator import doublet - -aircraft = Cessna172() -atmosphere = ISA1976() -gravity = VerticalConstant() -wind = NoWind() -environment = Environment(atmosphere, gravity, wind) - -# Initial conditions. -TAS = 45 # m/s -h0 = 2000 # m -psi0 = 1.0 # rad -x0, y0 = 0, 0 # m -turn_rate = 0.0 # rad/s -gamma0 = 0.0 # rad - -system = EulerFlatEarth(lat=0, lon=0, h=h0, psi=psi0, x_earth=x0, y_earth=y0) - -not_trimmed_controls = {'delta_elevator': 0.05, - 'delta_aileron': 0.01 * np.sign(turn_rate), - 'delta_rudder': 0.01 * np.sign(turn_rate), - 'delta_t': 0.5} - -controls2trim = ['delta_elevator', 'delta_aileron', 'delta_rudder', 'delta_t'] - -trimmed_ac, trimmed_sys, trimmed_env, results = steady_state_flight_trimmer( - aircraft, system, environment, TAS=TAS, controls_0=not_trimmed_controls, - controls2trim=controls2trim, gamma=gamma0, turn_rate=turn_rate, verbose=1) - -print() -print('delta_elev = ', "%8.4f" % np.rad2deg(results['delta_elevator']), 'deg') -print('delta_aile = ', "%8.4f" % np.rad2deg(results['delta_aileron']), 'deg') -print('delta_rud = ', "%8.4f" % np.rad2deg(results['delta_rudder']), 'deg') -print('delta_t = ', "%8.4f" % results['delta_t'], '%', '\n') -print('alpha = ', "%8.4f" % np.rad2deg(results['alpha']), 'deg') -print('beta = ', "%8.4f" % np.rad2deg(results['beta']), 'deg', '\n') -print('u = ', "%8.4f" % results['u'], 'm/s') -print('v = ', "%8.4f" % results['v'], 'm/s') -print('w = ', "%8.4f" % results['w'], 'm/s', '\n') -print('psi = ', "%8.4f" % np.rad2deg(psi0), 'deg') -print('theta = ', "%8.4f" % np.rad2deg(results['theta']), 'deg') -print('phi = ', "%8.4f" % np.rad2deg(results['phi']), 'deg', '\n') -print('p =', "%8.4f" % results['p'], 'rad/s') -print('q =', "%8.4f" % results['q'], 'rad/s') -print('r =', "%8.4f" % results['r'], 'rad/s') - -my_simulation = BatchSimulation(trimmed_ac, trimmed_sys, trimmed_env) - -tfin = 20 # seconds -N = tfin * 100 + 1 -time = np.linspace(0, tfin, N) -initial_controls = trimmed_ac.controls - -controls = {} -for control_name, control_value in initial_controls.items(): - controls[control_name] = np.ones_like(time) * control_value - -# Aileron doublet -# Aileron max travel: +20º/-15º -amplitude = np.deg2rad(15) -controls['delta_aileron'] = doublet(t_init=2, - T=1, - A=amplitude, - time=time, - offset=np.deg2rad(0)) - -my_simulation.set_controls(time, controls) - -par_list = ['x_earth', 'y_earth', 'height', - 'psi', 'theta', 'phi', - 'u', 'v', 'w', - 'v_north', 'v_east', 'v_down', - 'p', 'q', 'r', - 'alpha', 'beta', 'TAS', - 'F_xb', 'F_yb', 'F_zb', - 'M_xb', 'M_yb', 'M_zb'] - -my_simulation.set_par_dict(par_list) -my_simulation.run_simulation() - -# print(my_simulation.par_dict) - -plt.style.use('ggplot') - -for ii in range(len(par_list) // 3): - three_params = par_list[3 * ii:3 * ii + 3] - fig, ax = plt.subplots(3, 1, sharex=True) - for jj, par in enumerate(three_params): - ax[jj].plot(time, my_simulation.par_dict[par]) - ax[jj].set_ylabel(par) - ax[jj].set_xlabel('time (s)') - -fig = plt.figure() -ax = Axes3D(fig) -ax.plot(my_simulation.par_dict['x_earth'], - my_simulation.par_dict['y_earth'], - my_simulation.par_dict['height']) - -ax.plot(my_simulation.par_dict['x_earth'], - my_simulation.par_dict['y_earth'], - my_simulation.par_dict['height'] * 0) -ax.set_xlabel('x_earth') -ax.set_ylabel('y_earth') -ax.set_zlabel('z_earth') - -plt.show() diff --git a/examples/examples_as_scripts/example_009_elev_aile_rud_doublet.py b/examples/examples_as_scripts/example_009_elev_aile_rud_doublet.py deleted file mode 100644 index 2de476c..0000000 --- a/examples/examples_as_scripts/example_009_elev_aile_rud_doublet.py +++ /dev/null @@ -1,158 +0,0 @@ -# -*- coding: utf-8 -*- -""" -Python Flight Mechanics Engine (PyFME). -Copyright (c) AeroPython Development Team. -Distributed under the terms of the MIT License. - -Example 009 -------- - -Cessna 172, ISA1976 integrated with Flat Earth (Euler angles). - -Evolution of the aircraft after a pitch perturbation (delta doublet -applied to the elevator) at t=2, a roll perturbation (delta doublet -applied to the ailerons) at t=5 and a yaw perturbation (delta doublet -applied to the rudder) at t=10. - -Initially trimmed to a stationary, horizontal, symmetric, wings level -flight. -""" - -import numpy as np -import matplotlib.pyplot as plt -from mpl_toolkits.mplot3d import Axes3D - -from pyfme.aircrafts import Cessna172 -from pyfme.environment.environment import Environment -from pyfme.environment.atmosphere import ISA1976 -from pyfme.environment.gravity import VerticalConstant -from pyfme.environment.wind import NoWind -from pyfme.models.systems import EulerFlatEarth -from pyfme.simulator import BatchSimulation -from pyfme.utils.trimmer import steady_state_flight_trimmer -from pyfme.utils.input_generator import doublet - -aircraft = Cessna172() -atmosphere = ISA1976() -gravity = VerticalConstant() -wind = NoWind() -environment = Environment(atmosphere, gravity, wind) - -# Initial conditions. -TAS = 45 # m/s -h0 = 2000 # m -psi0 = 1 # rad -x0, y0 = 0, 0 # m -turn_rate = 0.0 # rad/s -gamma0 = 0.00 # rad - -system = EulerFlatEarth(lat=0, lon=0, h=h0, psi=psi0, x_earth=x0, y_earth=y0) - -not_trimmed_controls = {'delta_elevator': 0.0, - 'delta_aileron': 0.01 * np.sign(turn_rate), - 'delta_rudder': 0.01 * np.sign(turn_rate), - 'delta_t': 0.5} - -controls2trim = ['delta_elevator', 'delta_aileron', 'delta_rudder', 'delta_t'] - -trimmed_ac, trimmed_sys, trimmed_env, results = steady_state_flight_trimmer( - aircraft, system, environment, TAS=TAS, controls_0=not_trimmed_controls, - controls2trim=controls2trim, gamma=gamma0, turn_rate=turn_rate, verbose=1) - -# print(results) - -print() -print('delta_elev = ', "%8.4f" % np.rad2deg(results['delta_elevator']), 'deg') -print('delta_aile = ', "%8.4f" % np.rad2deg(results['delta_aileron']), 'deg') -print('delta_rud = ', "%8.4f" % np.rad2deg(results['delta_rudder']), 'deg') -print('delta_t = ', "%8.4f" % results['delta_t'], '%', '\n') -print('alpha = ', "%8.4f" % np.rad2deg(results['alpha']), 'deg') -print('beta = ', "%8.4f" % np.rad2deg(results['beta']), 'deg', '\n') -print('u = ', "%8.4f" % results['u'], 'm/s') -print('v = ', "%8.4f" % results['v'], 'm/s') -print('w = ', "%8.4f" % results['w'], 'm/s', '\n') -print('psi = ', "%8.4f" % np.rad2deg(psi0), 'deg') -print('theta = ', "%8.4f" % np.rad2deg(results['theta']), 'deg') -print('phi = ', "%8.4f" % np.rad2deg(results['phi']), 'deg', '\n') -print('p =', "%8.4f" % results['p'], 'rad/s') -print('q =', "%8.4f" % results['q'], 'rad/s') -print('r =', "%8.4f" % results['r'], 'rad/s') - -my_simulation = BatchSimulation(trimmed_ac, trimmed_sys, trimmed_env) - -tfin = 15 # seconds -N = tfin * 100 + 1 -time = np.linspace(0, tfin, N) -initial_controls = trimmed_ac.controls - -controls = {} -for control_name, control_value in initial_controls.items(): - controls[control_name] = np.ones_like(time) * control_value - -# Elevator, aileron and rudder doublets -# Elevator max travel: +28º/-26º -# Aileron max travel: +20º/-15º -# Rudder max travel: +16º/-16º - -amplitude_elev = np.deg2rad(26) -controls['delta_elevator'] = initial_controls['delta_elevator'] + \ - doublet(t_init=2, - T=2, - A=amplitude_elev, - time=time, - offset=np.deg2rad(0.0)) - -amplitude_aile = np.deg2rad(15) -controls['delta_aileron'] = doublet(t_init=5, - T=2, - A=amplitude_aile, - time=time, - offset=np.deg2rad(0.0)) - -amplitude_rud = np.deg2rad(32) -controls['delta_rudder'] = doublet(t_init=10, - T=2, - A=amplitude_rud, - time=time, - offset=np.deg2rad(0.0)) - -my_simulation.set_controls(time, controls) - -par_list = ['x_earth', 'y_earth', 'height', - 'psi', 'theta', 'phi', - 'u', 'v', 'w', - 'v_north', 'v_east', 'v_down', - 'p', 'q', 'r', - 'alpha', 'beta', 'TAS', - 'F_xb', 'F_yb', 'F_zb', - 'M_xb', 'M_yb', 'M_zb'] - -my_simulation.set_par_dict(par_list) -my_simulation.run_simulation() - -# print(my_simulation.par_dict) - -plt.style.use('ggplot') - -for ii in range(len(par_list) // 3): - three_params = par_list[3 * ii:3 * ii + 3] - fig, ax = plt.subplots(3, 1, sharex=True) - for jj, par in enumerate(three_params): - ax[jj].plot(time, my_simulation.par_dict[par]) - ax[jj].set_ylabel(par) - ax[jj].set_xlabel('time (s)') - -# fig = plt.figure() -# ax = Axes3D(fig) -# ax.plot(my_simulation.par_dict['x_earth'], -# my_simulation.par_dict['y_earth'], -# my_simulation.par_dict['height']) - -# ax.plot(my_simulation.par_dict['x_earth'], -# my_simulation.par_dict['y_earth'], -# my_simulation.par_dict['height'] * 0) -# ax.set_xlabel('x_earth') -# ax.set_ylabel('y_earth') -# ax.set_zlabel('z_earth') - -plt.show() diff --git a/index.ipynb b/index.ipynb deleted file mode 100644 index d644fd0..0000000 --- a/index.ipynb +++ /dev/null @@ -1,116 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# PyFME\n", - "\n", - "This is a gallery of examples for PyFME simulator." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "!conda install pyfme --channel pyfme --yes --quiet --name python3" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## [Example 000](examples_as_notebooks/example_000_no_controls.ipynb)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## [Example 001](examples_as_notebooks/example_001_stationary_horizontal.ipynb)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## [Example 002](examples_as_notebooks/example_002_stationary_descent.ipynb)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## [Example 003](examples_as_notebooks/example_003_stationary_ascent.ipynb)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## [Example 004](examples_as_notebooks/example_004_stationary_horizontal_turn.ipynb)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## [Example 005](examples_as_notebooks/example_005_stationary_turn_during_ascent.ipynb)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## [Example 006](examples_as_notebooks/example_006_elevator_doublet.ipynb)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## [Example 007](examples_as_notebooks/example_007_rudder_doublet.ipynb)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## [Example 008](examples_as_notebooks/example_008_ailerons_doublet.ipynb)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## [Example 009](examples_as_notebooks/example_009_elev_aile_rud_doublet.ipynb)" - ] - } - ], - "metadata": { - "anaconda-cloud": {}, - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.5.1" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} From df7e9ff47610554e468e8b9d2ef2fbbb181e7e1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sun, 12 Nov 2017 00:50:56 +0100 Subject: [PATCH 095/104] removed old examples --- setup.py | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.py b/setup.py index 9fde7d0..dc64e5f 100644 --- a/setup.py +++ b/setup.py @@ -25,6 +25,7 @@ "numpy", "scipy", "matplotlib", + "pandas" ], tests_require=[ "pytest" From 253e2bf498684ea2a1232c5e257996dc87c17b8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sun, 12 Nov 2017 01:02:54 +0100 Subject: [PATCH 096/104] Style changes in atmosphere --- src/pyfme/environment/atmosphere.py | 54 ++++++++++++++++++++--------- 1 file changed, 37 insertions(+), 17 deletions(-) diff --git a/src/pyfme/environment/atmosphere.py b/src/pyfme/environment/atmosphere.py index 6ee437b..c09c6fb 100644 --- a/src/pyfme/environment/atmosphere.py +++ b/src/pyfme/environment/atmosphere.py @@ -19,17 +19,13 @@ class Atmosphere(object): def __init__(self): - # TODO: doc - self._gamma = None # Adiabatic index or ratio of specific heats - self._R_g = None # Gas constant J/(Kg·K) - self._g0 = None # Gravity m/s^2 - - self.geopotential_alt = None # Current geopotential height (m). - self.pressure_altitude = None # Current pressure altitude (m). - self.T = None # Temperature (K). - self.p = None # Pressure (atm). - self.rho = None # Density (kg/m³). - self.a = None # Speed of sound (m/s). + + self._geopotential_alt = None # Current geopotential height (m). + self._pressure_altitude = None # Current pressure altitude (m). + self._T = None # Temperature (K). + self._p = None # Pressure (atm). + self._rho = None # Density (kg/m³). + self._a = None # Speed of sound (m/s). def update(self, state): """Update atmosphere state for the given system state. @@ -68,8 +64,30 @@ def update(self, state): """ # Geopotential altitude - self.geopotential_alt = geometric2geopotential(state.position.height) - self.T, self.p, self.rho, self.a = self.__call__(self.geopotential_alt) + self._geopotential_alt = geometric2geopotential(state.position.height) + + T, p, rho, a = self.__call__(self._geopotential_alt) + + self._T = T + self._p = p + self._rho = rho + self._a = a + + @property + def T(self): + return self._T + + @property + def p(self): + return self._p + + @property + def rho(self): + return self._rho + + @property + def a(self): + return self._a @abstractmethod def __call__(self, h): @@ -118,10 +136,10 @@ def __init__(self): # Initialize at h=0 self.h = 0 # Current height (m). - self.T = self._T0_layers[0] # Temperature (K). - self.p = self._p0_layers[0] # Pressure (atm). - self.rho = self.p / (self._R_g * self.T) - self.a = sqrt(self._gamma * self._R_g * self.T) + self._T = self._T0_layers[0] # Temperature (K). + self._p = self._p0_layers[0] # Pressure (atm). + self._rho = self.p / (self._R_g * self.T) + self._a = sqrt(self._gamma * self._R_g * self.T) def __call__(self, h): """ISA 1976 Standard atmosphere temperature, pressure and density. @@ -235,6 +253,8 @@ def __call__(self, h): else: raise ValueError( "Altitude cannot be greater than {} m.".format(self._h0[7])) + rho = p / (R_a * T) a = sqrt(gamma * R_a * T) + return T, p, rho, a From 152bacbb1a5c0fd1947916a29062d0e04ea648ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sun, 12 Nov 2017 01:12:01 +0100 Subject: [PATCH 097/104] python version 3.6, added pandas --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index e805e60..81ddee5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,7 @@ language: python python: - - "3.5" + - "3.6" branches: only: @@ -20,7 +20,7 @@ before_install: - conda info -a - conda create -q -n test-environment python=$TRAVIS_PYTHON_VERSION - source activate test-environment - - conda install numpy scipy matplotlib + - conda install numpy scipy matplotlib pandas - pip install coverage pytest pytest-cov codecov install: From 1dd8a92b9a73f077be5196edc3634328d8f4eb2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sun, 12 Nov 2017 01:18:52 +0100 Subject: [PATCH 098/104] added tqdm --- environment.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/environment.yml b/environment.yml index 275be1f..8f7a684 100644 --- a/environment.yml +++ b/environment.yml @@ -5,3 +5,4 @@ dependencies: - matplotlib >= 1.5 - pytest >= 2.9 - pandas >= 0.20 + - tqdm From a9fa54606f9113b9d3b92a73f1dc6cd07b21e3a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sun, 12 Nov 2017 01:23:48 +0100 Subject: [PATCH 099/104] added tqdm to conda download --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 81ddee5..506b92e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -20,7 +20,7 @@ before_install: - conda info -a - conda create -q -n test-environment python=$TRAVIS_PYTHON_VERSION - source activate test-environment - - conda install numpy scipy matplotlib pandas + - conda install numpy scipy matplotlib pandas tqdm - pip install coverage pytest pytest-cov codecov install: From 886aa763edf4740aedaf802681ad91e0331c3b6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Luis=20Cano=20Rodr=C3=ADguez?= Date: Sun, 12 Nov 2017 11:44:05 +0100 Subject: [PATCH 100/104] Trigger CI From 87d8b68a5c4d3b701f7745c1d5b1e51542eafab3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sun, 12 Nov 2017 11:48:21 +0100 Subject: [PATCH 101/104] Trigger CI From ef1c9ca71e01cd96f91586e2e45f5be8f6f9f991 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sat, 18 Nov 2017 12:50:58 +0100 Subject: [PATCH 102/104] deal with floating point issues to finish propagation --- src/pyfme/simulator.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/pyfme/simulator.py b/src/pyfme/simulator.py index bb7935c..e8dfd1d 100644 --- a/src/pyfme/simulator.py +++ b/src/pyfme/simulator.py @@ -150,10 +150,14 @@ def propagate(self, time): automatically chosen. """ dt = self.dt + half_dt = self.dt/2 bar = tqdm.tqdm(total=time, desc='time', initial=self.system.time) - while self.system.time + dt <= time: + # To deal with floating point issues we cannot check equality to + # final time to finish propagation + time_plus_half_dt = time + half_dt + while self.system.time + dt < time_plus_half_dt: t = self.system.time self.environment.update(self.system.full_state) controls = self._get_current_controls(t) From 447de1009951d552d095973d15f9cffa41c9e644 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sat, 18 Nov 2017 13:08:50 +0100 Subject: [PATCH 103/104] added property to get current simulation time --- src/pyfme/simulator.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/pyfme/simulator.py b/src/pyfme/simulator.py index e8dfd1d..bb08d1e 100644 --- a/src/pyfme/simulator.py +++ b/src/pyfme/simulator.py @@ -123,6 +123,10 @@ def __init__(self, aircraft, system, environment, controls, dt=0.01, # Initialize results structure self.results = {name: [] for name in self._save_vars} + @property + def time(self): + return self.system.time + def update(self, time, state): self.environment.update(state) From 461ca9a593b4d74216b3aff650f4fbd09e170633 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20S=C3=A1ez?= Date: Sat, 18 Nov 2017 13:09:13 +0100 Subject: [PATCH 104/104] added example on how to propagate for one time step --- examples/How it works.ipynb | 2465 ++++++++++++++++++++++++----------- 1 file changed, 1709 insertions(+), 756 deletions(-) diff --git a/examples/How it works.ipynb b/examples/How it works.ipynb index 5a940fd..af60cc6 100644 --- a/examples/How it works.ipynb +++ b/examples/How it works.ipynb @@ -364,10 +364,10 @@ "Aircraft State \n", "x_e: 0.00 m, y_e: 0.00 m, z_e: -1000.00 m \n", "theta: 0.076 rad, phi: 0.000 rad, psi: 0.500 rad \n", - "u: 44.87 m/s, v: -0.00 m/s, w: 3.40 m/s \n", + "u: 44.87 m/s, v: 0.00 m/s, w: 3.40 m/s \n", "P: 0.00 rad/s, Q: 0.00 rad/s, R: 0.00 rad/s \n", "u_dot: 0.00 m/s², v_dot: -0.00 m/s², w_dot: 0.00 m/s² \n", - "P_dot: 0.00 rad/s², Q_dot: -0.00 rad/s², R_dot: -0.00 rad/s² " + "P_dot: 0.00 rad/s², Q_dot: -0.00 rad/s², R_dot: 0.00 rad/s² " ] }, "execution_count": 17, @@ -387,10 +387,10 @@ { "data": { "text/plain": [ - "{'delta_aileron': -2.947320486359587e-18,\n", - " 'delta_elevator': -0.048951124635247867,\n", - " 'delta_rudder': 2.1677315854336833e-17,\n", - " 'delta_t': 0.57799667845248448}" + "{'delta_aileron': 2.4925251333542672e-18,\n", + " 'delta_elevator': -0.048951124635247797,\n", + " 'delta_rudder': -1.0367511099559949e-17,\n", + " 'delta_t': 0.57799667845248515}" ] }, "execution_count": 18, @@ -430,8 +430,8 @@ { "data": { "text/plain": [ - "(array([ 1.14823706e-11, -1.19125954e-19, 0.00000000e+00]),\n", - " array([ 1.52897086e-13, -1.45503653e-11, -2.42689127e-14]))" + "(array([ 1.68256520e-11, -1.49629613e-18, 2.36468622e-11]),\n", + " array([ 3.03652088e-14, -1.54951943e-11, 3.06443592e-14]))" ] }, "execution_count": 20, @@ -553,7 +553,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "time: 100%|█████████▉| 9.999999999999831/10 [00:05<00:00, 1.79it/s] \n" + "time: 100%|█████████▉| 9.999999999999831/10 [00:05<00:00, 1.91it/s] \n" ] } ], @@ -644,20 +644,20 @@ " \n", " \n", " 0.01\n", - " 1.148237e-11\n", - " -1.309051e-16\n", - " 0.000000e+00\n", + " 1.682565e-11\n", + " 3.988299e-17\n", + " 2.364686e-11\n", " 0.133756\n", - " 1.458933e-13\n", - " -1.410812e-11\n", - " -2.516985e-14\n", + " 2.931208e-14\n", + " -1.502423e-11\n", + " 3.036133e-14\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -1.750768e-15\n", + " 8.373417e-16\n", " 4.440892e-16\n", " 21.574149\n", " 39.491215\n", @@ -668,20 +668,20 @@ " \n", " \n", " 0.02\n", - " 1.148237e-11\n", - " -1.518488e-16\n", - " 0.000000e+00\n", + " 1.682565e-11\n", + " 1.113008e-16\n", + " 2.364686e-11\n", " 0.133756\n", - " 1.391836e-13\n", - " -1.367932e-11\n", - " -2.601912e-14\n", + " 2.830690e-14\n", + " -1.456759e-11\n", + " 3.008343e-14\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -1.750648e-15\n", + " 8.372773e-16\n", " 4.440892e-16\n", " 21.574149\n", " 39.491215\n", @@ -692,20 +692,20 @@ " \n", " \n", " 0.03\n", - " 1.148237e-11\n", - " -6.856851e-17\n", - " 0.000000e+00\n", + " 1.682565e-11\n", + " 2.118543e-16\n", + " 2.364686e-11\n", " 0.133756\n", - " 1.327555e-13\n", - " -1.326355e-11\n", - " -2.681870e-14\n", + " 2.734757e-14\n", + " -1.412482e-11\n", + " 2.981037e-14\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -1.750447e-15\n", + " 8.371706e-16\n", " 4.440892e-16\n", " 21.574149\n", " 39.491215\n", @@ -716,20 +716,20 @@ " \n", " \n", " 0.04\n", - " 1.148237e-11\n", - " 1.135581e-16\n", - " 0.000000e+00\n", + " 1.682565e-11\n", + " 3.406791e-16\n", + " 2.364686e-11\n", " 0.133756\n", - " 1.265969e-13\n", - " -1.286042e-11\n", - " -2.757050e-14\n", + " 2.643204e-14\n", + " -1.369551e-11\n", + " 2.954186e-14\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -1.750165e-15\n", + " 8.370221e-16\n", " 4.440892e-16\n", " 21.574149\n", " 39.491215\n", @@ -740,20 +740,20 @@ " \n", " \n", " 0.05\n", - " 1.148237e-11\n", - " 3.893841e-16\n", - " 0.000000e+00\n", + " 1.682565e-11\n", + " 4.969478e-16\n", + " 2.364686e-11\n", " 0.133756\n", - " 1.206963e-13\n", - " -1.246954e-11\n", - " -2.827633e-14\n", + " 2.555839e-14\n", + " -1.327925e-11\n", + " 2.927764e-14\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -1.749801e-15\n", + " 8.368322e-16\n", " 4.440892e-16\n", " 21.574149\n", " 39.491215\n", @@ -764,20 +764,20 @@ " \n", " \n", " 0.06\n", - " 1.148237e-11\n", - " 7.539836e-16\n", - " 0.000000e+00\n", + " 1.671197e-11\n", + " 6.798681e-16\n", + " 2.546585e-11\n", " 0.133756\n", - " 1.150425e-13\n", - " -1.209054e-11\n", - " -2.893794e-14\n", + " 2.472474e-14\n", + " -1.287564e-11\n", + " 2.901745e-14\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -1.749354e-15\n", + " 8.366015e-16\n", " 4.440892e-16\n", " 21.574149\n", " 39.491215\n", @@ -788,20 +788,20 @@ " \n", " \n", " 0.07\n", - " 1.136868e-11\n", - " 1.202642e-15\n", - " 1.818989e-12\n", + " 1.671197e-11\n", + " 8.886811e-16\n", + " 2.546585e-11\n", " 0.133756\n", - " 1.096252e-13\n", - " -1.172306e-11\n", - " -2.955701e-14\n", + " 2.392932e-14\n", + " -1.248430e-11\n", + " 2.876107e-14\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -1.748824e-15\n", + " 8.363303e-16\n", " 4.440892e-16\n", " 21.574149\n", " 39.491215\n", @@ -812,21 +812,21 @@ " \n", " \n", " 0.08\n", - " 1.125500e-11\n", - " 1.730847e-15\n", - " 1.818989e-12\n", + " 1.671197e-11\n", + " 1.122661e-15\n", + " 2.546585e-11\n", " 0.133756\n", - " 1.044341e-13\n", - " -1.098882e-11\n", - " -3.047221e-14\n", + " 2.317044e-14\n", + " -1.210485e-11\n", + " 2.850826e-14\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -1.748210e-15\n", - " 0.000000e+00\n", + " 8.360192e-16\n", + " 4.440892e-16\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -836,21 +836,21 @@ " \n", " \n", " 0.09\n", - " 1.125500e-11\n", - " 2.333641e-15\n", - " 1.818989e-12\n", + " 1.671197e-11\n", + " 1.381110e-15\n", + " 2.546585e-11\n", " 0.133756\n", - " 9.945634e-14\n", - " -1.065483e-11\n", - " -3.100995e-14\n", + " 2.244646e-14\n", + " -1.173694e-11\n", + " 2.825879e-14\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -1.747513e-15\n", - " -4.440892e-16\n", + " 8.356686e-16\n", + " 4.440892e-16\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -860,21 +860,21 @@ " \n", " \n", " 0.10\n", - " 1.102762e-11\n", - " 3.005565e-15\n", - " 3.637979e-12\n", + " 1.682565e-11\n", + " 1.663364e-15\n", + " 2.546585e-11\n", " 0.133756\n", - " 9.467614e-14\n", - " -9.950832e-12\n", - " -2.611375e-14\n", + " 2.175583e-14\n", + " -1.138021e-11\n", + " 2.801248e-14\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -1.746731e-15\n", - " -8.881784e-16\n", + " 8.352790e-16\n", + " 8.881784e-16\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -884,21 +884,21 @@ " \n", " \n", " 0.11\n", - " 1.148237e-11\n", - " 3.751901e-15\n", - " 9.094947e-12\n", + " 1.705303e-11\n", + " 1.968783e-15\n", + " 2.546585e-11\n", " 0.133756\n", - " 9.013232e-14\n", - " -9.275783e-12\n", - " -3.197848e-14\n", + " 2.109706e-14\n", + " -1.103432e-11\n", + " 2.776911e-14\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -1.745866e-15\n", - " -8.881784e-16\n", + " 8.348508e-16\n", + " 1.776357e-15\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -908,21 +908,21 @@ " \n", " \n", " 0.12\n", - " 1.148237e-11\n", - " 4.555658e-15\n", - " 1.091394e-11\n", + " 1.716671e-11\n", + " 2.296755e-15\n", + " 2.546585e-11\n", " 0.133756\n", - " 8.574588e-14\n", - " -8.613704e-12\n", - " -3.004604e-14\n", + " 2.046872e-14\n", + " -1.069894e-11\n", + " 2.752851e-14\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -1.744917e-15\n", - " -8.881784e-16\n", + " 8.343846e-16\n", + " 2.220446e-15\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -932,21 +932,21 @@ " \n", " \n", " 0.13\n", - " 1.159606e-11\n", - " 5.424279e-15\n", - " 1.091394e-11\n", + " 1.728040e-11\n", + " 2.646694e-15\n", + " 2.546585e-11\n", " 0.133756\n", - " 8.156845e-14\n", - " -8.351899e-12\n", - " -3.044730e-14\n", + " 1.986945e-14\n", + " -1.037376e-11\n", + " 2.729050e-14\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -1.743885e-15\n", - " -4.440892e-16\n", + " 8.338806e-16\n", + " 2.664535e-15\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -956,21 +956,21 @@ " \n", " \n", " 0.14\n", - " 1.136868e-11\n", - " 6.353882e-15\n", - " 1.273293e-11\n", + " 1.739409e-11\n", + " 3.018038e-15\n", + " 2.546585e-11\n", " 0.133756\n", - " 7.758696e-14\n", - " -7.717900e-12\n", - " -4.295721e-14\n", + " 1.929794e-14\n", + " -1.005846e-11\n", + " 2.705491e-14\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -1.742771e-15\n", - " -4.440892e-16\n", + " 8.333395e-16\n", + " 3.552714e-15\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -980,21 +980,21 @@ " \n", " \n", " 0.15\n", - " 1.159606e-11\n", - " 7.307893e-15\n", - " 1.273293e-11\n", + " 1.750777e-11\n", + " 3.410248e-15\n", + " 2.546585e-11\n", " 0.133756\n", - " 7.362115e-14\n", - " -6.738115e-12\n", - " -4.595269e-14\n", + " 1.875295e-14\n", + " -9.752741e-12\n", + " 2.682158e-14\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -1.741569e-15\n", - " 0.000000e+00\n", + " 8.327615e-16\n", + " 3.996803e-15\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -1004,21 +1004,21 @@ " \n", " \n", " 0.16\n", - " 1.170974e-11\n", - " 8.306240e-15\n", - " 1.273293e-11\n", + " 1.762146e-11\n", + " 3.816426e-15\n", + " 2.728484e-11\n", " 0.133756\n", - " 6.980467e-14\n", - " -6.533317e-12\n", - " -4.621544e-14\n", + " 1.819868e-14\n", + " -9.079912e-12\n", + " -7.014492e-16\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -1.740262e-15\n", - " 0.000000e+00\n", + " 8.321473e-16\n", + " 4.440892e-15\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -1028,21 +1028,21 @@ " \n", " \n", " 0.17\n", - " 1.170974e-11\n", - " 9.348327e-15\n", - " 1.273293e-11\n", + " 1.773515e-11\n", + " 4.196172e-15\n", + " 2.728484e-11\n", " 0.133756\n", - " 6.614481e-14\n", - " -6.334743e-12\n", - " -4.644720e-14\n", + " 1.744420e-14\n", + " -8.803938e-12\n", + " -8.500321e-16\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -1.738848e-15\n", - " 0.000000e+00\n", + " 8.315258e-16\n", + " 4.440892e-15\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -1052,21 +1052,21 @@ " \n", " \n", " 0.18\n", - " 1.136868e-11\n", - " 1.043316e-14\n", - " 1.818989e-11\n", + " 1.750777e-11\n", + " 4.585643e-15\n", + " 2.910383e-11\n", " 0.133756\n", - " 6.264539e-14\n", - " -5.769601e-12\n", - " -4.429277e-14\n", + " 1.670343e-14\n", + " -8.156199e-12\n", + " 8.450127e-15\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -1.737329e-15\n", - " 4.440892e-16\n", + " 8.309147e-16\n", + " 4.440892e-15\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -1076,21 +1076,21 @@ " \n", " \n", " 0.19\n", - " 1.136868e-11\n", - " 1.157113e-14\n", - " 1.818989e-11\n", + " 1.762146e-11\n", + " 5.007389e-15\n", + " 2.910383e-11\n", " 0.133756\n", - " 5.936687e-14\n", - " -5.221636e-12\n", - " -2.966188e-14\n", + " 1.609528e-14\n", + " -7.147997e-12\n", + " 1.098344e-14\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -1.735710e-15\n", - " 4.440892e-16\n", + " 8.303082e-16\n", + " 4.884981e-15\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -1100,21 +1100,21 @@ " \n", " \n", " 0.20\n", - " 1.159606e-11\n", - " 1.276209e-14\n", - " 1.818989e-11\n", + " 1.784883e-11\n", + " 5.449073e-15\n", + " 2.910383e-11\n", " 0.133756\n", - " 5.629898e-14\n", - " -5.062930e-12\n", - " -2.985905e-14\n", + " 1.554361e-14\n", + " -6.930741e-12\n", + " 1.081493e-14\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -1.734011e-15\n", - " 8.881784e-16\n", + " 8.296945e-16\n", + " 4.884981e-15\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -1124,21 +1124,21 @@ " \n", " \n", " 0.21\n", - " 1.148237e-11\n", - " 1.397774e-14\n", - " 2.000888e-11\n", + " 1.784883e-11\n", + " 5.904860e-15\n", + " 2.910383e-11\n", " 0.133756\n", - " 5.329535e-14\n", - " -4.536443e-12\n", - " -4.416963e-14\n", + " 1.501568e-14\n", + " -6.720088e-12\n", + " 1.064987e-14\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -1.732233e-15\n", - " 8.881784e-16\n", + " 8.290711e-16\n", + " 5.329071e-15\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -1148,21 +1148,21 @@ " \n", " \n", " 0.22\n", - " 1.148237e-11\n", - " 1.521910e-14\n", - " 2.182787e-11\n", + " 1.750777e-11\n", + " 6.378532e-15\n", + " 3.456080e-11\n", " 0.133756\n", - " 5.038453e-14\n", - " -4.025959e-12\n", - " -3.485120e-14\n", + " 1.453281e-14\n", + " -6.143234e-12\n", + " 1.553733e-14\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -1.730359e-15\n", - " 8.881784e-16\n", + " 8.284374e-16\n", + " 5.329071e-15\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -1172,21 +1172,21 @@ " \n", " \n", " 0.23\n", - " 1.159606e-11\n", - " 1.650005e-14\n", - " 2.182787e-11\n", + " 1.750777e-11\n", + " 6.868901e-15\n", + " 3.456080e-11\n", " 0.133756\n", - " 4.764104e-14\n", - " -3.903594e-12\n", - " -3.496163e-14\n", + " 1.408436e-14\n", + " -5.576365e-12\n", + " 2.210854e-14\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -1.728400e-15\n", - " 1.332268e-15\n", + " 8.277876e-16\n", + " 5.329071e-15\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -1196,21 +1196,21 @@ " \n", " \n", " 0.24\n", - " 1.148237e-11\n", - " 1.780983e-14\n", - " 2.364686e-11\n", + " 1.750777e-11\n", + " 7.388058e-15\n", + " 3.637979e-11\n", " 0.133756\n", - " 4.501165e-14\n", - " -3.412344e-12\n", - " -3.471297e-14\n", + " 1.373220e-14\n", + " -5.406877e-12\n", + " 2.191748e-14\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -1.726356e-15\n", - " 1.332268e-15\n", + " 8.271166e-16\n", + " 5.773160e-15\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -1220,21 +1220,21 @@ " \n", " \n", " 0.25\n", - " 1.148237e-11\n", - " 1.914984e-14\n", - " 2.546585e-11\n", + " 1.762146e-11\n", + " 7.912658e-15\n", + " 3.819878e-11\n", " 0.133756\n", - " 4.250968e-14\n", - " -2.936026e-12\n", - " -3.074090e-14\n", + " 1.334583e-14\n", + " -4.869937e-12\n", + " 1.028275e-14\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -1.724231e-15\n", - " 1.776357e-15\n", + " 8.264191e-16\n", + " 5.773160e-15\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -1244,21 +1244,21 @@ " \n", " \n", " 0.26\n", - " 1.148237e-11\n", - " 2.051194e-14\n", - " 2.546585e-11\n", + " 1.762146e-11\n", + " 8.435388e-15\n", + " 4.001777e-11\n", " 0.133756\n", - " 4.009381e-14\n", - " -2.474184e-12\n", - " -3.921483e-14\n", + " 1.290080e-14\n", + " -4.341769e-12\n", + " 1.957141e-14\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -1.722026e-15\n", - " 1.776357e-15\n", + " 8.257109e-16\n", + " 6.217249e-15\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -1268,21 +1268,21 @@ " \n", " \n", " 0.27\n", - " 1.159606e-11\n", - " 2.188773e-14\n", - " 2.546585e-11\n", + " 1.773515e-11\n", + " 8.990677e-15\n", + " 4.001777e-11\n", " 0.133756\n", - " 3.773377e-14\n", - " -2.398984e-12\n", - " -3.922856e-14\n", + " 1.258186e-14\n", + " -4.209805e-12\n", + " 1.939235e-14\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -1.719735e-15\n", - " 1.776357e-15\n", + " 8.249888e-16\n", + " 6.217249e-15\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -1292,21 +1292,21 @@ " \n", " \n", " 0.28\n", - " 1.148237e-11\n", - " 2.328209e-14\n", - " 2.728484e-11\n", + " 1.750777e-11\n", + " 9.568884e-15\n", + " 4.183676e-11\n", " 0.133756\n", - " 3.546382e-14\n", - " -1.953465e-12\n", - " -4.056870e-14\n", + " 1.232674e-14\n", + " -3.709249e-12\n", + " 3.032277e-14\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -1.717353e-15\n", - " 2.220446e-15\n", + " 8.242409e-16\n", + " 6.217249e-15\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -1316,21 +1316,21 @@ " \n", " \n", " 0.29\n", - " 1.148237e-11\n", - " 2.469674e-14\n", - " 2.910383e-11\n", + " 1.762146e-11\n", + " 1.017752e-14\n", + " 4.365575e-11\n", " 0.133756\n", - " 3.330005e-14\n", - " -1.521488e-12\n", - " -3.582637e-14\n", + " 1.216324e-14\n", + " -3.216358e-12\n", + " 1.797171e-14\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -1.714882e-15\n", - " 2.220446e-15\n", + " 8.234528e-16\n", + " 6.661338e-15\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -1340,21 +1340,21 @@ " \n", " \n", " 0.30\n", - " 1.159606e-11\n", - " 2.613274e-14\n", - " 2.910383e-11\n", + " 1.762146e-11\n", + " 1.077698e-14\n", + " 4.365575e-11\n", " 0.133756\n", - " 3.124828e-14\n", - " -1.475244e-12\n", - " -3.579192e-14\n", + " 1.188180e-14\n", + " -2.738449e-12\n", + " 1.206311e-14\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -1.712327e-15\n", - " 2.664535e-15\n", + " 8.226298e-16\n", + " 6.661338e-15\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -1388,21 +1388,21 @@ " \n", " \n", " 9.71\n", - " 1.440412e-10\n", - " 1.327157e-12\n", - " 4.729372e-11\n", + " 1.496119e-10\n", + " 9.333875e-13\n", + " 6.366463e-11\n", " 0.133756\n", - " 2.099150e-15\n", - " 1.530658e-25\n", - " 9.773915e-15\n", + " 2.985816e-16\n", + " 3.356707e-26\n", + " 7.112137e-15\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -4.296931e-16\n", - " 5.875300e-13\n", + " 1.049488e-15\n", + " 5.906386e-13\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -1412,21 +1412,21 @@ " \n", " \n", " 9.72\n", - " 1.441549e-10\n", - " 1.329142e-12\n", - " 4.729372e-11\n", + " 1.497256e-10\n", + " 9.345363e-13\n", + " 6.366463e-11\n", " 0.133756\n", - " 2.087753e-15\n", - " 1.490378e-25\n", - " 9.738770e-15\n", + " 3.020084e-16\n", + " 3.222438e-26\n", + " 7.119961e-15\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -4.295777e-16\n", - " 5.884182e-13\n", + " 1.050029e-15\n", + " 5.910827e-13\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -1436,21 +1436,21 @@ " \n", " \n", " 9.73\n", - " 1.442686e-10\n", - " 1.331127e-12\n", - " 4.729372e-11\n", + " 1.498393e-10\n", + " 9.356856e-13\n", + " 6.366463e-11\n", " 0.133756\n", - " 2.076231e-15\n", - " 1.450097e-25\n", - " 9.703977e-15\n", + " 3.054401e-16\n", + " 3.088170e-26\n", + " 7.127691e-15\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -4.294592e-16\n", - " 5.888623e-13\n", + " 1.050570e-15\n", + " 5.919709e-13\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -1460,21 +1460,21 @@ " \n", " \n", " 9.74\n", - " 1.444960e-10\n", - " 1.333115e-12\n", - " 4.729372e-11\n", + " 1.500666e-10\n", + " 9.368356e-13\n", + " 6.366463e-11\n", " 0.133756\n", - " 2.064585e-15\n", - " 1.409817e-25\n", - " 9.669541e-15\n", + " 3.088762e-16\n", + " 3.088170e-26\n", + " 7.135326e-15\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -4.293373e-16\n", - " 5.897505e-13\n", + " 1.051109e-15\n", + " 5.924150e-13\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -1484,21 +1484,21 @@ " \n", " \n", " 9.75\n", - " 1.446097e-10\n", - " 1.335103e-12\n", - " 4.729372e-11\n", + " 1.501803e-10\n", + " 9.379861e-13\n", + " 6.366463e-11\n", " 0.133756\n", - " 2.052819e-15\n", - " 1.369536e-25\n", - " 9.635465e-15\n", + " 3.123162e-16\n", + " 2.953902e-26\n", + " 7.142868e-15\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -4.292122e-16\n", - " 5.901946e-13\n", + " 1.051648e-15\n", + " 5.933032e-13\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -1508,21 +1508,21 @@ " \n", " \n", " 9.76\n", - " 1.447233e-10\n", - " 1.337094e-12\n", - " 4.729372e-11\n", + " 1.502940e-10\n", + " 9.391371e-13\n", + " 6.366463e-11\n", " 0.133756\n", - " 2.040934e-15\n", - " 1.315829e-25\n", - " 9.601752e-15\n", + " 3.157596e-16\n", + " 2.819634e-26\n", + " 7.150315e-15\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -4.290836e-16\n", - " 5.906386e-13\n", + " 1.052185e-15\n", + " 5.937473e-13\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -1532,21 +1532,21 @@ " \n", " \n", " 9.77\n", - " 1.448370e-10\n", - " 1.339085e-12\n", - " 4.729372e-11\n", + " 1.504077e-10\n", + " 9.402888e-13\n", + " 6.548362e-11\n", " 0.133756\n", - " 2.028933e-15\n", - " 1.262122e-25\n", - " 9.568407e-15\n", + " 3.192060e-16\n", + " 2.551097e-26\n", + " 7.157668e-15\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -4.289516e-16\n", - " 5.915268e-13\n", + " 1.052722e-15\n", + " 5.946355e-13\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -1556,21 +1556,21 @@ " \n", " \n", " 9.78\n", - " 1.450644e-10\n", - " 1.341078e-12\n", - " 4.729372e-11\n", + " 1.505214e-10\n", + " 9.414411e-13\n", + " 6.548362e-11\n", " 0.133756\n", - " 2.016819e-15\n", - " 1.235268e-25\n", - " 9.535431e-15\n", + " 3.226548e-16\n", + " 2.551097e-26\n", + " 7.164927e-15\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -4.288160e-16\n", - " 5.919709e-13\n", + " 1.053258e-15\n", + " 5.955236e-13\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -1580,21 +1580,21 @@ " \n", " \n", " 9.79\n", - " 1.451781e-10\n", - " 1.343073e-12\n", - " 4.729372e-11\n", + " 1.505214e-10\n", + " 9.425939e-13\n", + " 6.548362e-11\n", " 0.133756\n", - " 2.004593e-15\n", - " 1.208414e-25\n", - " 9.502830e-15\n", + " 3.261057e-16\n", + " 2.416829e-26\n", + " 7.172090e-15\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -4.286769e-16\n", - " 5.928591e-13\n", + " 1.053792e-15\n", + " 5.955236e-13\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -1604,21 +1604,21 @@ " \n", " \n", " 9.80\n", - " 1.452918e-10\n", - " 1.345068e-12\n", - " 4.729372e-11\n", + " 1.507487e-10\n", + " 9.437473e-13\n", + " 6.548362e-11\n", " 0.133756\n", - " 1.992258e-15\n", - " 1.168134e-25\n", - " 9.470605e-15\n", + " 3.295581e-16\n", + " 2.282561e-26\n", + " 7.179160e-15\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -4.285341e-16\n", - " 5.933032e-13\n", + " 1.054326e-15\n", + " 5.959677e-13\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -1628,21 +1628,21 @@ " \n", " \n", " 9.81\n", - " 1.454055e-10\n", - " 1.347065e-12\n", - " 4.911271e-11\n", + " 1.508624e-10\n", + " 9.449014e-13\n", + " 6.548362e-11\n", " 0.133756\n", - " 1.979818e-15\n", - " 1.141280e-25\n", - " 9.438761e-15\n", + " 3.330116e-16\n", + " 2.148292e-26\n", + " 7.186134e-15\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -4.283875e-16\n", - " 5.941914e-13\n", + " 1.054859e-15\n", + " 5.968559e-13\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -1652,21 +1652,21 @@ " \n", " \n", " 9.82\n", - " 1.455192e-10\n", - " 1.349064e-12\n", - " 4.911271e-11\n", + " 1.509761e-10\n", + " 9.460560e-13\n", + " 6.548362e-11\n", " 0.133756\n", - " 1.967273e-15\n", - " 1.101000e-25\n", - " 9.407299e-15\n", + " 3.364657e-16\n", + " 2.014024e-26\n", + " 7.193015e-15\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -4.282372e-16\n", - " 5.950795e-13\n", + " 1.055391e-15\n", + " 5.973000e-13\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -1676,21 +1676,21 @@ " \n", " \n", " 9.83\n", - " 1.455192e-10\n", - " 1.351063e-12\n", - " 4.911271e-11\n", + " 1.510898e-10\n", + " 9.472112e-13\n", + " 6.548362e-11\n", " 0.133756\n", - " 1.954626e-15\n", - " 1.060719e-25\n", - " 9.376224e-15\n", + " 3.399199e-16\n", + " 2.014024e-26\n", + " 7.199800e-15\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -4.280830e-16\n", - " 5.950795e-13\n", + " 1.055922e-15\n", + " 5.977441e-13\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -1700,21 +1700,21 @@ " \n", " \n", " 9.84\n", - " 1.457465e-10\n", - " 1.353064e-12\n", - " 4.911271e-11\n", + " 1.513172e-10\n", + " 9.483671e-13\n", + " 6.548362e-11\n", " 0.133756\n", - " 1.941881e-15\n", - " 1.033866e-25\n", - " 9.345538e-15\n", + " 3.433738e-16\n", + " 1.879756e-26\n", + " 7.206491e-15\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -4.279249e-16\n", - " 5.955236e-13\n", + " 1.056453e-15\n", + " 5.986323e-13\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -1724,21 +1724,21 @@ " \n", " \n", " 9.85\n", - " 1.458602e-10\n", - " 1.355066e-12\n", - " 4.911271e-11\n", + " 1.514309e-10\n", + " 9.495235e-13\n", + " 6.548362e-11\n", " 0.133756\n", - " 1.929039e-15\n", - " 1.007012e-25\n", - " 9.315245e-15\n", + " 3.468269e-16\n", + " 1.745487e-26\n", + " 7.213087e-15\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -4.277628e-16\n", - " 5.964118e-13\n", + " 1.056982e-15\n", + " 5.990763e-13\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -1748,21 +1748,21 @@ " \n", " \n", " 9.86\n", - " 1.459739e-10\n", - " 1.357070e-12\n", - " 4.911271e-11\n", + " 1.515446e-10\n", + " 9.506806e-13\n", + " 6.548362e-11\n", " 0.133756\n", - " 1.916102e-15\n", - " 9.667315e-26\n", - " 9.285346e-15\n", + " 3.502788e-16\n", + " 1.745487e-26\n", + " 7.219589e-15\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -4.275967e-16\n", - " 5.968559e-13\n", + " 1.057510e-15\n", + " 5.999645e-13\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -1772,21 +1772,21 @@ " \n", " \n", " 9.87\n", - " 1.460876e-10\n", - " 1.359074e-12\n", - " 4.911271e-11\n", + " 1.516582e-10\n", + " 9.518383e-13\n", + " 6.548362e-11\n", " 0.133756\n", - " 1.903074e-15\n", - " 9.398779e-26\n", - " 9.255845e-15\n", + " 3.537290e-16\n", + " 1.745487e-26\n", + " 7.225996e-15\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -4.274265e-16\n", - " 5.973000e-13\n", + " 1.058037e-15\n", + " 6.004086e-13\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -1796,21 +1796,21 @@ " \n", " \n", " 9.88\n", - " 1.463150e-10\n", - " 1.361080e-12\n", - " 4.911271e-11\n", + " 1.517719e-10\n", + " 9.529966e-13\n", + " 6.548362e-11\n", " 0.133756\n", - " 1.889956e-15\n", - " 9.130242e-26\n", - " 9.226744e-15\n", + " 3.571770e-16\n", + " 1.745487e-26\n", + " 7.232309e-15\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -4.272521e-16\n", - " 5.981882e-13\n", + " 1.058563e-15\n", + " 6.008527e-13\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -1820,21 +1820,21 @@ " \n", " \n", " 9.89\n", - " 1.464286e-10\n", - " 1.363087e-12\n", - " 4.911271e-11\n", + " 1.521130e-10\n", + " 9.541555e-13\n", + " 6.548362e-11\n", " 0.133756\n", - " 1.876751e-15\n", - " 8.727437e-26\n", - " 9.198046e-15\n", + " 3.606225e-16\n", + " 1.745487e-26\n", + " 7.238527e-15\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -4.270735e-16\n", - " 5.986323e-13\n", + " 1.059089e-15\n", + " 6.017409e-13\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -1844,21 +1844,21 @@ " \n", " \n", " 9.90\n", - " 1.465423e-10\n", - " 1.365096e-12\n", - " 4.911271e-11\n", + " 1.522267e-10\n", + " 9.553150e-13\n", + " 6.548362e-11\n", " 0.133756\n", - " 1.863461e-15\n", - " 8.593169e-26\n", - " 9.169753e-15\n", + " 3.640649e-16\n", + " 1.745487e-26\n", + " 7.244651e-15\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -4.268907e-16\n", - " 5.995204e-13\n", + " 1.059613e-15\n", + " 6.021850e-13\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -1868,21 +1868,21 @@ " \n", " \n", " 9.91\n", - " 1.466560e-10\n", - " 1.367105e-12\n", - " 4.911271e-11\n", + " 1.523404e-10\n", + " 9.564752e-13\n", + " 6.548362e-11\n", " 0.133756\n", - " 1.850090e-15\n", - " 8.324632e-26\n", - " 9.141869e-15\n", + " 3.675038e-16\n", + " 1.745487e-26\n", + " 7.250681e-15\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -4.267036e-16\n", - " 5.999645e-13\n", + " 1.060137e-15\n", + " 6.030731e-13\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -1892,21 +1892,21 @@ " \n", " \n", " 9.92\n", - " 1.467697e-10\n", - " 1.369116e-12\n", - " 4.911271e-11\n", + " 1.524540e-10\n", + " 9.576360e-13\n", + " 6.548362e-11\n", " 0.133756\n", - " 1.836638e-15\n", - " 8.056096e-26\n", - " 9.114395e-15\n", + " 3.709388e-16\n", + " 1.745487e-26\n", + " 7.256617e-15\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -4.265120e-16\n", - " 6.004086e-13\n", + " 1.060659e-15\n", + " 6.035172e-13\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -1916,21 +1916,21 @@ " \n", " \n", " 9.93\n", - " 1.471108e-10\n", - " 1.371127e-12\n", - " 4.911271e-11\n", + " 1.526814e-10\n", + " 9.587975e-13\n", + " 6.548362e-11\n", " 0.133756\n", - " 1.823109e-15\n", - " 7.921828e-26\n", - " 9.087333e-15\n", + " 3.743695e-16\n", + " 1.745487e-26\n", + " 7.262459e-15\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -4.263161e-16\n", - " 6.012968e-13\n", + " 1.061180e-15\n", + " 6.039613e-13\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -1940,21 +1940,21 @@ " \n", " \n", " 9.94\n", - " 1.472245e-10\n", - " 1.373140e-12\n", - " 4.911271e-11\n", + " 1.527951e-10\n", + " 9.599596e-13\n", + " 6.548362e-11\n", " 0.133756\n", - " 1.809506e-15\n", - " 7.653291e-26\n", - " 9.060687e-15\n", + " 3.777954e-16\n", + " 1.745487e-26\n", + " 7.268207e-15\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -4.261157e-16\n", - " 6.017409e-13\n", + " 1.061701e-15\n", + " 6.048495e-13\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -1964,21 +1964,21 @@ " \n", " \n", " 9.95\n", - " 1.473381e-10\n", - " 1.375154e-12\n", - " 4.911271e-11\n", + " 1.529088e-10\n", + " 9.611223e-13\n", + " 6.548362e-11\n", " 0.133756\n", - " 1.795829e-15\n", - " 7.519023e-26\n", - " 9.034457e-15\n", + " 3.812161e-16\n", + " 1.745487e-26\n", + " 7.273862e-15\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -4.259107e-16\n", - " 6.026291e-13\n", + " 1.062220e-15\n", + " 6.052936e-13\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -1988,21 +1988,21 @@ " \n", " \n", " 9.96\n", - " 1.474518e-10\n", - " 1.377169e-12\n", - " 4.911271e-11\n", + " 1.530225e-10\n", + " 9.622857e-13\n", + " 6.548362e-11\n", " 0.133756\n", - " 1.782083e-15\n", - " 7.250486e-26\n", - " 9.008647e-15\n", + " 3.846312e-16\n", + " 1.745487e-26\n", + " 7.279423e-15\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -4.257011e-16\n", - " 6.030731e-13\n", + " 1.062739e-15\n", + " 6.061818e-13\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -2012,21 +2012,21 @@ " \n", " \n", " 9.97\n", - " 1.476792e-10\n", - " 1.379185e-12\n", - " 4.911271e-11\n", + " 1.531362e-10\n", + " 9.634497e-13\n", + " 6.548362e-11\n", " 0.133756\n", - " 1.768268e-15\n", - " 7.116218e-26\n", - " 8.983258e-15\n", + " 3.880402e-16\n", + " 1.745487e-26\n", + " 7.284891e-15\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -4.254870e-16\n", - " 6.035172e-13\n", + " 1.063256e-15\n", + " 6.066259e-13\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -2036,21 +2036,21 @@ " \n", " \n", " 9.98\n", - " 1.477929e-10\n", - " 1.381202e-12\n", - " 4.911271e-11\n", + " 1.533635e-10\n", + " 9.646144e-13\n", + " 6.548362e-11\n", " 0.133756\n", - " 1.754388e-15\n", - " 6.847682e-26\n", - " 8.958292e-15\n", + " 3.914427e-16\n", + " 1.745487e-26\n", + " 7.290265e-15\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -4.252681e-16\n", - " 6.044054e-13\n", + " 1.063773e-15\n", + " 6.070699e-13\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -2060,21 +2060,21 @@ " \n", " \n", " 9.99\n", - " 1.479066e-10\n", - " 1.383220e-12\n", - " 4.911271e-11\n", + " 1.534772e-10\n", + " 9.657797e-13\n", + " 6.548362e-11\n", " 0.133756\n", - " 1.740446e-15\n", - " 6.713413e-26\n", - " 8.933751e-15\n", + " 3.948383e-16\n", + " 1.745487e-26\n", + " 7.295547e-15\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -4.250445e-16\n", - " 6.048495e-13\n", + " 1.064288e-15\n", + " 6.079581e-13\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -2084,21 +2084,21 @@ " \n", " \n", " 10.00\n", - " 1.480203e-10\n", - " 1.385239e-12\n", - " 4.911271e-11\n", + " 1.535909e-10\n", + " 9.669457e-13\n", + " 6.548362e-11\n", " 0.133756\n", - " 1.726442e-15\n", - " 6.310608e-26\n", - " 8.909637e-15\n", + " 3.982266e-16\n", + " 1.745487e-26\n", + " 7.300736e-15\n", " 45.0\n", " 336.434581\n", - " -2.947320e-18\n", + " 2.492525e-18\n", " ...\n", " 0.577997\n", " 44.87164\n", - " -4.248161e-16\n", - " 6.057377e-13\n", + " 1.064803e-15\n", + " 6.084022e-13\n", " 21.574149\n", " 39.491215\n", " 3.396464\n", @@ -2114,195 +2114,195 @@ "text/plain": [ " Fx Fy Fz Mach Mx \\\n", "time \n", - "0.01 1.148237e-11 -1.309051e-16 0.000000e+00 0.133756 1.458933e-13 \n", - "0.02 1.148237e-11 -1.518488e-16 0.000000e+00 0.133756 1.391836e-13 \n", - "0.03 1.148237e-11 -6.856851e-17 0.000000e+00 0.133756 1.327555e-13 \n", - "0.04 1.148237e-11 1.135581e-16 0.000000e+00 0.133756 1.265969e-13 \n", - "0.05 1.148237e-11 3.893841e-16 0.000000e+00 0.133756 1.206963e-13 \n", - "0.06 1.148237e-11 7.539836e-16 0.000000e+00 0.133756 1.150425e-13 \n", - "0.07 1.136868e-11 1.202642e-15 1.818989e-12 0.133756 1.096252e-13 \n", - "0.08 1.125500e-11 1.730847e-15 1.818989e-12 0.133756 1.044341e-13 \n", - "0.09 1.125500e-11 2.333641e-15 1.818989e-12 0.133756 9.945634e-14 \n", - "0.10 1.102762e-11 3.005565e-15 3.637979e-12 0.133756 9.467614e-14 \n", - "0.11 1.148237e-11 3.751901e-15 9.094947e-12 0.133756 9.013232e-14 \n", - "0.12 1.148237e-11 4.555658e-15 1.091394e-11 0.133756 8.574588e-14 \n", - "0.13 1.159606e-11 5.424279e-15 1.091394e-11 0.133756 8.156845e-14 \n", - "0.14 1.136868e-11 6.353882e-15 1.273293e-11 0.133756 7.758696e-14 \n", - "0.15 1.159606e-11 7.307893e-15 1.273293e-11 0.133756 7.362115e-14 \n", - "0.16 1.170974e-11 8.306240e-15 1.273293e-11 0.133756 6.980467e-14 \n", - "0.17 1.170974e-11 9.348327e-15 1.273293e-11 0.133756 6.614481e-14 \n", - "0.18 1.136868e-11 1.043316e-14 1.818989e-11 0.133756 6.264539e-14 \n", - "0.19 1.136868e-11 1.157113e-14 1.818989e-11 0.133756 5.936687e-14 \n", - "0.20 1.159606e-11 1.276209e-14 1.818989e-11 0.133756 5.629898e-14 \n", - "0.21 1.148237e-11 1.397774e-14 2.000888e-11 0.133756 5.329535e-14 \n", - "0.22 1.148237e-11 1.521910e-14 2.182787e-11 0.133756 5.038453e-14 \n", - "0.23 1.159606e-11 1.650005e-14 2.182787e-11 0.133756 4.764104e-14 \n", - "0.24 1.148237e-11 1.780983e-14 2.364686e-11 0.133756 4.501165e-14 \n", - "0.25 1.148237e-11 1.914984e-14 2.546585e-11 0.133756 4.250968e-14 \n", - "0.26 1.148237e-11 2.051194e-14 2.546585e-11 0.133756 4.009381e-14 \n", - "0.27 1.159606e-11 2.188773e-14 2.546585e-11 0.133756 3.773377e-14 \n", - "0.28 1.148237e-11 2.328209e-14 2.728484e-11 0.133756 3.546382e-14 \n", - "0.29 1.148237e-11 2.469674e-14 2.910383e-11 0.133756 3.330005e-14 \n", - "0.30 1.159606e-11 2.613274e-14 2.910383e-11 0.133756 3.124828e-14 \n", + "0.01 1.682565e-11 3.988299e-17 2.364686e-11 0.133756 2.931208e-14 \n", + "0.02 1.682565e-11 1.113008e-16 2.364686e-11 0.133756 2.830690e-14 \n", + "0.03 1.682565e-11 2.118543e-16 2.364686e-11 0.133756 2.734757e-14 \n", + "0.04 1.682565e-11 3.406791e-16 2.364686e-11 0.133756 2.643204e-14 \n", + "0.05 1.682565e-11 4.969478e-16 2.364686e-11 0.133756 2.555839e-14 \n", + "0.06 1.671197e-11 6.798681e-16 2.546585e-11 0.133756 2.472474e-14 \n", + "0.07 1.671197e-11 8.886811e-16 2.546585e-11 0.133756 2.392932e-14 \n", + "0.08 1.671197e-11 1.122661e-15 2.546585e-11 0.133756 2.317044e-14 \n", + "0.09 1.671197e-11 1.381110e-15 2.546585e-11 0.133756 2.244646e-14 \n", + "0.10 1.682565e-11 1.663364e-15 2.546585e-11 0.133756 2.175583e-14 \n", + "0.11 1.705303e-11 1.968783e-15 2.546585e-11 0.133756 2.109706e-14 \n", + "0.12 1.716671e-11 2.296755e-15 2.546585e-11 0.133756 2.046872e-14 \n", + "0.13 1.728040e-11 2.646694e-15 2.546585e-11 0.133756 1.986945e-14 \n", + "0.14 1.739409e-11 3.018038e-15 2.546585e-11 0.133756 1.929794e-14 \n", + "0.15 1.750777e-11 3.410248e-15 2.546585e-11 0.133756 1.875295e-14 \n", + "0.16 1.762146e-11 3.816426e-15 2.728484e-11 0.133756 1.819868e-14 \n", + "0.17 1.773515e-11 4.196172e-15 2.728484e-11 0.133756 1.744420e-14 \n", + "0.18 1.750777e-11 4.585643e-15 2.910383e-11 0.133756 1.670343e-14 \n", + "0.19 1.762146e-11 5.007389e-15 2.910383e-11 0.133756 1.609528e-14 \n", + "0.20 1.784883e-11 5.449073e-15 2.910383e-11 0.133756 1.554361e-14 \n", + "0.21 1.784883e-11 5.904860e-15 2.910383e-11 0.133756 1.501568e-14 \n", + "0.22 1.750777e-11 6.378532e-15 3.456080e-11 0.133756 1.453281e-14 \n", + "0.23 1.750777e-11 6.868901e-15 3.456080e-11 0.133756 1.408436e-14 \n", + "0.24 1.750777e-11 7.388058e-15 3.637979e-11 0.133756 1.373220e-14 \n", + "0.25 1.762146e-11 7.912658e-15 3.819878e-11 0.133756 1.334583e-14 \n", + "0.26 1.762146e-11 8.435388e-15 4.001777e-11 0.133756 1.290080e-14 \n", + "0.27 1.773515e-11 8.990677e-15 4.001777e-11 0.133756 1.258186e-14 \n", + "0.28 1.750777e-11 9.568884e-15 4.183676e-11 0.133756 1.232674e-14 \n", + "0.29 1.762146e-11 1.017752e-14 4.365575e-11 0.133756 1.216324e-14 \n", + "0.30 1.762146e-11 1.077698e-14 4.365575e-11 0.133756 1.188180e-14 \n", "... ... ... ... ... ... \n", - "9.71 1.440412e-10 1.327157e-12 4.729372e-11 0.133756 2.099150e-15 \n", - "9.72 1.441549e-10 1.329142e-12 4.729372e-11 0.133756 2.087753e-15 \n", - "9.73 1.442686e-10 1.331127e-12 4.729372e-11 0.133756 2.076231e-15 \n", - "9.74 1.444960e-10 1.333115e-12 4.729372e-11 0.133756 2.064585e-15 \n", - "9.75 1.446097e-10 1.335103e-12 4.729372e-11 0.133756 2.052819e-15 \n", - "9.76 1.447233e-10 1.337094e-12 4.729372e-11 0.133756 2.040934e-15 \n", - "9.77 1.448370e-10 1.339085e-12 4.729372e-11 0.133756 2.028933e-15 \n", - "9.78 1.450644e-10 1.341078e-12 4.729372e-11 0.133756 2.016819e-15 \n", - "9.79 1.451781e-10 1.343073e-12 4.729372e-11 0.133756 2.004593e-15 \n", - "9.80 1.452918e-10 1.345068e-12 4.729372e-11 0.133756 1.992258e-15 \n", - "9.81 1.454055e-10 1.347065e-12 4.911271e-11 0.133756 1.979818e-15 \n", - "9.82 1.455192e-10 1.349064e-12 4.911271e-11 0.133756 1.967273e-15 \n", - "9.83 1.455192e-10 1.351063e-12 4.911271e-11 0.133756 1.954626e-15 \n", - "9.84 1.457465e-10 1.353064e-12 4.911271e-11 0.133756 1.941881e-15 \n", - "9.85 1.458602e-10 1.355066e-12 4.911271e-11 0.133756 1.929039e-15 \n", - "9.86 1.459739e-10 1.357070e-12 4.911271e-11 0.133756 1.916102e-15 \n", - "9.87 1.460876e-10 1.359074e-12 4.911271e-11 0.133756 1.903074e-15 \n", - "9.88 1.463150e-10 1.361080e-12 4.911271e-11 0.133756 1.889956e-15 \n", - "9.89 1.464286e-10 1.363087e-12 4.911271e-11 0.133756 1.876751e-15 \n", - "9.90 1.465423e-10 1.365096e-12 4.911271e-11 0.133756 1.863461e-15 \n", - "9.91 1.466560e-10 1.367105e-12 4.911271e-11 0.133756 1.850090e-15 \n", - "9.92 1.467697e-10 1.369116e-12 4.911271e-11 0.133756 1.836638e-15 \n", - "9.93 1.471108e-10 1.371127e-12 4.911271e-11 0.133756 1.823109e-15 \n", - "9.94 1.472245e-10 1.373140e-12 4.911271e-11 0.133756 1.809506e-15 \n", - "9.95 1.473381e-10 1.375154e-12 4.911271e-11 0.133756 1.795829e-15 \n", - "9.96 1.474518e-10 1.377169e-12 4.911271e-11 0.133756 1.782083e-15 \n", - "9.97 1.476792e-10 1.379185e-12 4.911271e-11 0.133756 1.768268e-15 \n", - "9.98 1.477929e-10 1.381202e-12 4.911271e-11 0.133756 1.754388e-15 \n", - "9.99 1.479066e-10 1.383220e-12 4.911271e-11 0.133756 1.740446e-15 \n", - "10.00 1.480203e-10 1.385239e-12 4.911271e-11 0.133756 1.726442e-15 \n", + "9.71 1.496119e-10 9.333875e-13 6.366463e-11 0.133756 2.985816e-16 \n", + "9.72 1.497256e-10 9.345363e-13 6.366463e-11 0.133756 3.020084e-16 \n", + "9.73 1.498393e-10 9.356856e-13 6.366463e-11 0.133756 3.054401e-16 \n", + "9.74 1.500666e-10 9.368356e-13 6.366463e-11 0.133756 3.088762e-16 \n", + "9.75 1.501803e-10 9.379861e-13 6.366463e-11 0.133756 3.123162e-16 \n", + "9.76 1.502940e-10 9.391371e-13 6.366463e-11 0.133756 3.157596e-16 \n", + "9.77 1.504077e-10 9.402888e-13 6.548362e-11 0.133756 3.192060e-16 \n", + "9.78 1.505214e-10 9.414411e-13 6.548362e-11 0.133756 3.226548e-16 \n", + "9.79 1.505214e-10 9.425939e-13 6.548362e-11 0.133756 3.261057e-16 \n", + "9.80 1.507487e-10 9.437473e-13 6.548362e-11 0.133756 3.295581e-16 \n", + "9.81 1.508624e-10 9.449014e-13 6.548362e-11 0.133756 3.330116e-16 \n", + "9.82 1.509761e-10 9.460560e-13 6.548362e-11 0.133756 3.364657e-16 \n", + "9.83 1.510898e-10 9.472112e-13 6.548362e-11 0.133756 3.399199e-16 \n", + "9.84 1.513172e-10 9.483671e-13 6.548362e-11 0.133756 3.433738e-16 \n", + "9.85 1.514309e-10 9.495235e-13 6.548362e-11 0.133756 3.468269e-16 \n", + "9.86 1.515446e-10 9.506806e-13 6.548362e-11 0.133756 3.502788e-16 \n", + "9.87 1.516582e-10 9.518383e-13 6.548362e-11 0.133756 3.537290e-16 \n", + "9.88 1.517719e-10 9.529966e-13 6.548362e-11 0.133756 3.571770e-16 \n", + "9.89 1.521130e-10 9.541555e-13 6.548362e-11 0.133756 3.606225e-16 \n", + "9.90 1.522267e-10 9.553150e-13 6.548362e-11 0.133756 3.640649e-16 \n", + "9.91 1.523404e-10 9.564752e-13 6.548362e-11 0.133756 3.675038e-16 \n", + "9.92 1.524540e-10 9.576360e-13 6.548362e-11 0.133756 3.709388e-16 \n", + "9.93 1.526814e-10 9.587975e-13 6.548362e-11 0.133756 3.743695e-16 \n", + "9.94 1.527951e-10 9.599596e-13 6.548362e-11 0.133756 3.777954e-16 \n", + "9.95 1.529088e-10 9.611223e-13 6.548362e-11 0.133756 3.812161e-16 \n", + "9.96 1.530225e-10 9.622857e-13 6.548362e-11 0.133756 3.846312e-16 \n", + "9.97 1.531362e-10 9.634497e-13 6.548362e-11 0.133756 3.880402e-16 \n", + "9.98 1.533635e-10 9.646144e-13 6.548362e-11 0.133756 3.914427e-16 \n", + "9.99 1.534772e-10 9.657797e-13 6.548362e-11 0.133756 3.948383e-16 \n", + "10.00 1.535909e-10 9.669457e-13 6.548362e-11 0.133756 3.982266e-16 \n", "\n", " My Mz TAS a aileron ... \\\n", "time ... \n", - "0.01 -1.410812e-11 -2.516985e-14 45.0 336.434581 -2.947320e-18 ... \n", - "0.02 -1.367932e-11 -2.601912e-14 45.0 336.434581 -2.947320e-18 ... \n", - "0.03 -1.326355e-11 -2.681870e-14 45.0 336.434581 -2.947320e-18 ... \n", - "0.04 -1.286042e-11 -2.757050e-14 45.0 336.434581 -2.947320e-18 ... \n", - "0.05 -1.246954e-11 -2.827633e-14 45.0 336.434581 -2.947320e-18 ... \n", - "0.06 -1.209054e-11 -2.893794e-14 45.0 336.434581 -2.947320e-18 ... \n", - "0.07 -1.172306e-11 -2.955701e-14 45.0 336.434581 -2.947320e-18 ... \n", - "0.08 -1.098882e-11 -3.047221e-14 45.0 336.434581 -2.947320e-18 ... \n", - "0.09 -1.065483e-11 -3.100995e-14 45.0 336.434581 -2.947320e-18 ... \n", - "0.10 -9.950832e-12 -2.611375e-14 45.0 336.434581 -2.947320e-18 ... \n", - "0.11 -9.275783e-12 -3.197848e-14 45.0 336.434581 -2.947320e-18 ... \n", - "0.12 -8.613704e-12 -3.004604e-14 45.0 336.434581 -2.947320e-18 ... \n", - "0.13 -8.351899e-12 -3.044730e-14 45.0 336.434581 -2.947320e-18 ... \n", - "0.14 -7.717900e-12 -4.295721e-14 45.0 336.434581 -2.947320e-18 ... \n", - "0.15 -6.738115e-12 -4.595269e-14 45.0 336.434581 -2.947320e-18 ... \n", - "0.16 -6.533317e-12 -4.621544e-14 45.0 336.434581 -2.947320e-18 ... \n", - "0.17 -6.334743e-12 -4.644720e-14 45.0 336.434581 -2.947320e-18 ... \n", - "0.18 -5.769601e-12 -4.429277e-14 45.0 336.434581 -2.947320e-18 ... \n", - "0.19 -5.221636e-12 -2.966188e-14 45.0 336.434581 -2.947320e-18 ... \n", - "0.20 -5.062930e-12 -2.985905e-14 45.0 336.434581 -2.947320e-18 ... \n", - "0.21 -4.536443e-12 -4.416963e-14 45.0 336.434581 -2.947320e-18 ... \n", - "0.22 -4.025959e-12 -3.485120e-14 45.0 336.434581 -2.947320e-18 ... \n", - "0.23 -3.903594e-12 -3.496163e-14 45.0 336.434581 -2.947320e-18 ... \n", - "0.24 -3.412344e-12 -3.471297e-14 45.0 336.434581 -2.947320e-18 ... \n", - "0.25 -2.936026e-12 -3.074090e-14 45.0 336.434581 -2.947320e-18 ... \n", - "0.26 -2.474184e-12 -3.921483e-14 45.0 336.434581 -2.947320e-18 ... \n", - "0.27 -2.398984e-12 -3.922856e-14 45.0 336.434581 -2.947320e-18 ... \n", - "0.28 -1.953465e-12 -4.056870e-14 45.0 336.434581 -2.947320e-18 ... \n", - "0.29 -1.521488e-12 -3.582637e-14 45.0 336.434581 -2.947320e-18 ... \n", - "0.30 -1.475244e-12 -3.579192e-14 45.0 336.434581 -2.947320e-18 ... \n", + "0.01 -1.502423e-11 3.036133e-14 45.0 336.434581 2.492525e-18 ... \n", + "0.02 -1.456759e-11 3.008343e-14 45.0 336.434581 2.492525e-18 ... \n", + "0.03 -1.412482e-11 2.981037e-14 45.0 336.434581 2.492525e-18 ... \n", + "0.04 -1.369551e-11 2.954186e-14 45.0 336.434581 2.492525e-18 ... \n", + "0.05 -1.327925e-11 2.927764e-14 45.0 336.434581 2.492525e-18 ... \n", + "0.06 -1.287564e-11 2.901745e-14 45.0 336.434581 2.492525e-18 ... \n", + "0.07 -1.248430e-11 2.876107e-14 45.0 336.434581 2.492525e-18 ... \n", + "0.08 -1.210485e-11 2.850826e-14 45.0 336.434581 2.492525e-18 ... \n", + "0.09 -1.173694e-11 2.825879e-14 45.0 336.434581 2.492525e-18 ... \n", + "0.10 -1.138021e-11 2.801248e-14 45.0 336.434581 2.492525e-18 ... \n", + "0.11 -1.103432e-11 2.776911e-14 45.0 336.434581 2.492525e-18 ... \n", + "0.12 -1.069894e-11 2.752851e-14 45.0 336.434581 2.492525e-18 ... \n", + "0.13 -1.037376e-11 2.729050e-14 45.0 336.434581 2.492525e-18 ... \n", + "0.14 -1.005846e-11 2.705491e-14 45.0 336.434581 2.492525e-18 ... \n", + "0.15 -9.752741e-12 2.682158e-14 45.0 336.434581 2.492525e-18 ... \n", + "0.16 -9.079912e-12 -7.014492e-16 45.0 336.434581 2.492525e-18 ... \n", + "0.17 -8.803938e-12 -8.500321e-16 45.0 336.434581 2.492525e-18 ... \n", + "0.18 -8.156199e-12 8.450127e-15 45.0 336.434581 2.492525e-18 ... \n", + "0.19 -7.147997e-12 1.098344e-14 45.0 336.434581 2.492525e-18 ... \n", + "0.20 -6.930741e-12 1.081493e-14 45.0 336.434581 2.492525e-18 ... \n", + "0.21 -6.720088e-12 1.064987e-14 45.0 336.434581 2.492525e-18 ... \n", + "0.22 -6.143234e-12 1.553733e-14 45.0 336.434581 2.492525e-18 ... \n", + "0.23 -5.576365e-12 2.210854e-14 45.0 336.434581 2.492525e-18 ... \n", + "0.24 -5.406877e-12 2.191748e-14 45.0 336.434581 2.492525e-18 ... \n", + "0.25 -4.869937e-12 1.028275e-14 45.0 336.434581 2.492525e-18 ... \n", + "0.26 -4.341769e-12 1.957141e-14 45.0 336.434581 2.492525e-18 ... \n", + "0.27 -4.209805e-12 1.939235e-14 45.0 336.434581 2.492525e-18 ... \n", + "0.28 -3.709249e-12 3.032277e-14 45.0 336.434581 2.492525e-18 ... \n", + "0.29 -3.216358e-12 1.797171e-14 45.0 336.434581 2.492525e-18 ... \n", + "0.30 -2.738449e-12 1.206311e-14 45.0 336.434581 2.492525e-18 ... \n", "... ... ... ... ... ... ... \n", - "9.71 1.530658e-25 9.773915e-15 45.0 336.434581 -2.947320e-18 ... \n", - "9.72 1.490378e-25 9.738770e-15 45.0 336.434581 -2.947320e-18 ... \n", - "9.73 1.450097e-25 9.703977e-15 45.0 336.434581 -2.947320e-18 ... \n", - "9.74 1.409817e-25 9.669541e-15 45.0 336.434581 -2.947320e-18 ... \n", - "9.75 1.369536e-25 9.635465e-15 45.0 336.434581 -2.947320e-18 ... \n", - "9.76 1.315829e-25 9.601752e-15 45.0 336.434581 -2.947320e-18 ... \n", - "9.77 1.262122e-25 9.568407e-15 45.0 336.434581 -2.947320e-18 ... \n", - "9.78 1.235268e-25 9.535431e-15 45.0 336.434581 -2.947320e-18 ... \n", - "9.79 1.208414e-25 9.502830e-15 45.0 336.434581 -2.947320e-18 ... \n", - "9.80 1.168134e-25 9.470605e-15 45.0 336.434581 -2.947320e-18 ... \n", - "9.81 1.141280e-25 9.438761e-15 45.0 336.434581 -2.947320e-18 ... \n", - "9.82 1.101000e-25 9.407299e-15 45.0 336.434581 -2.947320e-18 ... \n", - "9.83 1.060719e-25 9.376224e-15 45.0 336.434581 -2.947320e-18 ... \n", - "9.84 1.033866e-25 9.345538e-15 45.0 336.434581 -2.947320e-18 ... \n", - "9.85 1.007012e-25 9.315245e-15 45.0 336.434581 -2.947320e-18 ... \n", - "9.86 9.667315e-26 9.285346e-15 45.0 336.434581 -2.947320e-18 ... \n", - "9.87 9.398779e-26 9.255845e-15 45.0 336.434581 -2.947320e-18 ... \n", - "9.88 9.130242e-26 9.226744e-15 45.0 336.434581 -2.947320e-18 ... \n", - "9.89 8.727437e-26 9.198046e-15 45.0 336.434581 -2.947320e-18 ... \n", - "9.90 8.593169e-26 9.169753e-15 45.0 336.434581 -2.947320e-18 ... \n", - "9.91 8.324632e-26 9.141869e-15 45.0 336.434581 -2.947320e-18 ... \n", - "9.92 8.056096e-26 9.114395e-15 45.0 336.434581 -2.947320e-18 ... \n", - "9.93 7.921828e-26 9.087333e-15 45.0 336.434581 -2.947320e-18 ... \n", - "9.94 7.653291e-26 9.060687e-15 45.0 336.434581 -2.947320e-18 ... \n", - "9.95 7.519023e-26 9.034457e-15 45.0 336.434581 -2.947320e-18 ... \n", - "9.96 7.250486e-26 9.008647e-15 45.0 336.434581 -2.947320e-18 ... \n", - "9.97 7.116218e-26 8.983258e-15 45.0 336.434581 -2.947320e-18 ... \n", - "9.98 6.847682e-26 8.958292e-15 45.0 336.434581 -2.947320e-18 ... \n", - "9.99 6.713413e-26 8.933751e-15 45.0 336.434581 -2.947320e-18 ... \n", - "10.00 6.310608e-26 8.909637e-15 45.0 336.434581 -2.947320e-18 ... \n", + "9.71 3.356707e-26 7.112137e-15 45.0 336.434581 2.492525e-18 ... \n", + "9.72 3.222438e-26 7.119961e-15 45.0 336.434581 2.492525e-18 ... \n", + "9.73 3.088170e-26 7.127691e-15 45.0 336.434581 2.492525e-18 ... \n", + "9.74 3.088170e-26 7.135326e-15 45.0 336.434581 2.492525e-18 ... \n", + "9.75 2.953902e-26 7.142868e-15 45.0 336.434581 2.492525e-18 ... \n", + "9.76 2.819634e-26 7.150315e-15 45.0 336.434581 2.492525e-18 ... \n", + "9.77 2.551097e-26 7.157668e-15 45.0 336.434581 2.492525e-18 ... \n", + "9.78 2.551097e-26 7.164927e-15 45.0 336.434581 2.492525e-18 ... \n", + "9.79 2.416829e-26 7.172090e-15 45.0 336.434581 2.492525e-18 ... \n", + "9.80 2.282561e-26 7.179160e-15 45.0 336.434581 2.492525e-18 ... \n", + "9.81 2.148292e-26 7.186134e-15 45.0 336.434581 2.492525e-18 ... \n", + "9.82 2.014024e-26 7.193015e-15 45.0 336.434581 2.492525e-18 ... \n", + "9.83 2.014024e-26 7.199800e-15 45.0 336.434581 2.492525e-18 ... \n", + "9.84 1.879756e-26 7.206491e-15 45.0 336.434581 2.492525e-18 ... \n", + "9.85 1.745487e-26 7.213087e-15 45.0 336.434581 2.492525e-18 ... \n", + "9.86 1.745487e-26 7.219589e-15 45.0 336.434581 2.492525e-18 ... \n", + "9.87 1.745487e-26 7.225996e-15 45.0 336.434581 2.492525e-18 ... \n", + "9.88 1.745487e-26 7.232309e-15 45.0 336.434581 2.492525e-18 ... \n", + "9.89 1.745487e-26 7.238527e-15 45.0 336.434581 2.492525e-18 ... \n", + "9.90 1.745487e-26 7.244651e-15 45.0 336.434581 2.492525e-18 ... \n", + "9.91 1.745487e-26 7.250681e-15 45.0 336.434581 2.492525e-18 ... \n", + "9.92 1.745487e-26 7.256617e-15 45.0 336.434581 2.492525e-18 ... \n", + "9.93 1.745487e-26 7.262459e-15 45.0 336.434581 2.492525e-18 ... \n", + "9.94 1.745487e-26 7.268207e-15 45.0 336.434581 2.492525e-18 ... \n", + "9.95 1.745487e-26 7.273862e-15 45.0 336.434581 2.492525e-18 ... \n", + "9.96 1.745487e-26 7.279423e-15 45.0 336.434581 2.492525e-18 ... \n", + "9.97 1.745487e-26 7.284891e-15 45.0 336.434581 2.492525e-18 ... \n", + "9.98 1.745487e-26 7.290265e-15 45.0 336.434581 2.492525e-18 ... \n", + "9.99 1.745487e-26 7.295547e-15 45.0 336.434581 2.492525e-18 ... \n", + "10.00 1.745487e-26 7.300736e-15 45.0 336.434581 2.492525e-18 ... \n", "\n", " thrust u v v_down v_east v_north \\\n", "time \n", - "0.01 0.577997 44.87164 -1.750768e-15 4.440892e-16 21.574149 39.491215 \n", - "0.02 0.577997 44.87164 -1.750648e-15 4.440892e-16 21.574149 39.491215 \n", - "0.03 0.577997 44.87164 -1.750447e-15 4.440892e-16 21.574149 39.491215 \n", - "0.04 0.577997 44.87164 -1.750165e-15 4.440892e-16 21.574149 39.491215 \n", - "0.05 0.577997 44.87164 -1.749801e-15 4.440892e-16 21.574149 39.491215 \n", - "0.06 0.577997 44.87164 -1.749354e-15 4.440892e-16 21.574149 39.491215 \n", - "0.07 0.577997 44.87164 -1.748824e-15 4.440892e-16 21.574149 39.491215 \n", - "0.08 0.577997 44.87164 -1.748210e-15 0.000000e+00 21.574149 39.491215 \n", - "0.09 0.577997 44.87164 -1.747513e-15 -4.440892e-16 21.574149 39.491215 \n", - "0.10 0.577997 44.87164 -1.746731e-15 -8.881784e-16 21.574149 39.491215 \n", - "0.11 0.577997 44.87164 -1.745866e-15 -8.881784e-16 21.574149 39.491215 \n", - "0.12 0.577997 44.87164 -1.744917e-15 -8.881784e-16 21.574149 39.491215 \n", - "0.13 0.577997 44.87164 -1.743885e-15 -4.440892e-16 21.574149 39.491215 \n", - "0.14 0.577997 44.87164 -1.742771e-15 -4.440892e-16 21.574149 39.491215 \n", - "0.15 0.577997 44.87164 -1.741569e-15 0.000000e+00 21.574149 39.491215 \n", - "0.16 0.577997 44.87164 -1.740262e-15 0.000000e+00 21.574149 39.491215 \n", - "0.17 0.577997 44.87164 -1.738848e-15 0.000000e+00 21.574149 39.491215 \n", - "0.18 0.577997 44.87164 -1.737329e-15 4.440892e-16 21.574149 39.491215 \n", - "0.19 0.577997 44.87164 -1.735710e-15 4.440892e-16 21.574149 39.491215 \n", - "0.20 0.577997 44.87164 -1.734011e-15 8.881784e-16 21.574149 39.491215 \n", - "0.21 0.577997 44.87164 -1.732233e-15 8.881784e-16 21.574149 39.491215 \n", - "0.22 0.577997 44.87164 -1.730359e-15 8.881784e-16 21.574149 39.491215 \n", - "0.23 0.577997 44.87164 -1.728400e-15 1.332268e-15 21.574149 39.491215 \n", - "0.24 0.577997 44.87164 -1.726356e-15 1.332268e-15 21.574149 39.491215 \n", - "0.25 0.577997 44.87164 -1.724231e-15 1.776357e-15 21.574149 39.491215 \n", - "0.26 0.577997 44.87164 -1.722026e-15 1.776357e-15 21.574149 39.491215 \n", - "0.27 0.577997 44.87164 -1.719735e-15 1.776357e-15 21.574149 39.491215 \n", - "0.28 0.577997 44.87164 -1.717353e-15 2.220446e-15 21.574149 39.491215 \n", - "0.29 0.577997 44.87164 -1.714882e-15 2.220446e-15 21.574149 39.491215 \n", - "0.30 0.577997 44.87164 -1.712327e-15 2.664535e-15 21.574149 39.491215 \n", + "0.01 0.577997 44.87164 8.373417e-16 4.440892e-16 21.574149 39.491215 \n", + "0.02 0.577997 44.87164 8.372773e-16 4.440892e-16 21.574149 39.491215 \n", + "0.03 0.577997 44.87164 8.371706e-16 4.440892e-16 21.574149 39.491215 \n", + "0.04 0.577997 44.87164 8.370221e-16 4.440892e-16 21.574149 39.491215 \n", + "0.05 0.577997 44.87164 8.368322e-16 4.440892e-16 21.574149 39.491215 \n", + "0.06 0.577997 44.87164 8.366015e-16 4.440892e-16 21.574149 39.491215 \n", + "0.07 0.577997 44.87164 8.363303e-16 4.440892e-16 21.574149 39.491215 \n", + "0.08 0.577997 44.87164 8.360192e-16 4.440892e-16 21.574149 39.491215 \n", + "0.09 0.577997 44.87164 8.356686e-16 4.440892e-16 21.574149 39.491215 \n", + "0.10 0.577997 44.87164 8.352790e-16 8.881784e-16 21.574149 39.491215 \n", + "0.11 0.577997 44.87164 8.348508e-16 1.776357e-15 21.574149 39.491215 \n", + "0.12 0.577997 44.87164 8.343846e-16 2.220446e-15 21.574149 39.491215 \n", + "0.13 0.577997 44.87164 8.338806e-16 2.664535e-15 21.574149 39.491215 \n", + "0.14 0.577997 44.87164 8.333395e-16 3.552714e-15 21.574149 39.491215 \n", + "0.15 0.577997 44.87164 8.327615e-16 3.996803e-15 21.574149 39.491215 \n", + "0.16 0.577997 44.87164 8.321473e-16 4.440892e-15 21.574149 39.491215 \n", + "0.17 0.577997 44.87164 8.315258e-16 4.440892e-15 21.574149 39.491215 \n", + "0.18 0.577997 44.87164 8.309147e-16 4.440892e-15 21.574149 39.491215 \n", + "0.19 0.577997 44.87164 8.303082e-16 4.884981e-15 21.574149 39.491215 \n", + "0.20 0.577997 44.87164 8.296945e-16 4.884981e-15 21.574149 39.491215 \n", + "0.21 0.577997 44.87164 8.290711e-16 5.329071e-15 21.574149 39.491215 \n", + "0.22 0.577997 44.87164 8.284374e-16 5.329071e-15 21.574149 39.491215 \n", + "0.23 0.577997 44.87164 8.277876e-16 5.329071e-15 21.574149 39.491215 \n", + "0.24 0.577997 44.87164 8.271166e-16 5.773160e-15 21.574149 39.491215 \n", + "0.25 0.577997 44.87164 8.264191e-16 5.773160e-15 21.574149 39.491215 \n", + "0.26 0.577997 44.87164 8.257109e-16 6.217249e-15 21.574149 39.491215 \n", + "0.27 0.577997 44.87164 8.249888e-16 6.217249e-15 21.574149 39.491215 \n", + "0.28 0.577997 44.87164 8.242409e-16 6.217249e-15 21.574149 39.491215 \n", + "0.29 0.577997 44.87164 8.234528e-16 6.661338e-15 21.574149 39.491215 \n", + "0.30 0.577997 44.87164 8.226298e-16 6.661338e-15 21.574149 39.491215 \n", "... ... ... ... ... ... ... \n", - "9.71 0.577997 44.87164 -4.296931e-16 5.875300e-13 21.574149 39.491215 \n", - "9.72 0.577997 44.87164 -4.295777e-16 5.884182e-13 21.574149 39.491215 \n", - "9.73 0.577997 44.87164 -4.294592e-16 5.888623e-13 21.574149 39.491215 \n", - "9.74 0.577997 44.87164 -4.293373e-16 5.897505e-13 21.574149 39.491215 \n", - "9.75 0.577997 44.87164 -4.292122e-16 5.901946e-13 21.574149 39.491215 \n", - "9.76 0.577997 44.87164 -4.290836e-16 5.906386e-13 21.574149 39.491215 \n", - "9.77 0.577997 44.87164 -4.289516e-16 5.915268e-13 21.574149 39.491215 \n", - "9.78 0.577997 44.87164 -4.288160e-16 5.919709e-13 21.574149 39.491215 \n", - "9.79 0.577997 44.87164 -4.286769e-16 5.928591e-13 21.574149 39.491215 \n", - "9.80 0.577997 44.87164 -4.285341e-16 5.933032e-13 21.574149 39.491215 \n", - "9.81 0.577997 44.87164 -4.283875e-16 5.941914e-13 21.574149 39.491215 \n", - "9.82 0.577997 44.87164 -4.282372e-16 5.950795e-13 21.574149 39.491215 \n", - "9.83 0.577997 44.87164 -4.280830e-16 5.950795e-13 21.574149 39.491215 \n", - "9.84 0.577997 44.87164 -4.279249e-16 5.955236e-13 21.574149 39.491215 \n", - "9.85 0.577997 44.87164 -4.277628e-16 5.964118e-13 21.574149 39.491215 \n", - "9.86 0.577997 44.87164 -4.275967e-16 5.968559e-13 21.574149 39.491215 \n", - "9.87 0.577997 44.87164 -4.274265e-16 5.973000e-13 21.574149 39.491215 \n", - "9.88 0.577997 44.87164 -4.272521e-16 5.981882e-13 21.574149 39.491215 \n", - "9.89 0.577997 44.87164 -4.270735e-16 5.986323e-13 21.574149 39.491215 \n", - "9.90 0.577997 44.87164 -4.268907e-16 5.995204e-13 21.574149 39.491215 \n", - "9.91 0.577997 44.87164 -4.267036e-16 5.999645e-13 21.574149 39.491215 \n", - "9.92 0.577997 44.87164 -4.265120e-16 6.004086e-13 21.574149 39.491215 \n", - "9.93 0.577997 44.87164 -4.263161e-16 6.012968e-13 21.574149 39.491215 \n", - "9.94 0.577997 44.87164 -4.261157e-16 6.017409e-13 21.574149 39.491215 \n", - "9.95 0.577997 44.87164 -4.259107e-16 6.026291e-13 21.574149 39.491215 \n", - "9.96 0.577997 44.87164 -4.257011e-16 6.030731e-13 21.574149 39.491215 \n", - "9.97 0.577997 44.87164 -4.254870e-16 6.035172e-13 21.574149 39.491215 \n", - "9.98 0.577997 44.87164 -4.252681e-16 6.044054e-13 21.574149 39.491215 \n", - "9.99 0.577997 44.87164 -4.250445e-16 6.048495e-13 21.574149 39.491215 \n", - "10.00 0.577997 44.87164 -4.248161e-16 6.057377e-13 21.574149 39.491215 \n", + "9.71 0.577997 44.87164 1.049488e-15 5.906386e-13 21.574149 39.491215 \n", + "9.72 0.577997 44.87164 1.050029e-15 5.910827e-13 21.574149 39.491215 \n", + "9.73 0.577997 44.87164 1.050570e-15 5.919709e-13 21.574149 39.491215 \n", + "9.74 0.577997 44.87164 1.051109e-15 5.924150e-13 21.574149 39.491215 \n", + "9.75 0.577997 44.87164 1.051648e-15 5.933032e-13 21.574149 39.491215 \n", + "9.76 0.577997 44.87164 1.052185e-15 5.937473e-13 21.574149 39.491215 \n", + "9.77 0.577997 44.87164 1.052722e-15 5.946355e-13 21.574149 39.491215 \n", + "9.78 0.577997 44.87164 1.053258e-15 5.955236e-13 21.574149 39.491215 \n", + "9.79 0.577997 44.87164 1.053792e-15 5.955236e-13 21.574149 39.491215 \n", + "9.80 0.577997 44.87164 1.054326e-15 5.959677e-13 21.574149 39.491215 \n", + "9.81 0.577997 44.87164 1.054859e-15 5.968559e-13 21.574149 39.491215 \n", + "9.82 0.577997 44.87164 1.055391e-15 5.973000e-13 21.574149 39.491215 \n", + "9.83 0.577997 44.87164 1.055922e-15 5.977441e-13 21.574149 39.491215 \n", + "9.84 0.577997 44.87164 1.056453e-15 5.986323e-13 21.574149 39.491215 \n", + "9.85 0.577997 44.87164 1.056982e-15 5.990763e-13 21.574149 39.491215 \n", + "9.86 0.577997 44.87164 1.057510e-15 5.999645e-13 21.574149 39.491215 \n", + "9.87 0.577997 44.87164 1.058037e-15 6.004086e-13 21.574149 39.491215 \n", + "9.88 0.577997 44.87164 1.058563e-15 6.008527e-13 21.574149 39.491215 \n", + "9.89 0.577997 44.87164 1.059089e-15 6.017409e-13 21.574149 39.491215 \n", + "9.90 0.577997 44.87164 1.059613e-15 6.021850e-13 21.574149 39.491215 \n", + "9.91 0.577997 44.87164 1.060137e-15 6.030731e-13 21.574149 39.491215 \n", + "9.92 0.577997 44.87164 1.060659e-15 6.035172e-13 21.574149 39.491215 \n", + "9.93 0.577997 44.87164 1.061180e-15 6.039613e-13 21.574149 39.491215 \n", + "9.94 0.577997 44.87164 1.061701e-15 6.048495e-13 21.574149 39.491215 \n", + "9.95 0.577997 44.87164 1.062220e-15 6.052936e-13 21.574149 39.491215 \n", + "9.96 0.577997 44.87164 1.062739e-15 6.061818e-13 21.574149 39.491215 \n", + "9.97 0.577997 44.87164 1.063256e-15 6.066259e-13 21.574149 39.491215 \n", + "9.98 0.577997 44.87164 1.063773e-15 6.070699e-13 21.574149 39.491215 \n", + "9.99 0.577997 44.87164 1.064288e-15 6.079581e-13 21.574149 39.491215 \n", + "10.00 0.577997 44.87164 1.064803e-15 6.084022e-13 21.574149 39.491215 \n", "\n", " w x_earth y_earth z_earth \n", "time \n", @@ -2418,7 +2418,7 @@ "data": { "image/png": "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\n8I6UUgKGIuJjwI/IXKruxpTSf026akmSJB2QWg/Oo6b6+7Df8JxSeuc4X3pTnrVfBb46zuv8EPjh\nAVUnSZIkVRBvzy1JkqSie+6551i5cmXB66+77jpuvvnmCdfcdNNNfOxjH8v7tS996UsHVF+hDM+S\nJEmqOL/3e7/He97znkk/3/AsSZKkknn0pUf55uPf5NGXHp221xweHuZDH/oQxx57LGeddRa9vb38\n+te/5uyzz+akk07iDW94A0899RQAf/Znf8ZXvvIVAB566CGOP/54TjvtNP7kT/5kTAd706ZNnH32\n2axYsYJPfOITAFx55ZX09vZywgkncOmll05b/TD913mWJElSBfvLB/+Sp7Y9NeGanoEefrX9VyQS\nQXD0vKNpaWwZd/1vzv9NPnnKJ/f73uvXr+e73/0u119/PW9/+9v53ve+x9/+7d9y3XXXsWLFCh54\n4AE+8pGP8NOf/nTM897//vezZs0aTj/9dK688soxX3v00Ud55JFHaGpq4uijj+YP/uAPWL16NV/9\n6ld59NHpC/6jDM+SJEkao3uwm5S9n10i0T3YPWF4LtTy5cs54YQTADjppJN47rnn+I//+A8uvvji\nPWv6+/vHPGfHjh10d3dz+umnA/Cud72Lu+66a8/X3/SmN3HwwQcD8OpXv5rnn3+eI444gmIxPEuS\nJNWQQjrEj770KB+6+0MMjgzSMKuB1W9YzQmHnjDl925qatrzeV1dHVu2bOGQQw6ZsEOcuepx4a85\nNDQ05Ton4syzJEmSxjjh0BO4/qzr+diJH+P6s66fluCcz9y5c1m+fDl33HEHkAnKjz322Jg18+bN\no7W1lfvvvx+AW2+9taDXbmhoYHBwcHoLxvAsSZKkPE449AQ+eNwHixacR33nO9/hhhtu4DWveQ3H\nHnssd9555z5rbrjhBlatWsVpp51GSmnPmMZEVq1axfHHHz/tGwZjf63wcmpvb09r164tdxmSJElV\n7cknn+SYY44pdxmT1tPTQ0tLZuZ69erVbN68mWuuuWbSr5fv9yMi1qWU2vf3XGeeJUmSVNH+6Z/+\nib/4i79gaGiII488kptuuqlstRieJUmSVNEuueQSLrnkknKXATjzLEmSVBMqeVS3lKb6+2B4liRJ\nmuGam5vZunVrzQfolBJbt26lubl50q/h2IYkSdIM19bWRkdHB52dneUupeyam5tpa2ub9PMNz5Ik\nSTNcQ0MDy5cvL3cZM4JjG5IkSVKBDM+SJElSgQzPkiRJUoEMz5IkSVKBDM+SJElSgQzPkiRJUoEM\nz5IkSVKBDM+SJElSgQzPkiRJUoEMz5IkSVKBDM+SJElSgQzPkiRJUoEMz5IkSVKBDM+SJElSgQzP\nkiRJUoH2G54j4saIeCkifplzbH5E3BMR67Mf52WPR0RcGxFPR8R/RsRrc57z3uz69RHx3uJ8O5Ik\nSVLxFNJ5vgk4e69jVwI/SSmtAH6SfQxwDrAi+2sV8A3IhG3gT4HXAacAfzoauCVJkqRqUb+/BSml\nn0XEsr0OXwCcmf38W8B9wCezx29OKSXg/og4JCKWZNfek1LaBhAR95AJ5N+d8ndQBHf86g6+//T3\nGRgeYHBkkIZZDXQPdAPQ2tg67ucHsrbUz7M2a6uG51mbtVlb5dc2E78na6uc2pYctISjDjmK83/j\nfE449AQqUWRy7n4WZcLzXSmlldnHO1JKh+R8fXtKaV5E3AWsTin9PHv8J2RC9ZlAc0rpz7PHPwv0\nppS+MtH7tre3p7Vr107m+5q0O351B1+4/wslfU9JkiS9onFWIze8+YaSBuiIWJdSat/fuuneMBh5\njqUJju/7AhGrImJtRKzt7Oyc1uIK8eMNPy75e0qSJOkVgyODrN1S2gZqoSYbnrdkxzHIfnwpe7wD\nOCJnXRuwaYLj+0gprUkptaeU2hctWjTJ8ibvt5f+dsnfU5IkSa9omNVA++L9NoHLYr8zz+P4AfBe\nYHX24505xz8WEbeS2RzYlVLaHBE/Ar6Us0nwLOBTky+7eC4++mIAZ56tzdr8nqzN2qytRr4na6uc\n2qph5nm/4TkivktmZnlhRHSQuWrGauD2iLgc2ABcnF3+Q+Bc4GlgN/B+gJTStoj4IvBQdt0XRjcP\nVqKLj754T4iWJEmSRhW0YbBcyrFhUJIkSbWnXBsGJUmSpBnL8CxJkiQVyPAsSZIkFcjwLEmSJBXI\n8CxJkiQVyPAsSZIkFcjwLEmSJBXI8CxJkiQVyPAsSZIkFcjwLEmSJBXI8CxJkiQVyPAsSZIkFcjw\nLEmSJBXI8CxJkiQVyPAsSZIkFcjwLEmSJBXI8CxJkiQVyPAsSZIkFcjwLEmSJBXI8CxJkiQVyPAs\nSZIkFcjwLEmSJBXI8CxJkiQVyPAsSZIkFcjwLEmSJBXI8CxJkiQVyPAsSZIkFcjwLEmSJBXI8CxJ\n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\nPOJmCwAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2444,9 +2444,9 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\nuyXCMkBEsHTpUvr7+w/5HAbmQzFZuC4N1ONHqYd2w97t069hcEfhq5xnNsC3Pg4LusaG+cUr4ehX\nwc+90/5pSZJaWKuE5VHT/X4NzDPhUAP1wBZ44We1qWHgWRgYt23HU/DUd6H3JvunJUlSQ+zYsYMv\nfelLXH755dxzzz1ce+213HXXXVM+ft26dfzar/0axx133AxWOZaBuRGqBepN98N3/xI2/3Bi/3Rb\nO2z/SW1qeL7Cee76CHzjv8ERx44N8yNDsOwEZ/eQJEnTsmPHDq6//nouv/zyQzp+3bp1nHLKKQbm\nlrbqDLj4S5U/rxaoa9U/vae/8DXe1scLs3ssOgY6Fo69tu0ekiTNXZvuh43fge5fnPb/56+88kp+\n/OMfc9ppp9HR0cGiRYu48MILeeihhzj99NP54he/SESwYcMG/uN//I/s3r2bZcuWsW7dOr773e/S\n29vLu9/9bhYuXMi9997LJz7xCe6880727t3L61//ev7qr/6q5i0nzpIx11R6IHH/UOU5o2vt8OUw\nr9NALUlSE3r00Uc56aSTCm/+7kp47ofVDxjcBT97CPIARBssPwUWHFF5/2NPhTdfU/HjjRs38ta3\nvpWHHnqIe+65h/PPP5+HH36Y4447jrPPPptPfOITnHnmmfzyL/8yX/va1zj66KP5yle+wt13381N\nN93EG97wBq699lp6egqTW2zfvp2jjjoKgPe85z28/e1v59d//derf99FzpLRqqbS7rH1yYnT5tWy\nf3p3mfOU9k8fdXxhQZfSGlzMRZKk5rRvZyEsQ+Gf+3ZWD8wH6YwzzmDlypUAnHbaaWzcuJEjjzyS\nhx56iHPOOQeA/fv3s2LFirLHf/Ob3+TP/uzP2LNnD9u3b+fkk08uG5inw8DcSqba7jE+UNeydxrK\nn2t0MZdFx0DXcvunJUmqhyojwS/adD/cfF7hb6vb58Pbbqzp/48XLFjw4uv29nZGRkbITE4++WTu\nvffeqsfu27ePyy+/nN7eXlatWsVVV101IwuyGJj1kmqBetP98IMvQf8TsGPT2P7p/UPFUeUatPe8\nsKXwNd5o//TiVbDwSAO1JEn1suoMeO/6mvUwd3V1MTAwfiqvsV71qlfR39/Pvffey1lnncXw8DBP\nPPEEJ5988pjjR8PxsmXL2L17N7fffjsXXnjhtOorx8CsqVl1RvX/QCYN1DXqn965qfA13osPJC6H\njnH907Z7SJI0PZPlgIOwdOlSzj77bE455RQWLlzI8uXLJ+wzf/58br/9dq644gp27tzJyMgIv/d7\nv8fJJ5/M2rVrueyyy1586O8DH/gAp556Kt3d3fz8z/98TWocz4f+VB/j2z1KH0is1WIuk1myBg7s\nnzi7iIFaktRCyj381gp86E/Nb7L+6d51cN/1MLJvBuee/mn57S/2Ty+HrmPGhnkXc5EkqeVNKzBH\nxE3AW4EtmXlKmc8D+CTwFmAPsDYzvzeda2qOmmx2j9F2jxe2ztwDiS/8rPxMIXd9BP7xv0DnYli4\neGz/dPt8eO1vGqglSZrDpjvCvA64DrilwudvBk4ofp0J/I/iP6Wpm07/dK3aPQZ3Fr52lvnsmQ3w\nrWsKU+yMn67PQC1J0qw3rcCcmd+OiO4qu5wP3JKFRun7IuLIiFiRmZunc11pjMkCdeliLqVhtpaB\nemBz4aucZzbAtz4ObfPGXtt2D0lSg2RmzVfDa2bTfWZvpnuYXwaUTmnQV9xmYFb9VGv3gIn906M9\nzLVczKXSkuV3fQS+8UdwxIqJYd5ALUmaAZ2dnWzbto2lS5e2RGjOTLZt20ZnZ+chn2OmA3O5uzAh\n4kfEpcClAKtXr57hkqRxprI64uYfTpxdY/9w5SB8MPZsLXyVc9dH4B//sNA7XRrmDdSSpEO0cuVK\n+vr66O/vb3QpddPZ2fniaoKHYtrTyhVbMu6q8NDfXwH3ZOatxfePA2+o1pLhtHKaVUrbPUrDbC0D\n9WQ6lxTCdGmYX7wSjn4V/Nw7nS5PkqQKmmVaufXAhyPiyxQe9ttp/7LmlKm0e5Trn65lu8e+5wtf\npXY8BU99F3pvgiXHQ3vH2DBvoJYkacqmNcIcEbcCbwCWAT8D/hDoAMjMzxanlbsOOJfCtHLvy8yq\nw8eOMKtljF/MZaYC9WSOOh72j7jUuCSp5Ux1hNmV/qRmVa5/eiYeSKxm8SpYeOTYMG+gliTNEQZm\naa6r9EDi/iHY/Vx9ali0HDo67Z+WJM1KBmaplY1v9yh9ILGegfrw5TBvXKA+9lRHpyVJTcHALKmy\nSv3TtVxqfDKLjoGu5RNnFzFQS5LqxMAs6dCULjX+wtYGBurl0HWM/dOSpBnTLNPKSZptJltqvDRQ\n79hUpn/6Z5RZn+jgvfCz8g82bn0cHrsLFq8uLOhSGqjb58Nrf9PFXCRJNeUIs6Taqhaoh3bD3u0z\nX0PXsdA2f+LqjLZ7SJJKOMIsqTEmG6HuXQf3XQ8j+yYu912rQD1Q4aHGHU8VRqeXHA8HRsYGapca\nlyRV4AizpOYyPlDXu396weLCdRceOTbMG6glac7xoT9Jc0+1BxL3D8PAszNfw4IjYeER0Gn/tCTN\ndgZmSa2ndx18/5bCw4elYbau/dMrYMERY8O8i7lIUlMyMEvSeJUCdb2WGgf7pyWpiRiYJelglFtq\nfLSHuV6B+rCj4YhjJ46OG6glaUYYmCWplsoF6nr3T3cuKVy3NMy7mIskHTIDsyTVU2m7R+nsGvuH\nYHeFae5qbdEx0LFwbJi3f1qSKjIwS1KzGB2d3vrk2IcB690/fdTx0NbhA4mSVGRglqTZopkC9f6R\nsT3ctntImsMMzJI0V1R6IPHAcH0WcwFYvKqwmEtpmDdQS5rlDMyS1ApKF3PZsWnsA4l17Z9eDh2d\nYx9IdDEXSU1uqoF5Xj2KkSTNkFVnVB/dHd/uMVMPJFZqG3lmA3zrmkLv9PjZRY491dFpSbOCI8yS\n1Moq9U+3tdev3WPRcug6ZmyYN1BLqoO6tGRExLnAJ4F24MbMvGbc52uBTwDPFDddl5k3VjungVmS\nmkRpu8cLWxsfqEv7p233kFQDMx6YI6IdeAI4B+gDHgDemZmPlOyzFujJzA9P9bwGZkmaJSr1T48M\nweBAfRZz6ToWFiyeOLuIgVrSFNSjh/kM4MnM/Enxgl8GzgceqXqUJGlumKx/unQxl/HLfQ/thr3b\np1/DwHOFr3Ke2QDf+ji0zZu43LmBWtJBmE5gfhmwqeR9H3Bmmf3eFhG/RGE0+j9k5qbxO0TEpcCl\nAKtXr55GSZKkptGztnog7V0H910PI/vGhtmaBuoqo9zlAvXenTD/MDjzQ4ZpSS+aTkvGRcCbMvP9\nxffvAc7IzN8t2WcpsDszByPiMuDtmfnGaue1JUOSBEwM1KOj1PuH69PuseBIWHgEdC4eG+YN1NKc\nUY8e5rOAqzLzTcX3HwPIzD+tsH87sD0zF1c7r4FZkjSp0naP8bNr1CtQdy4pBPnSMO9S49KsUo/A\nPI9Cm8WvUJgF4wHgXZn5cMk+KzJzc/H1bwB/kJmvq3ZeA7Mkadoq9U/X84HEJcdDe8fYMG+glppK\nvaaVewvwlxSmlbspM/84Iq4GejNzfUT8KXAeMAJsBz6UmY9VO6eBWZI04yoF6oEtlRdhqbWjjof9\nI2PD/KJlBmqpjlwaW5KkQzG6mMvmH06cXaPRgXrZCS7mItWQgVmSpJlQLlDXeqnxySw6BjoWjg3z\nBmrpoBmYJUmqt/FLjZc+kFjXQL0cOjp9IFGahIFZkqRmMz5Qj1/QZefT9anjqOOhbdwDicee6ui0\nWo6BWZKk2aZSoG5rh+0/qU8Ni46BruUTZxex3UNzkIFZkqS5ZNP98IMvQf8TsGPT2DB7YLh+gXrx\nKlh45NhA7VLjmqUMzJIktZJKgbqe/dNdx0Lb/Imzixio1aQMzJIk6SXVHkgc2g17t898DV0rCr3T\npWHe/mk1kIFZkiRNXe86uO96GNk3NszWtX96OXQdMzbMzz8MzvyQo9OaEQZmSZJUG6XtHi9sHftA\n4v7h+iw1vmAxLFwMnYvtn1bNGJglSVJ9VFpqfGQIBgfqE6i7VsCCIyZO12egVhUGZkmS1BwqBepG\n9k+PDMGiZS7m0uIMzJIkaXYY3z892sM8sAVe+Fl9ajjqeNg/MjbM2z895xmYJUnS7Dc6u8fmH06c\nXaNe/dOdSwrXLQ3zLuYyJxiYJUnS3Ffa7lE6u0Y9A/WiY6Bj4dgwv3il7R6zgIFZkiSpWv/0zqfr\nU8OS46G9Y2yYN1A3BQOzJElSNeMXcykN1I3sn7bdo24MzJIkSdNRrn96ZAgODNdxMZdjoGv5xOn6\nDNQ1YWCWJEmaKaWLuezYNLbVY/8Q7H6uPnWU9k/7QOJBm2pgnlePYiRJkuaUVWdUD6Pj2z1KH0is\nZaB+YUv57Vsfh8fugsOXw7zOsQ8kHnuqYfogTWuEOSLOBT4JtAM3ZuY14z5fANwCnA5sA96RmRur\nndMRZkmSNOc1Q//0YUfDEcdOnF2khQL1jLdkREQ78ARwDtAHPAC8MzMfKdnncuA1mXlZRFwM/EZm\nvqPaeQ3MkiSp5Y1fzGU0zLa117F/ejl0HTOnlxqvR2A+C7gqM99UfP8xgMz805J97i7uc29EzAOe\nA47OKhc1MEuSJFVRqX+6ng8kLjgSFh4BnYtndaCuRw/zy4BNJe/7gDMr7ZOZIxGxE1gKbJ3GdSVJ\nklrXVPqnKz2QOLQb9m6ffg2DOwpf5TyzAb51DbR1jA3z8+bPukA9ajqBOcpsGz9yPJV9iIhLgUsB\nVq9ePY2SJEmSWtxkgXp8u0dpD3OtAvXA5sqfPbMBvvVxaJs3axZxmU5g7gNWlbxfCYxff3J0n75i\nS8ZiYMJdyMwbgBug0JIxjZokSZJUTc/a6iO89eifLl2yfMdT8NR34ft/A2vvasrQPJ3A/ABwQkSs\nAZ4BLgbeNW6f9cB7gXuBC4FvVOtfliRJUoNVC9TlFnMZDdT7h8cG4YO1fwg2fmduBeZiT/KHgbsp\nTCt3U2Y+HBFXA72ZuR74PPB1l7WFAAAYI0lEQVTXEfEkhZHli2tRtCRJkhpg1Rlw8Zcqf967Dr5/\nSyH8jl+dcHCgeqBunw/dv1jzkmvBlf4kSZJUH+UCdQN7mF3pT5IkSc1lsv7pJtV0I8wR0Q881YBL\nrwaebsB1VV/e59bgfW4N3ufW4H1uDY26zy/PzKMn26npAnOjRET/VH5gmt28z63B+9wavM+twfvc\nGpr9Prc1uoAmUmH2bc0x3ufW4H1uDd7n1uB9bg1NfZ8NzC/Z2egCVBfe59bgfW4N3ufW4H1uDU19\nnw3ML7mh0QWoLrzPrcH73Bq8z63B+9wamvo+28MsSZIkVeEIsyRJklRF0wbmiLgpIrZExEM1Ot/f\nR8SOiLhr3PaIiD+OiCci4tGIuKIW15MkSdLc0LSBGVgHnFvD830CeE+Z7WuBVcCJmXkS8OUaXlOS\nJEmzXNMG5sz8NrC9dFtEvKI4UrwhIr4TEScexPm+DgyU+ehDwNWZeaC435bp1C1JkqS5pWkDcwU3\nAL+bmacDHwWur8E5XwG8IyJ6I+LvIuKEGpxTkiRJc8S8RhcwVRFxOPB64LaIGN28oPjZBcDVZQ57\nJjPfNMmpFwD7MrOneJ6bgF+sTdWSJEma7WZNYKYwGr4jM08b/0FmfhX46iGetw/4X8XXdwBfOMTz\nSJIkaQ6aNS0ZmbkL+GlEXAQvzm7xczU49f8G3lh8/cvAEzU4pyRJkuaIpl24JCJuBd4ALAN+Bvwh\n8A3gfwArgA7gy5lZrhWj3Pm+A5wIHA5sA347M++OiCOBvwFWA7uByzLzB7X9biRJkjRbTSswR8RN\nwFuBLZl5SpnPA/gk8BZgD7A2M793yBeUJEmS6my6LRnrqD5X8puBE4pfl1IYHZYkSZJmjWk99JeZ\n346I7iq7nA/ckoVh7Psi4siIWJGZmysdsGzZsuzurnZKSZIkafo2bNiwNTOPnmy/mZ4l42XAppL3\nfcVtFQNzd3c3vb29M1yWJEmSWl1EPDWV/WY6MEeZbROapiPiUgotG6xevXqGS5IkSVIzeHDLg9z5\n4ztJkvNecR6nHTNh9uCmMNOBuQ9YVfJ+JfDs+J0y8wYKq/jR09PTnNN2SJIk6ZA8uOVBvvDQF3hs\n+2MAdM3von9PP9sHt7+4z9ee/Bqff9PnmzI0z3RgXg98OCK+DJwJ7KzWvyxJkqTZaTQUb9y1kY62\nDgaGBl7sK3h2z7jx0hcmHj98YJjen/XOvcBcOldyRPRRmCu5AyAzPwv8LYUp5Z6kMK3c+w7lOsPD\nw/T19bFv377plNsUOjs7WblyJR0dHY0uRZIk6aCVC8aDI4NsG9w2rfN2tHXQs7ynRlXW1nRnyXjn\nJJ8n8DvTuQZAX18fXV1ddHd3U5jaeXbKTLZt20ZfXx9r1qxpdDmSJElljfYW/3jHj9n8QqE5oGt+\nFzsHd/Lcnudqfr3Tjzmd3zv995pydBlmviWjJvbt2zfrwzJARLB06VL6+/sbXYokSVLZYNwe7Wza\nvWnizmXaKA7W4vmLWdSxiK75XQwMDdA5r5NLTrqEi1510fRPPoNmRWAGZn1YHjVXvg9JkjR73Pb4\nbXzx0S+yb2Tfi2G1Fm0UlazuWs3IgRGgMDLd0d7BBa+8oOmDcSWzJjBLkiSpunLBeGBogIHhgZd2\nqsFI8ajSYLxi0QqOP/L4pp4e7lAZmKdpdKGVZcuWjdm+fv16HnnkEa688soGVSZJkuai2x6/jTue\nvIOh/UOFmSiARfMWsWXvFnYO7XxpxxoF42Wdy5jfPp+u+V0MHxhmyYIlczYYV2JgniHnnXce5513\nXqPLkCRJs1S5YDw0MsTWwa0zcr3xwbj7iG7ed8r7WiYUVzNnA/ODWx6k92e99CzvqcmN3rhxI+ee\ney5nnnkm3//+9/k3/+bfcMsttwDw6U9/mjvvvJPh4WFuu+02TjzxRNatW0dvby/XXXfdtK8tSZLm\npnILegyNDLFzaOeYRT1qZVnnMpYuXPpiAJ/LbRS1NOsC88fv//iL/1JVsntoN48//zhJEgSvWvIq\nDp9/eMX9TzzqRP7gjD+Y9NqPP/44n//85zn77LP5rd/6La6//noAli1bxve+9z2uv/56rr32Wm68\n8caD+6YkSdKcVW4misPnH07/nn6eH3x+7M41bKMoDcYnHnWio8XTMOsC81QMDA+QxaVlkmRgeKBq\nYJ6qVatWcfbZZwNwySWX8KlPfQqACy64AIDTTz+dr371q9O+jiRJmn0OaiaKGgTj5Yctpz3aAWyj\nmGGzLjBPZST4wS0P8oF/+ADDB4bpaOvgml+8pib/4oyfEm70/YIFCwBob29nZGRk2teRJEnNq94z\nUYwPxrN9irbZaNYF5qk47ZjT+Nyvfa6mPcwATz/9NPfeey9nnXUWt956K7/wC7/A97///ZqcW5Ik\nNY96z0RRuqDH6ICfwbh5zMnADIXQXOu/jjjppJO4+eab+eAHP8gJJ5zAhz70IT796U/X9BqSJKk+\nRh+427hrIx1tHXWfiWI2rXTX6uZsYJ4JbW1tfPaznx2zbePGjS++7unp4Z577gFg7dq1rF27tn7F\nSZKkCco9cNc1v4tdg7vYvGfzjFzTmSjmHgOzJEma9coF4/ZoZ9PuTRN3diYKHSQD8xR1d3fz0EMP\nNboMSZJaWrkH7vaN7JuROYvBmShUMGsCc2ZOmKViNsrMRpcgSVJTK7eYx67BXQwMDbB7ZPdLO9Zw\nJorVXasZOTDy4vV84E6lZkVg7uzsZNu2bSxdunRWh+bMZNu2bXR2dja6FEmSGqrSA3ckPLvn2bE7\n17CFonTp5yULlthbrCmZFYF55cqV9PX10d/f3+hSpq2zs5OVK1c2ugxJkuqi3i0UMDEY20Kh6ZoV\ngbmjo4M1a9Y0ugxJklRGuTmLD+84nC17trBjaMdLO9awhcKZKFRPsyIwS5Kkxqo4Z/H+Ibbum5k5\ni0sX83AmCjWSgVmSJAGV5yzu39M/oy0UPnCnZmdgliSpxZRroWiLNvp2903ceYbmLLaFQrOJgVmS\npDmo4tRswwPsHt49ydGHxjmLNVcZmCVJmqUqPWzXv6ef54eeH7vzDI0U20KhVmBgliSpiZUbKR4Y\nGih8DQ/M2HVLp2YbGBqgc14nl5x0iaFYLcnALElSgx3Uw3YzuLqdLRRSeQZmSZLqoNJIccVFPGoU\njJ2aTZo+A7MkSTUyfq7i4QPDdLR11H2k2BYKqbYMzJIkHYRKI8V7R/by/ODzkxx96BwplhrHwCxJ\n0ji3PX4bX3z0i+wb2fdib++8mDejs0+M8mE7qfkYmCVJLafSQ3a7BncxMDTA7pGSeYprHIjLjRS7\niIfU3AzMkqQ5qVzrxPCBYQZHBnnmhWcmHlDjYLy6azXz2ubR0dbhSLE0yxmYJUmz0vgH7Oq1cMco\nR4ql1jGtwBwR5wKfBNqBGzPzmnGfrwU+AYz+Uf66zLxxOteUJLWOcivZVZyfeAaMrmo3OtuFI8VS\nazrkwBwR7cBngHOAPuCBiFifmY+M2/UrmfnhadQoSZqjSgNxaSjNTAb3D87o/MSjxj9kB84+IWms\n6YwwnwE8mZk/AYiILwPnA+MDsySpRVWago2Eof1DbB3cOuM1lLZOjIZyV7STdDCmE5hfBmwqed8H\nnFlmv7dFxC8BTwD/ITM3jd8hIi4FLgVYvXr1NEqSJNVTpQfr5sU8+vf2T5yXuMajw/BS20Rpy4at\nE5JqaTqBOcpsy3Hv7wRuzczBiLgMuBl444SDMm8AbgDo6ekZfw5JUoNUfbCuToEYYPlhy2mPdsBA\nLKn+phOY+4BVJe9XAs+W7pCZ20refg74+DSuJ0mqsfELdEwaiGfI8sOWs6hj0ZhQ3jW/i472Di54\n5QWGYkkNNZ3A/ABwQkSsoTALxsXAu0p3iIgVmbm5+PY84NFpXE+SdJDKrVjX0dbBrsFd7B7ezcDw\nwEs7z9DoMJSfgs1ALGm2OOTAnJkjEfFh4G4K08rdlJkPR8TVQG9mrgeuiIjzgBFgO7C2BjVLkqjS\nLjH/8BdXrHthpCQF1ykQOwWbpLkmMpurZbinpyd7e3sbXYYkNVyldolFHYvYMbiD/r39davFB+sk\nzUURsSEzeybbz5X+JKkBKs4u0Tav7qPDYCCWpGoMzJI0AyqODs9bRP/efnYM7Rh7QJ0CcWm7BLhA\nhyRNhYFZkg5SxcU4gM55nWzbu42dQztfOmCGwzDA6q7VjBwYmVCPgViSps/ALEklHtzyIHf++E5+\nvOPHPD/4/JjR2EaPDpe2SwwfGGbJgiUcf+TxnPeK8wzEkjSDDMySWkZpGN78QmHGy9LRWIBnX3i2\n0uEzotLsEuDosCQ1CwOzpDnjtsdv444n72Bo/9CEh9cGRwbZNrht4kE+TCdJmoSBWdKsMH7O4fGj\nsUP7h9i6b+vEAxuwGMfwgWG6j+h2dFiS5ggDs6SmcEijwzPsuEXHTQjDjg5LUusxMEuqi0qBePjA\nMLsGd9V9dHhZ5zLmt893dFiSNCkDs6Rpq9YukZkM7h9k++D2iQfOUCBefthy2qMdGPtQ34pFK5xV\nQpJ00AzMkiZVbXaJRrRLrO5azby2eWN6mLvmd9HR3sEFr7zAVglJUk0ZmCVVDMTDB4YZGhmi74W+\niQc5OixJahEGZqlFVFqquY22hgbi0fYNR4clSc3KwCzNEZUC8aJ5i9iyd0vdlmq2XUKSNNcYmKVZ\notIsE7sGd7F7eDcDwy+tVlfv2SVsl5AkzWUGZqlJVHuwbmBoYGwgHjUDwbg0EI+2SzjVmiSplRmY\npTqp9mDd8P5hNu3eNPGgGQrE45dqNhBLklSZgVmqofHzEY+G0va2djYNGIglSZqNDMzSQarUS7xz\ncCfP7Xluxq+/ums1IwdGXrzuaA0nHnWigViSpBlgYJbGGR0lfmz7Y0BJKE0Y2j/E1sGZX8K53IN1\nBmJJkhrDwKyWdFBzEvtgnSRJLc3ArDlpfC/xaCit5xRs41snDMSSJM1OBmbNStWmYNs3so/tg9tn\nvIZyK9YtWbDE+YglSZpjDMxqWuV6iYcPDDM0MlSXpZwXz1/Moo5FY1o2XLFOkqTWY2BWw1Sagu3w\njsPp39vP84PPjz2gTlOwGYglSVIpA7NmTMVAPP9wdg3uqssUbFDoJZ7XNm9MDc44IUmSpsrArEM2\nfqaJ0QfrBgYH2Lt/78QR4lF1mIJtxaIV9hJLkqSaMDCrrEqjw13zu+o60wSM7SV2CjZJklRvBuYW\nVWke4sM7DmfXUJV2iTpNwTYwNEDnvE4uOekSe4klSVJDGZjnmNJlm19skRi3fPPA0AAvjJQk3xkc\nHR5Vbk5ip2CTJEmzgYF5Fiidc/j5wecnhOCBoQEO5AGG9g9Vn394hoLx6EwT4wO6fcSSJGkuMDA3\nSLk5hseHYBIigmdeeKbyiRowOuxME5IkqZVMKzBHxLnAJ4F24MbMvGbc5wuAW4DTgW3AOzJz43Su\n2UyqrTZX9vXgAAc4QBBs3rN57MleqPB6hpWbh9h2CUmSpJcccmCOiHbgM8A5QB/wQESsz8xHSnb7\nbeD5zHxlRFwMfBx4x3QKnimT9f6Oht3DOg5jYGiAof1D7BzaOfFElYJvHUMwFJZtXtSxqGz7Bjg6\nLEmSNFXTGWE+A3gyM38CEBFfBs4HSgPz+cBVxde3A9dFRGRmTuO6NXfb47dx9X1XV96hzmG3muMW\nHVd1FNtV6iRJkmprOoH5ZcCmkvd9wJmV9snMkYjYCSwFtpbuFBGXApcCrF69eholHZp/evqf6n7N\nUaVzDFcKwc45LEmS1DjTCcxRZtv4keOp7ENm3gDcANDT01P30edfXf2r/POz/zytc5Rbbc6RYEmS\npNlvOoG5D1hV8n4l8GyFffoiYh6wGKgy71ljjIbWqj3MZV47bZokSdLcN53A/ABwQkSsAZ4BLgbe\nNW6f9cB7gXuBC4FvNFv/8qiLXnWRo72SJEmaIKaTXyPiLcBfUphW7qbM/OOIuBrozcz1EdEJ/DXw\nWgojyxePPiRY5Zz9wFOHXNShWw083YDrqr68z63B+9wavM+twfvcGhp1n1+emUdPttO0AvNcEhH9\nU/mBaXbzPrcG73Nr8D63Bu9za2j2+9zW6AKayI5GF6C68D63Bu9za/A+twbvc2to6vtsYH5JmVVI\nNAd5n1uD97k1eJ9bg/e5NTT1fTYwv+SGRheguvA+twbvc2vwPrcG73NraOr7bA+zJEmSVIUjzJIk\nSVIVBmZJkiSpipYKzMXVBjXHRUR7o2vQzIuIIxpdg2ZeRKyIiBWNrkMzKyIWNboGzayIiEbXMB0t\nEZgjYl5EXAv8eUT8aqPr0cwo3uc/Af4kIs5pdD2aORHxO8C3IuL04vtZ/YtYE0VEW/G/538BTo2I\n+Y2uSbVX8nv7joj4QES8vNE1acYsHH0xG39nz/nAXLwpnwJWAPcDfxARvxMRCxpbmWopIn4Z2AAs\nAX4E/HFEvL6xVanWSn7JdgF7gEsB0qeX56L3ACcCp2bmP2TmUKMLUm1FxBLgS8CRwF8AvwG8qqFF\nqeYi4lci4v8Cn4mIS2B2/s5uhRaFLuA04E2ZORARW4G3ABcBX2xoZaqlA8C1mfnXABFxKnAe8M8N\nrUo1lZkZEW3AcuCzwC9GxLsz828ioj0z9ze4RNVA8Q9GJwCfysydEdEDDAKPG5znlMOB7sx8O0BE\nXNTgelRjEXEU8N+APwe2AR+JiDWZ+UcR0ZaZBxpb4dTN+cCcmbsiYiOwFvg08F0Ko81nRcQ/ZeZz\nDSxPtbMBuL8kNN0HvLbBNanGRn/BFv/g+wLwTeDXI+I7wC6afKUoTU3xD0bLgAuKf/j9TeCnwNaI\n+ERm/rSxFaoWMnNTROyJiHXASqAbWBoRpwBf8v/Ps1NxUINiGD4O+CFwR2buj4g+4L6IuDEzN0dE\nzJbR5jnfklF0B3BaRKzIzN0Ubt4QheCsOSAz92TmYMkI45uApxtZk2qvZDTiVOBu4O+BV1P4g/Ap\ns7EvThV9BjgdODkzfx74TxRGqC5raFWqtYso/E3gs5n5SuC/A8cCFzS0Kh2SiHgf0Af8UXHTbuAs\nYBlAZv4I+BvguoYUOA2tEpj/L4VftGsBMnMD8POUNKBrboiI9pK/sv+74raTnSFlzvkBcD1wD4WR\n5ceAR2bLSIWm5EfAE8AZAJm5EXiKwu9yzRGZ2U9hAGtr8f23ih8NNqwoHZKIOBw4H/g48OaIeFXx\nv9vvAX9Zsut/BlZGxAmz6Xd2SwTmzNwM/G8KN/CiiOgG9gEjjaxLM+IA0EHhl+9rIuJO4KP4h6O5\npg04BrgiM3+Jwi/k9ze2JNVSZu4DrgTaI+JtEXES8E4Kf0DS3PIkhQD1uog4BjgT2NvgmnSQin+D\nf0VmfhL4B14aZb4c+JWIOKv4/gUKgx776l/loWuppbEj4s0U/vrn9cB1mTnr/kpAk4uI11H4K75/\nBr6QmZ9vcEmqsYhYmJl7i68DOCYzf9bgsjQDIuIXgDcCbwU+l5mfa3BJqrGI6AQ+BPw6hT8Ifyoz\nb2hsVZqOiDgWWA/818z8P8WpQN8C3A6sLr5+c2Zub2CZB6WlAjNARHRQeKbE0eU5KiJWUpiS6r9n\npn+tN4dFxDz/W24NzoIy90XEGqAvM4cbXYumLyI+CFySmb9YfP9m4N8CLwOuzMxNjazvYLVcYJYk\nSdLMKZnR6HbgOQrtkjcCP5xNfculWqKHWZIkSfVRDMuHUWixeQfwZGb+62wNy9AC8zBLkiSp7i6n\n8ED2OXOhPdKWDEmSJNXUbFvJbzIGZkmSJKkKe5glSZKkKgzMkiRJUhUGZkmSJKkKA7MkNamIODIi\nLi++Pq44p6kkqc586E+SmlREdAN3ZeYpDS5Fklqa8zBLUvO6BnhFRDwI/Ag4KTNPiYi1wL8H2oFT\ngD8H5lNYEn4QeEtmbo+IVwCfAY4G9gAfyMzH6v9tSNLsZkuGJDWvK4EfZ+ZpwP877rNTgHcBZwB/\nDOzJzNcC9wK/WdznBuB3M/N04KPA9XWpWpLmGEeYJWl2+mZmDgADEbETuLO4/YfAayLicOD1wG0R\nMXrMgvqXKUmzn4FZkman0qVmD5S8P0Dhd3sbsKM4Oi1JmgZbMiSpeQ0AXYdyYGbuAn4aERcBRMHP\n1bI4SWoVBmZJalKZuQ34bkQ8BHziEE7xbuC3I+IHwMPA+bWsT5JahdPKSZIkSVU4wixJkiRVYWCW\nJEmSqjAwS5IkSVUYmCVJkqQqDMySJElSFQZmSZIkqQoDsyRJklSFgVmSJEmq4v8HNDgLGUHLr5oA\nAAAASUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2472,9 +2472,9 @@ }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAsMAAAFbCAYAAAAwUYPxAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzt3Xt83XWd5/HXJ2nalDZIbQsWQkiV\n4WIpttNwURd01Rkvo4wiXTtyK8yAlZWVFXbQ2Z2HuLMzow/xLuJ0BJwRZheosOqMIoJclYsplila\nWBCKTUtpEnpJobk13/0jaUnbnCZNzv33ej4efXDOye/yOflCeOfb7/l8I6WEJEmSlEU1pS5AkiRJ\nKhXDsCRJkjLLMCxJkqTMMgxLkiQpswzDkiRJyizDsCRJkjLLMCxJkqTMMgxLkiQpswzDkiRJyqxJ\nxbzZrFmzUnNzczFvKUmSpAxauXJlR0pp9mjHFTUMNzc309raWsxbSpIkKYMi4vmxHOcyCUmSJGWW\nYViSJEmZZRiWJElSZhV1zbAkSZLGrq+vj7a2Nrq7u0tdStmqr6+nsbGRurq6cZ1vGJYkSSpTbW1t\nNDQ00NzcTESUupyyk1Kis7OTtrY25s6dO65ruExCkiSpTHV3dzNz5kyDcA4RwcyZMyc0c24YliRJ\nKmMG4f2b6PfHMCxJkqTMMgxLkiQpswzDkiRJKrnvfve7bNiwYffz5uZmOjo6Cn5fw7AkSVIVWfn8\nZq655xlWPr+51KWM2c6dO/cJw8ViazVJkqQK8Lkf/Ybfbti232O6uvt4cmMXAwlqAo57XQMN9bn7\n777x8IP57Afm5fz6lVdeyVFHHcUll1wCwFVXXUVDQwOXX375Hsfde++9XHXVVcyaNYsnnniCRYsW\nceONNxIR3H333VxxxRX09/dz0kknce211zJlyhSam5u58MILufPOO1m2bBmtra2cffbZTJ06lYce\negiAb3zjG/zoRz+ir6+PW2+9leOOO26s364xc2ZYkiSpSmzr7mcgDT4eSIPPJ2LJkiXcfPPNu5/f\ncsstLF68eMRjf/3rX/PVr36V3/72tzz77LP84he/oLu7m6VLl3LzzTezevVq+vv7ufbaa3efU19f\nz4MPPsg555xDS0sLN910E6tWrWLq1KkAzJo1i8cee4yPf/zjXH311RN6L7k4MyxJklQB9jeDu8vK\n5zdz9ncepq9/gLpJNXxtyUIWHTVj3PdcuHAhmzZtYsOGDbS3tzNjxgyamppGPPbkk0+msbERgAUL\nFrB27VoaGhqYO3cuxxxzDADnn38+11xzDZdddhkAH/nIR/Z7/zPPPBOARYsWcdttt437feyPYViS\nJKlKLDpqBjf9xak8/Gwnp75+5oSC8C5nnXUWK1asYOPGjSxZsiTncVOmTNn9uLa2lv7+flJK+732\ntGnT9vv1Xdfcdb1CMAxLkiRVkUVHzchLCN5lyZIlXHTRRXR0dHDfffcd0LnHHXcca9eu5ZlnnuHo\no4/me9/7Hm9729tGPLahoYGurq58lHxAXDMsSZKknObNm0dXVxdHHHEEc+bMOaBz6+vrueGGG1i8\neDHz58+npqaGZcuWjXjs0qVLWbZsGQsWLGDHjh35KH1MYrTp63xqaWlJra2tRbufJElSJVuzZg3H\nH398qcsoeyN9nyJiZUqpZbRznRmWJElSZrlmWJIkSWOyevVqzj333D1emzJlCo888kiJKpo4w7Ak\nSVIZSykREaUuA4D58+ezatWqUpexh4ku+XWZhCRJUpmqr6+ns7NzwoGvWqWU6OzspL6+ftzXcGZY\nkiSpTDU2NtLW1kZ7e3upSylb9fX1uzf7GA/DsCRJUpmqq6tj7ty5pS6jqrlMQpIkSZllGJYkSVJm\nGYYlSZKUWYZhSZIkZdaYw3BE1EbEryPiX4eez42IRyLi6Yi4OSImF65MSZIkKf8OZGb4k8CaYc+/\nAHwlpfQHwGbgz/NZmCRJklRoYwrDEdEI/AnwnaHnAbwDWDF0yD8BHyxEgZIkSVKhjHVm+KvAXwID\nQ89nAltSSv1Dz9uAI0Y6MSIujojWiGi1YbQkSZLKyahhOCLeD2xKKa0c/vIIh464T2BKaXlKqSWl\n1DJ79uxxlilJkiTl31h2oHsrcEZEvA+oBw5mcKb4kIiYNDQ73AhsKFyZkiRJUv6NOjOcUvpMSqkx\npdQMLAF+nlI6G7gHOGvosPOBHxSsSkmSJKkAJtJn+ErgUxHxDINriK/LT0mSJElScYxlmcRuKaV7\ngXuHHj8LnJz/kiRJkqTicAc6SZIkZZZhWJIkSZl1QMskKtHK5zfz/cfaeObFLtZv2QERHDxlEtu6\n+3Y/7ts5QF1tzR6vjeXxgZxXjHtYm7VV83uyNmuztup9T9ZWvbVNnlTDR05q4qOnNJU6EuYUKY3Y\nHrggWlpaUmtra9Hut/L5zSz+9i8ZKN5blCRJ0l7+7kPzix6II2JlSqlltOOqepnEw892GoQlSZJK\n7CdPvFDqEnKq6jB86utnMrl2pM3yJEmSVCzvPWFOqUvIqarXDC86agb/++I3u2a4DO5hbZVxnrVZ\nm7WVf23V+J6srXprq4Q1w1UdhmEwEC86akapy5AkSVIZquplEpIkSdL+GIYlSZKUWYZhSZIkZZZh\nWJIkSZllGJYkSVJmGYYlSZKUWYZhSZIkZZZhWJIkSZllGJYkSVJmGYYlSZKUWYZhSZIkZZZhWJIk\nSZllGJYkSVJmGYYlSZKUWYZhSZIkZZZhWJIkSZllGJYkSVJmGYYlSZKUWYZhSZIkZZZhWJIkSZll\nGJYkSVJmGYYlSZKUWYZhSZIkZdaoYTgi6iPi0Yh4PCJ+ExGfG3r9nRHxWESsiogHI+LowpcrSZIk\n5c9YZoZ7gHeklN4ELADeExGnAtcCZ6eUFgD/AvyPwpUpSZIk5d+k0Q5IKSVg+9DTuqE/aejPwUOv\nvwbYUIgCJUmSpEIZNQwDREQtsBI4GrgmpfRIRPwF8OOI2AFsA07Nce7FwMUATU1NeSlakiRJyocx\nfYAupbRzaDlEI3ByRJwA/FfgfSmlRuAG4Ms5zl2eUmpJKbXMnj07X3VLkiRJE3ZA3SRSSluAe4H3\nAm9KKT0y9KWbgbfktzRJkiSpsMbSTWJ2RBwy9Hgq8C5gDfCaiDhm6LA/GnpNkiRJqhhjWTM8B/in\noXXDNcAtKaV/jYiLgO9HxACwGbiwgHVKkiRJeTeWbhL/Diwc4fXbgdsLUZQkSZJUDO5AJ0mSpMwy\nDEuSJCmzDMOSJEnKLMOwJEmSMsswLEmSpMwyDEuSJCmzDMOSJEnKrEgpFe9mEe3A80W74auagN+X\n4L4qLsc5Gxzn6ucYZ4PjnA2lHOejUkqzRzuoqGG4VCKifSzfDFU2xzkbHOfq5xhng+OcDZUwzllZ\nJrGl1AWoKBznbHCcq59jnA2OczaU/ThnJQxvLXUBKgrHORsc5+rnGGeD45wNZT/OWQnDy0tdgIrC\ncc4Gx7n6OcbZ4DhnQ9mPcybWDEuSJEkjycrMsCRJkrQPw7AkSZIyyzAsSZKkzDIMS5IkKbMMw5Ik\nScosw7AkSZIyyzAsSZKkzDIMS5IkKbMMw5IkScosw7AkSZIyyzAsSZKkzDIMS5IkKbMmFfNms2bN\nSs3NzcW8pSRJkjJo5cqVHSml2aMdV9Qw3NzcTGtrazFvKUmSpAyKiOfHcpzLJCRJkpRZhmFJkiRl\nlmFYkiRJmVXUNcOSJEmamL6+Ptra2uju7i51KWWhvr6exsZG6urqxnW+YViSJKmCtLW10dDQQHNz\nMxFR6nJKKqVEZ2cnbW1tzJ07d1zXcJmEJElSBenu7mbmzJmZD8IAEcHMmTMnNEtuGJYkSaowBuFX\nTfR7YRiWJElSWfvud7/Lhg0bCnJtw7AkSZLKmmFYkiRJ47fuUXjgS4P/zIMrr7ySb33rW7ufX3XV\nVXzpS18a8dgvfvGLnHTSSZx44ol89rOf3f36Bz/4QRYtWsS8efNYvnw5ADt37mTp0qWccMIJzJ8/\nn6985SusWLGC1tZWzj77bBYsWMCOHTvy8h52sZuEJElSpfrJp2Hj6v0f07MNXnwC0gBEDRx2Akw5\nOPfxr5sP7/38fi+5ZMkSLrvsMi655BIAbrnlFu644459jrvzzjt5+umnefTRR0kpccYZZ3D//fdz\n+umnc/311/Pa176WHTt2cNJJJ/HhD3+YtWvXsn79ep544gkAtmzZwiGHHMI3v/lNrr76alpaWvb/\nXsfBmWFJkqRq1r11MAjD4D+7t074kgsXLmTTpk1s2LCBxx9/nBkzZtDU1LTPcXfeeSd33nknCxcu\n5A//8A958sknefrppwH4+te/zpve9CZOPfVU1q1bx9NPP83rX/96nn32WS699FLuuOMODj54P6E9\nT5wZliRJqlSjzOACg0sj/ukM2NkLtZPhw9+BI0+e8K3POussVqxYwcaNG1myZMmIx6SU+MxnPsPH\nPvaxPV6/9957ueuuu3jooYc46KCDePvb3053dzczZszg8ccf56c//SnXXHMNt9xyC9dff/2Ea90f\nw7AkSVI1O/JkOP+HsPYBaD4tL0EYBpdKXHTRRXR0dHDfffeNeMy73/1u/vqv/5qzzz6b6dOns379\neurq6ti6dSszZszgoIMO4sknn+Thhx8GoKOjg8mTJ/PhD3+YN7zhDSxduhSAhoYGurq68lL33gzD\nkiRJ1e7Ik/MWgneZN28eXV1dHHHEEcyZM2fEY/74j/+YNWvW8OY3vxmA6dOnc+ONN/Ke97yHb3/7\n25x44okce+yxnHrqqQCsX7+eCy64gIGBwWUdf//3fw/A0qVLWbZsGVOnTuWhhx5i6tSpeXsfkVLK\n28VG09LSklpbW4t2P0mSpGqzZs0ajj/++FKXUVZG+p5ExMqU0qifuPMDdJIkScosl0lIkiRpQlav\nXs255567x2tTpkzhkUceKVFFY2cYliRJ0oTMnz+fVatWlbqMcXGZhCRJkjLLMCxJklRhitkAodxN\n9HthGJYkSaog9fX1dHZ2GogZDMKdnZ3U19eP+xqjrhmOiCOBfwZeBwwAy1NKX4uILwIfAHqB3wEX\npJS2jLsSSZIkjaqxsZG2tjba29tLXUpZqK+vp7Gxcdznj+UDdP3A5SmlxyKiAVgZET8DfgZ8JqXU\nHxFfAD4DXDnuSiRJkjSquro65s6dW+oyqsaoyyRSSi+klB4betwFrAGOSCndmVLqHzrsYWD8kVyS\nJEkqgQNaMxwRzcBCYO+mcRcCP8lxzsUR0RoRrU7nS5IkqZyMOQxHxHTg+8BlKaVtw17/7wwupbhp\npPNSSstTSi0ppZbZs2dPtF5JkiQpb8a06UZE1DEYhG9KKd027PXzgfcD70x+pFGSJEkVZizdJAK4\nDliTUvrysNffw+AH5t6WUnqlcCVKkiRJhTGWmeG3AucCqyNi1z57fwV8HZgC/GwwL/NwSmlZQaqU\nJEmSCmDUMJxSehCIEb704/yXI0mSJBWPO9BJkiQpswzDkiRJyizDsCRJkjLLMCxJkqTMMgxLkiQp\nswzDkiRJyizDsCRJkjLLMCxJkqTMGssOdJVt3aPw+L9A+/+DLesgAuoPhh1bX33c3wuTJu/52lge\nH8h5xbiHtVlbNb8na7M2a6ve92Rt1Vtb7WRYeB60LC11IsypusPwukfh+vdA2lnqSiRJkrJp/crB\nf5ZpIK7uZRJrHzAIS5IkldqaH5S6gpyqOww3nzY4PS9JkqTSOf5PS11BTtW9TOLIk2Hpv7lmuBzu\nYW2VcZ61WZu1lX9t1fierK16a3PNcBk48uTBP5IkSdJeqnuZhCRJkrQfhmFJkiRllmFYkiRJmWUY\nliRJUmYZhiVJkpRZhmFJkiRllmFYkiRJmWUYliRJUmYZhiVJkpRZhmFJkiRllmFYkiRJmWUYliRJ\nUmYZhiVJkpRZo4bhiDgyIu6JiDUR8ZuI+OTQ64uHng9EREvhS5UkSZLya9IYjukHLk8pPRYRDcDK\niPgZ8ARwJvAPhSxQkiRJKpRRw3BK6QXghaHHXRGxBjgipfQzgIgobIWSJElSgRzQmuGIaAYWAo8U\nohhJkiSpmMYchiNiOvB94LKU0rYDOO/iiGiNiNb29vbx1ChJkiQVxJjCcETUMRiEb0op3XYgN0gp\nLU8ptaSUWmbPnj2eGiVJkqSCGEs3iQCuA9aklL5c+JIkSZKk4hhLN4m3AucCqyNi1dBrfwVMAb4B\nzAb+LSJWpZTeXZgyJUmSpPwbSzeJB4FcLSNuz285kiRJUvG4A50kSZIyyzAsSZKkzDIMS5IkKbMM\nw5IkScosw7AkSZIyyzAsSZKkzDIMS5IkKbMMw5IkScosw7AkSZIyyzAsSZKkzDIMS5IkKbMMw5Ik\nScosw7AkSZIyyzAsSZKkzDIMS5IkKbMMw5IkScosw7AkSZIyK1JKxbtZRDvwfNFu+Kom4PcluK+K\ny3HOBse5+jnG2eA4Z0Mpx/molNLs0Q4qahgulYhoH8s3Q5XNcc4Gx7n6OcbZ4DhnQyWMc1aWSWwp\ndQEqCsc5Gxzn6ucYZ4PjnA1lP85ZCcNbS12AisJxzgbHufo5xtngOGdD2Y9zVsLw8lIXoKJwnLPB\nca5+jnE2OM7ZUPbjnIk1w5IkSdJIsjIzLEmSJO2j6GE4Iq6PiE0R8USerndHRGyJiH/d6/XrIuLx\niPj3iFgREdPzcT9JkiRVj1LMDH8XeE8er/dF4NwRXv+vKaU3pZROZLC/3SfyeE9JkiRVgaKH4ZTS\n/cBLw1+LiDcMzfCujIgHIuK4A7je3UDXCK9vG7p2AFMBF0dLkiRpD+WyZng5cGlKaRFwBfCtfFw0\nIm4ANgLHAd/IxzUlSZJUPSaVuoChtbxvAW4dnMQFYMrQ184E/ucIp61PKb17tGunlC6IiFoGg/BH\ngBvyUrQkSZKqQsnDMIOz01tSSgv2/kJK6TbgtolcPKW0MyJuBv4bhmFJkiQNU/JlEkNre5+LiMUw\nuMY3It40kWsOXePoXY+BDwBPTrhYSZIkVZWib7oREf8beDswC3gR+Czwc+BaYA5QB/yflNJIyyNG\nut4DDK4Jng50An8O/Ax4ADgYCOBx4OO7PlQnSZIkgTvQSZIkKcNKvkxCkiRJKpWifoBu1qxZqbm5\nuZi3lCRJUgatXLmyI6U0e7TjihqGm5ubaW1tLeYtJUmSlEER8fxYjpvQMomIOCQiVkTEkxGxJiLe\nPJHrSZIkqTrc+tStfOxnH+PWp24tdSn7NdGZ4a8Bd6SUzoqIycBBeahJkiRJZW7VplXc8MQNrN22\nlrqaOrp6uwCYVjeN9lfa2dK7BYBfbvglAIuPXVyyWvdn3GE4Ig4GTgeWAqSUeoHe/JQlSZKkUto7\n7PYN9FFXU8e2nm307OzhpZ6Xxnytu35/V/WFYeD1QDtww9AmGSuBT6aUXh5+UERcDFwM0NTUtM9F\n+vr6aGtro7u7ewKlVLf6+noaGxupq6srdSmSJKmK7Aq8T740uDdZw+QGunq76O7vPqCwO5p3Nb0r\nb9fKt3H3GY6IFuBh4K0ppUci4mvAtpTSX+c6p6WlJe39AbrnnnuOhoYGZs6cyeBmcRoupURnZydd\nXV3MnTu31OVIkqQKMlLY7RvoY1JMon1HO5t7Nhf0/kGwdN5SPtXyqYLeZ8R7R6xMKbWMdtxEZobb\ngLaU0iNDz1cAnz7Qi3R3d9Pc3GwQziEimDlzJu3t7aUuRZIklaFbn7qV25+5nd6dvbvX7TZMbqD9\nlfZ9Z3dfHuECedDU0ET/QP/ue/cN9NF8cDMXnHABCw5dUJib5sm4w3BKaWNErIuIY1NKTwHvBH47\nnmsZhPfP748kSdm1atMqfvS7H/G7Lb/jhZdfAAYDZ+/OXrb1bKOzp3Pfk/IcepsamphUM2mPD8rN\nmTaH1x/yes54wxllH3j3Z6LdJC4FbhrqJPEscMHES5IkScqO4WF3c8/mPQJnEKx/ef2+J+U57L5m\n8muYVjdt95phqJ6wO5oJheGU0ipg1LUYkiRJWZarDVkNNbS93Fbw+w8Pu7u6QnT1dlE/qZ5zjj+n\nbDs9FENRd6CrJkuXLuX9738/Z511VqlLkSRJJZarDVlXbxc7+ncU/INqAIcddBi1UQu82hXCsDu6\nigzDqzatovXFVloOa6nqaXtJklQ+itWGbH9m1c9icu3kPWZ462rrOPPoMw2841RWYfgLj35h979g\nuWzv3c5Tm58ikQiCY2ccy/TJ03Mef9xrj+PKk6/M+fUrr7ySo446iksuuQSAq666ioaGBi6//PI9\njkspcemll/Lzn/+cuXPnMrwl3d13380VV1xBf38/J510Etdeey2PP/44n//857ntttv4wQ9+wJIl\nS9i6dSsDAwO88Y1v5Nlnn+Xtb387p5xyCvfccw9btmzhuuuu47TTThvLt0qSJBXArU/dyo1rbqS7\nv3uPwFmszgyHTzt8j3W7ldaZoRKVVRgei66+LhKDQTSR6Orr2m8YHs2SJUu47LLLdofhW265hTvu\nuGOf426//XaeeuopVq9ezYsvvsgb3/hGLrzwQrq7u1m6dCl33303xxxzDOeddx7XXnstn/jEJ/j1\nr38NwAMPPMAJJ5zAr371K/r7+znllFN2X7e/v59HH32UH//4x3zuc5/jrrvuGvd7kSRJ+5erDdm2\nnm1s79tOV1/XqwfbhiwTyioM728Gd5dVm1Zx0Z0X7f5N7fOnfX5C/+IsXLiQTZs2sWHDBtrb25kx\nY8aIO+Xdf//9/Nmf/Rm1tbUcfvjhvOMd7wDgqaeeYu7cuRxzzDEAnH/++VxzzTVcdtllHH300axZ\ns4ZHH32UT33qU9x///3s3Llzj9nfM888E4BFixaxdu3acb8PSZKUuw1ZV2/X4J/hYXcX25BlWlmF\n4bFYcOgC/vGP/zGva4bPOussVqxYwcaNG1myZEnO40bq97u/HfxOO+00fvKTn1BXV8e73vUuli5d\nys6dO7n66qt3HzNlyhQAamtr6e/vn8C7kCSp+u2vDVlN1NC2fYTODLYh035UXBiGwUCcz3/RlixZ\nwkUXXURHRwf33XffiMecfvrp/MM//APnnXcemzZt4p577uGjH/0oxx13HGvXruWZZ57h6KOP5nvf\n+x5ve9vbdp9z3nnncd555zF79mw6OzvZuHEj8+bNy1vtkiRVm1xtyGpralnXta4oNcyqn8XMqTNt\nQ5YBFRmG823evHl0dXVxxBFHMGfOnBGP+dCHPsTPf/5z5s+fzzHHHLM78NbX13PDDTewePHi3R+g\nW7ZsGQCnnHIKL774IqeffjoAJ554Ioceeqg7ykmSMm/42t3hgbOnv2fkHdXybO91u7sC93GvPc61\nuxkT+/tr/nxraWlJra2te7y2Zs0ajj/++KLVUKn8PkmSKkmuNmQk6N3ZS0dPR8FrGN6GzLCbPRGx\nMqU06uZwzgxLkqRx2bsN2X53VbMNmcqUYXgvq1ev5txzz93jtSlTpvDII4+UqCJJkkojZ2eGnsGu\nDLYhUzUoizCcUiqbdbTz589n1apVpS5jD8VcyiJJyo79tSHLuatankPvYQcdxrS6abYhU8mUPAzX\n19fT2dnJzJkzyyYQl5OUEp2dndTX15e6FElSBcrZmSFqWbd9hM4MRWhD1jC5wS2EVTZKHoYbGxtp\na2ujvb291KWUrfr6ehobG0tdhiSpDOUKuw2TG0beQrgAdrUhM+yqEpU8DNfV1TF37txSlyFJUtna\n3xbCL7zywsgn5XmG184MqlYlD8OSJCl3Z4benb10dI/QhqwIYde1u8oCw7AkSUWQK+xOq5tG+yvt\nbOnd8urBBejMMNJSBjszSHkIwxFRC7QC61NK7594SZIkVZ5ybEPmFsLS6PIxM/xJYA1wcB6uJUlS\nWSqXNmS1Ubv73n0DfcyYMsOlDNIETCgMR0Qj8CfA3wKfyktFkiSV0EgfVqutqWVdV+HbkIGdGaRi\nm+jM8FeBvwQach0QERcDFwM0NTVN8HaSJE1MrhnebT3b2N63fc/lDAXg2l2pvIw7DEfE+4FNKaWV\nEfH2XMellJYDywFaWlrcSk2SVFC52pD1DfTR09/D+pfX73uSbcikzJrIzPBbgTMi4n1APXBwRNyY\nUjonP6VJkjSynG3I+nvp6LENmaSxG3cYTil9BvgMwNDM8BUGYUlSPuRsQzZpGpt2bGJr79ZXDy5S\nZwaXMkjVyT7DkqSiK4c2ZOByBkl5CsMppXuBe/NxLUlSdVi1aRU3PHEDT770JFAebcjqauqc4ZW0\nB2eGJUnjMlLY7RvoY1JMov2Vdjb3bt7zBNuQSSpDhmFJUk65OjO0v9K+7+yuWwhLqkCGYUnKsFxr\nd/sG+tjWs42O7tJ0ZnDdrqRiMQxLUpXL1ZmhhhraXm7b94Q8h93XTH4N0+qm2YZMUlkyDEtShdu1\ndnfttrXU1dTtDpzT66bTvqOdzT3D1u4WYCnD8LC760NqXb1d1E+q55zjz3HtrqSyZhiWpAowfO3u\n8MCZszNDnu3dmcGwK6laGIYlqQzkakNGgt6dOXZVy7Pha3d3BW47M0iqdoZhSSqSvdfu7gqcdmaQ\npNIxDEtSnuRqQ7atZxvb+7YXZVc1txCWpANjGJakMSqHNmSHHXQY0+qm7fFBOTszSNL4GYYlaZhc\nnRlqo5Z129fte0IR2pC5q5okFY5hWFLm5FrO0PFKB509nQW//661u7Yhk6TSMwxLqjrDlzNs7tm8\nxwxv787egi9nGKkNGbirmiSVI8OwpIp0wLuq5ZltyCSpOhiGJZWlvdfu7l5S0NNFV19XwTsz2IZM\nkrLBMCypJHJ1ZnBXNUlSMRmGJRVMrl3Vevp7Rv6gWgFmeA+fdridGSRJOY07DEfEkcA/A68DBoDl\nKaWv5aswSZUhV2cGd1WTJFWCicwM9wOXp5Qei4gGYGVE/Cyl9Ns81SapDORazrCtZxtdvV1s79++\n70l5Dr1NDU1Mqpm0R1cIOzNIkvJh3GE4pfQC8MLQ466IWAMcARiGpQqTa6OJmqihbfsInRnyHHaH\nd2ZwVzVJUjHlZc1wRDQDC4FHRvjaxcDFAE1NTfm4naQDlCvsTq+bTvuOdjb3bC7o/UfaVc2wK0kq\nBxMOwxExHfg+cFlKadveX09zKo4ZAAAKlklEQVQpLQeWA7S0tKSJ3k/SyHKt3d3as5WNr2ws+P2b\nGproH+jffV87M0iSKsGEwnBE1DEYhG9KKd2Wn5Ik5TLSRhMpJfp29tHRU9hd1WDk5Qyu3ZUkVbKJ\ndJMI4DpgTUrpy/krScqmXG3IAA6adBDtO9rZ2rv11RPszCBJ0oRNZGb4rcC5wOqIWDX02l+llH48\n8bKk6jTSUobpk6fT8UpHUdqQgcsZJEkabiLdJB4EIo+1SBUv17rdYrYh23tXtb6BPmZMmeGH1SRJ\nGoE70EkHYHjP3c09m/fozNDb31uUdbsw8nIGd1WTJOnAGYalveTsuUsNbS+P0HM3z0ZqQ+baXUmS\nCsMwrMzJFXZtQyZJUvYYhlWVcnVm6OnvobOnc+ST8ricYe91u7YhkySpPBmGVbFG6rkLEATrX16/\n58EFWLd7+LTD91nK4LpdSZIqi2FYZeuAOjMUqQ2Z63YlSaouhmGVzPDODC+8/ALw6pKCrt4uuvq6\n9j0pz6F3pLBrGzJJkrLDMKyCyRV2+wb66O3vHbkzQ57D7kidGeZMm2PYlSRJgGFYE5SrM0Nt1LJu\n+7p9T7DnriRJKiOGYY0q19rdUrYhAzszSJKkiTMMC8jdmaF3Zy8d3YXfVW1W/Swm10427EqSpKIy\nDGdEruUM0+um0/5KO5t7N796cIGWMuwKu30DfdTV1NmZQZIklZxhuErsHXZ3Bc6u3i66+7t5qeel\ngtdgGzJJklRpDMMVZFy7quXR3ruq2YZMkiRVOsNwmdl77W7fQB+TaibR8UrHvrO7dmaQJEmaEMNw\nkbmrmiRJUvmYUBiOiPcAXwNqge+klD6fl6oqWM6NJnb2sa1nGx09he/M0NTQxKSaSXt8UM6NJiRJ\nkvY17jAcEbXANcAfAW3AryLihyml3+aruHKRazZ3+IfUAIJg/cvr972Au6pJkiSVpYnMDJ8MPJNS\nehYgIv4P8KdAWYXhx158jB/+7oc8t+W53RtEDA+Re4falBLT6qaxvW87AwzQv7N/5E4MBVrCsMuu\ntbvDa6ufVM85x5/j2l1JkqQ8mUgYPgIYvt9uG3DKxMrJr1WbVnHhTy9kZ9q55xdezvG4iPbuzOBG\nE5IkScU3kTAcI7yW9jko4mLgYoCmpqYJ3O7Atb7YykAaKOo9hxtpowk7M0iSJJWPiYThNuDIYc8b\ngQ17H5RSWg4sB2hpadknLBdSy2Et1NXU0TvQm5frjdRnd/iaYTszSJIkVZaJhOFfAX8QEXOB9cAS\n4KN5qSpPFhy6gOvefd2I3R3290G4vb/ubK4kSVJ1GncYTin1R8QngJ8y2Frt+pTSb/JWWZ4sOHSB\nM7SSJEkaUaRUvJULEdEOPF+0G76qCfh9Ce6r4nKcs8Fxrn6OcTY4ztlQynE+KqU0e7SDihqGSyUi\n2sfyzVBlc5yzwXGufo5xNjjO2VAJ41xT6gKKZEupC1BROM7Z4DhXP8c4GxznbCj7cc5KGN5a6gJU\nFI5zNjjO1c8xzgbHORvKfpyzEoaXl7oAFYXjnA2Oc/VzjLPBcc6Gsh/nTKwZliRJkkaSlZlhSZIk\naR+GYUmSJGVW1YThiJjIbnqqEBFD+2GrqkXEwaWuQYUXEXMiYk6p61DhRMS0UtegwoqIKHUNE1Xx\nYTgiJkXE1cCXIuJdpa5HhTE0zn8H/F1E/FGp61HhRMR/Bu6LiEVDzyv+B632FBE1Q/89PwLMj4jJ\npa5J+TXsZ/btEXFRRBxV6ppUMFN3PajUn9cVHYaHvulfB+YAjwJXRsR/jogppa1M+RQRbwNWAjOA\np4G/jYi3lLYq5duwH6INwCvAxQDJT/lWo3OB44D5KaU7U0q9pS5I+RMRM4B/AQ4BvgJ8CDi2pEUp\n7yLinRHxIHBNRJwDlfvzutKXFjQAC4B3p5S6IqIDeB+wGLixpJUpnwaAq1NK3wOIiPnAGcAvS1qV\n8iqllCKiBjgM+DZwWkScnVK6KSJqU0o7S1yi8mDol54/AL6eUtoaES1AD/CUobhqTAeaU0r/CSAi\nFpe4HuVZRLwW+F/Al4BO4JMRMTel9DcRUZNSGihthQemosNwSmlbRKwFlgLfAH7B4CzxmyPirpTS\nxhKWp/xZCTw6LBA9DCwscU3Ks10/QId+qX0ZuAf4QEQ8AGyjAnYx0uiGfumZBZw59IvtecBzQEdE\nfDGl9FxpK9REpZTWRcQrEfFdoBFoBmZGxAnAv/j/5so0NFnBUNA9HFgN3J5S2hkRbcDDEfGdlNIL\nERGVNEtc0cskhtwOLIiIOSml7QwOTi+DoVhVIKX0SkqpZ9jM4LuB35eyJuXfsJmE+cBPgTuANzL4\nS+4JlboWTSO6BlgEzEspnQT8JYOzS8tKWpXyaTGDf3u3IaV0NPBl4HXAmSWtSuMSERcAbcDfDL20\nHXgzMAsgpfQ0cBPwzZIUOEHVEIYfZPCH6FKAlNJK4CSGLehWdYiI2mF/jf6Todfm2Umk6jwOfAu4\nl8EZ4SeB31bSLING9TTw/4CTAVJKa4HnGfxZriqQUmpncGKqY+j5fUNf6ilZURqXiJgO/CnwBeC9\nEXHs0H+zjwFfHXbo/wAaI+IPKu3ndcWH4ZTSC8D/ZXCAFkdEM9AN9JeyLhXEAFDH4A/XEyPiR8AV\n+ItPtakBDgX+S0rpdAZ/4P5FaUtSPqWUuoFPA7UR8eGIOB74MwZ/+VH1eIbBcHRqRBwKnALsKHFN\nOkBDf+v+X1JKXwPu5NXZ4UuAd0bEm4eev8zgZEZ38aucmKrZjjki3svgX8u8BfhmSqkip+q1fxFx\nKoN/9fZL4IaU0nUlLkl5FhFTU0o7hh4HcGhK6cUSl6UCiIj/ALwDeD/wjymlfyxxScqjiKgHPg58\ngMFfcL+eUlpe2qo0ERHxOuCHwOdSSv821ArzfcAKoGno8XtTSi+VsMwDVjVhGCAi6hj8fIazwlUq\nIhoZbMv05ZSSf91WxSJikv8tZ4PdQqpbRMwF2lJKfaWuRRMXER8DzkkpnTb0/L3AfwSOAD6dUlpX\nyvrGo6rCsCRJkgpjWNefFcBGBpcvfgdYXWnrhIer+DXDkiRJKryhIHwQg8tePgI8k1L690oOwlDh\nfYYlSZJUVJcw+MHmP6qW5Youk5AkSdKYVOIOc6MxDEuSJCmzXDMsSZKkzDIMS5IkKbMMw5IkScos\nw7AklUBEHBIRlww9Pnyob6ckqcj8AJ0klUBENAP/mlI6ocSlSFKm2WdYkkrj88AbImIV8DRwfErp\nhIhYCnwQqAVOAL4ETGZwG/Ie4H0ppZci4g3ANcBs4BXgopTSk8V/G5JU2VwmIUml8WngdymlBcB/\n2+trJwAfBU4G/hZ4JaW0EHgIOG/omOXApSmlRcAVwLeKUrUkVRlnhiWp/NyTUuoCuiJiK/CjoddX\nAydGxHTgLcCtEbHrnCnFL1OSKp9hWJLKz/AtTgeGPR9g8Od2DbBlaFZZkjQBLpOQpNLoAhrGc2JK\naRvwXEQsBohBb8pncZKUFYZhSSqBlFIn8IuIeAL44jgucTbw5xHxOPAb4E/zWZ8kZYWt1SRJkpRZ\nzgxLkiQpswzDkiRJyizDsCRJkjLLMCxJkqTMMgxLkiQpswzDkiRJyizDsCRJkjLLMCxJkqTM+v8H\nG2eqOnF3RQAAAABJRU5ErkJggg==\n", + "image/png": "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\nAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2500,9 +2500,9 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\nIDgDAAAAefj/k9KFkfY5IsIAAAAASUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2528,9 +2528,9 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2556,9 +2556,9 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2584,9 +2584,9 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2612,9 +2612,9 @@ }, { "data": { - "image/png": "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\nAABJRU5ErkJggg==\n", + "image/png": "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\nLUmSJGDDt8kbrGp9TwzbkiRJorm5mcWLFxu4u8lMFi9eTHNz82aP4a3/JEmSREtLC52dnXR1dZVd\nSr/S3NxMS0vLZu9v2JYkSRJNTU2MGzeu7DIajstIJEmSpIIYtiVJkqSClBK2I2KniLg9IuZExCMR\ncXYPfQ6IiBcjYlb18Y9l1CpJkiRtrrLWbK8A/iEzfxMRI4COiLg1M3+/Tr+7MvOwEuqTJEmSalbK\nle3MXJiZv6k+XwrMAXYsoxZJkiSpKKXfjSQiWoHJwP09bN43In4LPAN8OjMf6WH/04HTAcaMGVNc\noeuz4AH47b9D13/DkgUQAc1vhFdf/J/nK16HocPWbtuY55uyX18cw9qsrZHPydqszdoa95ysrXFr\nGzIMJp8Mbaf2fQbcSKWG7YgYDlwHfCozX1pn82+AsZn5ckQcCtwA7LzuGJk5HZgO0NbW1rd3YV/w\nAMw4BHJlnx5WkiRJVU93VH7208Bd2t1IIqKJStC+KjN/vO72zHwpM1+uPv8Z0BQR2/ZxmRs2/y6D\ntiRJUtnm3Fh2BetV1t1IAvg+MCczv7WePm+p9iMiplKpdXHfVbkRWt9V+ecLSZIklWf8EWVXsF5l\nLSPZD/gQ8HBEzKq2fR4YA5CZlwLHAp+IiBXAq8AHM7Nvl4n0ZqepcOp/uma7PxzD2gbGftZmbdbW\n/2trxHOytsatbQCs2Y7+ll9r0dbWlu3t7WWXIUmSpAYXER2Z2dZbP79BUpIkSSqIYVuSJEkqiGFb\nkiRJKohhW5IkSSqIYVuSJEkqiGFbkiRJKohhW5IkSSqIYVuSJEkqiGFbkiRJKohhW5IkSSqIYVuS\nJEkqiGFbkiRJKohhW5IkSSqIYVuSJEkqSClhOyJ2iojbI2JORDwSEWdvoO/eEbEyIo7tyxolSZKk\nWg0t6bgrgH/IzN9ExAigIyJuzczfd+8UEUOAbwA3l1GkJEmSVItSrmxn5sLM/E31+VJgDrBjD10/\nCVwHPNeH5UmSJEl1Ufqa7YhoBSYD96/TviNwFHBpL/ufHhHtEdHe1dVVVJmSJEnSJis1bEfEcCpX\nrj+VmS+ts/k7wDmZuXJDY2Tm9Mxsy8y20aNHF1WqJEmStMnKWrNNRDRRCdpXZeaPe+jSBlwTEQDb\nAodGxIrMvKEPy5QkSZI2WylhOyoJ+vvAnMz8Vk99MnNct/5XAj81aEuSJGkgKevK9n7Ah4CHI2JW\n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\n9f0wbEuSJAmA5uZmFi9ebOCuykwWL15Mc3PzZo/h3UgkSZIEQEtLC52dnXR1dZVdSr/R3NxMS0vL\nZu9v2JYkSRIATU1NjBs3ruwyGorLSCRJkqSCGLYlSZKkghi2JUmSpIIYtiVJkqSCGLYlSZKkgng3\nkhrNem4WP/nDT/jDkj+w8E8LARgxbARLX1+65vnyVctp2qJprbaNeb4p+/XFMazN2hr5nKzN2qyt\ncc/J2hq3tqYhTRz99qM5bpfj6K+ikW5a3tbWlu3t7X12vFnPzeKUn5/CKlb12TElSZK0tn+c9o99\nHrgjoiMz23rr5zKSGrQ/227QliRJKtltT91WdgnrZdiuQdub2xi2xbCyy5AkSRrU3j/m/WWXsF6u\n2a7BpO0m8f2Dv++a7X5wDGsbGPtZm7VZW/+vrRHPydoat7aBsGbbsF2jSdtNYtJ2k8ouQ5IkSf1Q\nIctIIuK4iHgkIlZFxHoXjkfEIRExNyIei4hzu7VfGRFPRMSs6sM0K0mSpAGnqDXbs4GjgTvX1yEi\nhgAXAx8AJgAnRMSEbl0+k5mTqo9ZBdUpSZIkFaaQZSSZOQcgIjbUbSrwWGY+Xu17DXAE8PsiapIk\nSZL6Wpl3I9kRWNDtdWe1bbXzI+J3EfHtiNiyb0uTJEmSarfZYTsibouI2T08jtjYIXpoW/0NO58D\ndgX2BrYBztlAHadHRHtEtHd1dW3SOUiSJElF2uxlJJlZ6w0NO4Gdur1uAZ6pjr2w2vZaRFwBfHoD\ndUwHpkPlGyRrrEmSJEmqmzKXkTwI7BwR4yJiGPBB4CaAiNi++jOAI6l84FKSJEkaUIq69d9REdEJ\n7Av8Z0TcXG3fISJ+BpCZK4AzgZuBOcCPMvOR6hBXRcTDwMPAtsBXi6hTkiRJKlJkNs7Ki7a2tmxv\nby+7DEmSJDW4iOjIzPV+n8xqZS4jkSRJkhqaYVuSJEkqiGFbkiRJKohhW5IkSSqIYVuSJEkqiGFb\nkiRJKohhW5IkSSqIYVuSJEkqiGFbkiRJKohhW5IkSSqIYVuSJEkqiGFbkiRJKohhW5IkSSqIYVuS\nJEkqiGFbkiRJKohhW5IkSSqIYVuSJEkqiGFbkiRJKohhW5IkSSpIZGbZNdRNRHQBT5Zw6DHAUyUc\nV33LeR4cnOfG5xwPDs7z4FDmPI/NzNG9dWqosF2WiOjamDdbA5vzPDg4z43POR4cnOfBYSDMs8tI\n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\nAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2689,14 +2689,14 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 43, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "time: 100%|█████████▉| 89.99/90 [00:16<00:00, 5.44it/s]\n" + "time: 90.00000000000914it [00:48, 1.88it/s] \n" ] } ], @@ -2706,7 +2706,7 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 44, "metadata": {}, "outputs": [ { @@ -2719,9 +2719,9 @@ }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAs8AAAFbCAYAAAAqbWN/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzt3X2clPV97//Xh2VhRRBxUYMiARtj\nVdZAWBVN6lHTeH9E48GmRERrgmlrao/nlwTjXTTR0l9Sqx7TGIw3oDFGk2O0ao6Yqg9rDQpEKjVo\n8Z4NVAGVIIrcfc8fM+ACO7PD7uxcMzuv5+PBY3euuWauz66Xs+/5zuf6fiOlhCRJkqTO9cm6AEmS\nJKlWGJ4lSZKkEhmeJUmSpBIZniVJkqQSGZ4lSZKkEhmeJUmSpBIZniVJkqQSGZ4lSZKkEhmeJUmS\npBL1zbqAYoYOHZpGjhyZdRmSJEnq5ebPn78ipbR7Z/tVdXgeOXIk8+bNy7oMSZIk9XIR8Xop+1V1\neJYkSVLvdcAlv+KDDZu22tYQ8PLfnZRRRZ0zPEuSJKlHjLniYd79YMMOPWZjgj+66MGqDdCGZ0mS\nJHXJqTc8yYK2VWV/3o2p7E9ZNjUXntevX09bWxtr167NupSq1dTUxPDhw2lsbMy6FEmSVMPufPoN\nvnXvwooftyEqfsiS1Vx4bmtrY9CgQYwcOZKIKv7NZiSlxMqVK2lra2PUqFFZlyNJkqpcR33HWbLn\nuczWrl1rcC4iImhubmb58uVZlyJJkqpAV/qOK+3q01qYdNiIrMsoSc2FZ8Dg3Al/P5Ik1Y+e6jsu\npyP3G8qscw/LuoyyqMnwLEmSVC/mv/4Op//wqazLKGr3gf2Ye8nnsy6jIgzPkiRJGau2vuNt9WsI\n/vOqE7MuoyoYnqvctddey9SpUxkwYAAAAwcO5L333su4KkmStCNGX/Z/eW/dxqzLKOqrR+7LtBMP\nyLqMqlcX4Xn+6+8w55WVjN+3mXEfH5J1OSXbuHEj1157LWeeeeaW8CxJkqqPfcf1o9PwHBFNwBNA\n//z+P08pXR4Ro4C7gN2A3wKTU0rrIqI/MAsYB6wE/iyl9Fr+uS4CzgU2An+TUnq4O8Vf8c/P87ul\nfyi6z+q163nhv1azKUGfgD/+2CAGNRWe//jAvXbh8v9+UNHnnDt3Lueeey7PPPMMGzdu5NBDD+Vn\nP/sZo0eP3m7f733ve9x99918+OGHnHbaaVxxxRUAnHrqqSxZsoS1a9dywQUXMHXqVCA3snzhhRfy\n8MMPc9JJJ7F06VKOPvpohg4dymOPPQbAxRdfzAMPPMBOO+3Efffdx5577lm0XkmS1D1ZzXe8I+qp\n7zhLpYw8fwgck1J6LyIagScj4lfAhcA/ppTuiogbyYXiH+a/vpNS+kREfBH4e+DPIuJA4IvAQcBe\nwK8j4pMppR79DOMPazewKb9KzaaUu10sPJfikEMO4ZRTTuGSSy7hgw8+4Mwzz+wwOM+ePZvFixfz\nzDPPkFLilFNO4YknnuDII4/klltuYbfdduODDz7gkEMO4fTTT6e5uZk1a9YwevRorrzySgBuueUW\nHnvsMYYOHQrAmjVrGD9+PFdddRXf+MY3uOmmm7jkkku69fNIkiT45MUPsa6Kl7az77g6dBqeU0oJ\n2Nxk25j/l4BjgEn57TOBb5MLzxPy3wP8HLghcnOnTQDuSil9CLwaES8BhwK/6WrxnY0QQ65l40s/\nnsP6DZto7NuH6744tiytG5dddhmHHHIITU1NXH/99R3uM3v2bGbPns3YsWMBeO+991i8eDFHHnkk\n119/Pffeey8AS5YsYfHixTQ3N9PQ0MDpp59e8Lj9+vXj5JNPBmDcuHE88sgj3f5ZJEmqB7Uw37F9\nx9WvpJ7niGgA5gOfAH4AvAy8m1LafAa2AXvnv98bWAKQUtoQEauA5vz2Oe2etv1j2h9rKjAVYMSI\n7k+WPe7jQ/jJl8eXvef57bff5r333mP9+vWsXbuWnXfeebt9UkpcdNFFnHfeeVttf/zxx/n1r3/N\nb37zGwYMGMBRRx21ZbnxpqYmGhoaCh63sbFxyzzODQ0NbNhQ3S8CkiRVSi30HZ86Zi+u/eLYrMtQ\nN5QUnvOtFWMiYlfgXqCjt0SbP+foaIWOVGT7tseaAcwAaG1tLctnJ+M+PqTsFwpOnTqV73znO7z6\n6qt885vf5IYbbthun+OOO45LL72UL33pSwwcOJDf//73NDY2smrVKoYMGcKAAQN44YUXmDNnTgdH\nyBk0aBCrV6/e0rYhSVK9qoW+4+G7NvHktM9lXYZ60A7NtpFSejciHgfGA7tGRN/86PNwYGl+tzZg\nH6AtIvoCg4G3223frP1jasqsWbPo27cvkyZNYuPGjRxxxBE8+uijHHPMMVvtd+yxx7Jo0SIOP/xw\nIHcx4B133MHxxx/PjTfeyMEHH8z+++/P+PHjCx5r6tSpnHDCCQwbNmzLBYOSJPVWznesahe5luYi\nO0TsDqzPB+edgNnkLgKcAvyi3QWDz6WU/iki/hpoSSl9NX/B4BdSSmdExEHAneT6nPcC/gXYr9gF\ng62trWnevHlbbVu0aBEHHGAvUGf8PUmSqlEt9B1ffVoLkw7rfuuoaktEzE8ptXa2Xykjz8OAmfm+\n5z7A3SmlByLid8BdEfFd4Fng5vz+NwO35y8IfJvcDBuklJ6PiLuB3wEbgL/u6Zk2JElSZdl3rN6u\nlNk2ngO2O8NSSq+QG0XedvtaYGKB57oKuGrHy6xuCxcuZPLkyVtt69+/P08//XRGFUmS1DNqoe/Y\n+Y7Vk2pyhcGU0pYZJ6pBS0sLCxYsyLqMLTprxZEkqRj7jqXCai48NzU1sXLlSpqbm6sqQFeLlBIr\nV66kqakp61IkSVVq9GX/l/fWVXfnpH3HqlY1F56HDx9OW1sby5cvz7qUqtXU1MTw4cOzLkOSlJHP\n/8PjLF6+Jusyijpyv6HMOvewrMuQdljNhefGxkZGjRqVdRmSJGXGvmMpOzUXniVJqgefvPgh1m2s\n3mtY7DtWvTI8S5KUgVroO/7qkfsy7UTXDJDaMzxLktQDnO9Y6p0Mz5IkdUEt9B0P37WJJ6d9Lusy\npF7F8CxJUgHV3ne8U98+LPruCVmXIdUVw7MkqW6NueJh3v1gQ9ZlFOV8x1J1MTxLknot+44llZvh\nWZJUs+w7llRphmdJUlU74JJf8cGGTVmXUZDzHUv1pdPwHBH7ALOAjwGbgBkppesiYjfgZ8BI4DXg\njJTSOxERwHXAicD7wNkppd/mn2sKcEn+qb+bUppZ3h9HklRramG+Y/uOJW1WysjzBuB/pZR+GxGD\ngPkR8QhwNvAvKaXpETENmAZ8EzgB2C//7zDgh8Bh+bB9OdAKpPzz3J9SeqfcP5QkqXrYdyypN+k0\nPKeUlgHL8t+vjohFwN7ABOCo/G4zgcfJhecJwKyUUgLmRMSuETEsv+8jKaW3AfIB/Hjgp2X8eSRJ\nFVYLfce7D+zH3Es+n3UZknqBHep5joiRwFjgaWDPfLAmpbQsIvbI77Y3sKTdw9ry2wpt3/YYU4Gp\nACNG+BGZJFUD+44lKafk8BwRA4FfAH+bUvpDrrW541072JaKbN96Q0ozgBkAra2t1TszvST1IvYd\nS1JpSgrPEdFILjj/JKX0f/Kb34yIYflR52HAW/ntbcA+7R4+HFia337UNtsf73rpkqRSff4fHmfx\n8jVZl1GUfceSakEps20EcDOwKKV0Tbu77gemANPzX+9rt/38iLiL3AWDq/IB+2Hg6ogYkt/vWOCi\n8vwYklTf7DuWpMooZeT5M8BkYGFELMhv+xa50Hx3RJwLvAFMzN/3ELlp6l4iN1XdOQAppbcj4jvA\n3Px+V26+eFCS1LlPXvwQ6zZWbzebfceS6kHkJsWoTq2trWnevHlZlyFJFVELfcdfPXJfpp14QNZl\nSFLZRcT8lFJrZ/u5wqAkVYh9x5JU+wzPklQmtdB3PHzXJp6c9rmsy5CkmmV4lqQd8IlvPUgVT3fM\nTn37sOi7J2RdhiT1WoZnSWqn2hcDAec7lqQsGZ4l1RX7jiVJ3WF4ltSrTH9oETc+8UrWZRRl37Ek\n1S7Ds6SaU+19x853LEm9l+FZUtWp9vmOA/j5Xx7BuI8P6XRfSVLvYniWVHG10HfsYiCSpI4YniWV\nnX3HkqTeyvAsqUs+efFDrNuYsi6jIOc7liT1BMOzpA4d8t1HWP7euqzLKMi+Y0lSFgzPUp2y71iS\npB3XaXiOiFuAk4G3Ukqj89t2A34GjAReA85IKb0TEQFcB5wIvA+cnVL6bf4xU4BL8k/73ZTSzPL+\nKJLas+9YkqTyK2Xk+TbgBmBWu23TgH9JKU2PiGn5298ETgD2y/87DPghcFg+bF8OtAIJmB8R96eU\n3inXDyLVI/uOJUmqrE7Dc0rpiYgYuc3mCcBR+e9nAo+TC88TgFkppQTMiYhdI2JYft9HUkpvA0TE\nI8DxwE+7/RNIvZh9x5IkVZeu9jzvmVJaBpBSWhYRe+S37w0sabdfW35boe3biYipwFSAESNGdLE8\nqTbUQt/xmOGD+eX5n826DEmSqkK5LxiMDralItu335jSDGAGQGtra/V+Hi2V4M6n3+Bb9y7Muoyi\n7DuWJKl0XQ3Pb0bEsPyo8zDgrfz2NmCfdvsNB5bmtx+1zfbHu3hsqarYdyxJUv3oani+H5gCTM9/\nva/d9vMj4i5yFwyuygfsh4GrI2JzY+SxwEVdL1uqnFroO77qtBYmHWabkyRJPa2Uqep+Sm7UeGhE\ntJGbNWM6cHdEnAu8AUzM7/4QuWnqXiI3Vd05ACmltyPiO8Dc/H5Xbr54UMqafceSJKlUkZsYozq1\ntramefPmZV2GapzzHUuSpM5ExPyUUmtn+7nCoHqFT3zrQTZsyrqKwuw7liSpdzA8qyZUe98xwNX2\nHUuS1OsZnlUVPjv9X2h7d23WZRRl37EkSTI8qyL+9q5n+eWCpVmXUdR+u+/MI//rqKzLkCRJVczw\nrLKx71iSJPV2hmeVbMwVD/PuBxuyLqOgAH7+l0cw7uNDOt1XkiSpKwzP2qIWLso7cr+hzDr3sKzL\nkCRJdcrwXEfOuvlpnli8IusyirLvWJIkVTPDcy9T7X3HA/s18B9XHp91GZIkSV1ieK4x1d533BDw\n8t+dlHUZkiRJPcLwXGVqYb5j+44lSVK9MjxX2J1Pv8G37l2YdRlFuRiIJElSxwzPPeCTFz/Euo0p\n6zIK2nWnviy4/Lisy5AkSao5FQ/PEXE8cB3QAPw4pTS90jV0V7VP6dYn4J6vOt+xJElSuVU0PEdE\nA/AD4PNAGzA3Iu5PKf2uknV05tQbnmRB26qsyyjKvmNJkqTKq/TI86HASymlVwAi4i5gAlA14XnC\nDU/y71UQnJ3vWJIkqfpUOjzvDSxpd7sNqKrh0+cqFJx36tuHRd89oSLHkiRJUnlUOjxHB9u2urIu\nIqYCUwFGjBhRiZoKF9NNV5/WwqTDKv8zSJIkqWdUOjy3Afu0uz0cWNp+h5TSDGAGQGtra8WnrDhy\nv6ElL2HtlG6SJEn1pdLheS6wX0SMAn4PfBGYVOEaipp17mGcdfPTPPPa2xw6cjcvypMkSdIWkVJl\nB3cj4kTgWnJT1d2SUrqqyL7LgdcrVds2RgBvZHRsVTfPDRXiuaFiPD9UiOdGdfh4Smn3znaqeHiu\nFRGxvJRfoOqP54YK8dxQMZ4fKsRzo7b0ybqAKvZu1gWoanluqBDPDRXj+aFCPDdqiOG5sOwne1a1\n8txQIZ4bKsbzQ4V4btQQw3NhM7IuQFXLc0OFeG6oGM8PFeK5UUPseZYkSZJK5MizJEmSVCLDsyRJ\nklQiw7MkSZJUIsOzJEmSVCLDsyRJklQiw7MkSZJUIsOzJEmSVCLDsyRJklQiw7MkSZJUIsOzJEmS\nVKJOw3NE7BMRj0XEooh4PiIuyG/fLSIeiYjF+a9D8tsjIq6PiJci4rmI+HS755qS339xREzpuR9L\nkiRJKr9IKRXfIWIYMCyl9NuIGATMB04FzgbeTilNj4hpwJCU0jcj4kTga8CJwGHAdSmlwyJiN2Ae\n0Aqk/POMSym900M/myRJklRWfTvbIaW0DFiW/351RCwC9gYmAEfld5sJPA58M799Vsql8jkRsWs+\ngB8FPJJSehsgIh4Bjgd+WujYQ4cOTSNHjuzKzyVJkiSVbP78+StSSrt3tl+n4bm9iBgJjAWeBvbM\nB2tSSssiYo/8bnsDS9o9rC2/rdD2bY8xFZgKMGLECObNm7cjJUqSJEk7LCJeL2W/ksNzRAwEfgH8\nbUrpDxFRcNcOtqUi27fekNIMYAZAa2tr8Z4SSZIk1ZYbDoUVLxa+Pxrg8rcrV88OKik8R0QjueD8\nk5TS/8lvfjMihuVHnYcBb+W3twH7tHv4cGBpfvtR22x/vOulS5IkqerMOg1eebTrj08b4YrdqjZA\ndxqeIzfEfDOwKKV0Tbu77gemANPzX+9rt/38iLiL3AWDq/IB+2Hg6s2zcgDHAheV58eQJElSxXx3\nGGx4v+eeP23suefuplJGnj8DTAYWRsSC/LZvkQvNd0fEucAbwMT8fQ+Rm2njJeB94ByAlNLbEfEd\nYG5+vys3Xzy4I9avX09bWxtr167d0YfWjaamJoYPH05jY2PWpUiSpFo0fSSszXBCtGjI7tid6HSq\nuiy1trambS8YfPXVVxk0aBDNzc0U6buuWyklVq5cyerVqxk1alTW5UiSpGr0jy2w6o2sq+hYRj3P\nETE/pdTa2X47NNtGNVi7di0jR440OBcQETQ3N7N8+fKsS5EkSVm6Yreqbn9g8Aj4nwuzrmKH1Vx4\nBgzOnfD3I0lSHfjOHrDxw6yrKKxpCEx7Lesqyq4mw7MkSVKvd/VwWLc66yqK+8zfwuevyLqKijI8\nV7lrr72WqVOnMmDAAAAGDhzIe++9l3FVkiSp2773SVjzZtZVFLfvMXDWvVlXUVXqIzwveQZe+1cY\n+Sewz6FZV1OyjRs3cu2113LmmWduCc+SJKlGLHkGbj6WDtaEqx5D94fzn8m6ippS2+H5V9Pgvzpp\nNP/wD/Dmf0DaBNEH9hwN/XcpvP/HWuCE6UWf8tJLL2Xo0KFccMEFAFx88cXsueee/M3f/M12+37v\ne9/j7rvv5sMPP+S0007jiityH22ceuqpLFmyhLVr13LBBRcwdepUIDeyfOGFF/Lwww9z0kknsXTp\nUo4++miGDh3KY489tuV4DzzwADvttBP33Xcfe+65Z/HfgSRJ6hlXDoVN67OuorA+jXDZiqyr6FVq\nOzyXYu2qXHCG3Ne1q4qH5xKce+65fOELX+CCCy5g06ZN3HXXXTzzzPbv2mbPns3ixYt55plnSClx\nyimn8MQTT3DkkUdyyy23sNtuu/HBBx9wyCGHcPrpp9Pc3MyaNWsYPXo0V155JQC33HILjz32GEOH\nDgVgzZo1jB8/nquuuopvfOMb3HTTTVxyySXd+nkkSVIBPb0YSDmcfB20np11FXWjtsNzJyPEQO4j\nk5mnwMZ10NAPTv9xt1s3Ro4cSXNzM88++yxvvvkmY8eOpbm5ebv9Zs+ezezZsxk7diwA7733HosX\nL+bII4/k+uuv5957cz1ES5YsYfHixTQ3N9PQ0MDpp59e8Nj9+vXj5JNPBmDcuHE88sgj3fpZJEmq\na7/4Ciy8O+sqims5A06/KesqlFfb4bkU+xwKU+4ve8/zl7/8ZW677Tb+67/+i7/4i7/ocJ+UEhdd\ndBHnnXfeVtsff/xxfv3rX/Ob3/yGAQMGcNRRR21ZMbGpqYmGhsKr6jQ2Nm6Ziq6hoYENGzaU5eeR\nJKlXmncbPHBB1lUUt9c4mPpo1lWoRL0/PEMuMJf5QsHTTjuNyy67jPXr13PnnXd2uM9xxx3HpZde\nype+9CUGDhzI73//exobG1m1ahVDhgxhwIABvPDCC8yZM6fgcQYNGsTq1au3tG1IkqRtVPtiIPYd\n9yr1EZ57QL9+/Tj66KPZddddC44UH3vssSxatIjDDz8cyF0MeMcdd3D88cdz4403cvDBB7P//vsz\nfvz4gseZOnUqJ5xwAsOGDdtywaAkSXWl6vuOA86dXVMzeqnrIqXqnT6ltbU1zZs3b6ttixYt4oAD\nDsiooo9s2rSJT3/609xzzz3st99+WZeznWr5PUmS1KlZp8ErVd62UIeLgdSbiJifUmrtbD9Hnrvg\nd7/7HSeffDKnnXZaVQZnSZKqyiOXw79dm3UVxfXSpaRVfobnLjjwwAN55ZVXttxeuHAhkydP3mqf\n/v378/TTT1e6NEmSKm/JM3DzccCmrCsprKE/XPpW1lWoFzA8l0FLSwsLFizIugxJknrOP7bAqjey\nrqKwaIDL3866CtWBmgzPKaUt07Vpe9Xcxy5JqlIzjoGl87OuojgXA1EVqLnw3NTUxMqVK2lubjZA\ndyClxMqVK2lqasq6FElSNamFxUDsO1YNqLnwPHz4cNra2li+fHnWpVStpqYmhg8fnnUZkqRKWvIM\n3HwsUMWfPvYdAJcsy7oKqVtqLjw3NjYyatSorMuQJKnyvvdJWPNm1lUU5mIgqgM1F54lSeq1bjgU\nVryYdRXFDd0fzn8m6yqkzBieJUmqlFroO955T/j6f2ZdhVS1DM+SJJVTtS8l3W8QfKst6yqkmmV4\nliRpR0wfCWvfybqKwlwMROpRhmdJktqrhb7jvcbB1EezrkKqS4ZnSVJ9mXUavFLlwXPwCPifC7Ou\nQlIHDM+SpN7nO3vAxg+zrqIwFwORapbhWZJUe6q97xjgM38Ln78i6yoklZnhWZJUff6xBVa9kXUV\nxe17DJx1b9ZVSKoww7MkqfJqYSlpFwOR1AHDsySpZ9h3LKkXMjxLkrqmFvqOT74OWs/OugpJvUin\n4TkibgFOBt5KKY3Ob9sN+BkwEngNOCOl9E5EBHAdcCLwPnB2Sum3+cdMAS7JP+13U0ozy/ujSJLK\nqhb6jlvOgNNvyroKSXWklJHn24AbgFnttk0D/iWlND0ipuVvfxM4Adgv/+8w4IfAYfmwfTnQSq7B\nbX5E3J9SqvIhC0nqxebdBg9ckHUVxdl3LKnKdBqeU0pPRMTIbTZPAI7Kfz8TeJxceJ4AzEopJWBO\nROwaEcPy+z6SUnobICIeAY4Hftrtn0CSVFi19x33aYTLVmRdhSSVrKs9z3umlJYBpJSWRcQe+e17\nA0va7deW31ZouySpO64eDutWZ11FEQHnzoZ9Ds26EEkqi3JfMBgdbEtFtm//BBFTgakAI0aMKF9l\nklSLamEpaec7llRHuhqe34yIYflR52HAW/ntbcA+7fYbDizNbz9qm+2Pd/TEKaUZwAyA1tbWKp4A\nVJLKwL5jSaopXQ3P9wNTgOn5r/e1235+RNxF7oLBVfmA/TBwdUQMye93LHBR18uWpBpyxW6QNmZd\nRWEN/eHStzrfT5JU0lR1PyU3ajw0ItrIzZoxHbg7Is4F3gAm5nd/iNw0dS+Rm6ruHICU0tsR8R1g\nbn6/KzdfPChJNa/aL8oj4ORrne9YksogchNjVKfW1tY0b968rMuQVO9qoe/Y+Y4lqVsiYn5KqbWz\n/VxhUJIeuRz+7dqsqyjOpaQlqSoYniX1fkuegZuPpcAkP9Wh7wC4ZFnWVUiSOmF4ltQ7VPtS0tEA\nl3uphyTVOsOzpNow4xhYOj/rKoo7+TovypOkXs7wLKk6/OIrsPDurKsobuc94ev/mXUVkqQMGZ4l\nVU61LyVt37EkqROGZ0nl871Pwpo3s66isD6NcNmKrKuQJNUww7Ok0tVC3/Fe42Bqlc/JLEmqWYZn\nSR+x71iSpKIMz1K9qfa+436D4FttWVchSVKHDM9Sb1PtfccAn/lb+PwVWVchSdIOMzxLteaGQ2HF\ni1lXUZx9x5KkXsrwLFWjK4fCpvVZV1GYfceSpDpleJay8N1hsOH9rKsozL5jSZI6ZHiWesL0kbD2\nnayrKK7lDDj9pqyrkCSpphiepa74xxZY9UbWVRRn37EkSWVneJYKuWI3SBuzrqKwwSPgfy7MugpJ\nkuqK4Vn16zt7wMYPs66isOgDf/Ew7HNo1pVIkqQ8w7N6r2pfDASc71iSpBpjeFbtqoWlpPc9Bs66\nN+sqJElSmRieVb3m3QYPXJB1FcUN3R/OfybrKiRJUoUYnpWtar8oLxrg8rezrkKSJFUJw7N6VrUv\nBgJw8nXQenbWVUiSpBpgeFb3zDoNXqnyuYRdDESSJJWJ4VnFPXI5/Nu1WVdRnEtJS5KkCjE817sl\nz8DNxwGbsq6ksIb+cOlbWVchSZJkeK4L1b6UtBflSZKkGmF47g1mHANL52ddRXFelCdJknoBw3Mt\nqIW+46YhMO21rKuQJEnqUYbnalHt8x33HQCXLMu6CkmSpEwZniul2vuO+zTCZSuyrkKSJKmqGZ7L\npRbmO3YpaUmSpG6peHiOiOOB64AG4McppemVrqFL5t0GD1yQdRXF7bwnfP0/s65CkiSp16poeI6I\nBuAHwOeBNmBuRNyfUvpdJevo1NXDYd3qrKvYnn3HkiRJmar0yPOhwEsppVcAIuIuYAJQPeE5y+Bs\n37EkSVJVq3R43htY0u52G3BY+x0iYiowFWDEiBGVq2yzng7O9h1LkiTVrEqH5+hgW9rqRkozgBkA\nra2tqYP9e1a/Qd0L0M53LEmS1GtVOjy3Afu0uz0cWFrhGor7Vlvx1g37jiVJkupWpcPzXGC/iBgF\n/B74IjCpwjV07lttWVcgSZKkKhQpVbYzIiJOBK4lN1XdLSmlq4rsuxx4vVK1bWMEUMWrmihDnhsq\nxHNDxXh+qBDPjerw8ZTS7p3tVPHwXCsiYnkpv0DVH88NFeK5oWI8P1SI50Zt6ZN1AVXs3awLUNXy\n3FAhnhsqxvNDhXhu1BDDc2Grsi5AVctzQ4V4bqgYzw8V4rlRQwzPhc3IugBVLc8NFeK5oWI8P1SI\n50YNsedZkiRJKpEjz5IkSVKJajo8R8TEiHg+IjZFRGsJ+388IuZHxIL8475aiTolSZLUO9RMeI6I\noyLitm02/wfwBeCJEp9mGXBESmkMcBgwLSL2Kl+VkiRJ6s1qJjx3JKW0KKX04rbbI6IhIr4XEXMj\n4rmIOC+//7qU0of53fpT4z91WQWMAAAcz0lEQVS/JEmSKqu3hsdzgVUppUOAQ4Cv5JcEJyL2iYjn\ngCXA36eUlmZYpyRJkmpI36wL6ExEPE1ulHggsFtELMjf9c2U0sMFHnYscHBE/I/87cHAfsCrKaUl\n+fv2An4ZET9PKb3Zgz+CJEmSeomqD88ppcMg1/MMnJ1SOruEhwXwtSLhmpTS0oh4HvgT4OdlKFWS\nJEm9XG9t23gY+MuIaASIiE9GxM4RMTwidspvGwJ8BtiuZ1qSJEnqSNWPPBcTEacB/xvYHXgwIhak\nlI4DfgyMBH4bEQEsB04FDgD+ISISudHp76eUFmZSvCRJkmqOKwxKkiRJJeqtbRuSJElS2VV128bQ\noUPTyJEjsy5DkiRJvdz8+fNXpJR272y/qg7PI0eOZN68eVmXIUmSpF4uIl4vZb+qDs9Sdx13z3Es\nfb/jdXCa+jQxd/LcClckSZJqmeFZvca0J6bx4KsPlrz/2k1raZnZstW2wY2DeXLSk+UuTZIk9RKG\nZ9W8sTPHsoENZXmuVetXbQnUew3Yi4cnFlxnR5Ik1SHDs2rWmJlj2MjGHnv+pe8vpWVmC/2iH/PP\nmt9jx5EkqaetX7+etrY21q5dm3UpmWtqamL48OE0NjZ26fGGZ9WccbPGsS6tq9jx1qV1hmhJUk1r\na2tj0KBBjBw5ktz6cfUppcTKlStpa2tj1KhRXXoO53lWzZj0wCRaZrZ0KTi3NLewcMpCFk5ZyDkH\nndOl428O0Z+987NderwkSVlZu3Ytzc3NdR2cASKC5ubmbo3AO/KsmrDthX3FdHbR34WtF3Jh64Vb\nbTtv9nk8teypkp5/c1/0EcOO4EfH/qjkuiRJylK9B+fNuvt7MDyrql0z7xpuff7WTvcLglknzGLM\nHmO6dJz2IXjSA5NYuHJhp495atlTtMzMjWhLkqT6YNuGqtbRdx3daXDuQx8WTlnIc1Oe63Jw3tad\nJ9/JwikLuWz8ZSXt3zKzhUkPTCrLsSVJ6q1ee+01Ro8eXfL+N954I7NmzSq6z2233cb555/f4X1X\nX331DtVXKsOzqtLYmWNZ8eGKovtcNv4y/n3Kv/dYDRP3n1hyiF64cuEOtZZIkqTivvrVr3LWWWd1\n+fGGZ9WNlpktRedt3rlhZxZOWcjE/SdWpJ7NIfqIYUd0um/LzBbuefGeClQlSVLPWvDWAn688Mcs\neGtB2Z5z48aNfOUrX+Gggw7i2GOP5YMPPuDll1/m+OOPZ9y4cfzJn/wJL7zwAgDf/va3+f73vw/A\n3LlzOfjggzn88MP5+te/vtUI9tKlSzn++OPZb7/9+MY3vgHAtGnT+OCDDxgzZgxf+tKXylY/lLHn\nOSKOB64DGoAfp5Smb3N/f2AWMA5YCfxZSum1ch1fvUNno7eXjb+sYqF5W5v7og+5/RDWbip8le6V\nc67kn579Jx774mOVKk2SpJL9/TN/zwtvv1B0n/fWvceL77xIIhEE+w/Zn4H9Bhbc/493+2O+eeg3\nOz324sWL+elPf8pNN93EGWecwS9+8QtuvfVWbrzxRvbbbz+efvpp/uqv/opHH310q8edc845zJgx\ngyOOOIJp06Ztdd+CBQt49tln6d+/P/vvvz9f+9rXmD59OjfccAMLFpQv+G9WlpHniGgAfgCcABwI\n/HlEHLjNbucC76SUPgH8I/D35Th2NRl/x3haZrbw6VmfLuu7tHrRWXCu5GhzMXMnz+20lWPFhyts\n45Ak1azV61eTSAAkEqvXry7L844aNYoxY3LXKI0bN47XXnuNp556iokTJzJmzBjOO+88li1bttVj\n3n33XVavXs0RR+Q+AZ40aevrjD73uc8xePBgmpqaOPDAA3n99dfLUmsh5Rp5PhR4KaX0CkBE3AVM\nAH7Xbp8JwLfz3/8cuCEiIqWUylRD2RxyxyGs3dj1+f/Wp/VM/tVkbj/h9rJdxNbbFQuafejTo73N\nXTFx/4lM3H9ip6PQzsYhSao2pYwQL3hrAV+Z/RXWb1pPY59Gpv/J9LJkmv79+2/5vqGhgTfffJNd\nd9216AhxZ1Fx2+fcsKFw62c5lKvneW9gSbvbbfltHe6TUtoArAKay3T8shl/x/huBef2Jv9qclme\np7crFpx3bti56oJze3Mnz+100ZWWmS1cM++aClUkSVL3jdljDDcdexPnjz2fm469qccGA3fZZRdG\njRrFPffkrhdKKfHv/7713/0hQ4YwaNAg5syZA8Bdd91V0nM3Njayfv368hZM+cJzR7NNb/s2oZR9\niIipETEvIuYtX768LMXtiDUb15T1+QxNxRULzvvusi9zzpxTwWq65sLWCzsdXb71+VtdmVCSVFPG\n7DGGL7d8ucc/Rf/JT37CzTffzKc+9SkOOugg7rvvvu32ufnmm5k6dSqHH344KSUGDx7c6fNOnTqV\ngw8+uOwXDEY5uiYi4nDg2yml4/K3LwJIKf1du30ezu/zm4joC/wXsHuxto3W1tY0b968bte3I8bf\nMb6sAXpAwwCePvPpsj1fb1IsOLc0t3DnyXdWsJry6KyNIwiem/JcBSuSJAkWLVrEAQcckHUZXfbe\ne+8xcGDugsXp06ezbNkyrrvuui4/X0e/j4iYn1Jq7eyx5Rp5ngvsFxGjIqIf8EXg/m32uR+Ykv/+\nfwCPVmO/85wz57Bzw85le75ytYD0NmNnji1437677FuTwRlybRwnjTqp4P2J5IWEkiTtoAcffJAx\nY8YwevRo/vVf/5VLLrkks1rKMvIMEBEnAteSm6rulpTSVRFxJTAvpXR/RDQBtwNjgbeBL26+wLCQ\nLEaeu2vMzDFsZOOW2419Gvnt5N9mWFH1+eydn2XV+lUd3rfXgL14eOLDFa6oZ3QWkr2gVJJUKbU+\n8lxu3Rl5Lts8zymlh4CHttl2Wbvv1wLZzzPWw5r6NrFmw0dtH9Fhq3f9Om/2eQWD89D+Q3tNcIbc\n1HrFAvTkX03mpFEnMf3I6QX3Ue3b9g11OfWmN5uSel5KiQhzSXcHjssWnpXTr6HfVuF53aZ13PPi\nPVUxP3HWFry1gKeWPdXhfU19mnrloiILpyxk3KxxrEvrOrz/wVcf5Nk3nzUA9RI9GZQ7svT9pR2+\nQTvnoHO4sPXCitUhqfo1NTWxcuVKmpub6zpAp5RYuXIlTU1NXX6OsrVt9IRabNu4Zt413Pr8rVtt\n23fwvtx36vZXjtabQqOw1TiPc7kdd89xLH1/acH7m/o0MXfy3ApWpHLo7ALRajG0/9Be+eZUUunW\nr19PW1sba9dW/2tWT2tqamL48OE0NjZutb3Utg3Dcw847CeH8f6G97fc3mvnvXj4f9T3yGKx9oV6\nWUSkozdW7dXDm4jeoNKjyz3Bdg9J2l6lZ9tQO/sM2mer24P6DcqokupwyO2HFLyvXoIzdD4f9CY2\nORNHlTrk9kNomdlCy8yWmg/O8FG7x+Z/97x4T9YlSVLNsOe5B6zftL7o7Xpy3uzzCn6sffsJt1e4\nmurQ2YWELuldHSY9MImFK8vz36EvfXl2yrNleS6ACfdO4JU/FJ2saIdcOedKrpxzJeCotCR1xvDc\nAxr7NBa9XS+KXSB4xLAj6nqatlIC9GXjL/NC0wwUu8CzFOUOyh2577SOr6EoRw92+4sQ+0U/5p81\nv1vPp+qx4K0FnPWrs0jbL+5bUUcMO4IfHfujTGuQusOe5x4w4ZcTeGXVR6NC9XrBYKFwuHPDzjWx\n7HYldBbU9t1l34JBSeWz4K0FTP7V5C4/vlpntzhv9nkF38B2hW/oqldnFyXXKt/AqZK8YDBDZ//q\nbOa/9dH/7OP2GMdtJ9yWXUEZGDtzLBvY0OF9tiRsrbM/ev7x6DnTnpjGg68+uMOPa6CBBVMW9EBF\nPauc7R6+sau8crfr9Ca2G1Wve168Z0tbWKmyeo01PGeo3sNzsV5Rg3PHSglx/u7Kp6sjsr1t5LW7\nLSqb+QavvAzJPae3/T/c0zqbJaonZRGgDc8Z2rZto56mqiv28bcvWsWV0jpggO6erlwEWC9zJJcz\nsLU0t3DnyXeW5bl6s66MyKlyest5XMstPZX+m2d4ztAFj17Ao0se3XI7CGadMKsuLpAr1OfsR2ql\n62y6umrtr61mXQnN9fxmr7s94O3V0+tfMdUUYCpxUWtHPnvnZ1m1flXFj6va5MhzF9VqeO7oD88Z\nnzyDSw+/NKOKKqPQC6OLf+y4g2ceXPSK+HoZDe2uHW3PyCpUVLtyr6TYm9+YlPONR1f0ll50R+Xr\nmz3P3VCr4Rlg0oOTWLjio5GuY/Y5huuOuS7DinpWsb4oWw26prPA4puSwnY0NDsDTOl6YgS1Vn//\n5eoZ31F+kvcR+8NrRy1cG1FqeHae5x6yW//dsi6hogoF53MOOqfClfQecyfPLfqHYfOKhL45+ciO\nXtwyuHEwT056sgcr6n3ah7ZyjQ6u2bimw3alaug5HX/HeNZsXJPJsXvLKHJPKvX3k9Ubnd6iqU8T\ncyfPzbqMquHIcw/Ztu+5N488j5k5psMli2t1NKnalBJQqiFkZGlHQ7Mjdz3j6LuOZsWHKyp6zK6e\n+9XUf1sLI3L1pJr608vJN2Ods20jY/USnot9PO6IaHl1diEh1N/vfEdHPu0VryxH+7ZngJGql20b\nqohCwfn2E26vcCW938IpC4suPgO5gF0Ps3EYmmvDtqOp9RSmvfhU6r0Mz+qyg2ce3OH2luaWup+W\nqqc8O+XZTi+Gu/X5W5n1/KyaXAGvMzs6k4E9zdVl2zDd1RUeq0kQXDr+0l47e4ik7Rme1SUT7p3Q\n4VRqDTTUde9tJfzo2B8Bxds4NrKRlpktHDHsiC3717IdHWn24pbaMP3I6Uw/cvp226ux5/SkUSd1\nWKuk+mN41g5b8NaCgjNA9MbRzmq1cMrCTqeze2rZUzU9I8eOjkwamnuHUi7mLFfA7i1vMCVVjuFZ\nO6zQx+YnjTqpwpVo7uS5Jc000TKzpaaC5Y7O3epsBfXH2VIkZcXwrB1y9F1Hd7i9X/TzI82MXNh6\nIRe2XtjpxYRrN62lZWZLVU8huKMXlBmaJUmVZnhWye558Z6Cc7gaYLL37JRnSxqF3rwgRbXMBrCj\nqwGCMxlIkrLT7fAcEbsBPwNGAq8BZ6SU3ulgv43A5sbLN1JKp3T32LVk1YfVMRl/dxS6YMtVBKvH\n5lHoUhaA2MCGLRcdVrrvc0cXNdmsllpPJEm9UzlGnqcB/5JSmh4R0/K3v9nBfh+klOpm/rLmnZq3\nuv3sW8+y4K0FNTuF2/g7xne4feeGnXv9nMK1aPP0bAfPPLjDWVG2tfnCQui5WQW6c4FXNbeaSJLq\nSznC8wTgqPz3M4HH6Tg815VT/ugUfv6fP98SXDaxiX9++Z9rMjxfM+8a1mxc0+F9Bprq9tyU53Z4\nlPfBVx/caoaLrobpzmYCKYWrsUmSqk23l+eOiHdTSru2u/1OSmlIB/ttABYAG4DpKaVfFni+qcBU\ngBEjRox7/fXXu1VfliY9MImFKz+aIqxWl+guNJ9wPaxk15vU0oIUl42/zEUnJEkVVdbluSPi18DH\nOrjr4h2oaURKaWlE7As8GhELU0ovb7tTSmkGMAOgtbW1e8k+Y0OatnsPUXPGzRrX4fbBjYMNzjVm\n84IUO7pKX6W4hLYkqRaUFJ5TSn9a6L6IeDMihqWUlkXEMOCtAs+xNP/1lYh4HBgLbBeee5O+fWp7\nMpNpT0wrOG2YSx7XrjF7jNmyaEopFxb2JC8AlCTVmnKku/uBKcD0/NftGhQjYgjwfkrpw4gYCnwG\n+P/LcGz1oEIf8d9+wu0VrkQ9pf2boPF3jC/Y215O9jFLkmpZOcLzdODuiDgXeAOYCBARrcBXU0pf\nBg4AfhQRm4A+5Hqef1eGY6uHjJnZ8YWN++6yb01e9KjObXvxZ7nCtL3xkqTepNvhOaW0EvhcB9vn\nAV/Of/8U0PFVZ6o6kx6YxEY2brc9CEcM64gzqUiStL0+WReg6rLgrQVbzRDS3nNTnqtwNZIkSdXF\n8KytFJqF4YhhR1S4EkmSpOpjeNYWhVYRbKChoks3S5IkVSvDs4DiqwgumLKgwtVIkiRVJ8OzAAou\n33zOQedUuBJJkqTqZXgWn5r5qQ63u4qgJEnS1gzPFbTqw+xWcivk6LuOZhObOrzPVQQlSZK2Znju\nQc07NW91+9m3nmXBW9XTP3zNvGtY8eGKDu9zFUFJkqTtGZ570Cl/dApBbLm9iU3888v/nGFFWyvU\n59zS3OIqgpIkSR0wPPegMXuM4RODP7HVtpfffTmjarbWMrPjBR/7RT/uPPnOClcjSZJUGwzPPWzb\nZa7f+fCdjCr5yLhZ4wreN/+s+RWsRJIkqbYYnnvYkP5Dit6utAn3TmBdWtfhfQundLwstyRJknIM\nzz1scP/BRW9X0jXzruGVP7zS4X0njTqpwtVIkiTVHsNznVjw1oKCFwju3LAz04+cXuGKJEmSao/h\nuU5M/tXkDrcHwZwz51S4GkmSpNpkeO5h2y6MksVCKYVm1gB4bspzFaxEkiSpthmee9i2s2tUeraN\nYsHZCwQlSZJ2jOG5hzX2aSx6uycVC86uIChJkrTjDM89bP2m9VvdXvnByooct1hwPmnUSa4gKEmS\n1AWG5x42cpeRW91esXYF97x4T48es1hw3neXfZ1ZQ5IkqYsMzz3snNHnbLftjkV39NjxigXnvQbs\nxX2n3ddjx5YkSertDM89bMweYxjaNHSrbWs3rC37cc6bfV6nwfnhiQ+X/biSJEn1pNvhOSImRsTz\nEbEpIlqL7Hd8RLwYES9FxLTuHreWNO/UvNXtQf0GlfX5PzXzUzy17KmC9xucJUmSyqMcI8//AXwB\neKLQDhHRAPwAOAE4EPjziDiwDMeuCdteJFiuiwY3jzZvYlPBfVqaWwzOkiRJZdK3u0+QUloEEBHF\ndjsUeCml9Ep+37uACcDvunv8WvD++ve3ur163WogF37bjxifNOqkki7m2/ZxhVw2/jIm7j9xB6uV\nJElSId0OzyXaG1jS7nYbcFiFjp25bd9YfLjpQw6eeTCJtNX2B199kAdffZCdG3bucMnsMTPHsJGN\nJR3TBVAkSZLKr6TwHBG/Bj7WwV0Xp5RKmb6ho2Hp1ME2ImIqMBVgxIgRpZRX9fo19GPNhjVbbds2\nOLe3ZuOaohf/FdOXvjw75dkuPVaSJEnFldTznFL605TS6A7+lTrvWRuwT7vbw4GlBY41I6XUmlJq\n3X333Ut8+up26idOrchxThp1ksFZkiSpB1WqbWMusF9EjAJ+D3wRmFShY2fuwtYLufX5W3vs+Qc3\nDubJSU/22PNLkiQpp9vhOSJOA/43sDvwYEQsSCkdFxF7AT9OKZ2YUtoQEecDDwMNwC0ppee7e+xa\n0jf6siFtKOtzGpolSZIqqxyzbdwL3NvB9qXAie1uPwQ81N3j1arJB07ucPS5/RzM056YxoOvPlj0\neexpliRJyk6kVPjCtay1tramefPmZV1G2Vwz75qtAnSpU9NJkiSpZ0XE/JRSwQX/tuxneJYkSVK9\n6xXhOSKWA69ndPgRwBsZHVvVzXNDhXhuqBjPDxXiuVEdPp5S6nSqt6oOz1mKiOWl/AJVfzw3VIjn\nhorx/FAhnhu1paR5nuvUu1kXoKrluaFCPDdUjOeHCvHcqCGG58JWZV2Aqpbnhgrx3FAxnh8qxHOj\nhhieC5uRdQGqWp4bKsRzQ8V4fqgQz40aYs+zJEmSVCJHniVJkqQSGZ4lSZKkEtV1eI6Ibi9PLkmS\npPpRl+E5IvpGxPeBf4iIP826HlWXiDgrIv5bRAzO367L/0+0vYg4PSLGRERD/nZkXZOqg68bKsbX\njt6l7i4YzJ+wPwAGAw8BZwO/BH6cUvoww9KUofx58THgTmAT8BIwCPiblNKKiIhUb/+zCNhybowA\nfg78AVgJvAj8Q0rpXc+N+hYRHwPuAjbi64ba8bWj96rHd8aDgDHAV1NKPwG+D3wSmJhpVcpMRDTk\nX8AGAb9PKX0O+GtgBfCjTItTpiJil/y5sTcwN39uXEruXLkq0+KUqYjYKyKGkjsX2nzdUHsRMTD/\n2rEX8LSvHb1L3YXnlNIfgNfIjTgD/BvwLHB4fgRBdSLfvnM1cHVE/Ddgf3KjR6SUNgAXAEdExH9L\nKSU/hq0vEfHXwBMRcSAwHBiWv+tl4BrgsxFxSP7c8CPYOhERffKvG3OA0eQGYwBfN7TV35V7I+JM\nYAKwS/5uXzt6iXr9n/peYExEDEspvQcsBNbx0R9H9XL5sDwfGELuo9bvAOuBoyPiUID8qMGVwLfz\ntzdlUqwqqt0fs0HAWmAq8AugNSLGppQ2pJTeAG4jN9KIH73WlcnAHwOfSik9DjxILgz5ulHnImII\nuda/XYFrgVOBp4E/jYgxvnb0HvUanp8k13t0NkBKaT5wCLBThjWpsjYB308p/WVK6SbgP4BRwGXA\nD2HLBT/3Assj4uOZVaqKajdauCcfXR9xLHARMB1yrT7APOD9/B9M1YH8G6v9gOtTSu9ExOFAI/Bj\nci2Avm7Ut4HAyJTSX6WUHgQ+AH5Prk3jSvC1o7eoy/CcUlpG7iLBEyJiYkSMJDfCtCHLulRR84G7\nN1/5TK59Z0RK6TagISK+lh8xGg5sTCm9nlGdqrCI6JP/b78CWAPMBs4kN4J0cERMSiltBAYAA1JK\n72RXrSopP0o4FPhCRHwNuAG4kdzH8mMi4qz8rr5u1KGU0hJyofi2iPg1cAS5N93rgc9ExBd97egd\n6jI8A6SUngL+DjgB+L/AL1NKz2RblSolpfR+SunD/AsZwOeB5fnvzwEOiIgHgJ8CvwWnFqoX7T5m\nbwEeJvf6cDC5j2P/CfjziLg7//3T4LlRZ34AjAMOSimNI/dp1Rvk3pAfDNxP7lzxdaM+TQSeApam\nlP6I3BusgcDjwGn5144f4mtHTau7qeq2FRGN5AYUHHWuQ/mR50Sub/FrKaWXIuIT5EYdRwOvppR+\nn2WNykZEXESut3UMsIrc6NHJKaUPIuIU4Nn8SJPqSEQ0kQs/n0opfTq/bSq5tr/rgaOBF33dqF8R\ncTZwcErpwvzt75N7c3Uf8Kf42lHz6nbkebOU0nqDc13bRK5ncQW5j+QfIDed0KaU0pP+AaxrfYA9\nyM3ZeyS5P35/A5BSut8/fvUppbQWmEauvev0iDgA+CKwPuU86utG3XsJGB4R4yNiD+BQoE/+E09f\nO3qBuh95liJiPLmP2Z4Cbk0p3ZxxSaoCEbFTSumD/PcB7JFSejPjslQlIuKzwDHAycBN+QuPpc2f\nTvwl8N/JvQG/PqU0I9uqVE6GZ9W9iBhObvqpa1xlUtuKiL5+OqVC8ossbex8T9WbiBhFbgGd9VnX\novIyPEuSJEklqvueZ0mSJKlUhmdJkiSpRIZnSZIkqUSGZ0mSJKlEhmdJqgERsWtE/FX++70i4udZ\n1yRJ9cjZNiSpBkTESOCBlNLojEuRpLrWN+sCJEklmQ78UUQsABYDB6SURueXAj4VaCC3pPw/AP3I\nzV3+IXBiSuntiPgj4AfA7sD7wFdSSi9U/seQpNpm24Yk1YZpwMsppTHA17e5bzQwidwywFcB76eU\nxgK/Ac7K7zMD+FpKaRzw/wH/VJGqJamXceRZkmrfYyml1cDqiFgF/HN++0Lg4IgYCBwB3JNbaRyA\n/pUvU5Jqn+FZkmpf+2XlN7W7vYnc63wf4N38qLUkqRts25Ck2rAaGNSVB6aU/gC8GhETASLnU+Us\nTpLqheFZkmpASmkl8G8R8R/A97rwFF8Czo2IfweeByaUsz5JqhdOVSdJkiSVyJFnSZIkqUSGZ0mS\nJKlEhmdJkiSpRIZnSZIkqUSGZ0mSJKlEhmdJkiSpRIZnSZIkqUSGZ0mSJKlE/w9YbBqdvZ419gAA\nAABJRU5ErkJggg==\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAs8AAAFbCAYAAAAqbWN/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzt3X2YVOWd5//3l6ahRRGxUYMiASfG\nUWkCoVU0GVfNjM+rEhfXJSq6JpjMmHF+zi8JGjXRRIf5JeOoa3YcfASNMZKs0VGzYqJejmNQIBKJ\nQaPxiQ6MAipBlOf790cV2EBXddFdXaeq6/26Li66Tp2q8632WHzqru+570gpIUmSJKlzfbIuQJIk\nSaoVhmdJkiSpRIZnSZIkqUSGZ0mSJKlEhmdJkiSpRIZnSZIkqUSGZ0mSJKlEhmdJkiSpRIZnSZIk\nqUR9sy6gmCFDhqQRI0ZkXYYkSZJ6ufnz5y9PKe3R2X5VHZ5HjBjBvHnzsi5DkiRJvVxEvFHKflUd\nniVJktR7ffKbD7NuY9pqW0PAH/7hpIwq6pzhWZIkST1i1BX/l/fXbdyhx2xM8GeXPFS1AdrwLEmS\npC75q396gpeXrS77824zGF1Vai48r1+/nra2NtasWZN1KVWrqamJYcOG0djYmHUpkiSphk17eBE3\nPflqxY/bEBU/ZMlqLjy3tbUxcOBARowYQUQV/2YzklJixYoVtLW1MXLkyKzLkSRJVa6jvuMs2fNc\nZmvWrDE4FxERNDc3s2zZsqxLkSRJVaArfceVFMBPvnIE4z4+OOtSSlJz4RkwOHfC348kSfWjp/qO\ny+m0MXtz3Zljsy6jLGoyPEuSJNWLu595k0vvW5h1GUUN262Jp6Z+LusyKsLwLEmSlLFq6zve1k59\n+7DouydkXUZVMDxXueuuu44pU6YwYMAAAHbZZRfef//9jKuSJEk7otr7jgGumdDCpMOGZ11G1auL\n8Dz/jXeZ8+oKxu/XXDPN6AAbN27kuuuu46yzztoSniVJUvWx77h+dBqeI6IJeBLon9//Jymlb0XE\nSOAeYHfg18DZKaV1EdEfmAmMA1YA/z2l9Hr+uS4Bzgc2An+bUnqkO8Vf+W8v8Lslfyq6z6o163nx\nP1exKUGfgD//2EAGNhWe//igvXflW//14KLPOXfuXM4//3yeffZZNm7cyKGHHsqPf/xjRo0atd2+\n3/ve97j33ntZu3YtEyZM4MorrwTgtNNOY/HixaxZs4aLLrqIKVOmALmR5YsvvphHHnmEk046iSVL\nlnD00UczZMgQHn/8cQC++c1v8uCDD7LTTjtx//33s9deexWtV5IkdU9W8x3viHrqO85SKSPPa4Fj\nUkrvR0Qj8FRE/By4GPjnlNI9EXETuVD8L/m/300pfSIizgT+EfjvEXEQcCZwMLA38IuI+GRKqUe/\nw/jTmg1syrcQbUq528XCcykOOeQQTjnlFC677DI+/PBDzjrrrA6D8+zZs3n55Zd59tlnSSlxyimn\n8OSTT3LkkUdy2223sfvuu/Phhx9yyCGHcPrpp9Pc3Mzq1asZNWoUV111FQC33XYbjz/+OEOGDAFg\n9erVjB8/nquvvpqvf/3r3HzzzVx22WXdej2SJKn6+477NQS/v/rErMuoe52G55RSAjY32Tbm/yTg\nGGBSfvsM4NvkwvOp+Z8BfgLcGLm5004F7kkprQVei4hXgEOBX3W1+M5GiCHXsvGFW+awfsMmGvv2\n4fozx5aldeOKK67gkEMOoampiRtuuKHDfWbPns3s2bMZOzb3Fcn777/Pyy+/zJFHHskNN9zAfffd\nB8DixYt5+eWXaW5upqGhgdNPP73gcfv168fJJ58MwLhx43j00Ue7/VokSaoH9h2rHErqeY6IBmA+\n8AngB8AfgPdSShvyu7QB++R/3gdYDJBS2hARK4Hm/PY57Z62/WPaH2sKMAVg+PDunzzjPj6YH35x\nfNl7nt955x3ef/991q9fz5o1a9h555232yelxCWXXMIFF1yw1fYnnniCX/ziF/zqV79iwIABHHXU\nUVuWG29qaqKhoaHgcRsbG7fM49zQ0MCGDRsK7itJUj2phb7jLx+5H1NPPDDrMtQNJYXnfGvFmIjY\nDbgP6Oi/+ubvOTpaoSMV2b7tsaYD0wFaW1vL8t3JuI8PLvuFglOmTOE73/kOr732Gt/4xje48cYb\nt9vnuOOO4/LLL+cLX/gCu+yyC3/84x9pbGxk5cqVDB48mAEDBvDiiy8yZ86cDo6QM3DgQFatWrWl\nbUOSpHpl37GqwQ7NtpFSei8ingDGA7tFRN/86PMwYEl+tzZgX6AtIvoCg4B32m3frP1jasrMmTPp\n27cvkyZNYuPGjRxxxBE89thjHHPMMVvtd+yxx7Jo0SIOP/xwIHcx4F133cXxxx/PTTfdxOjRozng\ngAMYP358wWNNmTKFE044gaFDh265YFCSpN6q2vuOne9YkWtpLrJDxB7A+nxw3gmYTe4iwMnAT9td\nMPh8Sul/R8TfAC0ppS/nLxj8fErpjIg4GLibXJ/z3sAvgf2LXTDY2tqa5s2bt9W2RYsWceCBft3R\nGX9PkqRqVO19xwH85CtH1NTUtiqPiJifUmrtbL9SRp6HAjPyfc99gHtTSg9GxO+AeyLiu8BzwK35\n/W8F7sxfEPgOuRk2SCm9EBH3Ar8DNgB/09MzbUiSpMqqhb5j5ztWd5Qy28bzwHZnWErpVXKjyNtu\nXwNMLPBcVwNX73iZ1W3hwoWcffbZW23r378/zzzzTEYVSZLUM+5+5k0uvW9h1mUUZd+xelJNrjCY\nUtoy40Q1aGlpYcGCBVmXsUVnrTiSJBVj37FUWM2F56amJlasWEFzc3NVBehqkVJixYoVNDU1ZV2K\nJKlKHXjZz/lww6asyygogKud71hVqubC87Bhw2hra2PZsmVZl1K1mpqaGDZsWNZlSJIyYt+x1HNq\nLjw3NjYycuTIrMuQJCkzzncsZafmwrMkSfXgE5c+RBV3Vth3rLpleJYkKQPVPt8xwDX2HUvbMTxL\nktQDaqHv+MtH7sfUE11QS9oRhmdJkrqgFvqO999jZx79+6OyLkPqVQzPkiQV4HzHkrZleJYk1a1q\n7zsO4CdfOYJxHx+cdSmS8gzPkqRey75jSeVmeJYk1axa6Dt2vmOpdzE8S5Kqmn3HkqpJp+E5IvYF\nZgIfAzYB01NK10fE7sCPgRHA68AZKaV3IyKA64ETgQ+Ac1NKv84/12TgsvxTfzelNKO8L0eSVGsO\nvOznfFjFq4HYdyypvVJGnjcAf59S+nVEDATmR8SjwLnAL1NK0yJiKjAV+AZwArB//s9hwL8Ah+XD\n9reAViDln+eBlNK75X5RkqTqUQt9x6eN2ZvrzhybdRmSakCn4TmltBRYmv95VUQsAvYBTgWOyu82\nA3iCXHg+FZiZUkrAnIjYLSKG5vd9NKX0DkA+gB8P/KiMr0eSVGF3P/Mml963MOsyirLvWFK57FDP\nc0SMAMYCzwB75YM1KaWlEbFnfrd9gMXtHtaW31Zo+7bHmAJMARg+3CVBJaka2HcsSTklh+eI2AX4\nKfB3KaU/5VqbO961g22pyPatN6Q0HZgO0NraWr3v1JLUi1R73zHANRNamHSYgyqSslVSeI6IRnLB\n+Ycppf+T3/xWRAzNjzoPBd7Ob28D9m338GHAkvz2o7bZ/kTXS5cklaoW+o6d71hSLShlto0AbgUW\npZSubXfXA8BkYFr+7/vbbb8wIu4hd8HgynzAfgS4JiI2X658LHBJeV6GJNU35zuWpMooZeT5M8DZ\nwMKIWJDfdim50HxvRJwPvAlMzN/3MLlp6l4hN1XdeQAppXci4jvA3Px+V22+eFCS1Llq7zvu1xD8\n/uoTsy5DknpU5CbFqE6tra1p3rx5WZchSRUx6or/y/vrNmZdRlH2HUvqrSJifkqptbP9XGFQkirE\nvmNJqn2GZ0kqE/uOJan3MzxL0g74xKUPUc0zujnfsST1LMOzJLVT7fMdB/CTrxzBuI8P7nRfSVL5\nGZ4l1ZXPTvslbe+tybqMok4bszfXnTk26zIkSR0wPEvqVew7liT1JMOzpJpj37EkKSuGZ0lVp9r7\njvsEzPqyfceSVI8Mz5IqzvmOJUm1yvAsqexqoe94/z125tG/PyrrMiRJNcbwLKlLqr3veJd+Dfz2\nquOzLkOS1MsYniV16JDvPsqy99dlXUZBzncsScqC4VmqU/YdS5K04zoNzxFxG3Ay8HZKaVR+2+7A\nj4ERwOvAGSmldyMigOuBE4EPgHNTSr/OP2YycFn+ab+bUppR3pciqT37jiVJKr9SRp7vAG4EZrbb\nNhX4ZUppWkRMzd/+BnACsH/+z2HAvwCH5cP2t4BWIAHzI+KBlNK75XohUj365DcfZt3GlHUZBTnf\nsSSpt+k0PKeUnoyIEdtsPhU4Kv/zDOAJcuH5VGBmSikBcyJit4gYmt/30ZTSOwAR8ShwPPCjbr8C\nqRez71iSpOrS1Z7nvVJKSwFSSksjYs/89n2Axe32a8tvK7R9OxExBZgCMHz48C6WJ9WGWug7PnL/\nIcw8/7Csy5AkqSqU+4LB6GBbKrJ9+40pTQemA7S2tlbv99FSCWqh73jYbk08NfVzWZchSVJN6Gp4\nfisihuZHnYcCb+e3twH7tttvGLAkv/2obbY/0cVjS1XFvmNJkupHV8PzA8BkYFr+7/vbbb8wIu4h\nd8HgynzAfgS4JiI2N0YeC1zS9bKlyrHvWJIkbVbKVHU/IjdqPCQi2sjNmjENuDcizgfeBCbmd3+Y\n3DR1r5Cbqu48gJTSOxHxHWBufr+rNl88KGXts9N+Sdt7a7Iuo6gxwwbxsws/m3UZkiTVvchNjFGd\nWltb07x587IuQzXOvmNJktSZiJifUmrtbD9XGFSv8IlLH2LDpqyrKMy+Y0mSegfDs2rCmCsf4b0P\nN2RdRkEBXD2hhUmHOb2iJEm9meFZVcG+Y0mSVAsMz6qIv7vnOX62YEnWZRS1/x478+jfH5V1GZIk\nqYoZnlU2f3bJQ1TxdMf2HUuSpG4zPKtktdB37HzHkiSpJxmetUW1LwYCcOT+Q5h5/mFZlyFJkuqU\n4bmOnHPrMzz58vKsyyjKvmNJklTNDM+9TLXPd7xLvwZ+e9XxWZchSZLUJYbnGlPtfccNAX/4h5Oy\nLkOSJKlHGJ6rTC3Md2zfsSRJqleG5wq7+5k3ufS+hVmXUZSLgUiSJHXM8NwDPvnNh1lXxRMe77ZT\nXxZ867isy5AkSao5FQ/PEXE8cD3QANySUppW6Rq6q9qndOsTMOvLzncsSZJUbhUNzxHRAPwA+Cug\nDZgbEQ+klH5XyTo6c9qNT7GgbWXWZRRl37EkSVLlVXrk+VDglZTSqwARcQ9wKlA14fnUG5/iN1UQ\nnJ3vWJIkqfpUOjzvAyxud7sNqKrh0+crFJx36tuHRd89oSLHkiRJUnlUOjxHB9u2urIuIqYAUwCG\nDx9eiZoKF9NN10xoYdJhlX8NkiRJ6hmVDs9twL7tbg8DlrTfIaU0HZgO0NraWvEpK47cf0jJS1g7\npZskSVJ9qXR4ngvsHxEjgT8CZwKTKlxDUTPPP4xzbn2GZ19/h0NH7O5FeZIkSdoiUqrs4G5EnAhc\nR26quttSSlcX2XcZ8EalatvGcODNjI6t6ua5oUI8N1SM54cK8dyoDh9PKe3R2U4VD8+1IiKWlfIL\nVP3x3FAhnhsqxvNDhXhu1JY+WRdQxd7LugBVLc8NFeK5oWI8P1SI50YNMTwXlv1kz6pWnhsqxHND\nxXh+qBDPjRpieC5setYFqGp5bqgQzw0V4/mhQjw3aog9z5IkSVKJHHmWJEmSSmR4liRJkkpkeJYk\nSZJKZHiWJEmSSmR4liRJkkpkeJYkSZJKZHiWJEmSSmR4liRJkkpkeJYkSZJKZHiWJEmSStRpeI6I\nfSPi8YhYFBEvRMRF+e27R8SjEfFy/u/B+e0RETdExCsR8XxEfLrdc03O7/9yREzuuZclSZIklV+k\nlIrvEDEUGJpS+nVEDATmA6cB5wLvpJSmRcRUYHBK6RsRcSLwVeBE4DDg+pTSYRGxOzAPaAVS/nnG\npZTe7aHXJkmSJJVV3852SCktBZbmf14VEYuAfYBTgaPyu80AngC+kd8+M+VS+ZyI2C0fwI8CHk0p\nvQMQEY8CxwM/KnTsIUOGpBEjRnTldUmSJEklmz9//vKU0h6d7ddpeG4vIkYAY4FngL3ywZqU0tKI\n2DO/2z7A4nYPa8tvK7R922NMAaYADB8+nHnz5u1IiZIkSdIOi4g3Stmv5PAcEbsAPwX+LqX0p4go\nuGsH21KR7VtvSGk6MB2gtbW1eE+JJEmSass/t8DKNwvfHw3wrXcqV88OKik8R0QjueD8w5TS/8lv\nfisihuZHnYcCb+e3twH7tnv4MGBJfvtR22x/ouulS5IkqepMPwaWzO/649NGuHL3qg3QnYbnyA0x\n3wosSild2+6uB4DJwLT83/e3235hRNxD7oLBlfmA/QhwzeZZOYBjgUvK8zIkSZJUMd/ZEzau7bnn\nTxt77rm7qZSR588AZwMLI2JBftul5ELzvRFxPvAmMDF/38PkZtp4BfgAOA8gpfRORHwHmJvf76rN\nFw/uiPXr19PW1saaNWt29KF1o6mpiWHDhtHY2Jh1KZIkqRZdMwzWrcru+NGQ3bE70elUdVlqbW1N\n214w+NprrzFw4ECam5sp0nddt1JKrFixglWrVjFy5Misy5EkSdXoe5+E1W9lXUXHMup5joj5KaXW\nzvbbodk2qsGaNWsYMWKEwbmAiKC5uZlly5ZlXYokScrK4mfh1mPpYG6G6jHkALjw2ayr2GE1F54B\ng3Mn/P1IklQHrhoCm9ZnXUVhO+8FX/t91lWUXU2GZ0mSpF7vu0NhwwdZV1FEwMnXQeu5WRdSUYbn\nKnfdddcxZcoUBgwYAMAuu+zC+++/n3FVkiSp26q573izljPg9JuzrqKq1Ed4XvwsvP7vMOIvYN9D\ns66mZBs3buS6667jrLPO2hKeJUlSjZh3Bzx4UdZVFLf3OJjyWNZV1JTaDs8/nwr/ubD4Pmv/BG/9\nFtImiD6w1yjov2vh/T/WAidMK/qUl19+OUOGDOGii3L/Q3zzm99kr7324m//9m+32/d73/se9957\nL2vXrmXChAlceeWVAJx22mksXryYNWvWcNFFFzFlyhQgN7J88cUX88gjj3DSSSexZMkSjj76aIYM\nGcLjjz++5XgPPvggO+20E/fffz977bVX8d+BJEnqGVfuXtVzEtPQHy5/u/P9VLLaDs+lWLMyF5wh\n9/ealcXDcwnOP/98Pv/5z3PRRRexadMm7rnnHp59dvurRWfPns3LL7/Ms88+S0qJU045hSeffJIj\njzyS2267jd13350PP/yQQw45hNNPP53m5mZWr17NqFGjuOqqqwC47bbbePzxxxkyZAgAq1evZvz4\n8Vx99dV8/etf5+abb+ayyy7r1uuRJEkF1ELf8fmza+qb9VpX2+G5kxFiINeyMeMU2LgOGvrB6bd0\n+wQbMWIEzc3NPPfcc7z11luMHTuW5ubm7fabPXs2s2fPZuzYsQC8//77vPzyyxx55JHccMMN3Hff\nfbkSFy/m5Zdfprm5mYaGBk4//fSCx+7Xrx8nn3wyAOPGjePRRx/t1muRJKmuzZwAr1Z528Jn/g7+\n6sqsq1BebYfnUux7KEx+oOw9z1/84he54447+M///E/+5//8nx3uk1Likksu4YILLthq+xNPPMEv\nfvELfvWrXzFgwACOOuqoLSsmNjU10dBQeFWdxsbGLVPRNTQ0sGHDhrK8HkmSeqVHvwX/cV3WVRS3\n3zFwzn1ZV6ES9f7wDLnAXOavMyZMmMAVV1zB+vXrufvuuzvc57jjjuPyyy/nC1/4Arvssgt//OMf\naWxsZOXKlQwePJgBAwbw4osvMmfOnILHGThwIKtWrdrStiFJktpZ/CzcehywKetKCrPvuFepj/Dc\nA/r168fRRx/NbrvtVnCk+Nhjj2XRokUcfvjhQO5iwLvuuovjjz+em266idGjR3PAAQcwfvz4gseZ\nMmUKJ5xwAkOHDt1ywaAkSXXlO3vCxrVZV1FYRstJKxuRUvUu29ja2prmzZu31bZFixZx4IEHZlTR\nRzZt2sSnP/1pZs2axf777591Oduplt+TJEmdmn4MLJmfdRXFnXx93S0GUm8iYn5KqbWz/Rx57oLf\n/e53nHzyyUyYMKEqg7MkSVXlp1+ChfdmXUVxTYNh6utZV6EaYHjugoMOOohXX311y+2FCxdy9tln\nb7VP//79eeaZZypdmiRJlbf4Wbj1WKB6v82m7wC4bGnWVagXMDyXQUtLCwsWLMi6DEmSek61LyXd\npxGuWJ51FaoDNRmeU0pbpmvT9qq5j12SVKVuPBSWv5R1FUUEnHydfcfKXM2F56amJlasWEFzc7MB\nugMpJVasWEFTU1PWpUiSqkkt9B3vvBd87fdZVyEVVXPhediwYbS1tbFs2bKsS6laTU1NDBs2LOsy\nJEmVNO8OePCirKsort9AuLQt6yqkbqm58NzY2MjIkSOzLkOSpMqbNgLWvJt1FYW5GIjqQM2FZ0mS\neq2q7zsG9h4HUx7LugopM4ZnSZIqZeYEeLXKg+eg4fD/LMy6CqlqGZ4lSSqnal9K2sVApG4xPEuS\ntCPsO5bqmuFZkqT2/rkFVr6ZdRXF7XcMnHNf1lVIdcnwLEmqL9OPgSXzs66iOPuOpapleJYk9T72\nHUvqIYZnSVLtuWYYrFuVdRXFnXy9S0lLvZDhWZJUfb73SVj9VtZVFGffsVSXDM+SpMpb/CzceiyQ\nsq6ksCEHwIXPZl2FpCpjeJYk9YyrhsCm9VlXUdjOe8HXfp91FZJqjOFZktQ1Vd93HHDydfYdSyqr\nTsNzRNwGnAy8nVIald+2O/BjYATwOnBGSundiAjgeuBE4APg3JTSr/OPmQxcln/a76aUZpT3pUiS\nyqoW5jtuOQNOvznrKiTVkVJGnu8AbgRmtts2FfhlSmlaREzN3/4GcAKwf/7PYcC/AIflw/a3gFZy\nDW7zI+KBlFIVL9EkSb3cvDvgwYuyrqK4vcfBlMeyrkKStug0PKeUnoyIEdtsPhU4Kv/zDOAJcuH5\nVGBmSikBcyJit4gYmt/30ZTSOwAR8ShwPPCjbr8CSVJh1d537FLSkmpMV3ue90opLQVIKS2NiD3z\n2/cBFrfbry2/rdB2SVJ31ELf8fmzYd9Dsy5Eksqi3BcMRgfbUpHt2z9BxBRgCsDw4cPLV5kk1aKZ\nE+DVKm9bsO9YUh3panh+KyKG5kedhwKbv3NrA/Ztt98wYEl++1HbbH+ioydOKU0HpgO0trZW8QSg\nklQGj34L/uO6rKsozr5jSdqiq+H5AWAyMC3/9/3ttl8YEfeQu2BwZT5gPwJcExGD8/sdC1zS9bIl\nqUYsfhZuPQ7YlHUlhdl3LEklK2Wquh+RGzUeEhFt5GbNmAbcGxHnA28CE/O7P0xumrpXyE1Vdx5A\nSumdiPgOMDe/31WbLx6UpJr3nT1h49qsqyjCvmNJKpfITYxRnVpbW9O8efOyLkNSvZt+DCyZn3UV\nxX3m7+Cvrsy6CkmqWRExP6XU2tl+rjAoST/9Eiy8N+sqimsaDFNfz7oKSap7hmdJvd/iZ+HWYykw\nyU916DsALluadRWSpE4YniX1Dt/7JKx+K+sqCuvTCFcsz7oKSVI3GZ4l1YYbD4XlL2VdRREBJ18H\nredmXYgkqQcZniVVh1roO955L/ja77OuQpKUIcOzpMr57lDY8EHWVRTWbyBc2pZ1FZKkKmZ4llQ+\n00bAmnezrqIwFwORJHWT4VlS6WphvmOXkpYk9SDDs6SP1ELf8aDh8P8szLoKSVKdMjxL9aba+45d\nDESSVMUMz1JvU+3zHYNLSUuSapbhWao1VT/fMbDfMXDOfVlXIUlS2RmepWp05e6QNmZdRWH2HUuS\n6pThWcpCtfcdO9+xJEkdMjxLPaHa5zsG+44lSeoCw7PUFf/cAivfzLqK4pzvWJKksjM8S4XYdyxJ\nkrZheFb9+s6esHFt1lUUFg3wrXeyrkKSJLVjeFbvdc0wWLcq6yqKs+9YkqSaYnhW7aqFpaSd71iS\npF7F8KzqNe8OePCirKsobsgBcOGzWVchSZIqxPCsbFX7RXl9GuGK5VlXIUmSqoThWT2r2hcDATj5\nemg9N+sqJElSDTA8q3tmToBXq3wu4ZYz4PSbs65CkiT1AoZnFffot+A/rsu6iuKaBsPU17OuQpIk\n1QHDc71b/CzcehywKetKCmvoD5e/nXUVkiRJhue6UO1LSbsYiCRJqhGG595g+jGwZH7WVRTnRXmS\nJKkXMDzXAvuOJUmSqoLhuVpU+3zHfQfAZUuzrkKSJClThudKqfa+YxcDkSRJ6pThuVxqYb5jl5KW\nJEnqloqH54g4HrgeaABuSSlNq3QNXTLvDnjwoqyrKG7nveBrv8+6CkmSpF6rouE5IhqAHwB/BbQB\ncyPigZTS7ypZR6euGQbrVmVdxfbsO5YkScpUpUeeDwVeSSm9ChAR9wCnAtUTnrMMzvYdS5IkVbVK\nh+d9gMXtbrcBh7XfISKmAFMAhg8fXrnKNuvp4GzfsSRJUs2qdHiODralrW6kNB2YDtDa2po62L9n\n9RvYvQDtfMeSJEm9VqXDcxuwb7vbw4AlFa6huEvbirdu2HcsSZJUtyodnucC+0fESOCPwJnApArX\n0LlL27KuQJIkSVUoUqpsZ0REnAhcR26quttSSlcX2XcZ8EalatvGcKCKVzVRhjw3VIjnhorx/FAh\nnhvV4eMppT0626ni4blWRMSyUn6Bqj+eGyrEc0PFeH6oEM+N2tIn6wKq2HtZF6Cq5bmhQjw3VIzn\nhwrx3KghhufCVmZdgKqW54YK8dxQMZ4fKsRzo4YYngubnnUBqlqeGyrEc0PFeH6oEM+NGmLPsyRJ\nklQiR54lSZKkEtV0eI6IiRHxQkRsiojWEvb/eETMj4gF+cd9uRJ1SpIkqXeomfAcEUdFxB3bbP4t\n8HngyRKfZilwREppDHAYMDUi9i5flZIkSerNaiY8dySltCil9NK22yOiISK+FxFzI+L5iLggv/+6\nlNLa/G79qfHXL0mSpMrqreEIOVvrAAAc+0lEQVTxfGBlSukQ4BDgS/klwYmIfSPieWAx8I8ppSUZ\n1ilJkqQa0jfrAjoTEc+QGyXeBdg9Ihbk7/pGSumRAg87FhgdEf8tf3sQsD/wWkppcf6+vYGfRcRP\nUkpv9eBLkCRJUi9R9eE5pXQY5HqegXNTSueW8LAAvlokXJNSWhIRLwB/AfykDKVKkiSpl+utbRuP\nAF+JiEaAiPhkROwcEcMiYqf8tsHAZ4DteqYlSZKkjlT9yHMxETEB+F/AHsBDEbEgpXQccAswAvh1\nRASwDDgNOBD4p4hI5Eanv59SWphJ8ZIkSao5rjAoSZIklai3tm1IkiRJZVfVbRtDhgxJI0aMyLoM\nSZIk9XLz589fnlLao7P9qjo8jxgxgnnz5mVdhiRJknq5iHijlP2qOjxL3XXcrONY8kHH6+Ds3LAz\nc86aU+GKJElSLTM8q9e4YPYFPL306ZL3X71xNS0zWrbaNqT/EB4/8/FylyZJknoJw7Nq3tgZY9nA\nhrI81/K1y7cE6r0H7M0jEwuusyNJkuqQ4Vk1acHbCzjn5+eQ6LmpFpd8sISWGS30i37MP2d+jx1H\nkqSetn79etra2lizZk3WpWSuqamJYcOG0djY2KXHG55Vc8o50lyKdWmdIVqSVNPa2toYOHAgI0aM\nILd+XH1KKbFixQra2toYOXJkl57DeZ5VMyY9OImWGS1dCs4tzS0snLyQhZMXct7B53Xp+JtD9NH3\nHN2lx0uSlJU1a9bQ3Nxc18EZICJobm7u1gi8I8+qCdte2FfMoMZBPDXpqYL3X9x6MRe3XrzVth25\n2HBzX/QRQ4/gX4/915LrkiQpS/UenDfr7u/B8Kyqdu28a7n9hds73S8IZp4wkzF7junScdqH4FPv\nO5VX//Rqp495eunTtMzIjWhLkqT6YNuGqtbR9xzdaXDuQx8WTl7I85Of73Jw3tb9E+5n4eSFXDH+\nipL2b5nRwgWzLyjLsSVJ6q1ef/11Ro0aVfL+N910EzNnziy6zx133MGFF17Y4X3XXHPNDtVXKsOz\nqtLYGWNZvnZ50X2uGH8Fv5n8mx6rYeIBE0sO0U8vfZrRM0b3WC2SJNWbL3/5y5xzzjldfrzhWXWj\ns4sCBzUOYuHkhUw8YGJF6tkcoo8YekTR/RKJlhktzHppVkXqkiSpJy14ewG3LLyFBW8vKNtzbty4\nkS996UscfPDBHHvssXz44Yf84Q9/4Pjjj2fcuHH8xV/8BS+++CIA3/72t/n+978PwNy5cxk9ejSH\nH344X/va17YawV6yZAnHH388+++/P1//+tcBmDp1Kh9++CFjxozhC1/4QtnqhzL2PEfE8cD1QANw\nS0pp2jb39wdmAuOAFcB/Tym9Xq7jq3fo7MLAK8ZfUbHQvK3NfdGH3HkIazYVvkr3qjlXccvzt7jA\niiSpKv3js//Ii++8WHSf99e9z0vvvkQiEQQHDD6AXfrtUnD/P9/9z/nGod/o9Ngvv/wyP/rRj7j5\n5ps544wz+OlPf8rtt9/OTTfdxP77788zzzzDX//1X/PYY49t9bjzzjuP6dOnc8QRRzB16tSt7luw\nYAHPPfcc/fv354ADDuCrX/0q06ZN48Ybb2TBgvIF/83KMvIcEQ3AD4ATgIOA/xERB22z2/nAuyml\nTwD/DPxjOY5dTcbfNZ6WGS18euany/oprV50FpwrOdpczNyz53bayrHkgyW2cUiSataq9au2LESW\nSKxav6oszzty5EjGjMldozRu3Dhef/11nn76aSZOnMiYMWO44IILWLp06VaPee+991i1ahVHHJH7\nBnjSpElb3f+5z32OQYMG0dTUxEEHHcQbb7xRlloLKdfI86HAKymlVwEi4h7gVOB37fY5Ffh2/uef\nADdGRKSUem6JuC465K5DWLOx6/P/rU/rOfvnZ3PnCXeW7SK23q5YcG6ggQWTq+vDyMQDJjLxgIlF\nR6E3t3E4G4ckqZqUMkK84O0FfGn2l1i/aT2NfRqZ9hfTypJp+vfvv+XnhoYG3nrrLXbbbbeiI8Sd\nRcVtn3PDhp5dSK1cPc/7AIvb3W7Lb+twn5TSBmAl0Fym45fN+LvGdys4t3f2z88uy/P0dsWC86DG\nQVUXnNube/bcThddaZnRwrXzrq1QRZIkdd+YPcdw87E3c+HYC7n52Jt7bDBw1113ZeTIkcyalbte\nKKXEb36z9WQAgwcPZuDAgcyZMweAe+65p6TnbmxsZP369eUtmPKF545mm972Y0Ip+xARUyJiXkTM\nW7ZsWVmK2xGrN64u6/MZmoorFpz323W/ooudVIuLWy/udHT59hdud2VCSVJNGbPnGL7Y8sUe/xb9\nhz/8Ibfeeiuf+tSnOPjgg7n//vu32+fWW29lypQpHH744aSUGDRoUKfPO2XKFEaPHl32CwajHF0T\nEXE48O2U0nH525cApJT+od0+j+T3+VVE9AX+E9ijWNtGa2trmjdvXrfr2xHj7xpf1gA9oGEAz5z1\nTNmerzcpFpxbmlu4++S7K1hNeXR2MWEf+vTo9HqSJHVk0aJFHHjggVmX0WXvv/8+u+ySu2Bx2rRp\nLF26lOuvv77Lz9fR7yMi5qeUWjt7bLlGnucC+0fEyIjoB5wJPLDNPg8Ak/M//zfgsWrsd55z1hx2\nbti5bM9XrhaQ3mbsjLEF79tv1/1qMjhDro3jpJEnFbx/E5t2aKlxSZIEDz30EGPGjGHUqFH8+7//\nO5dddllmtZRl5BkgIk4EriM3Vd1tKaWrI+IqYF5K6YGIaALuBMYC7wBnbr7AsJAsRp67a8yMMWxk\n45bbjX0a+fXZv86wourz2bs/y8r1Kzu8b+8Be/eaKd5KmT1EkqRKqPWR53Lrzshz2eZ5Tik9DDy8\nzbYr2v28Bsh+nrEe1tS3idUbPmr7iA5bvevXpAcnFQzOQ/oP6TXBGXLhuGhryowWzjv4PC5uvbiC\nVamSFry9oEcvHO5NHzYl9byUEhHmku4OHJctPCunX0O/rcLzuk3rmPXSrKqYnzhrs16axcIVHY+2\nNvVp4vEzH69wRT1v4eSFjJs5jnVpXYf33/7C7Tzy2iMGoF6gp4NyR5Z8sKTDD2hZLiYkqTo1NTWx\nYsUKmpub6zpAp5RYsWIFTU1NXX6OsrVt9IRabNu4dt613P7C7Vtt22/Qftx/2vZXjtabQqOw9XAR\n3XGzjmPJB0sK3t/Up4m5Z8+tYEUqh2IfjKrJkP5DeuWHU0mlW79+PW1tbaxZ47VYTU1NDBs2jMbG\nxq22l9q2YXjuAYf98DA+2PDBltt777w3j/y3+h5ZLNa+UC+9vx19sGqvHj5E9AbbXtdQi2z3kKTt\nVXq2DbWz78B9t7o9sN/AjCqpDofceUjB++olOEPn80E7E0f1GjdzHC0zWmiZ0VLzwRk+avdomdHC\n6BmjmfXSrKxLkqSaYc9zD1i/aX3R2/XkgtkXFJz3+M4T7qxwNdWhlAsJ6+lDRbU69b5TefVPRScE\nKllf+vLc5OfK8lxQ3toSiavmXMVVc64CclNF3j/BNjNJKsTw3AMa+zQWvV0vFry9gKeXPt3hfUcM\nPaLHVyyqZqUEaC/6ykZ3+5jLHZQ7UijclqMH+9U/vbrl3OwX/Zh/zvxuPZ+qRxYXtXbkpJEnMe3I\naVmXIXWZPc894NSfncqrKz8aFarXCwYLhcOdG3ZmzllzKlxNdRo7Yywb2FDw/lpdabHWzHpp1paR\n166o1g86kx6cVHCGm66o1tepzi9KrlVeTK1K8oLBDJ3783OZ//ZHozXj9hzHHSfckV1BGSgWCm1J\n2NrR9xzN8rXLC97vh42eM/XJqTz02kM7/LhKjC73hHK2e/jBrvJ6a0AuB9uNqldnF8t3pIEGFkxe\n0EMVFWZ4zlC9h+dio10G5451FuKC4PnJz1ewot7tgtkXFGwpKqa3jbyWa6o9RwfLy5DcM4Jg5gkz\n67plcEd1dYChHLII0BVfYVAfeXftu1vdXrp6aUaVVN6CtxcUDM5XjL+iw+2CaUdO48w/P7NgP2Ii\neSFhGXRl5LU3T+vWvp+5O4FtzaY1W7VpHTH0CP712H/tdn29XXfbhbRjEmmHer57y7crnX27Wa2q\neWYjR557wEWPXcRjix/bcruePu0W6nPuzQGk3Dqbrq63jX5WQld6f+v591zOUFdP73/FVNNoclYX\ngn727s+ycv3Kih9XtamaR54Nzz2goyuaz/jkGVx++OUZVVQZ4+8az+qNq7fb7uIfO66zAO2HkdLs\naGh2domOlXMlxSC4fPzlvfaDSdajyb2l97crfbLqPex57oZaDc8Akx6axMLlH/2jfcy+x3D9Mddn\nWFHPKtYXZatB1xxy5yEF58gGP5QUs6M9zV6UWbqeGEGt1d9/Z7Pl9JTeEpDLoZpG9FVcLVwbYc9z\nxnbvv3vWJVRUoeB83sHnVbiS3mPu2XOL9uhuXpHQDycf2dGLW4b0H8LjZz7egxX1Pu2/8SjX6ODq\njas7/LalGnpOC32jVgmG5M6V+g1cVh90eota/YDbUxx57iHb9j335pHnMTPGdNjYP6hxEE9NeiqD\ninqXUr4GrvcLtHY0xNn20jOy6GntasDOMhRvqxZG5OpJrV5g15lq+DBa7WzbyFi9hOdiX487Ilpe\nnfVB1+N0djvaX2porixH+7ZngJGql20bqohCwfnOE+6scCW938LJC4uGkc3T2Z138Hlc3Hpxhaur\nrB0NzbZnZGPbhWTKeeFhtfPiU6n3Mjyry0bPGN3h9pbmlrqflqqnPDf5uU4vhrv9hdu584U7a3IF\nvM50NJNNMbYOVZdtw2SWCzCUi1PxSfXH8KwuOW7WcSS2b/lpoMGvJHvY5t7mYm0cG9hAy4yWXtML\nvaM9zV7cUhumHTmNaUdO2257Nfac1sM3OpJKY3jWDpv10qyCUwNlMS9jvVo4eWGn09k9vfTpmp6R\nY0dHJr3wqncopcWmXAH7pJEndRjgJakQw7N2WKFe05NGnlThSjT37Lkljcq2zGipqdHYHZ271dBc\nf+xhl5QVw7N2yNH3HN3h9qY+TY7eZOTi1ou5uPXiglMGbrZ5Lt1qDtE7ekGZF2VJkirN8KySzXpp\nVsGvSR31y96CyQtKGoXeHKKrJXju6BLaYGiWJGWn2+E5InYHfgyMAF4HzkgpvdvBfhuBzf9CvplS\nOqW7x1ZlFWrXcBXB6rF5FLqUxSrWpXVbLjqs9IWFXV2ZzvYMSVLWyjHyPBX4ZUppWkRMzd/+Rgf7\nfZhSqtu5fFaureyqW+U2/q7xHW7fuWFnr0CvQpunZ+tsYZXNNl9YCD13AdWO9jG3V82tJpKk+lKO\n8HwqcFT+5xnAE3QcnutK807NW91+7u3nWPD2gpqcC/TaedcWXMbWQFPdFk5euMOjvA+99tBWM1x0\ndYquzmYCKcV+u+7H/RPu79ZzSJJUTt1enjsi3ksp7dbu9rsppcEd7LcBWABsAKallH5W4PmmAFMA\nhg8fPu6NN97oVn1ZWfD2As75+TlbzYV8xifP4PLDL8+wqq4pNHrpvKe1pVYWpAiCy8dfzsQDJmZd\niiSpjpR1ee6I+AXwsQ7u+uYO1DQ8pbQkIvYDHouIhSmlP2y7U0ppOjAdoLW1tXvJPkNj9hzDp4Z8\nigXLP5r3ePmH1TXpfynGzRzX4fZBjYMMzjVm84IUO7q0daW4hLYkqRaUFJ5TSn9Z6L6IeCsihqaU\nlkbEUODtAs+xJP/3qxHxBDAW2C489ya777R71iV0y9QnpxacNswlj2vXxAMmbhnVLeXCwp5kL7Mk\nqdaUo+f5AWAyMC3/93YNihExGPggpbQ2IoYAnwH+vzIcWz2o0Ff8d55wZ4UrUU9p/yFo/F3jC/a2\nl5N9zJKkWlaO8DwNuDcizgfeBCYCREQr8OWU0heBA4F/jYhNQB9yPc+/K8Ox1UPGzOj4wsb9dt2v\nJi96VOe2HQEuV5i2N16S1Jt0OzynlFYAn+tg+zzgi/mfnwZKmzNLmTv1vlM7XKkuCEcM64jtFJIk\nba9P1gWousx6aRav/unVDu97fvLzFa5GkiSpuhietZVCszAcMfSIClciSZJUfQzP2qLQKoJ96VvR\npZslSZKqleFZQPFVBJ+b/FyFq5EkSapOhmcBFFy++byDz6twJZIkSdXL8Cw+NeNTHW53FUFJkqSt\nGZ4raOXa7FZyK+Toe45mE5s6vM9VBCVJkrZmeO5BzTs1b3X7ubefY8HbCzKqZnvXzruW5WuXd3if\nqwhKkiRtz/Dcg075s1MIYsvtTWzi3/7wbxlWtLVCfc4tzS2uIihJktQBw3MPGrPnGD4x6BNbbfvD\ne3/IqJqttczoeMHHftGPu0++u8LVSJIk1QbDcw/bdpnrd9e+m1ElHxk3c1zB++afM7+ClUiSJNUW\nw3MPG9x/cNHblXbcrONYl9Z1eN/CyQsrXI0kSVJtMTz3sEH9BxW9XUlTn5zKkg+WdHjfSSNPqnA1\nkiRJtcfwXCcWvL2Ah157qMP7dm7YmWlHTqtwRZIkSbXH8Fwnzv752R1u70Mf5pw1p8LVSJIk1SbD\ncw/bdmGULBZKKTSzBsBvJv+mgpVIkiTVNsNzD9t2do1Kz7ZRLDh7gaAkSdKOMTz3sMY+jUVv96Ri\nwdkVBCVJknac4bmHrd+0fqvbKz5cUZHjFgvOJ408yRUEJUmSusDw3MNG7Dpiq9vL1yxn1kuzevSY\nxYLzfrvu58wakiRJXWR47mHnjTpvu213Lbqrx45XLDjvPWBv7p9wf48dW5IkqbczPPewMXuOYUjT\nkK22rdmwpuzHuWD2BZ0G50cmPlL240qSJNWTbofniJgYES9ExKaIaC2y3/ER8VJEvBIRU7t73FrS\nvFPzVrcH9htY1uf/1IxP8fTSpwveb3CWJEkqj3KMPP8W+DzwZKEdIqIB+AFwAnAQ8D8i4qAyHLsm\nbHuRYLkuGtw82ryJTQX3aWluMThLkiSVSd/uPkFKaRFARBTb7VDglZTSq/l97wFOBX7X3ePXgg/W\nf7DV7VXrVgG58Nt+xPikkSeVdDHfto8r5IrxVzDxgIk7WK0kSZIK6XZ4LtE+wOJ2t9uAwyp07Mxt\n+8Fi7aa1jJ4xmkTaavtDrz3EQ689xM4NO3e4ZPaYGWPYyMaSjukCKJIkSeVXUniOiF8AH+vgrm+m\nlEqZvqGjYenUwTYiYgowBWD48OGllFf1+jX0Y/WG1Vtt2zY4t7d64+qiF/8V05e+PDf5uS49VpIk\nScWV1POcUvrLlNKoDv6UOu9ZG7Bvu9vDgCUFjjU9pdSaUmrdY489Snz66nbaJ06ryHFOGnmSwVmS\nJKkHVaptYy6wf0SMBP4InAlMqtCxM3dx68Xc/sLtPfb8Q/oP4fEzH++x55ckSVJOt8NzREwA/hew\nB/BQRCxIKR0XEXsDt6SUTkwpbYiIC4FHgAbgtpTSC909di3pG33ZkDaU9TkHNQ7iqUlPlfU5JUmS\nVFg5Ztu4D7ivg+1LgBPb3X4YeLi7x6tVZx90doejz+3nYJ765FQeeu2hos9jT7MkSVJ2IqXCF65l\nrbW1Nc2bNy/rMsrm2nnXbhWgS52aTpIkST0rIuanlAou+LdlP8OzJEmS6l2vCM8RsQx4I6PDDwfe\nzOjYqm6eGyrEc0PFeH6oEM+N6vDxlFKnU71VdXjOUkQsK+UXqPrjuaFCPDdUjOeHCvHcqC0lzfNc\np97LugBVLc8NFeK5oWI8P1SI50YNMTwXtjLrAlS1PDdUiOeGivH8UCGeGzXE8FzY9KwLUNXy3FAh\nnhsqxvNDhXhu1BB7niVJkqQSOfIsSZIklcjwLEmSJJWorsNzRHR7eXJJkiTVj7oMzxHRNyK+D/xT\nRPxl1vWoukTEORHxXyJiUP52Xf5/ou1FxOkRMSYiGvK3I+uaVB1831Axvnf0LnV3wWD+hP0BMAh4\nGDgX+BlwS0ppbYalKUP58+JjwN3AJuAVYCDwtyml5RERqd7+ZxGw5dwYDvwE+BOwAngJ+KeU0nue\nG/UtIj4G3ANsxPcNteN7R+9Vj5+MBwJjgC+nlH4IfB/4JDAx06qUmYhoyL+BDQT+mFL6HPA3wHLg\nXzMtTpmKiF3z58Y+wNz8uXE5uXPl6kyLU6YiYu+IGELuXGjzfUPtRcQu+feOvYFnfO/oXeouPKeU\n/gS8Tm7EGeA/gOeAw/MjCKoT+fada4BrIuK/AAeQGz0ipbQBuAg4IiL+S0op+TVsfYmIvwGejIiD\ngGHA0PxdfwCuBT4bEYfkzw2/gq0TEdEn/74xBxhFbjAG8H1DW/27cl9EnAWcCuyav9v3jl6iXv+n\nvg8YExFDU0rvAwuBdXz0j6N6uXxYng8MJvdV63eA9cDREXEoQH7U4Crg2/nbmzIpVhXV7h+zgcAa\nYArwU6A1IsamlDaklN4E7iA30ohfvdaVs4E/Bz6VUnoCeIhcGPJ9o85FxGByrX+7AdcBpwHPAH8Z\nEWN87+g96jU8P0Wu9+hcgJTSfOAQYKcMa1JlbQK+n1L6SkrpZuC3wEjgCuBfYMsFP/cByyLi45lV\nqopqN1q4Fx9dH3EscAkwDXKtPsA84IP8P5iqA/kPVvsDN6SU3o2Iw4FG4BZyLYC+b9S3XYARKaW/\nTik9BHwI/JFcm8ZV4HtHb1GX4TmltJTcRYInRMTEiBhBboRpQ5Z1qaLmA/duvvKZXPvO8JTSHUBD\nRHw1P2I0DNiYUnojozpVYRHRJ//ffjmwGpgNnEVuBGl0RExKKW0EBgADUkrvZletKik/SjgE+HxE\nfBW4EbiJ3NfyYyLinPyuvm/UoZTSYnKh+I6I+AVwBLkP3euBz0TEmb539A51GZ4BUkpPA/8AnAD8\nX+BnKaVns61KlZJS+iCltDb/RgbwV8Cy/M/nAQdGxIPAj4Bfg1ML1Yt2X7O3AI+Qe38YTe7r2P8N\n/I+IuDf/8zPguVFnfgCMAw5OKY0j923Vm+Q+kI8GHiB3rvi+UZ8mAk8DS1JKf0buA9YuwBPAhPx7\nx7/ge0dNq7up6rYVEY3kBhQcda5D+ZHnRK5v8asppVci4hPkRh1HAa+llP6YZY3KRkRcQq63dQyw\nktzo0ckppQ8j4hTgufxIk+pIRDSRCz+fSil9Or9tCrm2vxuAo4GXfN+oXxFxLjA6pXRx/vb3yX24\nuh/4S3zvqHl1O/K8WUppvcG5rm0i17O4nNxX8g+Sm05oU0rpKf8BrGt9gD3Jzdl7JLl//P4WIKX0\ngP/41aeU0hpgKrn2rtMj4kDgTGB9ynnM94269wowLCLGR8SewKFAn/w3nr539AJ1P/IsRcR4cl+z\nPQ3cnlK6NeOSVAUiYqeU0of5nwPYM6X0VsZlqUpExGeBY4CTgZvzFx5Lm7+d+ArwX8l9AL8hpTQ9\n26pUToZn1b2IGEZu+qlrXWVS24qIvn47pULyiyxt7HxP1ZuIGEluAZ31Wdei8jI8S5IkSSWq+55n\nSZIkqVSGZ0mSJKlEhmdJkiSpRIZnSZIkqUSGZ0mqARGxW0T8df7nvSPiJ1nXJEn1yNk2JKkGRMQI\n4MGU0qiMS5GkutY36wIkSSWZBvxZRCwAXgYOTCmNyi8FfBrQQG5J+X8C+pGbu3wtcGJK6Z2I+DPg\nB8AewAfAl1JKL1b+ZUhSbbNtQ5Jqw1TgDymlMcDXtrlvFDCJ3DLAVwMfpJTGAr8CzsnvMx34akpp\nHPD/Av+7IlVLUi/jyLMk1b7HU0qrgFURsRL4t/z2hcDoiNgFOAKYlVtpHID+lS9Tkmqf4VmSal/7\nZeU3tbu9idz7fB/gvfyotSSpG2zbkKTasAoY2JUHppT+BLwWERMBIudT5SxOkuqF4VmSakBKaQXw\nHxHxW+B7XXiKLwDnR8RvgBeAU8tZnyTVC6eqkyRJkkrkyLMkSZJUIsOzJEmSVCLDsyRJklQiw7Mk\nSZJUIsOzJEmSVCLDsyRJklQiw7MkSZJUIsOzJEmSVKL/H7eBGUKnkiZwAAAAAElFTkSuQmCC\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2747,9 +2747,9 @@ }, { "data": { - "image/png": "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\nYII=\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2775,9 +2775,9 @@ }, { "data": { - "image/png": "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\neYoAAAAASUVORK5CYII=\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtMAAAFbCAYAAAAX/wIZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzt3Xl81PW1//HXIQkEBQEJKogQ1Coq\n0SARrFVqtS6tXdxoqValt9VSW3/Xbg/R21b0Wi+91YqtFotal1qvCy7V4karlroUTGpsUFSUAkZU\nAkIEZEtyfn/MBJIwWyYz3+8s7+fjkYf5LjNzEr9Mzpzv+Xw+5u6IiIiIiEj39Qo7ABERERGRfKVk\nWkREREQkTUqmRURERETSpGRaRERERCRNSqZFRERERNKkZFpEREREJE1KpkVERERE0qRkWkREREQk\nTUqmRURERETSVBp2AN1RUVHhlZWVYYchIiIiIgWurq5utbsPSXZeXiXTlZWV1NbWhh2GiIiIiBQ4\nM1ueynl5lUwXihOufZYlTRsBqB4+gIe/d3TIEYmIiIhIOtQzHbCOiTRAfWMzp97wXIgRiYiIiEi6\nlEwHrGMi3a6+sTmESERERESkp9TmkSPuXrCCsyaMCDsMERERKSDbtm2jsbGRzZs3hx1KziovL2f4\n8OGUlZWl9Xgl0wGqW7427rFfzXtDybSIiIhkVGNjI/3796eyshIzCzucnOPurFmzhsbGRkaNGpXW\nc6jNI0C/+9vbcY+t3rA1wEhERESkGGzevJnBgwcrkY7DzBg8eHCPKvdKpgO0tGlDwuOJKtciIiIi\n6VAinVhPfz9KpgNUVpL41/3du+oCikREREREMkHJdIC2tbYlPP7++i0BRSIiIiIimaBkOkDJKtMA\nY372RACRiIiIiBSW22+/nZUrV27frqysZPXq1Vl/Xc3mEaCulWkDvMs5G7a2Ujlt7k6P7Vvai8VX\nfS57wYmIiIgQGcP1j6VrOHLfwYwbOSjscFLS2trK7bffzpgxYxg2bFigr61kOkBdK9N79u+TcmvH\nppY2KqfNpV/vEhZdeXI2whMREZECdsWjr/Layo8SnrN+8zZef389bQ69DEbv1Z/+5fHnXz542G5c\n/sVD4h6/5JJLGDlyJBdeeCEA06dPp3///vzwhz/sdN6zzz7L9OnTqaioYNGiRYwbN4677roLM+Ov\nf/0rP/rRj2hpaeGII45g1qxZ9OnTh8rKSv7jP/6Dp556iqlTp1JbW8vZZ59N3759efHFFwH4zW9+\nw6OPPsq2bdu4//77GT16dKq/rpSpzSNAXSvT/cpL6de7pFvP0V65PvfWBZkMTURERISPNrfQFr1t\n3uaR7Z6YPHky99577/bt++67j0mTJsU89+WXX2bmzJm89tprLF26lOeff57NmzczZcoU7r33Xhoa\nGmhpaWHWrFnbH1NeXs5zzz3H17/+dWpqavjjH/9IfX09ffv2BaCiooJ//vOffOc73+Gaa67p0c8S\njyrTARqwS+dPdrvv2pu//PDYmG0dycxfsprKaXNZNuOUTIUnIiIiBSxRBbld3fK1nH3LP9jW0kZZ\naS+unzy2R60eY8eOZdWqVaxcuZKmpiYGDRrEiBGxF6kbP348w4cPB6C6upply5bRv39/Ro0axQEH\nHADAeeedx4033sjFF18MwFe/+tWEr3/66acDMG7cOB588MG0f45EVJkO0LqN2zptD9ylNwDLZpzC\nwL7pfa6pnDaXGY8t7nFsIiIiIuNGDuKP3zqSH5x4IH/81pEZ6Zk+88wzmTNnDvfeey+TJ0+Oe16f\nPn22f19SUkJLSwvuXUeXdbbrrrsmPN7+nO3Plw2qTAfk7gUreHv1xk77KvrvuGjqLz8p5uNmPLaY\nm+YvTfjcN81fyj0vrYj7HCIiIiKpGjdyUEYHHk6ePJnzzz+f1atX87e//a1bjx09ejTLli3jrbfe\nYv/99+cPf/gDn/70p2Oe279/f9avX5+JkLtFlemA3PvSip32nXH48KSPm/b5g1g24xROrU48MnXd\nphb2TaNdRERERCSbDjnkENavX8/ee+/N0KFDu/XY8vJybrvtNiZNmkRVVRW9evVi6tSpMc+dMmUK\nU6dOpbq6mk2bNmUi9JRYsvJ5LqmpqfHa2tqww0jLV256gYXLdiwXftBe/Xn84ondfp4xP3uCDVtb\nE56jPmoREREBWLx4MQcddFDYYeS8WL8nM6tz95pkj1VlOiDt/dHt9tl9l7SeZ9GVJ3P1aVUJz0ln\nQKOIiIiIdJ+S6Tx01oQRSavPSqhFREQk1zQ0NFBdXd3pa8KECWGH1SMagBiQdR9vTbidjmUzTuGA\n/3qMra2xW3U0dZ6IiIi4O2YWdhgAVFVVUV9fH3YYnfS05TntyrSZlZvZQjN7xcxeNbMrovuPM7N/\nmtkiM7vDzGIm7GY2wsyeMrPFZvaamVWmG0s++HDj1oTb6Xrz559n+MDyuMdVoRYRESle5eXlrFmz\npscJY6Fyd9asWUN5efxcKpmeVKa3AMe5+wYzKwOeM7MngTuA4939TTO7EjgPuDXG4+8Efu7u88ys\nH9AW45yCsfuuvaFpY+ftDHlu2vGce+sC5i9ZHfO4KtQiIiLFafjw4TQ2NtLU1BR2KDmrvLx8+2Ix\n6Ug7mfbIR5wN0c2y6FcrsMXd34zunwdcSpdk2swOBkrdfV70uTZQ4LoOQOy63VN3fnMCF9/zMg/X\nr4x5XAm1iIhI8SkrK2PUqFFhh1HQejQA0cxKzKweWEUkcV4IlJlZ+zQiZwL7xHjoAcA6M3vQzF42\ns1+aWUmc17jAzGrNrDafP1W1efYL7zMnj004H7VaPkREREQyq0fJtLu3uns1MBwYDxwCTAauM7OF\nwHog1tqNpcAxwI+AI4B9gSlxXmO2u9e4e82QIUN6Em6oVq/P/ADEWJIl1PtfpoRaREREJFMyMjWe\nu68DngVOdvcX3f0Ydx8PzAeWxHhII/Cyuy919xbgYeDwTMSSq1Y2d16JJ1MDEGOZOXks1cMHxDzW\n0hZZ+EVEREREeq4ns3kMMbOB0e/7Ap8FXjezPaL7+gCXADfFePhLwCAzay81Hwe8lm4sua5u+VpW\ndalMjxrSL6uv+fD3jmZIv9h92Ru2tnLCtc9m9fVFREREikFPKtNDgWfM7F9EkuN57v5n4Mdmthj4\nF/Couz8NYGY1ZnYLRNpDiLR4/NXMGgADbu5BLDntwX82dto2YOqn98v66770kxPoWxr7f/GSpo3c\nvWBF1mMQERERKWSWT/MO1tTUeG1tbdhhdNtXbnqBhcvWbt8+aK/+PH7xxMBef79L5xJnXRfN8CEi\nIiISg5nVuXtNsvO0nHgAuvZHb2sNdkrtt/8nfsKsGT5ERERE0qdkOgBdF2jJ5IItqUpUgdYMHyIi\nIiLpUTJdRB74zlEx97e0wRFXzQs4GhEREZH8p2Q6AF3bPLI5LV4i40YOYuInKmIea9qwlRmPLQ44\nIhEREZH8pmQ6ALnQ5tHuzm9OYGDf2KvI3zR/acDRiIiIiOQ3JdNFqP7ykyix2Mc0IFFEREQkdUqm\nA9C0YUun7bDaPDpKNMPHQT95PMBIRERERPJX7Pv9klGbt7V22i4ryY3PMA985yjOmPXCTvs3tbRx\n7q0LuPObE0KISsIy47HFabX6DB9YznPTjs9CRCIiIrlPyXSW1S1fy3vNnSvTveOsShi09gGJ85es\n3unY/CWrqVu+lnEjB4UQmWTbqTc8R31jc0aeq3Hd5pjtQVefVsVZE0Zk5DVERERylVZAzLIL7qzl\nqdc+6LQv15KMMT97gg1bW2Me0wqJheOgnzzOppZgFwxqV9oL3rpa15KIiOSPVFdAVGU6y15976NO\n2wN2Kc2pRBpg0ZUnM2raXGJ9rNr/srlKgvLY0TP+SuO6zWGHQUvbjsGtBvw8xz5QioiIpCs3+g0K\nWZfKf7/eufn55d9xKtAtbXDCtc8GG4z02AH/9RiV0+bmRCLdlQOXPdRA5bS5Wn1TRETyXm5mdgVk\nt/Iy3mVzp+1cdfVpVVz2UMNO+5c0beTuBStUScxxdcvXxhxQ2l19S3ux+KrPJT3vhGufZUnTxh69\nVseKtQYyiohIPlIynWXbWtsSbueSsyaM4LfPLIlZzbzsoQYl0zmqJ0n0kH69eeknJ6T12Hk/PDbm\n/gP+6zG2tnZ/LEb7QEb1V4uISD5RMp1lXafBy5Vp8eJ5btrx7DttLrFS/v0unZtwfmoJ3v6XzaW7\nYwqzPQD2zZ9/fvv36ST6HavVEz9RoSkaRUQkp2k2jyyruWoeqzfsWKRl70F9ef6S40KMKDXxVkLs\nSSVTMqe7Aws/MWTXuJXkIKVbtVYLiIiIBE2zeeSAuuVrOyXSwE4DEnNVvP7ppg1bmfHYYqZ9/qAQ\nopKL73mZh+tXpnSuAXO+c1ROzRXeXrXubsW6vQUk1X5uERGRoCiZzqLf/e3tnfYdPGxACJF031kT\nRnDbc0tjDjC7af5SJdMhiNd+01U+9ByPGzlo+xzm3RnIuKmlTX3VRSJTA2pjObV6GDMnj83Kc4tI\n8VGbRxZ96hdP8+7aTZ32PZBjlcJkEvXkakGXYKRaje4FLM3j/yfpJE+aszp/VV/xJOs2tYQdRly5\neGdHRIKVaptH2sm0mZUD84E+RCrcc9z9cjM7DrgG6A3UAd90953eMc2sFWjvI1jh7l9K9pr5lkx3\n/WPRr3cJi648OcSI0hOvf1q33LMv1Wp0rq2q2VPpJFqqNuamTEyhmIt0vYkUviCSaQN2dfcNZlYG\nPAd8H7gXON7d3zSzK4Hl7n5rjMdvcPd+3XnNfEumD/zJ42zpUNbtU9qLN/Iw+UxUMawePoCHv3d0\nwBEVvhmPLeam+UuTnpcrAwuzJZ1ErNB/J7ns3FsXMH/J6rDDCJUGaYsUjqwPQPRIFr4hulkW/WoF\ntrj7m9H984BLgZ2S6WKwpUt/RGtb7s4xnci4kYOY+ImKmH8k6xubqVu+VrdCM+ignzzOpiTz3RVL\nz3B7UpzqhwuILDJUOW0uA/uWUn/5SVmMTo64ah5NXQdZF7mmDVtj3s3L1zuTha5Qr+FeBvdPVZtS\nUHrUM21mJURaOfYHbgSmAcuAM9y91syuB45z96oYj20B6oEWYIa7PxznNS4ALgAYMWLEuOXLl6cd\nbzruXrAi5qwW6ehdYp3m4M03Y372BBu2tsY8pv7pzIjXUtPR1In7Fu0A0HT6qvP9310u6e6UjJmQ\nyQ+Oid7DwlJiaP7+DEp3+k2JrdiLEllv8+jyYgOBh4CLgP7A/xLppX4KOMXdd2osM7Nh7r7SzPYF\nnibSGrLz9BcdBN3mkclEGgqjx27UtLnEumIM+LcS6rSlcntcSWFn6fzRLOYPIukIom0jFxfmyZWE\nTNXsCLUPFaZ8uMMaaDIdfcHLgY3ufk2HfScC33L3ryR57O3An919TqLzgk6mz7l1AX/P4D/gQqne\nxque6o0/PftdOpdkf7eVBMaXTrVRfa3xpbOqZioKZeGdXKpu5/t7birvfSIQXoU8iAGIQ4Bt7r7O\nzPoSqUL/Aljo7qvMrA/wGPBzd3+6y2MHAR+7+xYzqwBeBL7s7q8les18rkwX0q2SRL8XDUjsnlTa\nOgrlQ1i2pduCUGgzoXRXNnpGC+n9LlWn3vAc9Y3NYYeRUDZmYOrOeAaRngjjfSWIZPpQ4A6ghMgU\nt/e5+5Vm9kvgC9F9s9x9ZvT8GmCqu3/LzI4Cfge0Rc+bGWvGj67CmM0jEwl1If5hSTTLQrEnJ6lI\nZe5ofTBJT7q3hItlqsfurKKZKl2r8SnZzA+FdA1n6+5SLgi6uBR4m0cQ8m1qvEKXqK9Q1dT4Upmt\nQ7+/nuvJCnqF9AE4GysJavrBzFCbQ3ZowZ2ey8U+9YKsTIdByXTuSdSmoIRwZ8naOjSyPztS+QAT\nT74N/Mz0wGkorA8X+UDV7Nh0HRaGuuVrOXPWCzEnM4inYHumw6BkOjcpoU4ulQSnkG4z5qpMVFty\nbfBiNnqe9aEut2WjVScsutYklymZlkDFS6j1RpnawLgHdEsycJmc/iyo2Vay2QuZi1PUSWYEUeku\nljEHUlyUTEugEr1Z59tt8kyKNy93R6rehyvbiUaqtyez0Z6RSL5PqyYikm1KpiVwiSqwxfiHO1l/\ntPr/ck8uDrrJlHxYIEFEJJcomZZQJFrQINd6TbMllYRMi7DkvqArxZlWzHeEREQyQcm0hCZRX2eh\nT6mVylRXauvIT7m+KIcGsIqIZJaSaQlVol7hQk2ok7V1qFJYeHoy5V66NIeuiEgwlExL6BIll4XU\n8pFKW8ep1cOYOXlsQBFJLkh3+jJ96BIRyQ1KpiUnJEqoC2FQ4r7T5pKsLqm2DhERkfyTajLdK4hg\npHglSiQ3bG1l/8sSt0bkqrsXrKAySSJdYkqkRURECp2Sacm6RAllS1vyXuNcM+ZnT6S0mmGxL1Yj\nIiJSDJRMSyCSVWjzIaFur0bHm/qv3QPfOUqzKoiIiBQJJdMSmFQS6ovveTmgaLrngP96LGk1uneJ\nsWzGKZplQUREpIgomZZALZtxSsKL7uH6lTnVR33qDc9ROW0uW5NMHn1q9TDNwCAiIlKENJuHhCLR\nSontwpxObsZji7lp/tKUztUgQxERkcKj2Twkpy268mROrR6W8JyH61cG3kvd3hedSiI98RMVSqRF\nRESKnCrTErpUEua+pb1YfNXnshZDKguvtDPg30qiRURECpoWbZG8st+lc0nSlgxkfinlVNpNOtJK\nhiIiIsUhkGTazMqB+UAfoBSY4+6Xm9lxwDVAb6AO+Ka7t8R5jt2AxcBD7v69RK+nZLqwdXf55V4G\n90/tfmK9/2VzaUm2bGEXwweW89y047v3IBEREclbQSXTBuzq7hvMrAx4Dvg+cC9wvLu/aWZXAsvd\n/dY4z3E9MAT4UMm0ABz0k8fZ1N1st4PSXnDvt4/ijFkv9DiWbLeXiIiISG4KZACiR2yIbpZFv1qB\nLe7+ZnT/POCMOEGOA/YEnupJHFJYFl/1OR74zlFpP76ljR4n0n1Le7FsxilKpEVERCShHs/mYWYl\nZlYPrCKSOC8EysysPZM/E9gnxuN6AdcCP07y/BeYWa2Z1TY1NfU0XMkT40YOYtmMU7j6tKpAX3dg\n31Il0SIiIpKy0p4+gbu3AtVmNhB4CDgEmAxcZ2Z9iFSdY/VLXwg85u7vRLpF4j7/bGA2RNo8ehqv\n5JezJozgrAkjgPR6nVOlgYUiIiKSjh4n0+3cfZ2ZPQuc7O7XAMcAmNmJwAExHvJJ4BgzuxDoB/Q2\nsw3uPi1TMUlheevqHdPR9TSxzvSsICIiIlKcepRMm9kQYFs0ke4LfBb4hZnt4e6ropXpS4Cfd32s\nu5/d4XmmADVKpCVVHRPrdnXL1+7UK927xLTMt4iIiGRNTyvTQ4E7zKyESP/1fe7+ZzP7pZl9Ibpv\nlrs/DRDto57q7t9K58Xq6upWm9nyHsacjhHAihBeVzLArs76S+j6kHh0bUg8ujYkHl0buWNkKifl\n1aItYTGzJncfEnYckpt0fUg8ujYkHl0bEo+ujfzT49k8isS6sAOQnKbrQ+LRtSHx6NqQeHRt5Bkl\n06lpDjsAyWm6PiQeXRsSj64NiUfXRp5RMp2a2WEHIDlN14fEo2tD4tG1IfHo2sgz6pkWEREREUmT\nKtMiIiIiImlSMi0iIiIikiYl0yIiIiIiaVIyLSIiIiKSJiXTIiIiIiJpUjItIiIiIpImJdMiIiIi\nImlSMi0iIiIikiYl0yIiIiIiaVIyLSIiIiKSJiXTIiIiIiJpUjItIiIiIpKm0rAD6I6KigqvrKwM\nOwwRERERKXB1dXWr3X1IsvPyKpmurKyktrY27DBEREREpMCZ2fJUzsurZLpgXFcFzSsi3w8YAd9v\nCDceEREREUmLeqaD1jGRhsj311WFF4+IiIiIpE3JdNA6JtKJ9omIiIhIzlObR6544Hw44+awoxAR\nEZECt23bNhobG9m8eXPYoeSE8vJyhg8fTllZWVqPVzIdpHcWxj/26kNKpkVERCTrGhsb6d+/P5WV\nlZhZ2OGEyt1Zs2YNjY2NjBo1Kq3nUJtHkJ6/Pv6xtm3BxSEiIiJFa/PmzQwePLjoE2kAM2Pw4ME9\nqtIrmQ7S+0lm7Zh3eTBxiIiISFFTIr1DT38XSqaD5J74+Iu/DSYOERERkSJy++23s3Llyqw8t5Lp\nIPUdkPh429Zg4hAREREpIkqmC0VLCsny9CQJt4iIiEjQ3lkIf7828WQK3XDJJZfw29/uuCM/ffp0\nrr322pjn/vKXv+SII47g0EMP5fLLd7TEnnrqqYwbN45DDjmE2bNnA9Da2sqUKVMYM2YMVVVVXHfd\ndcyZM4fa2lrOPvtsqqur2bRpU0Z+hnaazSNIpb07b5eUQ2uMhvd4CXXFgfC9zFzEIiIiIjw+LfmY\nri0fwQeLwNvAesGeY6DPbvHP36sKPjcj4VNOnjyZiy++mAsvvBCA++67jyeeeGKn85566imWLFnC\nwoULcXe+9KUvMX/+fCZOnMjvf/97dt99dzZt2sQRRxzBGWecwbJly3j33XdZtGgRAOvWrWPgwIHc\ncMMNXHPNNdTU1CT+WdOgynSQulamB43s3uNXvxFJtB84P3MxiYiIiCSyuTmSSEPkv5ube/yUY8eO\nZdWqVaxcuZJXXnmFQYMGMWLEiJ3Oe+qpp3jqqacYO3Yshx9+OK+//jpLliwB4Ne//jWHHXYYRx55\nJO+88w5Llixh3333ZenSpVx00UU88cQT7LZbgqQ/Q5JWps1sH+BOYC+gDZjt7teb2SRgOnAQMN7d\na+M8fiBwCzAGcOA/3P1FM5sOnA80RU+9zN0f69mPk+N22b3z9q4VsNvesPTp7j1Pw33QMAemr81c\nbCIiIlJ8klSQgUhrxx1fgtatUNIbzrgF9hnf45c+88wzmTNnDu+//z6TJ0+OeY67c+mll/Ltb3+7\n0/5nn32Wv/zlL7z44ovssssuHHvssWzevJlBgwbxyiuv8OSTT3LjjTdy33338fvf/77HsSaSSptH\nC/BDd/+nmfUH6sxsHrAIOB34XZLHXw884e5nmllvYJcOx65z92vSCTwvtbZ03u47CCb/EWYfByvr\nuvlkbZEqddVXtNiLiIiIZM8+4+G8R2DZ36HymIwk0hBp9Tj//PNZvXo1f/vb32Kec9JJJ/HTn/6U\ns88+m379+vHuu+9SVlZGc3MzgwYNYpddduH111/nH//4BwCrV6+md+/enHHGGey3335MmTIFgP79\n+7N+/fqMxN1V0mTa3d8D3ot+v97MFgN7u/s8SDw3n5ntBkwEpkQfvxUozikr3lkI774U+9gFT0eO\n33oSkeJ/NzTcB6/9CX66qschioiIiMS0z/iMJdHtDjnkENavX8/ee+/N0KFDY55z4oknsnjxYj75\nyU8C0K9fP+666y5OPvlkbrrpJg499FAOPPBAjjzySADeffddvvGNb9DWFsmn/ud//geAKVOmMHXq\nVPr27cuLL75I3759M/ZzmCeb+7jjyWaVwHxgjLt/FN33LPCjWG0eZlYNzAZeAw4D6oD/dPeN0TaP\nKcBHQC2R6vdOfQtmdgFwAcCIESPGLV++POV4c8qfvw+1XW4z1HwDvjAz+WOvq4LmFcnPm97zHiYR\nEREpbIsXL+aggw4KO4ycEut3YmZ17p50xGLKAxDNrB/wAHBxeyKdglLgcGCWu48FNgLTosdmAfsB\n1UQq3zHnQ3H32e5e4+41Q4YMSTXc3LOha+XY4LCzUnvs9xsiiXJJn8TnTR+QsSlrRERERCS5lJJp\nMysjkkj/0d0f7MbzNwKN7r4guj2HSHKNu3/g7q3u3gbcDGT23kGuG3lU92+X/HQVfOH6xOfceoKW\nJRcREZG80tDQQHV1daevCRMmhB1WSlKZzcOAW4HF7v6r7jy5u79vZu+Y2YHu/gZwPJGWD8xsaLQf\nG+A0IgMaC9emDM28UTMl8jV9IJHJUWJ4fia89y8496HMvKaIiIhIFlVVVVFfXx92GGlJpTL9KeAc\n4Dgzq49+fd7MTjOzRuCTwFwzexLAzIaZWccp7i4C/mhm/yLS0nF1dP//mllDdP9ngO9n6ofKSRtX\nJ97urunrYNc94x9f+nRklhARERERyZpUZvN4Dog3ZcdOpU93Xwl8vsN2PbBT87a7n5N6mAVg14rI\noisdt3vqx29GWjqejzOIcWVdJKG+oJvzWIuIiEhBc/eEM7IVk+5MxhGLVkAMSt9BibfTdcIViWfx\nWFkHd56WmdcSERGRvFdeXs6aNWt6nEQWAndnzZo1lJeXp/0cqSzaIvlgenNkNo9Ylj4dqWCfcEWw\nMYmIiEjOGT58OI2NjTQ1NSU/uQiUl5czfPjwtB+vZDoomz7ssp2FpcATJdTPz4TRp2R8wnURERHJ\nL2VlZYwaNSrsMAqG2jyCsqHLp7+eDkCMJ1HLx60nZOc1RURERIqUkumg9OnXeTsTAxDjSZRQx6tc\ni4iIiEi3KZkOyqYuCW6mBiDGo4RaREREJOuUTAeh9nZYu7Tzvn4BLI3+zXnxj12xe/ZfX0RERKTA\nKZkOwst37rzvsLOy/7r7jIeqr8Q+5q3wywOyH4OIiIhIAVMyHYTSLnMX7lUV3KwaZ9wMFQfGPrbx\ng8iUeSIiIiKSFiXTQejaHz1wZLCv/72FUB6nRzve6okiIiIikpSS6SB0nVM6G3NMJzNtGVhJ7GMa\nkCgiIiKSFiXTQeg6p3S25phO5vIP4x+bPjC4OEREREQKhJLpIHSdUzqbc0wnE3fKPIcZlUFGIiIi\nIpL3lEwXoy9cH3v/5rUakCgiIiLSDUqmg7AxoKXEU1UzJf4MHxqQKCIiIpIyJdOBsM6bpb3DCaOj\n7y2Ekj6xj2lAooiIiEhKSpOdYGb7AHcCewFtwGx3v97MJgHTgYOA8e5eG+fxA4FbgDGAA//h7i+a\n2e7AvUAlsAz4iruHMM1FADau6rzdsjWcOLr66ar4ifN/7xE5LoXvgfOh4b6eP0/5oMisMSIiIkUk\naTINtAA/dPd/mll/oM7M5gGLgNOB3yV5/PXAE+5+ppn1BnaJ7p8G/NXdZ5jZtOj2JWn9FLms9vad\np8Kr2D+UUGKa3hw7oW7dArPaC+OQAAAgAElEQVSPgwueDj4mya5fHhBZsCfTNq/d+VoaNk7XkIiI\nFLSkybS7vwe8F/1+vZktBvZ293kAZhb3sWa2GzARmBJ9/FagvSz7ZeDY6Pd3AM9SiMl0rKXEP3Vx\n8HEkUvWV2JXJlXXwzsLgVmuU7Ll6OGxdH/zrrqzbkWBbSeLpGUVERPJQKpXp7cysEhgLLEjxIfsC\nTcBtZnYYUAf8p7tvBPaMJuq4+3tmtkd3YskbrV1aOnbfN/eS0zNuhiXzIpXFrm49IcF0epLT7jwN\nluZQVdhbO1SuDb75VO79WxAREemmlAcgmlk/4AHgYnf/KMWHlQKHA7PcfSywkUg7R8rM7AIzqzWz\n2qampuQPyDWbu/yq2lrDiSOZacuIezlcGeK82NJ9MyojSWsuJdI78egHtQGRqrmIiEieSqkybWZl\nRBLpP7r7g914/kag0d3bK9lz2JFMf2BmQ6NV6aFAzNFu7j4bmA1QU1Pj3Xjt3OCeeDuXTI/R8wrQ\ntk390/mgp60cvfvDZY3df1xPK+Bb1++47vY9Ds59KP3nEhERCVgqs3kYcCuw2N1/1Z0nd/f3zewd\nMzvQ3d8Ajgdeix5+BDgPmBH975+6FXm+6DsAmrts57IvXA9//s+d96t/OnfNqIzdopNMpgYHxkp+\n0x3kuPTpSGKtmUFERCRPmCeplJrZ0cDfgQYiU+MBXAb0AX4DDAHWAfXufpKZDQNucffPRx9fTWRq\nvN7AUuAb7r7WzAYD9wEjgBXAJHdPODqppqbGa2tjzsCXu2ZWwboVO7YHjoSL/xVePKm4rgqaV8Q+\npv7p3DH7uMiHnO6o+kqkRz5oV+we6ZnuNvVWi4hIOMyszt1rkp6XLJnOJXmZTF+9N2zdsGO7317w\nozfCiydV0wex47NTR70i7SASnncWRvqNU5VrVd4rKyKtQ90V1gcBEREpSqkm01oBMZtqb++cSAOU\n53ibR7u4CXNb5Ba+hOOqoakn0vseF7mTkEuJNMDPVkfiqvpK9x7XcF+kBeQGValFRCR3qDKdTTdO\ngKbXO+/7wvVQMyWUcLotUQX0UxfDCVcEG08x684qhflYwU2n73vXPeHHb2YlHAnJDeNhddB37tRK\nJCKxqc0jF1xzIGx4f8d2urMlhClRX676p4ORar9xIcyEkc7MIKW7wE/ey048knnpDpgN04AR8P2G\nsKMQkYApmc4Fv6jsvJR430FwybKwoklfoh5XJdTZk2o1ulArtN3tre5VFmkhkdxQe3vsmYEKTSF8\niBWRmJRM54L/HtJ5BcTScvhJGtOF5YJY808DlPSBn8acIlx6IqVE0mD6ukDCCVU6lUy1IQUvHyvO\n2VSoH3Il8YxXmaQ7IqFTMh22WP3GJb3hp3m4iiMk7p+uOBC+tzDYeApZvA8uHeVjX3RPpfMHTFXD\n7PnvPaB1S9hR5J98bPcrJOnOJlQo1BbXLUqmMyWTtyr7DIBLA/g0my2J2g7yaWBlrkpl8JVaGdKb\nXzvXpgfMRz1dYbM7gqrI5VRipYGQaenO4GzJnCL5UKhkOhMy3fNXCLeeE93KVf90+lKpRhfC9ZNJ\n8y6H52d27zH6MJK6bM+skQ93V0KZXSSOYitYpLuKqhSmkAoiSqYz4Q+nwdsZWG65XaEkm9MHAnGu\nm0L5GYOS0gIsWignoXcWwq0nEXuRoQQytZx6ocjWgMFCHVeRa8lePvye1RokPRFCQq1kOhMy+cel\n0AYSxKukqvKXulTaFdTz2z1XDYWWj7v3mGK+ZtP5fSWTDxXnbEqnDUnyU7bGC+XSHZFcE3DBTsl0\npmQioS60RBoSV1TVn5pcKnNHq8qfvnRnlij0PsCM/5FWn2/K1NubQ4rwuk2nLS7XqDKdGXk1m0cx\nSLTAhiqq8SXrj9Zo68xJZxGYdoXwobAnP388xV55zga1P/RcoX8QzhVhfShUz3TmKJnOQYkqgN+c\nV1yf/JNJ5U1IiUp2vLMQbj2RuL3+yVgJXP5hRkPKimzcHi7EO2v5pNgTbRVmJERKpiU4iVoW1KoQ\nkcofRP2ugpGJgWO50GetAYMC+bnSZLHNTCJ5S8m0BCtR60KxJ4nJ2jpyITErRunOAhJXlvowMx5n\nDJp2UURkJ0qmJXhKqDtLpWKkW5i5odgGh2nVUhGRpJRMS/CSzZlcTAl1KktfF9PvI58UYmK9657w\n4zfDjkJEJK9kLJk2s32AO4G9iNxnnO3u15vZJGA6cBAw3t1jZrlmtgxYD7QCLe1Bmdl04HygKXrq\nZe7+WKJYlEzngWTT7xRDAploURtAi7DkmZxacjpFGjQoItJjqSbTpSk8VwvwQ3f/p5n1B+rMbB6w\nCDgd+F0Kz/EZd4/VFHqdu1+TwuMlX5xwBbz3r/jTcU0fCNPXBRtTUFJZzVBJTv7p2M/e01lBskED\nBkVEQpU0mXb394D3ot+vN7PFwN7uPg/AzLIboeSfcx9K0ObghZlQpzIlmUaw5799xse+doOoXmug\nqohITkqlMr2dmVUCY4EF3XiYA0+ZmQO/c/fZHY59z8zOBWqJVL9177tQfL8Brh4OW9fHOOiRwYqF\n0vKRtK2DwvlZJTYluSIiRatXqieaWT/gAeBid/+oG6/xKXc/HPgc8F0zmxjdPwvYD6gmUvm+Ns7r\nXmBmtWZW29TUFOsUyVWXNUZW84sn2ZRxuW7e5dGfIUEiXbqLEmkREZECllIybWZlRBLpP7r7g915\nAXdfGf3vKuAhYHx0+wN3b3X3NuDm9v0xHj/b3WvcvWbIkCHdeWnJBT95rzAT6quGJh5oCZHVDLUs\nuIiISEFLmkxbpCn6VmCxu/+qO09uZrtGBy1iZrsCJxIZuIiZDe1w6mnt+6UApZJQ194eWDg9Unt7\nJN6WjxOfN71Zy4KLiIgUgVSmxjsa+DvQwI4luC4D+gC/AYYA64B6dz/JzIYBt7j7581sXyLVaIj0\nZ9/t7j+PPu8fiLR4OLAM+HZ0sGNcmhovz8XtoY7K9ZkurhqaPIku3UXVaBERkQKgRVskN/3yANj4\nQYITLPdm+kh1EQ8tySwiIlIwUk2mUx6AKJIRP34Tho1LcEJ0po95lwcWUkLTB6SWSE9vViItIiJS\nhJRMS/AueDoy53Iiz8+EK3YPJp5Yrhqa2uDIYeM0W4eIiEgRU5uHhCuVhLXiQPjewuzHAsn7ujtS\nEi0iIlKw1OYh+WF6c2Q55ERWvxFJuq+ryk4M7yyMrso4ILVEet/jlEiLiIgI0M0VEEWy4qerUhvk\n17wikvBmalnlGZWwuRuLbvbuH1mIRkRERCRKbR6SW67YHby1e4+p+kpqczrPuzz5QivxqBItIiJS\nVFJt81BlWnLL5R92P+ltuC+1GTfSoenuREREJAH1TEvuOeGKSCV4wIjwYvjUxZruTkRERJJSZVpy\nV/tqiDeMjwxCzLZM9WKLiIhI0VAyLbmvfVq8dxbCrScSWYE+g1LtuRYRERHpQsm05I99xndearw7\nc0J3VLoL/OS9zMUlIiIiRUvJtOQvTVMnIiIiIcurqfHMrAlYHsJLjwBWhPC6kh90fUg8ujYkHl0b\nEo+ujdwx0t2HJDspr5LpsJhZUyq/TClOuj4kHl0bEo+uDYlH10b+0dR4qVmX/BQpYro+JB5dGxKP\nrg2JR9dGnlEynRotfyeJ6PqQeHRtSDy6NiQeXRt5Rsl0amaHHYDkNF0fEo+uDYlH14bEo2sjz6hn\nWkREREQkTapMi4iIiIikScm0iIiIiEialEyLiIiIiKRJybSIiIiISJqUTIuIiIiIpEnJtIiIiIhI\nmpRMi4iIiIikScm0iIiIiEialEyLiIiIiKRJybSIiIiISJqUTIuIiIiIpKk07AC6o6KiwisrK8MO\nQ0REREQKXF1d3Wp3H5LsvLxKpisrK6mtrQ07DBEREREpcGa2PJXz1OYRoGnzp3H0/x3NtPnTwg5F\nRERERDJAyXRAps2fxtx/z6V5azNz/z2Xs/58VtghiYiIiEgPKZkOyJPLnuy03bCmgfvfuD+kaERE\nREQkE/KqZzqftXnbTvvuWnwXkw6cFEI0IiIiUgy2bdtGY2MjmzdvDjuUnFVeXs7w4cMpKytL6/FK\npgPSv3d/mrc2d9r30ZaPQopGREREikFjYyP9+/ensrISMws7nJzj7qxZs4bGxkZGjRqV1nNkpc3D\nzH5vZqvMbFGc48eaWbOZ1Ue/fpaNOHLJnrvsudO+3iW9Q4hEREREisXmzZsZPHiwEuk4zIzBgwf3\nqHKfrcr07cANwJ0Jzvm7u38hS6+fc7a0btlp39Bdh4YQiYiIiBQTJdKJ9fT3k5XKtLvPBz7MxnPn\nK2Pn/1ED+gwIIRIRERERyZQwZ/P4pJm9YmaPm9kh8U4yswvMrNbMapuamoKML2PqV9WzfH1K836L\niIiISB4JK5n+JzDS3Q8DfgM8HO9Ed5/t7jXuXjNkSNIVHXPSI28/guNhhyEiIiKSF6ZMmcKcOXPC\nDiMloSTT7v6Ru2+Ifv8YUGZmFWHEEoRYLR4iIiIiuah+VT23NNxC/ar6sEPJC6FMjWdmewEfuLub\n2XgiSf2aMGIJwujdR4cdgoiIiBS5Xyz8Ba9/+HrCczZs3cAba9/AcQzjwEEH0q93v7jnj959NJeM\nvyTu8UsuuYSRI0dy4YUXAjB9+nT69+/PD3/4w07nuTsXXXQRTz/9NKNGjcJ9xx39v/71r/zoRz+i\npaWFI444glmzZvHKK68wY8YMHnzwQf70pz8xefJkmpubaWtr4+CDD2bp0qUce+yxTJgwgWeeeYZ1\n69Zx6623cswxx6Tyq+qWbE2N93/Ai8CBZtZoZt80s6lmNjV6ypnAIjN7Bfg1MNk7/tYKzOIPF4cd\ngoiIiEhS67et396a6jjrt63v0fNNnjyZe++9d/v2fffdx6RJOy9Y99BDD/HGG2/Q0NDAzTffzAsv\nvABEpvabMmUK9957Lw0NDbS0tDBr1iwOP/xwXn75ZQD+/ve/M2bMGF566SUWLFjAhAkTtj9vS0sL\nCxcuZObMmVxxxRU9+lniyUpl2t2/luT4DUSmzisKazYVbNFdRERE8kSiCnK7+lX1nP/U+Wxr20ZZ\nrzJmHDOD6j2q037NsWPHsmrVKlauXElTUxODBg1ixIgRO503f/58vva1r1FSUsKwYcM47rjjAHjj\njTcYNWoUBxxwAADnnXceN954IxdffDH7778/ixcvZuHChfzgBz9g/vz5tLa2dqo+n3766QCMGzeO\nZcuWpf1zJKIVEANQ0bdg28FFRESkgFTvUc3NJ95M7Qe11OxZ06NEut2ZZ57JnDlzeP/995k8eXLc\n82LN95yoceGYY47h8ccfp6ysjM9+9rNMmTKF1tZWrrnmmu3n9OnTB4CSkhJaWlp68FPEF+bUeEUj\nXs/0/Mb5au4XERGRnFK9RzXfqvpWRhJpiLR63HPPPcyZM4czzzwz5jkTJ07knnvuobW1lffee49n\nnnkGgNGjR7Ns2TLeeustAP7whz/w6U9/evtjZs6cySc/+UmGDBnCmjVreP311znkkLgzLmeFKtMB\niNcz3eItPPr2oxm7WEVERERyzSGHHML69evZe++9GTo09urPp512Gk8//TRVVVUccMAB2xPm8vJy\nbrvtNiZNmrR9AOLUqZEheBMmTOCDDz5g4sSJABx66KHssccega/4qGQ6AImmxtP80yIiIlLoGhoa\nEh43M264IfZwuuOPP377YMOO+vbty5YtW7Zvz549u9PxZ599dvv3FRUVWeuZVptHABJNjXfQ7gcF\nGImIiIiIZJIq0wFINDVesvkeRURERApFQ0MD55xzTqd9ffr0YcGCBSFF1HNKpgOgNg8REREJi7sH\n3kccT1VVFfX1uTX5Qk+XOlGbRwDU5iEiIiJhKC8vZ82aNT1OGAuVu7NmzRrKy8vTfg5VpgPQvLU5\n5n7D4h4TERER6anhw4fT2NhIU1NT2KHkrPLycoYPH57245VMB2BA7wEx9zse95iIiIhIT5WVlTFq\n1KiwwyhoavMIgAYgioiIiBQmJdMBaPO2uMc0AFFEREQkfymZDsB+A/aLe0wDEEVERETyV1aSaTP7\nvZmtMrNFcY6bmf3azN4ys3+Z2eHZiCNXrN68OuZ+DUAUERERyW/ZqkzfDpyc4PjngE9Evy4AZmUp\njpzQt7RvzP0agCgiIiKS37KSTLv7fODDBKd8GbjTI/4BDDSzodmIJRd8uDn+r0IDEEVERETyV1g9\n03sD73TYbozu24mZXWBmtWZWm69zJJb3ij8RuAYgioiIiOSvsJLpWGtaxswq3X22u9e4e82QIUOy\nHFZ2vN38dtxjGoAoIiIikr/CSqYbgX06bA8HVoYUS1bVr6rn+ZXPb98usZLt32sAooiIiEh+CyuZ\nfgQ4Nzqrx5FAs7u/F1IsWVX7QW2neaarh1Rv/14DEEVERETyW1aWEzez/wOOBSrMrBG4HCgDcPeb\ngMeAzwNvAR8D38hGHLlgQO8BnfqiB/TZkTyrMi0iIiKS37KSTLv715Icd+C72XjtXNMxWbYureKq\nTIuIiIjkN62AmGUdk2XHad7SuRKtqfFERERE8peS6SzrWpne2ra103FNjSciIiKSv5RMZ1nXyvSI\n/iM6HdfUeCIiIiL5S8l0li3+cHGn7eXrl3fqnVabh4iIiEj+UjKdZV0HHe7Rdw9Ke+0Y9/ngkgep\nX1UfdFgiIiIikgFKprNs9O6jO20fvffRTNhrwvbtFm/h0bcfDTosEREREckAJdNZ1rXNY/GHi9lj\nlz067dMgRBEREZH8pGQ6y7q2eRjGIRWHdNqnQYgiIiIi+UnJdJZ1bfMYvftoPtr60fZtrYIoIiIi\nkr+UTGdZrDaPrtPlaRVEERERkfykZDrLYrV5dJ0OT9PjiYiIiOQnJdNZFqvNo+uAQw1AFBEREclP\nSqazLFabR9cBhxqAKCIiIpKfspZMm9nJZvaGmb1lZtNiHJ9iZk1mVh/9+la2YglTm7d12labh4iI\niEjhyEoybWYlwI3A54CDga+Z2cExTr3X3aujX7dkI5aw7Ttg307bavMQERERKRzZqkyPB95y96Xu\nvhW4B/hyll4rp7265tVO22rzEBERESkc2Uqm9wbe6bDdGN3X1Rlm9i8zm2Nm+8R6IjO7wMxqzay2\nqakpG7Fm1epNqzttr9m0Rm0eIiIiIgUiW8m0xdjXtZfhUaDS3Q8F/gLcEeuJ3H22u9e4e82QIUMy\nHGb2tba1dtqu6FuxU4LddVtERERE8kO2kulGoGOleTiwsuMJ7r7G3bdEN28GxmUpltDUr6qnflX9\n9u1SK+WL+32RwX0Hdzqv67aIiIiI5IdsJdMvAZ8ws1Fm1huYDDzS8QQzG9ph80tA5znkCsAjbz9C\nKzsq0xOHT6R6j2r1TIuIiIgUiNJsPKm7t5jZ94AngRLg9+7+qpldCdS6+yPA/zOzLwEtwIfAlGzE\nEqY1m9bE3K+eaREREZHCkJVkGsDdHwMe67LvZx2+vxS4NFuvn8vUMy0iIiJSGLQCYhZV9K2Iua2e\naREREZHCoGQ6i0bvPjrmdtce6X5l/QKLSUREREQyR8l0Fi3+cHHM7eatzZ323/nqnZ1m/RARERGR\n/KBkOou6DkBs367Zs4ZeHX71rbTy6NuPBhqbiIiIiPSckukQVO9RzcGDD+60T4MQRURERPKPkumQ\n7F6+e9ghiIiIiEgPKZkOSWmvrM1KKCIiIiIBUTItIiIiIpImJdNZtHbz2k7bzVua45wpIiIiIvlI\nyXQWfbj5w07ba7esjXOmiIiIiOQjNe5m0ZbWLZ22B/UZFFIkEoYj/nAEm9s2B/qap4w6hRkTZwT6\nmiIiIsVMyXSW3P/G/bz/8fud9u03cL/t33dt+VALSP64/437ufIfV4YdRkxz/z2Xuf+em9K5SrxF\nRER6Tsl0lty1+K6d9n1xvy9u/75ry0fH7XF3jmOrb92+3dt6U3duXRailETCqCwHKVniXUopL5/3\ncoARiYiI5J+sJdNmdjJwPVAC3OLuM7oc7wPcCYwD1gBfdfdl2YonaB9t+ajT9oDeA6jeo3r7dteW\nj/btqjuqdnqurb6VqjuqqOhTwTOTn8lCtMXtyw99maUfLQ07jJzTQkvM67GjbxzyDX5Q84OAIpKO\nzvrzWTSsaQg7jFD97MifMenASWGHISJFztw9809qVgK8CZwANAIvAV9z99c6nHMhcKi7TzWzycBp\n7v7VRM9bU1PjtbW1GY83kUzd0q8or+CZr+5IhKc8PoW6VTuqzSP6j2DNx2vY2Lox6XMNKBvAc2c9\n1+OYitFn7vkMq7dotcmg7FqyK//4+j/CDiNnKSHOfUcNPYrfnfi7sMPImJPuP4mVH68MOwyRbgkr\n7zGzOnevSXZetirT44G33H1pNJh7gC8Dr3U458vA9Oj3c4AbzMw8G9l9mjLZG7upZVOn7S1tnQcn\nrli/IuXnat7WvL1iqFvx8eXKH40gqrdH3300zdtyr+9+Y+vGpNXtdvlc5daHtML1wnsvpHwNi0h2\nNG9r5ui7j87ZQmK2kum9gXc6bDcCE+Kd4+4tZtYMDAY6/UUyswuACwBGjBiRpXBj+8uKv2TsuTa3\ndO69PX3/01m0elGPn7frrfhhuwzjyUlP9vh5800YrRrlvcp56ZyXAn3NeLrzBnPkXUemdAckaLe9\nehu3vXpb2GGIiEgOysWCUbtsJdMWY1/XinMq5+Dus4HZEGnz6HloqfvsiM/ywsoXMvJcfUr6dNqe\ndOAk/vel/2Vza/wBbhV9Krpd7Vr58cpOyXU+V/viCTpxLrTfYbK2i/pV9Zzz+DkBRSMiIpLcgLIB\nYYcQV7aS6UZgnw7bw4Gu99vbz2k0s1JgAPAhOaR9YEsmWj2+OnrndvBkHS3tgw170lfZtdqXb/1/\nQc6oUaxV/a6q96im4bzE11uhz3SST4pxYHLXGY9EpLDl+lixbA1ALCUyAPF44F0iAxDPcvdXO5zz\nXaCqwwDE0939K4meN4wBiOlqr56WWinnHHxOzMrmYXccRhttMR8fK+n99lPf5oX3MlMp7ygX/hhX\n31FNK62BvV7V4Cru/sLdgb1esZk2f1rK811LbvwblM5ydRxCpug9UCS5VAcgZiWZjgbweWAmkanx\nfu/uPzezK4Fad3/EzMqBPwBjiVSkJ7cPWIwnn5LpVFTfWU2rx04gk1UGg7wV39M2h7AHZ+272778\n6bQ/hfb6klghVbmVoIiIFI7Qk+lsKLRkOl6lOZ3kT3MlR6hVQ0RERDJByXSeiDXlUrKqdCoKqdoX\njyrOIiIiki1hzzMtKWo4r4Gxd4ylhZaMzhnddcq2sFstekornYmIiEguUjKdA4JYdCXW4KZcW32t\nhBLqz6sPOwwRERGRlCmZLmLJBkplulVEg7NERESk0CiZlrhyZXU/ERERkVyVVwMQzawJWB7CS48A\nVoTwupIfdH1IPLo2JB5dGxKPro3cMdLdhyQ7Ka+S6bCYWVMqv0wpTro+JB5dGxKPrg2JR9dG/ukV\ndgB5Yl3YAUhO0/Uh8ejakHh0bUg8ujbyjJLp1BTumrKSCbo+JB5dGxKPrg2JR9dGnlEynZrZYQcg\nOU3Xh8Sja0Pi0bUh8ejayDPqmRYRERERSZMq0yIiIiIiaVIyLSIiIiKSJiXTHZiZFrERERERkZQp\nmSaSRJvZNcC1ZvbZsOOR3GFm55rZp81sQHRb/2ZkOzM7w8yqzawkum1hxyS5Qe8dEo/eNwpP0Q9A\njF7ENwIDgMeAKcDDwC3uviXE0CQk0WtiL+BuoA14C+gP/D93X21m5sX+D6eIRa+PEcAc4CNgDfAG\ncK27r9P1UdzMbC/gHqAVvXdIlN43Cps+KUfe6KqBqe7+R+Aa4ABgUqhRSSjMrCT6htYfeNfdjwe+\nC6wGfhdqcBI6M9sten3sDbwUvT5+SuR6+XmowUmozGyYmVUQuRYa9d4h7cysX/R9YxiwQO8bhafo\nk2l3/whYRqQiDfA88DLwyWiFQYpAtNXnauBqM/s0cCCRyhLu3gL8J3CUmX3a3V23bIuPmX0XmG9m\nBwPDgaHRQ28DvwKONrMjoteHbtsWCTPrFX3v+AcwhkhxBtB7R7Hr8HflITP7OvBlYLfoYb1vFBD9\no454CKg2s6HuvgFoALay44+lFLBo8lwHDCJyW/a/gW3AZ8xsPEC0qnAlMD263RZKsBK4Dn/g+gOb\ngQuAB4AaMxvr7i3uvgK4nUglEt2uLSrnAKOBw9z9WWAukQRJ7x1FzMwGEWkVHAjMBE4FFgCfNbNq\nvW8UFiXTEc8R6V+aAuDudcARQN8QY5LgtAHXuPt33P1mYBEwCvgZMAu2Dx56CGgys5GhRSqB61BN\n3JMd4ytOBC4FZkCkPQioBT6O/hGVIhD9oPUJ4NfuvtbMPgmUAbcQaRnUe0fx6gdUuvuF7j4X2AS8\nS6St40rQ+0YhUTINuPt7RAYdfs7MJplZJZEKVEuYcUlg6oD72kdWE2n1GeHutwMlZnZRtJo0HGh1\n9+UhxSkhMLNe0f//q4GNwFPA14lUmQ41s7PcvRXYBdjF3deGF60EKVpJrABON7OLgBuAm4jcyq82\ns3Ojp+q9o8i4+ztEkuTbzewvwFFEPoBvAz5lZpP1vlE4lExHufsLwP8AnwOeAB5294XhRiVBcPeP\n3X1L9I0N4ASgKfr9N4CDzOzPwP8B/wRNZVRMOtyWrwKeJPL+cCiRW7i/Bb5mZvdFv18Auj6KzI3A\nOOAQdx9H5I7WCiIf0g8FHiFyrei9o/hMAl4AVrr7fkQ+bPUDngVOi75vzELvG3mv6KfG68rMyogU\nHFSVLjLRyrQT6Xm8yN3fMrP9iVQkxwD/dvd3w4xRwmNmlxLpja0GmolUmL7g7pvM7EvAy9FqlBQR\nMysnkhAd5u6HR/ddQKRN8NfAZ4A39N5RnMxsCnCou/8gun0NkQ9afwI+i943CoIq0124+zYl0kWr\njUi/42oit+//TGT6osMcQVgAAAJRSURBVDZ3f05/DIteL2APInMGTyTyB/H/Abj7I/qDWJzcfTMw\njUhL2BlmdhAwGdjmEU/rvaOovQUMN7MjzWwPYDzQK3pHVO8bBUKVaZEOzOxIIrflXgBuc/dbQw5J\ncoSZ9XX3TdHvDdjD3T8IOSzJEWZ2NHAc8AXg5uhgZily0TsX3wG+SOTD+K/dfXa4UUmmKZkW6cDM\nhhOZ6upXWgFTYjGzUt29kniiCz+1Jj9TiomZjSKymM+2sGORzFMyLSIiIiKSJvVMi4iIiIikScm0\niIiIiEialEyLiIiIiKRJybSIiIiISJqUTIuI5CEzG2hmF0a/H2Zmc8KOSUSkGGk2DxGRPGRmlcCf\n3X1MyKGIiBS10rADEBGRtMwA9jOzemAJcJC7j4kuX3wqUAKMAa4FehOZP30L8Hl3/9DM9gNuBIYA\nHwPnu/vrwf8YIiL5TW0eIiL5aRrwtrtXAz/ucmwMcBaRpYt/Dnzs7mOBF4Fzo+fMBi5y93HAj4Df\nBhK1iEiBUWVaRKTwPOPu64H1ZtYMPBrd3wAcamb9gKOA+yMrowPQJ/gwRUTyn5JpEZHCs6XD920d\nttuIvO/3AtZFq9oiItIDavMQEclP64H+6TzQ3T8C/m1mkwAs4rBMBiciUiyUTIuI5CF3XwM8b2aL\ngF+m8RRnA980s1eAV4EvZzI+EZFioanxRERERETSpMq0iIiIiEialEyLiIiIiKRJybSIiIiISJqU\nTIuIiIiIpEnJtIiIiIhImpRMi4iIiIikScm0iIiIiEialEyLiIiIiKTp/wOelCjbGvJriQAAAABJ\nRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2803,9 +2803,9 @@ }, { "data": { - "image/png": "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\nYII=\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2831,9 +2831,9 @@ }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAswAAAFbCAYAAADBWth8AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzt3Xt8VNW5//HPkwSIKCI3qxgw2HpB\nCEUJSJFW1J8XFKtW6bEUBFurtsfayrEt9tRLObW1ra21x3qO1AtYK7booVrRQ23RY1GpBk0NFKmK\nIBFbQoAIYpAkz++PmcRkMplMkpnZe2a+79eLl7Mvs/cTFyTfrFl7LXN3REREREQkvoKgCxARERER\nCTMFZhERERGRBBSYRUREREQSUGAWEREREUlAgVlEREREJAEFZhERERGRBBSYRUREREQSUGAWERER\nEUlAgVlEREREJIGioAuINXjwYC8tLQ26DBERERHJcatXr97m7kM6Oy90gbm0tJSKioqgyxARERGR\nHGdmm5I5L3SBOR+dd/tKqt6u4+B+fbj98+MYd/iAoEsSERERkSiNYQ7YebevpLK6jkaHd97dywX/\n9RyrN+0IuiwRERERiVJgDtgrb9e123fzE+sCqERERERE4tGQjIAVGDR5231vbN0dTDEiIiKSs/bt\n20d1dTX19fVBl5JxxcXFlJSU0KtXr269X4E5QKs37aChqf3+fsXda0wRERGRjlRXV9OvXz9KS0sx\ns6DLyRh3p7a2lurqakaMGNGta2hIRoD+56XquPsbmuKkaBEREZEeqK+vZ9CgQXkVlgHMjEGDBvWo\nZ12BOUA1u/bG3b+3UYFZREREUi/fwnKznn7dCswBGtyvT9z9tbs+0EwZIiIiIiGhwByg0UP7x93v\nwMMdDNcQERERyTWlpaVs27atx+ekS1KB2czONLP1Zva6mc2Lc/xTZvaSmTWY2YUxx2ab2WvRP7NT\nVXguWLul/ZRyzV7/564MViIiIiIiHek0MJtZIfALYCpwLPA5Mzs25rS3gDnAAzHvHQjcAJwATABu\nMDMtYxfV0RhmgO3vfZDBSkRERETaW71pB7946vWUDhU977zzGDduHKNGjWLBggVtjm3cuJFjjjmG\n2bNnM2bMGC688EL27NnTcvw///M/Of744ykrK+PVV18F4IUXXmDSpEkcd9xxTJo0ifXr16es1mbJ\n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\nTkSuQmCC\n", + "image/png": "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\n5fH/A5oxNUY3tDSuAAAAAElFTkSuQmCC\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2859,9 +2859,9 @@ }, { "data": { - "image/png": "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\nAAAASUVORK5CYII=\n", + "image/png": "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\nrkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2887,9 +2887,9 @@ }, { "data": { - "image/png": "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\nAAAASUVORK5CYII=\n", + "image/png": "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\ngg0AAKMAaQXJWY46LxQAAAAASUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2915,9 +2915,9 @@ }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtUAAAFbCAYAAAAa4XJeAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzt3Xt8XWWV+P/Pog1EoA6lFAVCSVWE\nQoFCQykiFkUuKsPdAUEBFVEZRGdGpIrKDIrWwXHEryBTsOD8QMCpcvHORRBhAEmkI5fSAaHYAANt\noFyUQtus3x/ntIRy0ibdOTk7zef9euWVs/d+9rPXyWpPV588+9mRmUiSJElae+s1OgBJkiRpqLOo\nliRJkgqyqJYkSZIKsqiWJEmSCrKoliRJkgqyqJYkSZIKsqiWJEmSCrKoliRJkgqyqJYkSZIKGjkQ\nnUTEgcC5wAjgosycscrxDYD/BCYDXcBRmTm/euzzwEeB5cCpmfnrNV1vs802y9bW1oEIXZIkSaqp\no6NjUWaO7UvbwkV1RIwAzgP2AzqBuyLi2sy8v0ezjwLPZOZbIuJo4BvAURGxA3A0sCOwJXBDRLw1\nM5ev7pqtra20t7cXDb2hfnjnn/nS1fewvMZT4sduvD53fXG/wQ9KkiRJK0XEo31tOxDTP6YAD2Xm\nw5n5MnAFcMgqbQ4BflB9PRvYNyKiuv+KzHwpMx8BHqr2t0774Z1/5gtX1S6oARa+8DK7f/X6wQ1K\nkiRJa20giuqtgAU9tjur+2q2ycxlwLPAmD6eu8755b1PrLHNwhdeHoRIJEmSNBAGoqiOGvtWHYPt\nrU1fzq10EHFSRLRHRPvChQv7GWK5vGfiFmtsM3bj9QchEkmSJA2EgbhRsRPYusd2C/B4L206I2Ik\n8DfA0308F4DMnAnMBGhra+tl4sTQcMwe4/hj52KuuGtBzeObbjjSOdWSJGmtLV26lM7OTpYsWdLo\nUIaE5uZmWlpaaGpqWus+BqKovgvYNiLGA49RufHwmFXaXAscD9wOHAn8JjMzIq4FfhgR36Jyo+K2\nwO8HIKbS2/PNY7jirgXc8I/TeMvmGwPwsz8+zik/vJsrP/62BkcnSZKGss7OTkaNGkVrayuV29jU\nm8ykq6uLzs5Oxo8fv9b9FC6qM3NZRJwC/JrKknqzMvO+iDgLaM/Ma4HvA/9fRDxEZYT66Oq590XE\n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\nc6pXLK/31UMn8sGp29T1+pIkSVo7RedUzwD2i4gHgf2q20REW0RcBJCZTwNfAe6qfp1V3bcB8OuI\n+CMwB3gMuLBgPENarTnVtR4SI0mSpHIpNFKdmV3AvjX2twMn9tieBcxapc1fgMlFrr+uWblOdY+R\n6hUPiVnPmlqSJKm0fKJiibwyUv2KFa8dqZYkSSovi+pSeW3h3N392seZS5IkqVwsqktk5Uh1j/kf\nK16WdAlvSZIkYVFdKivnVPfY55xqSZKk8rOoLpGoMan6laLaqlqSJKmsLKpLqOeSeiteWVNLkiSV\nl0V1idRaUi8dqZYkSSo9i+oSeeVGxVf2deerj0mSJKl8LKpLJKpj1bVvVLSqliRJKiuL6hKptaRe\nd3flu6t/SJIklZdFdcmtuGnRdaolSZLKy6K6RGo+pry64fQPSZKk8rKoLpGVc6prrFNtSS1JklRe\nFtUl8spgdI851StGqs2UJElSaVmqlVDNkWqnf0iSJJWWRXWJOKdakiRpaLKoLpFac6pfeaJiIyKS\nJElSX1hUl8grI9WvnVMd3qooSZJUWhbVJbKibK41p9qRakmSpPKyqC6RWtOmvVFRkiSp/AoV1RGx\naURcHxEPVr+P7qXdryJicUT8bJX94yPizur5V0bE+kXiGfqqc6p77lp5o+KgByNJkqQ+KjpSPR24\nMTO3BW6sbtdyDvChGvu/Afx79fxngI8WjGdIWzEYferld9M6/ee0Tv85x1x0JwAfueSuBkYmSZKk\n1SlaVB8C/KD6+gfAobUaZeaNwPM990VlPsO7gNlrOn+4OPS7t/Z67C8vL2fSv/x6EKORJElSXxUt\nqt+QmU8AVL9v3o9zxwCLM3NZdbsT2KpgPEPa8y8tX+3xxS8uW+1xSZIkNcbINTWIiBuAN9Y4dEbB\na9eaJZw19q2I4yTgJIBx48YVvHQ5bfK6kastnDd53RrTJUmSpAZY40h1Zr47MyfW+LoGeDIitgCo\nfn+qH9deBGwSESsqxRbg8dXEMTMz2zKzbezYsf24zNAx58wDei2cN3ndSOacecAgRyRJkqS+KDr0\neS1wPDCj+v2avp6YmRkRNwFHAlf05/yOjo5FEfFo/8MtbBzw5wZcl0eB+OdGXHlIaFhe1CtzUj7m\npJzMS/mYk3JqVF626WvDyOx1xsWaT44YA/yIV97o+zPz6YhoAz6RmSdW2/0O2B7YGOgCPpqZv46I\n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\nCUZTn6cYAAAAAElFTkSuQmCC\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtUAAAFbCAYAAAAa4XJeAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzt3Xt4XWWZ///3TRuI0KqlFAVCSVUO\nLQVaGgqIAqIcRIYzX04jMOrgyHBwZlTA4/fniNbBQXAGZAoWnJ8M4BSBjjJyEkQYQBLpCKV0QCg0\nlIE0UA5CoYf7+8feDSFmp0lXdnYO79d15creaz1rrXuHh91Pnjz7WZGZSJIkSVp/G9S6AEmSJGmo\nM1RLkiRJBRmqJUmSpIIM1ZIkSVJBhmpJkiSpIEO1JEmSVJChWpIkSSrIUC1JkiQVZKiWJEmSChrd\nHyeJiIOAi4BRwOWZOavL/o2AfwVmAO3AsZm5uLzvXODTwGrgzMy8eV3X22yzzbKxsbE/SpckSZK6\n1dLSsiwzJ/SmbeFQHRGjgIuB/YFW4IGImJeZj3Rq9mngxcz8QEQcB3wXODYipgDHATsCWwK3RcR2\nmbm6p2s2NjbS3NxctPQBMfmr/8nrq9a8bduEMRvywFf3r1FFkiRJ6o2IeKq3bftj+sdM4PHMfCIz\n3wSuAQ7r0uYw4Mflx3OBj0ZElLdfk5lvZOaTwOPl8w0L3QVqgLZX32S3b91ag4okSZJUDf0RqrcC\nlnR63lre1m2bzFwFvASM7+WxQ1Z3gXqttlffHMBKJEmSVE39Eaqjm23Zyza9ObZ0gohTI6I5Iprb\n2tr6WGJtvGN05R/vhDEbDmAlkiRJqqb++KBiK7B1p+cNwNIKbVojYjTwLuCFXh4LQGbOBmYDNDU1\ndRu8B5uF3/o4jef84k+2O6dakiRV08qVK2ltbWXFihW1LmVIqK+vp6Ghgbq6uvU+R3+E6geAbSNi\nEvAMpQ8entClzTzgZOBe4GjgV5mZETEP+LeIuIDSBxW3BX7bDzUNGqM3CE7d+3186aAd+Pw1D/K7\np5dz15c+UuuyJEnSMNba2srYsWNpbGyk9DE2VZKZtLe309rayqRJk9b7PIVDdWauiojTgZspLak3\nJzMXRMQ3gebMnAf8CPj/I+JxSiPUx5WPXRARPwUeAVYBf72ulT+GmgTsy5IkaSCtWLHCQN1LEcH4\n8eMpOr24X9apzsybgJu6bPt6p8crgGMqHHsecF5/1DEYZSYblDt0RJDdTxmXJEnqVwbq3uuPn5V3\nVKyyNfnWpzEDSDO1JEnSsGOoHgj+pihJkgSUbuK3bNmyfj3nt7/97X493/owVFdRloelOyJ1OFIt\nSZLU3/oaqjOTNWsq309kfRiqq2htgHagWpIkDXYtT73IxXc8TstTL/bbOX/yk58wc+ZMpk2bxmc/\n+1lWr169zv0//OEP+dKXvtTR5sorr+SMM84A4PDDD2fGjBnsuOOOzJ49G4BzzjmH119/nWnTpnHi\niScCcMEFFzB16lSmTp3KhRdeCMDixYuZPHkyp512GrvuuitLliyhP/XLBxXVvbWD0lEeq45u73Uj\nSZJUPf/ffyzgkaUv99jmlRUrefR/X2FNwgYBO7x3LGPrK6/ZPGXLd/KNP9uxx3MuXLiQa6+9lnvu\nuYe6ujpOO+00rrrqqnXuP/roo9lzzz35h3/4BwCuvfZavvKVrwAwZ84cNt10U15//XV22203jjrq\nKGbNmsU///M/M3/+fABaWlq44ooruP/++8lMdt99d/bZZx/GjRvHokWLuOKKK7jkkkt69bPrC0N1\nFa2d/rFBOUtHvLVNkiRpsHh5xSrWlCPKmiw97ylU98btt99OS0sLu+22GwCvv/46m2+++Tr3T5gw\ngfe9733cd999bLvttixatIi99toLgB/84Adcf/31ACxZsoTHHnuM8ePHv+26d999N0cccQSbbLIJ\nAEceeSS/+c1vOPTQQ9lmm23YY489Cr2uSgzVVbTG6R+SJKnG1jWiDKWpHydefh8rV62hbvQGXHTc\ndGZsM67QdTOTk08+me985ztv237llVf2uB/g2GOP5ac//Sk77LADRxxxBBHBnXfeyW233ca9997L\nxhtvzL777tvtHSN7GsBcG7SrwTnVVbR2Teq1ax8GuEq1JEkadGZsM46rPrMHf3vA9lz1mT0KB2qA\nj370o8ydO5fnn38egBdeeIGnnnqqV/uPPPJIbrjhBq6++mqOPfZYAF566SXGjRvHxhtvzKOPPsp9\n993Xca66ujpWrlwJwN57780NN9zAa6+9xh//+Eeuv/56PvzhDxd+PeviSHUVOdNDkiQNFTO2Gdcv\nYXqtKVOm8K1vfYsDDjiANWvWUFdXx8UXX7zO/dtssw3jxo1jypQpPPLII8ycOROAgw46iEsvvZSd\n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\nHNvvAAAAAElFTkSuQmCC\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2927,6 +2927,959 @@ "source": [ "results.plot(y=['elevator', 'aileron', 'rudder', 'thrust'], **kwargs);" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Propagating only one time step" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [], + "source": [ + "dt = 0.05 # seconds\n", + "sim = Simulation(aircraft, system, environment, controls, dt)" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "time: 100%|█████████▉| 0.49999999999999994/0.5 [00:00<00:00, 4.02it/s]\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
FxFyFzMachMxMyMzTASaaileron...thrustuvv_downv_eastv_northwx_earthy_earthz_earth
time
0.051.716671e-112.641222e-162.182787e-110.1337562.459194e-14-1.360312e-118.035347e-1545.0336.4345812.492525e-18...0.57799744.871648.371463e-161.332268e-1521.57414939.4912153.39646411-1000
0.101.739409e-111.000965e-152.364686e-110.1337561.976768e-14-1.164692e-117.251039e-1545.0336.4345812.492525e-18...0.57799744.871648.369266e-162.664535e-1521.57414939.4912153.39646432-1000
0.151.739409e-112.337016e-152.728484e-110.1337561.678983e-14-9.240578e-126.009923e-1645.0336.4345812.492525e-18...0.57799744.871648.365954e-163.552714e-1521.57414939.4912153.39646453-1000
0.201.762146e-113.932746e-152.910383e-110.1337561.365093e-14-6.789590e-121.213662e-1445.0336.4345812.492525e-18...0.57799744.871648.357530e-164.884981e-1521.57414939.4912153.39646474-1000
0.251.762146e-115.945782e-153.637979e-110.1337561.163916e-14-5.474300e-121.650906e-1445.0336.4345812.492525e-18...0.57799744.871648.346854e-166.661338e-1521.57414939.4912153.39646495-1000
0.301.807621e-118.315261e-154.001777e-110.1337561.020804e-14-3.640737e-122.051842e-1445.0336.4345812.492525e-18...0.57799744.871648.330276e-167.993606e-1521.57414939.4912153.396464116-1000
0.351.841727e-111.098849e-144.365575e-110.1337569.148544e-15-2.045869e-121.306538e-1445.0336.4345812.492525e-18...0.57799744.871648.307814e-169.769963e-1521.57414939.4912153.396464137-1000
0.401.875833e-111.383942e-144.729372e-110.1337567.977795e-15-1.049373e-127.766174e-1545.0336.4345812.492525e-18...0.57799744.871648.281022e-161.199041e-1421.57414939.4912153.396464158-1000
0.451.887202e-111.687040e-145.275069e-110.1337567.010262e-151.565743e-131.094014e-1445.0336.4345812.492525e-18...0.57799744.871648.252482e-161.421085e-1421.57414939.4912153.396464179-1000
0.501.944045e-112.009447e-145.456968e-110.1337566.310511e-158.749163e-131.579341e-1445.0336.4345812.492525e-18...0.57799744.871648.221523e-161.643130e-1421.57414939.4912153.3964641910-1000
\n", + "

10 rows × 35 columns

\n", + "
" + ], + "text/plain": [ + " Fx Fy Fz Mach Mx \\\n", + "time \n", + "0.05 1.716671e-11 2.641222e-16 2.182787e-11 0.133756 2.459194e-14 \n", + "0.10 1.739409e-11 1.000965e-15 2.364686e-11 0.133756 1.976768e-14 \n", + "0.15 1.739409e-11 2.337016e-15 2.728484e-11 0.133756 1.678983e-14 \n", + "0.20 1.762146e-11 3.932746e-15 2.910383e-11 0.133756 1.365093e-14 \n", + "0.25 1.762146e-11 5.945782e-15 3.637979e-11 0.133756 1.163916e-14 \n", + "0.30 1.807621e-11 8.315261e-15 4.001777e-11 0.133756 1.020804e-14 \n", + "0.35 1.841727e-11 1.098849e-14 4.365575e-11 0.133756 9.148544e-15 \n", + "0.40 1.875833e-11 1.383942e-14 4.729372e-11 0.133756 7.977795e-15 \n", + "0.45 1.887202e-11 1.687040e-14 5.275069e-11 0.133756 7.010262e-15 \n", + "0.50 1.944045e-11 2.009447e-14 5.456968e-11 0.133756 6.310511e-15 \n", + "\n", + " My Mz TAS a aileron ... \\\n", + "time ... \n", + "0.05 -1.360312e-11 8.035347e-15 45.0 336.434581 2.492525e-18 ... \n", + "0.10 -1.164692e-11 7.251039e-15 45.0 336.434581 2.492525e-18 ... \n", + "0.15 -9.240578e-12 6.009923e-16 45.0 336.434581 2.492525e-18 ... \n", + "0.20 -6.789590e-12 1.213662e-14 45.0 336.434581 2.492525e-18 ... \n", + "0.25 -5.474300e-12 1.650906e-14 45.0 336.434581 2.492525e-18 ... \n", + "0.30 -3.640737e-12 2.051842e-14 45.0 336.434581 2.492525e-18 ... \n", + "0.35 -2.045869e-12 1.306538e-14 45.0 336.434581 2.492525e-18 ... \n", + "0.40 -1.049373e-12 7.766174e-15 45.0 336.434581 2.492525e-18 ... \n", + "0.45 1.565743e-13 1.094014e-14 45.0 336.434581 2.492525e-18 ... \n", + "0.50 8.749163e-13 1.579341e-14 45.0 336.434581 2.492525e-18 ... \n", + "\n", + " thrust u v v_down v_east v_north \\\n", + "time \n", + "0.05 0.577997 44.87164 8.371463e-16 1.332268e-15 21.574149 39.491215 \n", + "0.10 0.577997 44.87164 8.369266e-16 2.664535e-15 21.574149 39.491215 \n", + "0.15 0.577997 44.87164 8.365954e-16 3.552714e-15 21.574149 39.491215 \n", + "0.20 0.577997 44.87164 8.357530e-16 4.884981e-15 21.574149 39.491215 \n", + "0.25 0.577997 44.87164 8.346854e-16 6.661338e-15 21.574149 39.491215 \n", + "0.30 0.577997 44.87164 8.330276e-16 7.993606e-15 21.574149 39.491215 \n", + "0.35 0.577997 44.87164 8.307814e-16 9.769963e-15 21.574149 39.491215 \n", + "0.40 0.577997 44.87164 8.281022e-16 1.199041e-14 21.574149 39.491215 \n", + "0.45 0.577997 44.87164 8.252482e-16 1.421085e-14 21.574149 39.491215 \n", + "0.50 0.577997 44.87164 8.221523e-16 1.643130e-14 21.574149 39.491215 \n", + "\n", + " w x_earth y_earth z_earth \n", + "time \n", + "0.05 3.396464 1 1 -1000 \n", + "0.10 3.396464 3 2 -1000 \n", + "0.15 3.396464 5 3 -1000 \n", + "0.20 3.396464 7 4 -1000 \n", + "0.25 3.396464 9 5 -1000 \n", + "0.30 3.396464 11 6 -1000 \n", + "0.35 3.396464 13 7 -1000 \n", + "0.40 3.396464 15 8 -1000 \n", + "0.45 3.396464 17 9 -1000 \n", + "0.50 3.396464 19 10 -1000 \n", + "\n", + "[10 rows x 35 columns]" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results = sim.propagate(0.5)\n", + "results" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can propagate for one time step even once the simulation has been propagated before:" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "time: 100%|██████████| 0.55/0.55 [00:00<00:00, 73.33it/s]\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
FxFyFzMachMxMyMzTASaaileron...thrustuvv_downv_eastv_northwx_earthy_earthz_earth
time
0.051.716671e-112.641222e-162.182787e-110.1337562.459194e-14-1.360312e-118.035347e-1545.0336.4345812.492525e-18...0.57799744.871648.371463e-161.332268e-1521.57414939.4912153.39646411-1000
0.101.739409e-111.000965e-152.364686e-110.1337561.976768e-14-1.164692e-117.251039e-1545.0336.4345812.492525e-18...0.57799744.871648.369266e-162.664535e-1521.57414939.4912153.39646432-1000
0.151.739409e-112.337016e-152.728484e-110.1337561.678983e-14-9.240578e-126.009923e-1645.0336.4345812.492525e-18...0.57799744.871648.365954e-163.552714e-1521.57414939.4912153.39646453-1000
0.201.762146e-113.932746e-152.910383e-110.1337561.365093e-14-6.789590e-121.213662e-1445.0336.4345812.492525e-18...0.57799744.871648.357530e-164.884981e-1521.57414939.4912153.39646474-1000
0.251.762146e-115.945782e-153.637979e-110.1337561.163916e-14-5.474300e-121.650906e-1445.0336.4345812.492525e-18...0.57799744.871648.346854e-166.661338e-1521.57414939.4912153.39646495-1000
0.301.807621e-118.315261e-154.001777e-110.1337561.020804e-14-3.640737e-122.051842e-1445.0336.4345812.492525e-18...0.57799744.871648.330276e-167.993606e-1521.57414939.4912153.396464116-1000
0.351.841727e-111.098849e-144.365575e-110.1337569.148544e-15-2.045869e-121.306538e-1445.0336.4345812.492525e-18...0.57799744.871648.307814e-169.769963e-1521.57414939.4912153.396464137-1000
0.401.875833e-111.383942e-144.729372e-110.1337567.977795e-15-1.049373e-127.766174e-1545.0336.4345812.492525e-18...0.57799744.871648.281022e-161.199041e-1421.57414939.4912153.396464158-1000
0.451.887202e-111.687040e-145.275069e-110.1337567.010262e-151.565743e-131.094014e-1445.0336.4345812.492525e-18...0.57799744.871648.252482e-161.421085e-1421.57414939.4912153.396464179-1000
0.501.944045e-112.009447e-145.456968e-110.1337566.310511e-158.749163e-131.579341e-1445.0336.4345812.492525e-18...0.57799744.871648.221523e-161.643130e-1421.57414939.4912153.3964641910-1000
0.551.978151e-112.349783e-145.820766e-110.1337565.781185e-151.472049e-124.463381e-1545.0336.4345812.492525e-18...0.57799744.871648.187520e-161.909584e-1421.57414939.4912153.3964642111-1000
\n", + "

11 rows × 35 columns

\n", + "
" + ], + "text/plain": [ + " Fx Fy Fz Mach Mx \\\n", + "time \n", + "0.05 1.716671e-11 2.641222e-16 2.182787e-11 0.133756 2.459194e-14 \n", + "0.10 1.739409e-11 1.000965e-15 2.364686e-11 0.133756 1.976768e-14 \n", + "0.15 1.739409e-11 2.337016e-15 2.728484e-11 0.133756 1.678983e-14 \n", + "0.20 1.762146e-11 3.932746e-15 2.910383e-11 0.133756 1.365093e-14 \n", + "0.25 1.762146e-11 5.945782e-15 3.637979e-11 0.133756 1.163916e-14 \n", + "0.30 1.807621e-11 8.315261e-15 4.001777e-11 0.133756 1.020804e-14 \n", + "0.35 1.841727e-11 1.098849e-14 4.365575e-11 0.133756 9.148544e-15 \n", + "0.40 1.875833e-11 1.383942e-14 4.729372e-11 0.133756 7.977795e-15 \n", + "0.45 1.887202e-11 1.687040e-14 5.275069e-11 0.133756 7.010262e-15 \n", + "0.50 1.944045e-11 2.009447e-14 5.456968e-11 0.133756 6.310511e-15 \n", + "0.55 1.978151e-11 2.349783e-14 5.820766e-11 0.133756 5.781185e-15 \n", + "\n", + " My Mz TAS a aileron ... \\\n", + "time ... \n", + "0.05 -1.360312e-11 8.035347e-15 45.0 336.434581 2.492525e-18 ... \n", + "0.10 -1.164692e-11 7.251039e-15 45.0 336.434581 2.492525e-18 ... \n", + "0.15 -9.240578e-12 6.009923e-16 45.0 336.434581 2.492525e-18 ... \n", + "0.20 -6.789590e-12 1.213662e-14 45.0 336.434581 2.492525e-18 ... \n", + "0.25 -5.474300e-12 1.650906e-14 45.0 336.434581 2.492525e-18 ... \n", + "0.30 -3.640737e-12 2.051842e-14 45.0 336.434581 2.492525e-18 ... \n", + "0.35 -2.045869e-12 1.306538e-14 45.0 336.434581 2.492525e-18 ... \n", + "0.40 -1.049373e-12 7.766174e-15 45.0 336.434581 2.492525e-18 ... \n", + "0.45 1.565743e-13 1.094014e-14 45.0 336.434581 2.492525e-18 ... \n", + "0.50 8.749163e-13 1.579341e-14 45.0 336.434581 2.492525e-18 ... \n", + "0.55 1.472049e-12 4.463381e-15 45.0 336.434581 2.492525e-18 ... \n", + "\n", + " thrust u v v_down v_east v_north \\\n", + "time \n", + "0.05 0.577997 44.87164 8.371463e-16 1.332268e-15 21.574149 39.491215 \n", + "0.10 0.577997 44.87164 8.369266e-16 2.664535e-15 21.574149 39.491215 \n", + "0.15 0.577997 44.87164 8.365954e-16 3.552714e-15 21.574149 39.491215 \n", + "0.20 0.577997 44.87164 8.357530e-16 4.884981e-15 21.574149 39.491215 \n", + "0.25 0.577997 44.87164 8.346854e-16 6.661338e-15 21.574149 39.491215 \n", + "0.30 0.577997 44.87164 8.330276e-16 7.993606e-15 21.574149 39.491215 \n", + "0.35 0.577997 44.87164 8.307814e-16 9.769963e-15 21.574149 39.491215 \n", + "0.40 0.577997 44.87164 8.281022e-16 1.199041e-14 21.574149 39.491215 \n", + "0.45 0.577997 44.87164 8.252482e-16 1.421085e-14 21.574149 39.491215 \n", + "0.50 0.577997 44.87164 8.221523e-16 1.643130e-14 21.574149 39.491215 \n", + "0.55 0.577997 44.87164 8.187520e-16 1.909584e-14 21.574149 39.491215 \n", + "\n", + " w x_earth y_earth z_earth \n", + "time \n", + "0.05 3.396464 1 1 -1000 \n", + "0.10 3.396464 3 2 -1000 \n", + "0.15 3.396464 5 3 -1000 \n", + "0.20 3.396464 7 4 -1000 \n", + "0.25 3.396464 9 5 -1000 \n", + "0.30 3.396464 11 6 -1000 \n", + "0.35 3.396464 13 7 -1000 \n", + "0.40 3.396464 15 8 -1000 \n", + "0.45 3.396464 17 9 -1000 \n", + "0.50 3.396464 19 10 -1000 \n", + "0.55 3.396464 21 11 -1000 \n", + "\n", + "[11 rows x 35 columns]" + ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results = sim.propagate(sim.time+dt)\n", + "results" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Notice that `results` will include the previous timesteps as well as the last one. To get just the last one one can use pandas `loc` or `iloc`:" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Fx 1.978151e-11\n", + "Fy 2.349783e-14\n", + "Fz 5.820766e-11\n", + "Mach 1.337556e-01\n", + "Mx 5.781185e-15\n", + "My 1.472049e-12\n", + "Mz 4.463381e-15\n", + "TAS 4.500000e+01\n", + "a 3.364346e+02\n", + "aileron 2.492525e-18\n", + "alpha 7.554882e-02\n", + "beta 1.819449e-17\n", + "elevator -4.895112e-02\n", + "height 1.000000e+03\n", + "p 5.629520e-18\n", + "phi 2.023926e-18\n", + "pressure 8.987627e+04\n", + "psi 5.000000e-01\n", + "q -1.670347e-15\n", + "q_inf 1.125555e+03\n", + "r 2.473422e-18\n", + "rho 1.111660e+00\n", + "rudder -1.036751e-17\n", + "temperature 2.816510e+02\n", + "theta 7.554882e-02\n", + "thrust 5.779967e-01\n", + "u 4.487164e+01\n", + "v 8.187520e-16\n", + "v_down 1.909584e-14\n", + "v_east 2.157415e+01\n", + "v_north 3.949122e+01\n", + "w 3.396464e+00\n", + "x_earth 2.100000e+01\n", + "y_earth 1.100000e+01\n", + "z_earth -1.000000e+03\n", + "Name: 0.55, dtype: float64" + ] + }, + "execution_count": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results.iloc[-1] # last time step" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Fx 1.978151e-11\n", + "Fy 2.349783e-14\n", + "Fz 5.820766e-11\n", + "Mach 1.337556e-01\n", + "Mx 5.781185e-15\n", + "My 1.472049e-12\n", + "Mz 4.463381e-15\n", + "TAS 4.500000e+01\n", + "a 3.364346e+02\n", + "aileron 2.492525e-18\n", + "alpha 7.554882e-02\n", + "beta 1.819449e-17\n", + "elevator -4.895112e-02\n", + "height 1.000000e+03\n", + "p 5.629520e-18\n", + "phi 2.023926e-18\n", + "pressure 8.987627e+04\n", + "psi 5.000000e-01\n", + "q -1.670347e-15\n", + "q_inf 1.125555e+03\n", + "r 2.473422e-18\n", + "rho 1.111660e+00\n", + "rudder -1.036751e-17\n", + "temperature 2.816510e+02\n", + "theta 7.554882e-02\n", + "thrust 5.779967e-01\n", + "u 4.487164e+01\n", + "v 8.187520e-16\n", + "v_down 1.909584e-14\n", + "v_east 2.157415e+01\n", + "v_north 3.949122e+01\n", + "w 3.396464e+00\n", + "x_earth 2.100000e+01\n", + "y_earth 1.100000e+01\n", + "z_earth -1.000000e+03\n", + "Name: 0.55, dtype: float64" + ] + }, + "execution_count": 56, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results.loc[sim.time] # results for current simulation time" + ] } ], "metadata": {