Skip to content

Commit

Permalink
Merge branch 'rc-1.1.1'
Browse files Browse the repository at this point in the history
  • Loading branch information
ngoiz committed Feb 3, 2020
2 parents df0fd10 + 4c96894 commit 14fbc44
Show file tree
Hide file tree
Showing 85 changed files with 2,418 additions and 2,744 deletions.
2 changes: 1 addition & 1 deletion .version.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"schemaVersion": 1,
"label": "release version",
"message": "1.1",
"message": "1.1.1",
"color": "green"
}
23 changes: 21 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,27 @@
# Changelog

## [1.1](https://github.com/imperialcollegelondon/sharpy/tree/1.1) (2019-12-12)
## [1.1.1](https://github.com/imperialcollegelondon/sharpy/tree/1.1.1) (2020-01-29)

[Full Changelog](https://github.com/imperialcollegelondon/sharpy/compare/v1.0.1...1.1)
[Full Changelog](https://github.com/imperialcollegelondon/sharpy/compare/v1.1.0-2...1.1.1)

**Implemented enhancements:**

- User-defined aerodynamic airfoil efficiency factor and constant force terms [\#59](https://github.com/ImperialCollegeLondon/sharpy/pull/59) ([ngoiz](https://github.com/ngoiz))

**Merged pull requests:**

- Documentation Improvements [\#66](https://github.com/ImperialCollegeLondon/sharpy/pull/66) ([ngoiz](https://github.com/ngoiz))
- Minor fixes and general code clean up of linear modules [\#65](https://github.com/ImperialCollegeLondon/sharpy/pull/65) ([ngoiz](https://github.com/ngoiz))
- Error log file created when program encounters exceptions [\#64](https://github.com/ImperialCollegeLondon/sharpy/pull/64) ([ngoiz](https://github.com/ngoiz))
- Clean up linear SHARPy's interface with UVLM [\#60](https://github.com/ImperialCollegeLondon/sharpy/pull/60) ([ngoiz](https://github.com/ngoiz))

## [v1.1.0-2](https://github.com/imperialcollegelondon/sharpy/tree/v1.1.0-2) (2019-12-12)

[Full Changelog](https://github.com/imperialcollegelondon/sharpy/compare/v1.1.0...v1.1.0-2)

## [v1.1.0](https://github.com/imperialcollegelondon/sharpy/tree/v1.1.0) (2019-12-12)

[Full Changelog](https://github.com/imperialcollegelondon/sharpy/compare/v1.0.1...v1.1.0)

**Implemented enhancements:**

Expand Down
61 changes: 40 additions & 21 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# Simulation of High Aspect Ratio aeroplanes in Python [SHARPy]

![Version badge](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Fraw.githubusercontent.com%2FImperialCollegeLondon%2Fsharpy%2Fmaster%2F.version.json)
[![Build Status](https://travis-ci.org/ImperialCollegeLondon/sharpy.svg?branch=master)](https://travis-ci.org/ImperialCollegeLondon/sharpy)
[![Build Status](https://travis-ci.org/ImperialCollegeLondon/sharpy.svg?branch=master)](https://travis-ci.org/ImperialCollegeLondon/sharpy)
[![Documentation Status](https://readthedocs.org/projects/ic-sharpy/badge/?version=master)](https://ic-sharpy.readthedocs.io/en/master/?badge=master)
[![codecov](https://codecov.io/gh/ImperialCollegeLondon/sharpy/branch/master/graph/badge.svg)](https://codecov.io/gh/ImperialCollegeLondon/sharpy)
[![License](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause)
[![License](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause)
[![status](https://joss.theoj.org/papers/f7ccd562160f1a54f64a81e90f5d9af9/status.svg)](https://joss.theoj.org/papers/f7ccd562160f1a54f64a81e90f5d9af9)
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.3531965.svg)](https://doi.org/10.5281/zenodo.3531965)

Expand All @@ -14,9 +14,10 @@ wings and wind turbines.

![XHALE](./docs/source/_static/XHALE-render.jpg)

### Contact
### Contact

For more information on the [research team](http://www.imperial.ac.uk/aeroelastics/people/) developing SHARPy or to get in touch, [visit our homepage](http://www.imperial.ac.uk/aeroelastics).
For more information on the [research team](http://www.imperial.ac.uk/aeroelastics/people/) developing SHARPy or to get
in touch, [visit our homepage](http://www.imperial.ac.uk/aeroelastics).

## Physical Models

Expand All @@ -30,14 +31,14 @@ the analyses that can be done by SHARPy to slender structures, such as high aspe

The aerodynamic model utilises the Unsteady Vortex Lattice Method (UVLM). The aerodynamic surfaces are modelled as a thin
vortex ring lattice with the boundary conditions enforced at the collocation points in the middle of the vortex rings.
The Kutta condition is also enforced at the trailing edge. The wake can be simulated by either additional vortex rings
The Kutta condition is also enforced at the trailing edge. The wake can be simulated by either additional vortex rings
or by infinitely long horseshoe vortices, which are ideally suited for steady simulations only.

The input problems can be structural, aerodynamic or coupled, yielding an aeroelastic system.

## [Capabilities](http://ic-sharpy.readthedocs.io/en/latest/content/capabilities.html)

At its core, SHARPy is a nonlinear aeroelastic analysis package that can be used on both free-flying aircraft,
At its core, SHARPy is a nonlinear aeroelastic analysis package that can be used on both free-flying aircraft,
clamped structures and wind turbines. In addition, it supports linearisation of these nonlinear systems about
arbitrary conditions and includes various tools such as: model reduction or frequency analysis.

Expand All @@ -51,54 +52,72 @@ In short, SHARPy offers (amongst others) the following solutions to the user:
+ Control inputs in thrust, control surface deflection...
+ Arbitrary time-domain gusts, including non span-constant ones.
+ Full 3D turbulent fields.
* Multibody dynamics with hinges, articulations and prescribed nodal motions.
* Multibody dynamics with hinges, articulations and prescribed nodal motions:
+ Applicable to wind turbines.
+ Hinged aircraft.
+ Catapult assisted takeoffs.
* Linear analysis
* Linear analysis:
+ Linearisation around a nonlinear equilibrium.
+ Frequency response analysis.
+ Asymptotic stability analysis.
* Model order reduction
* Model order reduction:
+ Krylov-subspace reduction methods.
+ Balancing reduction methods.

## Documentation

The documentation for SHARPy can be found [here](http://ic-sharpy.readthedocs.io).

## Installing SHARPy

For the latest documentation, see the [installation docs](https://ic-sharpy.readthedocs.io/en/latest/content/installation.html)
For the latest documentation, see the
[installation docs](https://ic-sharpy.readthedocs.io/en/latest/content/installation.html).

As of version v1.0.1, SHARPy can also be obtained from Docker Hub to avoid compilation
and platform-dependant issues. If you are interested, make sure you check
the [SHARPy Docker distribution docs](https://ic-sharpy.readthedocs.io/en/latest/content/installation.html#using-sharpy-from-a-docker-container).

## Contributing and Bug reports

If you think you can add some useful feature to SHARPy or you encounter a bug, by all means, check out
the [collaboration guide](https://ic-sharpy.readthedocs.io/en/latest/content/contributing.html).
If you think you can add a useful feature to SHARPy, want to write documentation or you encounter a bug, by all means,
check out the [collaboration guide](https://ic-sharpy.readthedocs.io/en/latest/content/contributing.html).

## Citing SHARPy

SHARPy is archived in Zenodo. If you need to cite it, use this:
SHARPy has been published in the Journal of Open Source Software (JOSS) and the relevant paper can be found
[here](https://joss.theoj.org/papers/10.21105/joss.01885).

[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.3531965.svg)](https://doi.org/10.5281/zenodo.3531965)
If you are using SHARPy for your work, please remember to cite it using the paper in JOSS as:

`del Carre et al., (2019). SHARPy: A dynamic aeroelastic simulation toolbox for very flexible aircraft and wind
turbines. Journal of Open Source Software, 4(44), 1885, https://doi.org/10.21105/joss.01885`

This DOI which represents all the versions of the given software package, i.e. the concept of
the software package and the ensemble of versions. In Zenodo you can find the DOI of a specific version.
The bibtex entry for this citation is:

```
@Article{delCarre2019,
doi = {10.21105/joss.01885},
url = {https://doi.org/10.21105/joss.01885},
year = {2019},
month = dec,
publisher = {The Open Journal},
volume = {4},
number = {44},
pages = {1885},
author = {Alfonso del Carre and Arturo Mu{\~{n}}oz-Sim\'on and Norberto Goizueta and Rafael Palacios},
title = {{SHARPy}: A dynamic aeroelastic simulation toolbox for very flexible aircraft and wind turbines},
journal = {Journal of Open Source Software}
}
```

For more information on citing and Zenodo, [read more](https://help.zenodo.org/#versioning)

## Continuous Integration Status

SHARPy uses Continuous Integration to control the integrity of its code. The status in the release and develop branches
is:

Master
[![Build Status](https://travis-ci.org/ImperialCollegeLondon/sharpy.svg?branch=master)](https://travis-ci.org/ImperialCollegeLondon/sharpy)
Master
[![Build Status](https://travis-ci.org/ImperialCollegeLondon/sharpy.svg?branch=master)](https://travis-ci.org/ImperialCollegeLondon/sharpy)

Develop
[![Build Status](https://travis-ci.org/ImperialCollegeLondon/sharpy.svg?branch=develop)](https://travis-ci.org/ImperialCollegeLondon/sharpy)

9 changes: 5 additions & 4 deletions cases/hangar/richards_wing.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
"""
Simple Horten Wing as used by Richards. Baseline and simplified models
Richards, P. W., Yao, Y., Herd, R. A., Hodges, D. H., & Mardanpour, P. (2016). Effect of Inertial and Constitutive
Properties on Body-Freedom Flutter for Flying Wings. Journal of Aircraft. https://doi.org/10.2514/1.C033435
"""
import numpy as np
from cases.hangar.horten_wing import HortenWing
Expand Down Expand Up @@ -49,10 +51,9 @@ def set_properties(self):
self.fsi_tolerance = 1e-10
self.relaxation_factor = 0.2


def update_mass_stiffness(self, sigma=1., sigma_mass=1.):
def update_mass_stiffness(self, sigma=1., sigma_mass=1., payload=0):
"""
Set's the mass and stiffness properties of the default wing
Sets the mass and stiffness properties of the default wing
Returns:
Expand Down Expand Up @@ -187,7 +188,7 @@ def update_mass_stiffness(self, sigma=1., sigma_mass=1.):

# Lumped mass value from Richards 2013
lumped_mass[0:2] = 51.445 / 9.81
lumped_mass[2] = 150 / 9.81
lumped_mass[2] = 150 / 9.81 + payload
# lumped_mass_position[2] = [0, 0, -10.]

# Lumped mass inertia
Expand Down
7 changes: 5 additions & 2 deletions cases/templates/flying_wings.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ class FlyingWing():
RollNodes=False : If true, the wing nodes are rolled insted of the FoR A
Usage:
ws=flying_wings.FltingWing(*args)
ws=flying_wings.FlyingWing(*args)
ws.clean_test_files()
ws.update_derived_params()
ws.generate_fem_file()
Expand Down Expand Up @@ -647,7 +647,7 @@ def set_default_config_dict(self):
# print('config dictionary set-up with flow:')
# print(config['SHARPy']['flow'])

def generate_aero_file(self):
def generate_aero_file(self, airfoil_efficiency=None):

with h5.File(self.route + '/' + self.case_name + '.aero.h5', 'a') as h5file:
airfoils_group = h5file.create_group('airfoils')
Expand Down Expand Up @@ -682,6 +682,9 @@ def generate_aero_file(self):
'control_surface_deflection', data=self.control_surface_deflection)
control_surface_chord_input = h5file.create_dataset(
'control_surface_chord', data=self.control_surface_chord)
if airfoil_efficiency is not None:
a_eff_handle = h5file.create_dataset(
'airfoil_efficiency', data=airfoil_efficiency)

def generate_fem_file(self):

Expand Down
6 changes: 4 additions & 2 deletions docs/docignore.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,12 @@ modules:
- 'sharpy/postproc'
- 'sharpy/solvers'
- 'sharpy/linear/dev'
- 'sharpy/aero/utils'
- 'sharpy/linear/src/uvlmutils.py'
- 'sharpy/aero/utils/uvlmlib.py'
- 'sharpy/aero/utils/utils.py'
- 'sharpy/utils/plot_utils.py'
- 'sharpy/utils/solver_interface.py'
- 'sharpy/linear/test'
# - 'sharpy/generators'
- 'sharpy/presharpy'
- 'sharpy/lib'
- 'sharpy/lib'
9 changes: 5 additions & 4 deletions docs/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,17 +73,17 @@

# General information about the project.
project = 'SHARPy'
copyright = '2019, LoCA Lab ICL'
copyright = '2020, LoCA Lab ICL'
author = 'Aeroelastics Lab, Imperial College London'

# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
version = '1.0'
version = '1.1.1'
# The full version, including alpha/beta/rc tags.
release = '1.0.1'
release = '1.1.1'

# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
Expand Down Expand Up @@ -154,9 +154,10 @@
"pandas",
"lxml",
'mpl_toolkits',
'sharpy.aero.utils',
# 'sharpy.aero.utils',
'yaml',
'sharpy.aero.utils.uvlmlib',
'sharpy.linear.src.uvlmutils',
'sharpy.structure.utils.xbeamlib']
# "interp", "multisurfaces", "assembly", "libss",]

Expand Down
10 changes: 10 additions & 0 deletions docs/source/content/casefiles.rst
Original file line number Diff line number Diff line change
Expand Up @@ -300,3 +300,13 @@ Item by item:

Only necessary for lifting surfaces that are deflected as a
whole, like some horizontal tails in some aircraft. Leave it at ``0`` if you are not modelling this.

* ``airfoil_efficiency [num_elem, num_node_elem, 2, 3]``: Airfoil efficiency.

This is an optional setting that introduces a user-defined efficiency and constant terms to the mapping
between the aerodynamic forces calculated at the lattice grid and the structural nodes. The formatting of the
4-dimensional array is simple. The first two dimensions correspond to the element index and the local node index.
The third index is whether the term is the multiplier to the force ``0`` or a constant term ``1``. The final term refers to,
in the **local, body-attached** ``B`` frame, the factors and constant terms for: ``fy, fz, mx``.
For more information on how these factors are included in the mapping terms
see :func:`sharpy.aero.utils.mapping.aero2struct_force_mapping`.
Loading

0 comments on commit 14fbc44

Please sign in to comment.