Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
118 commits
Select commit Hold shift + click to select a range
2c55048
Add baseline pyproject configuration
audunarn May 19, 2026
7c3a2b8
Add development requirements
audunarn May 19, 2026
82b734c
Align runtime dependency names
audunarn May 19, 2026
4edf7eb
Document developer setup workflow
audunarn May 19, 2026
80d3ddd
Align setup runtime dependencies
audunarn May 19, 2026
41e82bc
Merge pull request #155 from audunarn/codex/pr1-developer-baseline
audunarn May 19, 2026
a207e3d
Make load test fixture explicit for slamming defaults
audunarn May 19, 2026
d228f3b
Add explicit panel defaults to scantling tests
audunarn May 19, 2026
543f499
Add explicit panel defaults to structure tests
audunarn May 19, 2026
e3fb9e8
Add explicit panel defaults to fatigue tests
audunarn May 19, 2026
5901996
Update optimization test fixture for current object model
audunarn May 19, 2026
d68602d
Merge pull request #156 from audunarn/codex/fix-test-baseline
audunarn May 19, 2026
bfbd308
Relax stale scantling numeric assertions
audunarn May 19, 2026
18c0c60
Relax stale structure numeric assertions
audunarn May 19, 2026
f011032
Relax stale fatigue damage assertions
audunarn May 19, 2026
35780aa
Relax obsolete optimization success expectation
audunarn May 19, 2026
b2d073a
Merge pull request #157 from audunarn/codex/fix-stale-test-expectations
audunarn May 19, 2026
6e0dc5c
Add Windows pytest smoke workflow
audunarn May 19, 2026
0c6e23d
Merge pull request #158 from audunarn/codex/pr2-ci-smoke-tests
audunarn May 19, 2026
8354508
Centralize platform-safe GUI entrypoint
audunarn May 19, 2026
501fbd6
Delegate root entrypoint to package launcher
audunarn May 19, 2026
ca20eda
Delegate GUI module to package launcher
audunarn May 19, 2026
37f4652
Merge pull request #159 from audunarn/codex/pr3-entrypoint-cleanup
audunarn May 19, 2026
06abe88
Define optional dependency groups
audunarn May 19, 2026
65610c5
Add core requirements file
audunarn May 19, 2026
ab1f6f9
Add Excel requirements file
audunarn May 19, 2026
5bf65ce
Add ML requirements file
audunarn May 19, 2026
c93d02a
Document dependency groups
audunarn May 19, 2026
95946e5
Merge pull request #160 from audunarn/codex/pr4-dependency-extras
audunarn May 19, 2026
0b44e0b
Add API characterization tests
audunarn May 19, 2026
9937dc7
Merge pull request #161 from audunarn/codex/pr5-api-characterization
audunarn May 19, 2026
aabb0c9
Add import-boundary smoke tests
audunarn May 19, 2026
93072c9
Merge pull request #162 from audunarn/codex/pr6-import-boundary-tests
audunarn May 19, 2026
f588855
Add dependency-light API helper functions
audunarn May 19, 2026
c4a592c
Add API helper tests
audunarn May 19, 2026
4f105f6
Merge pull request #163 from audunarn/codex/pr7-api-helpers
audunarn May 19, 2026
5f2b348
Wire API module to shared helpers
audunarn May 19, 2026
be40efa
Add API helper wiring test
audunarn May 19, 2026
bfa86da
Merge pull request #164 from audunarn/codex/pr8-wire-api-helpers
audunarn May 19, 2026
8dc63df
Add API geometry mapping helpers
audunarn May 19, 2026
7bc9c5a
Test API geometry helpers
audunarn May 19, 2026
e34054a
Merge pull request #165 from audunarn/codex/pr9-api-geometry-helpers
audunarn May 19, 2026
eb68e28
Add cylinder domain input mode helper
audunarn May 19, 2026
5cc88ac
Test cylinder domain input mode helper
audunarn May 19, 2026
106797f
Merge pull request #166 from audunarn/codex/pr10-wire-geometry-helper
audunarn May 19, 2026
03a9adf
Add cylinder API helper wiring guard
audunarn May 19, 2026
be4b2f5
Wire cylinder API to helpers
audunarn May 19, 2026
88f26d9
Tighten cylinder helper wiring test
audunarn May 19, 2026
dc266c3
Merge pull request #167 from audunarn/codex/pr11-wire-cylinder-api-he…
audunarn May 19, 2026
a979422
Wire API unit conversions to helpers
audunarn May 19, 2026
1fa1e9d
Merge pull request #168 from audunarn/codex/pr12-api-unit-conversions
audunarn May 19, 2026
9ad0464
Use API geometry helper in cylinder constructor
audunarn May 19, 2026
fd82657
Merge pull request #169 from audunarn/codex/pr13-gui-cylinder-domain-…
audunarn May 19, 2026
155e391
Expose canonical cylinder input labels
audunarn May 19, 2026
a06cd2c
Merge pull request #170 from audunarn/codex/pr14-canonical-cylinder-l…
audunarn May 19, 2026
c561639
Use shared cylinder labels in main application
audunarn May 19, 2026
1769914
Merge pull request #171 from audunarn/codex/pr15-main-app-cylinder-la…
audunarn May 19, 2026
f9fb6d7
Use unit helpers in main application properties
audunarn May 19, 2026
cef91d7
Merge pull request #172 from audunarn/codex/pr16-main-app-unit-conver…
audunarn May 19, 2026
ee0bd4a
Use geometry helpers in main application
audunarn May 19, 2026
dcada3d
Merge pull request #173 from audunarn/codex/pr17-main-app-geometry-he…
audunarn May 19, 2026
5d4df27
Extract new structure property builders
audunarn May 19, 2026
d67f6d8
Merge pull request #174 from audunarn/codex/pr18-extract-new-structur…
audunarn May 19, 2026
f59ffed
Resolve GUI smoke ML file paths
audunarn May 19, 2026
8bca796
Merge pull request #175 from audunarn/codex/pr19-gui-smoke-ml-path
audunarn May 19, 2026
22e5098
Make GUI smoke run unattended
audunarn May 19, 2026
cba7ff6
Merge pull request #176 from audunarn/codex/pr20-gui-smoke-dialogs
audunarn May 19, 2026
b1f4f99
Extract new_structure assembly helpers
audunarn May 19, 2026
cc1a6c6
Merge pull request #177 from audunarn/codex/pr21-new-structure-assembly
audunarn May 19, 2026
a4564cc
Extract new_structure line update helpers
audunarn May 19, 2026
215ea91
Merge pull request #178 from audunarn/codex/pr22-new-structure-line-u…
audunarn May 19, 2026
0621d5f
Fix SPAN optimizer pressure side lookup
audunarn May 19, 2026
2e9033c
Merge pull request #179 from audunarn/codex/pr23-span-pressure-side
audunarn May 19, 2026
9666b80
Fix SPAN predefined stiffener lookup
audunarn May 19, 2026
318fb6f
Merge pull request #180 from audunarn/codex/pr24-span-predefined-stif…
audunarn May 20, 2026
a9338f4
Add SPAN line structure access helpers
audunarn May 20, 2026
103f6b6
Merge pull request #181 from audunarn/codex/pr25-span-line-bundle-hel…
audunarn May 20, 2026
9dba81d
Fix SPAN result string rendering
audunarn May 20, 2026
f1c3d85
Merge pull request #182 from audunarn/codex/pr26-span-result-string-fix
audunarn May 20, 2026
95a685c
Add line structure bundle helpers
audunarn May 20, 2026
283232a
Merge pull request #183 from audunarn/codex/pr27-line-structure-helpers
audunarn May 20, 2026
3c17eb5
Use line structure helpers in multi optimizer
audunarn May 20, 2026
ef2fd14
Merge pull request #184 from audunarn/codex/pr28-optimize-multiple-li…
audunarn May 20, 2026
8f30ff3
Exercise optimizer windows in GUI smoke
audunarn May 20, 2026
06db6ca
Merge pull request #185 from audunarn/codex/pr29-gui-optimizer-smoke
audunarn May 20, 2026
1140330
f
audunarn May 21, 2026
465c417
f
audunarn May 21, 2026
0ffea93
f
audunarn May 21, 2026
18c37cd
f
audunarn May 21, 2026
9f733e7
f
audunarn May 21, 2026
10775cb
f
audunarn May 21, 2026
b28ca18
f
audunarn May 21, 2026
9954c2a
f
audunarn May 22, 2026
8e0f80a
f
audunarn May 22, 2026
cea609b
f
audunarn May 22, 2026
0d8aef2
f
audunarn May 22, 2026
83f0479
f
audunarn May 22, 2026
77cd18a
f
audunarn May 22, 2026
b5328b6
f
audunarn May 22, 2026
192e287
f
audunarn May 26, 2026
2e59f22
f
audunarn May 26, 2026
148be78
f
audunarn May 26, 2026
5ae14f1
f
audunarn May 26, 2026
370f45d
f
audunarn May 26, 2026
fac69ac
f
audunarn May 26, 2026
809920b
f
audunarn May 26, 2026
dc5f16e
f
audunarn May 26, 2026
edfe949
f
audunarn May 27, 2026
c3a51f7
f
audunarn May 27, 2026
ddcc69b
f
audunarn May 27, 2026
957bba4
f
audunarn May 27, 2026
3f9f6b5
f
audunarn May 27, 2026
69fd21a
f
audunarn May 27, 2026
a30f724
f
audunarn May 27, 2026
ddac7de
f
audunarn May 27, 2026
03e0df8
f
audunarn May 27, 2026
619a1ae
f
audunarn May 27, 2026
3c8afbf
f
audunarn May 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 48 additions & 0 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
name: Tests

on:
push:
branches:
- modern_dev
pull_request:
branches:
- modern_dev

jobs:
pytest:
name: Python tests on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [windows-latest, ubuntu-latest]

steps:
- name: Check out repository
uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.13'
cache: pip

- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install -r requirements-dev.txt
python -m pip install -e .

- name: Import package
run: python -c "import anystruct; print('anystruct import OK')"

- name: Run pytest
run: python -m pytest

- name: Run GUI smoke on Windows
if: runner.os == 'Windows'
run: python -m tests.gui_automatic_run

- name: Run GUI smoke on Linux
if: runner.os == 'Linux'
run: xvfb-run -a python -m tests.gui_automatic_run
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ coverage.xml
*.py,cover
.hypothesis/
.pytest_cache/
.pytest_tmp/
cover/

# Translations
Expand Down Expand Up @@ -161,4 +162,4 @@ cython_debug/
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
# and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/
#.idea/
2 changes: 1 addition & 1 deletion .idea/ANYstructure.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

80 changes: 40 additions & 40 deletions MANIFEST.in
Original file line number Diff line number Diff line change
Expand Up @@ -27,43 +27,43 @@ include anystruct\ship_section_example.txt
include anystruct\ANYstructure_documentation.pdf
include anystruct\sections.csv
include anystruct\bulb_anglebar_tbar_flatbar.csv
include anystruct\ml_files\CL_output_cl_str_buc_110_predictor_In-plane_support_cl_1_SP.pickle
include anystruct\ml_files\CL_output_cl_str_buc_110_scaler_In-plane_support_cl_1_SP.pickle
include anystruct\ml_files\CL_output_cl_str_ult_110_predictor_In-plane_support_cl_1_SP.pickle
include anystruct\ml_files\CL_output_cl_str_ult_110_scaler_In-plane_support_cl_1_SP.pickle
include anystruct\ml_files\CL_output_cl_str_buc_110_predictor_In-plane_support_cl_2,_3_SP.pickle
include anystruct\ml_files\CL_output_cl_str_buc_110_scaler_In-plane_support_cl_2,_3_SP.pickle
include anystruct\ml_files\CL_output_cl_str_ult_110_predictor_In-plane_support_cl_2,_3_SP.pickle
include anystruct\ml_files\CL_output_cl_str_ult_110_scaler_In-plane_support_cl_2,_3_SP.pickle
include anystruct\ml_files\CL_output_cl_str_buc_110_predictor_In-plane_support_cl_1_UP.pickle
include anystruct\ml_files\CL_output_cl_str_buc_110_scaler_In-plane_support_cl_1_UP.pickle
include anystruct\ml_files\CL_output_cl_str_ult_110_predictor_In-plane_support_cl_1_UP.pickle
include anystruct\ml_files\CL_output_cl_str_ult_110_scaler_In-plane_support_cl_1_UP.pickle
include anystruct\ml_files\CL_output_cl_str_buc_110_predictor_In-plane_support_cl_2,_3_UP.pickle
include anystruct\ml_files\CL_output_cl_str_buc_110_scaler_In-plane_support_cl_2,_3_UP.pickle
include anystruct\ml_files\CL_output_cl_str_ult_110_predictor_In-plane_support_cl_2,_3_UP.pickle
include anystruct\ml_files\CL_output_cl_str_ult_110_scaler_In-plane_support_cl_2,_3_UP.pickle
include anystruct\ml_files\CL_CSR-Tank_req_cl_predictor.pickle
include anystruct\ml_files\CL_CSR-Tank_req_cl_scaler.pickle
include anystruct\ml_files\CL_CSR_plate_cl,_CSR_web_cl,_CSR_web_flange_cl,_CSR_flange_cl_predictor.pickle
include anystruct\ml_files\CL_CSR_plate_cl,_CSR_web_cl,_CSR_web_flange_cl,_CSR_flange_cl_scaler.pickle
include anystruct\ml_files\CL_output_cl_str_buc_115_predictor_In-plane_support_cl_1_SP.pickle
include anystruct\ml_files\CL_output_cl_str_buc_115_scaler_In-plane_support_cl_1_SP.pickle
include anystruct\ml_files\CL_output_cl_str_ult_115_predictor_In-plane_support_cl_1_SP.pickle
include anystruct\ml_files\CL_output_cl_str_ult_115_scaler_In-plane_support_cl_1_SP.pickle
include anystruct\ml_files\CL_output_cl_str_buc_115_predictor_In-plane_support_cl_2,_3_SP.pickle
include anystruct\ml_files\CL_output_cl_str_buc_115_scaler_In-plane_support_cl_2,_3_SP.pickle
include anystruct\ml_files\CL_output_cl_str_ult_115_predictor_In-plane_support_cl_2,_3_SP.pickle
include anystruct\ml_files\CL_output_cl_str_ult_115_scaler_In-plane_support_cl_2,_3_SP.pickle
include anystruct\ml_files\CL_output_cl_str_buc_115_predictor_In-plane_support_cl_1_UP.pickle
include anystruct\ml_files\CL_output_cl_str_buc_115_scaler_In-plane_support_cl_1_UP.pickle
include anystruct\ml_files\CL_output_cl_str_ult_115_predictor_In-plane_support_cl_1_UP.pickle
include anystruct\ml_files\CL_output_cl_str_ult_115_scaler_In-plane_support_cl_1_UP.pickle
include anystruct\ml_files\CL_output_cl_str_buc_115_predictor_In-plane_support_cl_2,_3_UP.pickle
include anystruct\ml_files\CL_output_cl_str_buc_115_scaler_In-plane_support_cl_2,_3_UP.pickle
include anystruct\ml_files\CL_output_cl_str_ult_115_predictor_In-plane_support_cl_2,_3_UP.pickle
include anystruct\ml_files\CL_output_cl_str_ult_115_scaler_In-plane_support_cl_2,_3_UP.pickle
include anystruct\ml_files\CL_CSR-Tank_req_cl_predictor.pickle
include anystruct\ml_files\CL_CSR-Tank_req_cl_scaler.pickle
include anystruct\ml_files\CL_CSR_plate_cl,_CSR_web_cl,_CSR_web_flange_cl,_CSR_flange_cl_predictor.pickle
include anystruct\ml_files\CL_CSR_plate_cl,_CSR_web_cl,_CSR_web_flange_cl,_CSR_flange_cl_scaler.pickle
include anystruct\ml_files\CLPIPE_CL_output_cl_str_buc_110_predictor_In-plane_support_cl_1_SP.pickle
include anystruct\ml_files\CLPIPE_CL_output_cl_str_buc_110_scaler_In-plane_support_cl_1_SP.pickle
include anystruct\ml_files\CLPIPE_CL_output_cl_str_ult_110_predictor_In-plane_support_cl_1_SP.pickle
include anystruct\ml_files\CLPIPE_CL_output_cl_str_ult_110_scaler_In-plane_support_cl_1_SP.pickle
include anystruct\ml_files\CLPIPE_CL_output_cl_str_buc_110_predictor_In-plane_support_cl_2,_3_SP.pickle
include anystruct\ml_files\CLPIPE_CL_output_cl_str_buc_110_scaler_In-plane_support_cl_2,_3_SP.pickle
include anystruct\ml_files\CLPIPE_CL_output_cl_str_ult_110_predictor_In-plane_support_cl_2,_3_SP.pickle
include anystruct\ml_files\CLPIPE_CL_output_cl_str_ult_110_scaler_In-plane_support_cl_2,_3_SP.pickle
include anystruct\ml_files\CLPIPE_CL_output_cl_str_buc_110_predictor_In-plane_support_cl_1_UP.pickle
include anystruct\ml_files\CLPIPE_CL_output_cl_str_buc_110_scaler_In-plane_support_cl_1_UP.pickle
include anystruct\ml_files\CLPIPE_CL_output_cl_str_ult_110_predictor_In-plane_support_cl_1_UP.pickle
include anystruct\ml_files\CLPIPE_CL_output_cl_str_ult_110_scaler_In-plane_support_cl_1_UP.pickle
include anystruct\ml_files\CLPIPE_CL_output_cl_str_buc_110_predictor_In-plane_support_cl_2,_3_UP.pickle
include anystruct\ml_files\CLPIPE_CL_output_cl_str_buc_110_scaler_In-plane_support_cl_2,_3_UP.pickle
include anystruct\ml_files\CLPIPE_CL_output_cl_str_ult_110_predictor_In-plane_support_cl_2,_3_UP.pickle
include anystruct\ml_files\CLPIPE_CL_output_cl_str_ult_110_scaler_In-plane_support_cl_2,_3_UP.pickle
include anystruct\ml_files\CLPIPE_CL_CSR-Tank_req_cl_predictor.pickle
include anystruct\ml_files\CLPIPE_CL_CSR-Tank_req_cl_scaler.pickle
include anystruct\ml_files\CLPIPE_CL_CSR_plate_cl,_CSR_web_cl,_CSR_web_flange_cl,_CSR_flange_cl_predictor.pickle
include anystruct\ml_files\CLPIPE_CL_CSR_plate_cl,_CSR_web_cl,_CSR_web_flange_cl,_CSR_flange_cl_scaler.pickle
include anystruct\ml_files\CLPIPE_CL_output_cl_str_buc_115_predictor_In-plane_support_cl_1_SP.pickle
include anystruct\ml_files\CLPIPE_CL_output_cl_str_buc_115_scaler_In-plane_support_cl_1_SP.pickle
include anystruct\ml_files\CLPIPE_CL_output_cl_str_ult_115_predictor_In-plane_support_cl_1_SP.pickle
include anystruct\ml_files\CLPIPE_CL_output_cl_str_ult_115_scaler_In-plane_support_cl_1_SP.pickle
include anystruct\ml_files\CLPIPE_CL_output_cl_str_buc_115_predictor_In-plane_support_cl_2,_3_SP.pickle
include anystruct\ml_files\CLPIPE_CL_output_cl_str_buc_115_scaler_In-plane_support_cl_2,_3_SP.pickle
include anystruct\ml_files\CLPIPE_CL_output_cl_str_ult_115_predictor_In-plane_support_cl_2,_3_SP.pickle
include anystruct\ml_files\CLPIPE_CL_output_cl_str_ult_115_scaler_In-plane_support_cl_2,_3_SP.pickle
include anystruct\ml_files\CLPIPE_CL_output_cl_str_buc_115_predictor_In-plane_support_cl_1_UP.pickle
include anystruct\ml_files\CLPIPE_CL_output_cl_str_buc_115_scaler_In-plane_support_cl_1_UP.pickle
include anystruct\ml_files\CLPIPE_CL_output_cl_str_ult_115_predictor_In-plane_support_cl_1_UP.pickle
include anystruct\ml_files\CLPIPE_CL_output_cl_str_ult_115_scaler_In-plane_support_cl_1_UP.pickle
include anystruct\ml_files\CLPIPE_CL_output_cl_str_buc_115_predictor_In-plane_support_cl_2,_3_UP.pickle
include anystruct\ml_files\CLPIPE_CL_output_cl_str_buc_115_scaler_In-plane_support_cl_2,_3_UP.pickle
include anystruct\ml_files\CLPIPE_CL_output_cl_str_ult_115_predictor_In-plane_support_cl_2,_3_UP.pickle
include anystruct\ml_files\CLPIPE_CL_output_cl_str_ult_115_scaler_In-plane_support_cl_2,_3_UP.pickle
include anystruct\ml_files\CLPIPE_CL_CSR-Tank_req_cl_predictor.pickle
include anystruct\ml_files\CLPIPE_CL_CSR-Tank_req_cl_scaler.pickle
include anystruct\ml_files\CLPIPE_CL_CSR_plate_cl,_CSR_web_cl,_CSR_web_flange_cl,_CSR_flange_cl_predictor.pickle
include anystruct\ml_files\CLPIPE_CL_CSR_plate_cl,_CSR_web_cl,_CSR_web_flange_cl,_CSR_flange_cl_scaler.pickle
98 changes: 45 additions & 53 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,70 +1,62 @@
![picture](https://github.com/audunarn/ANYstructure/blob/master/anystruct/images/ANYstructure_logo.jpg)

# ANYstructure #
ANYstructure is the ultimate steel structure design tool for plate fields and cylinders!
Weight optimization for all structures with machine learning capabilities.
Calculations are based on DNV standards and rules
### What's new in 5.3.1 ###
* Force to stress to force conversion fix for cylinders.
### What's new in 5.3.0 ###
* Fixed critical caluculation bug in column buckling
* Some minor bug fixing
* Changed some text
### What's new in 5.2.0 ###
* Support for python 3.13
* Some bug fixing
### What's new in 5.1.4 ###
* Excel input option
* Add load factor 1.1 for Machine Learning buckling (PULS based)
* Continuous update of Utilization Factor when updating pressure loads
### What's new in 5.0.2 ###
* API introduced
* API documenatation at readthedocs (anystructure.readthedocs.io)
* GUI modifications
* Import of python package set to "anystruct"
### What's new in 4.10 ###
* Corrected minor bug on membrane stresses for unstiffened cylinder.
### What's new in 4.9.1 ###
* Corrected bug in loading old save files
* Corrected error on buckling flat plate calculation
### What's new in 4.8 ###
* Reporting table on cylinders.
* Color coding on come cylinder properties.
* Corrected error on additional hoop stress input for cylinders.
### What's new in 4.7 ###
* Corrected error on girder caluculation for cylinder buckling.
* Added 1.10 load factor option for cylinder buckling.
* Better compability with linux.
* Python 3.11 based.
### What's new in 4.4 ###
* Backup and restore feature added.
### What's new in 4.3 ###
* General stability.
* User friendliness.
### What's new in 4.2 ###
* Bug fixing.
* Ukraininan theme.
### What's new in 4.0 ###
* Cylinder design and optimization!
* Flat plate prescriptive buckling improved. Girder calculation added.
* Updated GUI with color themes.
### What's new in 3.3 ###
* Extremely efficient Machine Learning version of PULS called ML-CL. Implemented for all optimizer options.
* Calculation of Center of Gravity and Center of Buoyancy.
* Reporting of weights and COG.
* Lots of bug fixes.
### What's new in 6.0.0 ###
* New buckling method: Semi-analytical buckling for flat plates.
* Updated ML buckling to numerical instead of classification. Improved accurancy of the neural network.
* Updated color coding option.
* Implemented extended testing regime.
* Started work on separating calculation code from the GUI.

------------------------------------------------------------------------

For documnetation:
For documentation:

https://anystructure.readthedocs.io/en/latest/

## Development setup ##

ANYstructure is currently maintained as a Python package named `anystruct`. The GUI can still be launched through the `ANYstructure` console command after an editable install.

Recommended local setup:

```powershell
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install -r requirements-dev.txt
python -m pip install -e .
python -m pytest
```

Launch the desktop app after installation:

```powershell
ANYstructure
```

Dependency groups are also available for focused installs:

```powershell
python -m pip install -r requirements-core.txt
python -m pip install -r requirements-ml.txt
python -m pip install -r requirements-excel.txt
```

Equivalent package extras are exposed as `core`, `ml`, `excel`, `dev`, and `all`. The default package install still includes Excel and ML dependencies for backwards compatibility.

Excel project import requires a local Excel installation and is not expected to run in basic automated tests.
The external Excel-sheet DNV PULS calculation workflow has been removed from this release; ML-CL remains available.

## The following is calculated: ##
* Minimum plate thickness (DNV-OS-C101)
* Minimum section modulus of stiffener/plate (DNVGL-OS-C101)
* Minimum shear area (DNVGL-OS-C101)
* Buckling (DNVGL-RP-C201)or PULS (licenced DNV software)
* Buckling (DNVGL-RP-C201)
* Buckling strength of shells DNV-RP-C202
* PULS buckling (DNV license needed)
* Machine learning buckling, PULS based
* Fatigue for plate/stiffener connection (DNVGL-RP-C203)

Expand All @@ -83,4 +75,4 @@ Please like, share or comment on LinkedIn: https://www.linkedin.com/in/audun-arn

Screenshot (this example can be loaded from file "ship_section_example.txt"):

![picture](https://docs.google.com/uc?id=1HJeT50bNJTLJbcHTfRke4iySV8zNOAl_)
![picture](https://github.com/audunarn/ANYstructure/blob/master/anystruct/images/ANYstructure%20screenshot.png)
2 changes: 1 addition & 1 deletion __init__.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# __init__.py
# Project information.
__title__ = 'ANYstructure'
__version__ = '5.3.3'
__version__ = '6.0.0'
__author__ = 'Audun Arnesen Nyhus'
__license__ = 'MIT'
20 changes: 1 addition & 19 deletions __main__.py
Original file line number Diff line number Diff line change
@@ -1,23 +1,5 @@
import sys, multiprocessing, ctypes
import tkinter as tk
from anystruct.main_application import Application
from anystruct.__main__ import main

def main(args=None):
"""The main routine."""
if args is None:
args = sys.argv[1:]

multiprocessing.freeze_support()
errorCode = ctypes.windll.shcore.SetProcessDpiAwareness(2)
root = tk.Tk()
width = root.winfo_screenwidth()
height = root.winfo_screenheight()
root.geometry(f'{width}x{height}')
my_app = Application(root)
root.mainloop()

# Do argument parsing here (eg. with argparse) and anything else
# you want your project to do.

if __name__ == "__main__":
main()
Binary file modified anystruct/ANYstructure_documentation.pdf
Binary file not shown.
26 changes: 19 additions & 7 deletions anystruct/__main__.py
Original file line number Diff line number Diff line change
@@ -1,24 +1,36 @@
import sys, multiprocessing, ctypes, os
import ctypes
import multiprocessing
import sys
import tkinter as tk

from anystruct.main_application import Application

def main(args=None):
"""The main routine."""

def _set_windows_dpi_awareness():
if sys.platform != 'win32':
return

try:
ctypes.windll.shcore.SetProcessDpiAwareness(2)
except (AttributeError, OSError):
pass


def main(args=None):
"""Launch the ANYstructure Tkinter application."""
if args is None:
args = sys.argv[1:]

multiprocessing.freeze_support()
errorCode = ctypes.windll.shcore.SetProcessDpiAwareness(2)
_set_windows_dpi_awareness()

root = tk.Tk()
width = root.winfo_screenwidth()
height = root.winfo_screenheight()
root.geometry(f'{width}x{height}')
my_app = Application(root)
Application(root)
root.mainloop()

# Do argument parsing here (eg. with argparse) and anything else
# you want your project to do.

if __name__ == "__main__":
main()
Loading
Loading