Composipy
What it is
Composipy is a Python-based library designed to address the challenges of composite plate analysis and optimization in the aerospace industry. The library offers tools for laminate stress-strain, plate buckling analysis and lamination parameter optimization, helping engineers during the design process. Utilizing object-oriented programming and native Python structures, Composipy ensures a intuitive workflow and easy integration into existing engineering practices, such as defining material, defining properties, so on.
The library is built using the most powerful Python numerical libraries, so users can think of using Composipy in the same way as Pandas, NumPy, and SciPy. In fact, Composipy is built using their objects and structures.
It is especially useful for leveraging the data-driven culture in companies and can be used to build response surfaces, generate samples, and much more. Refer to the Composipy Examples
Main features
- ABD Matrix
- Laminate Stress and Strain
- Lamination Parameters
- Plate Buckling
- Plate Buckling Optimization
- Plate Strain Optimization
- Principal Strain Analysis at Midplane
How to install
Directly From PYPI
pip install composipy
Built from source
python setup.py install
Quick start
Create the Material Properties.
from composipy import OrthotropicMaterial
E1 = 60800
E2 = 58250
v12 = 0.07
G12 = 4550
t = 0.21
mat_1 = OrthotropicMaterial(E1, E2, v12, G12, t)
See OrthotropicMaterial for reference.
Define the Laminate.
from composipy import LaminateProperty
#[Ply1 --------------------------- PlyN]
#[BOTTOM ------------------------ TOP]
stacking = [-45, 45, 90, 0, 0, 0, 0, 90, 45, -45]
laminate1 = LaminateProperty(stacking, mat_1)
See LaminateProperty for reference.
Calculate Stiffnnes Matrix and Lamination Parameters
print(laminate1.ABD) # prints the ABD matrix as a np.ndarray
print(laminate1.xiA) # prints lamination parameters of extension as a np.ndarray
print(laminate1.xiD) # prints lamination parameters of bending as a np.ndarray
Create a Laminate Strength Analysis.
from composipy import LaminateStrength
laminate_strength = LaminateStrength(laminate1, Nxx=100, Mxx=10)
laminate_strength.epsilon0() #strains at the midplane
laminate_strength.calculate_strain() #strain ply by ply
laminate_strength.calculate_strain() #stress ply by ply
See LaminateStrength for reference.
Also, check the Stress Strain Calculation of a Laminate to see a complete example.
Create a Plate Structure for Buckling Analysis
from composipy import PlateStructure
constraints = {
'x0' : 'pinned',
'xa' : 'pinned',
'y0' : 'free',
'yb' : 'pinned'
}
# Edges among 'x0', 'xa', 'y0', 'yb' can be 'clamped', 'pinned' or 'free'.
panel = PlateStructure(laminate1, 360, 360, m=10, n=10, Nxx=-1, constraints=constraints)
See PlateStructure for reference.
Calculate Buckling
print(panel.buckling_analysis()) # solve the eigenvalue problem.
Plot Buckling shape mode
print(panel.plot_eigenvalue())
Composipy is able to perform buckling calculation considering different boundary conditions and in-plane load applications. Check the Critical Buckling Examples With Varying Boundary Conditions to see a complete example.
If you are interesting in plate optimization, you may want to check the Optimization of a Plate Subjected to Buckling Loads
Theoretical References
The implementation of composipy is based on the following reference:
- SILVA, Rafael Pereira da. Composite Plate optimization combining semi-analytical model, Lamination Parameters and a Gradient-Based Optimizer. 2023. 82f. Dissertation of Master of Science – Instituto Tecnológico de Aeronáutica, São José dos Campos.
- rafaelpsilva07. (2024). rafaelpsilva07/rafaelmscdissertation: v1.0.0 (1.0.0). Zenodo. https://doi.org/10.5281/zenodo.10546621
- Application repository: https://github.com/rafaelpsilva07/rafaelmscdissertation
Changelog
1.7.0
- Added
LaminateStrength.midplane_principal_strains(): returns maximum principal strain, minimum principal strain, and maximum shear strain at the laminate midplane using Mohr's circle. - Added
minimize_panel_weight_strain(): new optimization function that minimizes panel weight (objective: T) subject to a minimum principal midplane strain constraint (typical allowable: −3500 microstrain). Addresses the strain failure mode independently from buckling. Available viacomposipy.optimize.
1.6.0 and earlier
- See commit history on GitHub.
Metadata
Release files for composipy 1.7.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| composipy-1.7.0.tar.gz | 289.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| composipy-1.7.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 580.2 kB
Release files / composipy-1.7.0.tar.gz
| Download URL | composipy-1.7.0.tar.gz |
|---|---|
| Size | 289.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
caf69be2e083c1f89de11d2e1ca7b105de37455274ae53987b83cf2605825e50
|
|
BLAKE2b-256 checksum How to use checksums |
8c7118ddebb086f4868210a6b70e3d4677e87c99512f613d8558c9bf81e7d228
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.25
|
Release files / composipy-1.7.0-py3-none-any.whl
| Download URL | composipy-1.7.0-py3-none-any.whl |
|---|---|
| Size | 290.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1790b41a96c775e46ec1f0438d55a3a54684c1040444cdebd7f88f6f6a9ccd17
|
|
BLAKE2b-256 checksum How to use checksums |
164d382a513fc719dd056320a629f2564cae9f3011e072a63e874e95371fbeb0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.25
|