Giter VIP home page Giter VIP logo

audunarn / anystructure Goto Github PK

View Code? Open in Web Editor NEW
46.0 12.0 15.0 36.32 MB

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.

License: MIT License

Python 99.71% JavaScript 0.29%
dnvgl-os-c101 design-of-offshore-steel-structures buckling fatigue-analysis analysis-framework plate-thickness beam-section gui-based dnvgl-rp-c201 optimization-tools

anystructure's Introduction

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.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.

For documnetation:

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

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 strength of shells DNV-RP-C202
  • PULS buckling (DNV license needed)
  • Machine learning buckling, PULS based
  • Fatigue for plate/stiffener connection (DNVGL-RP-C203)

Compartments (tank pressures) are created automatically.

Pressures on external hull (or any other generic location) is defined by specifying equations.

You can optimize cylinders, single plate/stiffener field or multiple. Geometry of double bottom can be optimized.

PLEASE CONTRIBUTE. REPORT BUGS ERRORS ETC. For windows executable (.exe) version for non-coders, use the link below.

Feedback: [email protected] or discuss on github.

Please like, share or comment on LinkedIn: https://www.linkedin.com/in/audun-arnesen-nyhus-6aa17118/

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

picture

anystructure's People

Contributors

audunarn avatar lewiuberg avatar rubendebruin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

anystructure's Issues

Using original thickness when doing minimum plate thickness check in optimization

file: optimize.py
at about line 400 in method any_constraints_all

    # Minimum plate thickeness
    if chk[1]:
        if not obj.get_plate_thk()>calc_object[0].get_dnv_min_thickness(lat_press)/1000:
            return False

to be replaced by

    # Minimum plate thickeness
    if chk[1]:
        if not calc_object[0].get_plate_thk()>calc_object[0].get_dnv_min_thickness(lat_press)/1000:
            return False

Loading built-in section

Hello,

I was testing the linux modifications on windows and came across the following issue:
When loading the built-in sections, the file is not found. This is because the .csv file with the sections is in ANYstructure_local, which is a sub-dir of the directory containing main.py.

Testing

A better testing framework must be implemented.

Bending stress in 3.3 unstiffened curved panel / 3.4 unstiffened circular cylinders

Hi Audun,

I think there is a small bug in the code for unstiffened curved.

calc_structure.py:
In the function unstiffened_shell, the sign for the bending stress is set zero or the absolute value depending on the sign (line 2961). This is fine, but changes the value of smsd.

A bit further in the code, '3.4 unstiffened circular cylinders', the same is done for sm0sd (line 3135). However, this uses the value of smsd, which is changed earlier, resulting in the bending stress not correctly being taken into account.

I would suggest moving the calculation of sa0sd, sm0sd to the beginning of the function, only doing it once and used these values in the further calculations.

Hope my explanation is clear.
Regards,
Frederik

Optimization timer not correct.

After implementing multiprocessing, the timer for optimizing a plate field is somewhat strange. Also it is located the wrong place.

Geometry optimization completion

The code contains a geometry optimization code. It will automatically calulate the best plate field length and number of plate fields for a selected distance. It is 70% complete and is not activated in the application. It will be a significat enhancement to complete it.

optimize_geometry.py

calc_structure

Hello,

I get the following error when running the program (both via the GUI and If I run the code itself with example_data.py):

  File "/home/frederik/theScriptingEngineer/Python/ANYstructure/ANYstructure_local/calc_structure.py", line 1895, in stiffened_panel
    stf_pl_data['UF Plate side'] = res_iter_pl.fun[0]
TypeError: 'float' object is not subscriptable

Unfortunately I don't understand the code enough to propose a solution...

ANYinsight

More insight into the results to be added. What fails and what is OK.

Multiple optimization (MultiOpt) not working.

Exception in Tkinter callback
Traceback (most recent call last):
File "C:\ProgramData\Anaconda3\lib\tkinter_init_.py", line 1699, in call
return self.func(*args)
File "C:\Users\any\Code\PyStructural\ANY_structural\optimize_multiple_window.py", line 396, in run_optimizaion
fp['p_ext']['loaded'], fp['p_ext']['ballast'], fp['p_ext']['part'] = 0,0,0
KeyError: 'p_ext'
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\ProgramData\Anaconda3\lib\tkinter_init_.py", line 1699, in call
return self.func(*args)
File "C:\Users\any\Code\PyStructural\ANY_structural\optimize_multiple_window.py", line 396, in run_optimizaion
fp['p_ext']['loaded'], fp['p_ext']['ballast'], fp['p_ext']['part'] = 0,0,0
KeyError: 'p_ext'

Failed to load dynlib/dll 'shcore'. Most likely this dynlib/dll was not found when the application was frozen.

hello i am facing this error when i try to open program
Traceback (most recent call last):
File "PyInstaller\loader\pyimod03_ctypes.py", line 77, in init
File "ctypes_init_.py", line 376, in init
FileNotFoundError: Could not find module 'shcore' (or one of its dependencies). Try using the full path with constructor syntax.

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "main.py", line 23, in
File "main.py", line 11, in main
File "ctypes_init_.py", line 446, in getattr
File "PyInstaller\loader\pyimod03_ctypes.py", line 79, in init
pyimod03_ctypes.install..PyInstallerImportError: Failed to load dynlib/dll 'shcore'. Most likely this dynlib/dll was not found when the application was frozen.

Missing package scikit-learn

Hello,

When installing the requirements from scratch and then running main.py, an error occurs because sklearn cannot be found.
This can be resolved by installing scikit-learn. So I think this needs to be added to the requirements.

The same applies when installing using pip install anystructure

Regards,
Frederik

Running on linux

Hello,

I wanted to run ANYstructure on linux and I managed to do so. I did need to implement the following 2 changes:

  1. main_application.py, line 330: change \ to / I think using os.path.join() would solve the problem, or to keep the string concatenation os.sep might also work.
  2. main_application.py, line 67: vista theme did not work, but changing to classic did the trick.

Kind regards

More info:
stackoverflow for 1

Vectorize

Many calculations can be vectorized.

Approval / Certification

I'm asking this question because I'm running into this myself and am wondering if you or anyone else had given it some thought already.

Some day (soon) people will start using this executable and will be producing reports with it. But how can they be sure that what comes out is correct? Some software packages manage to get an "approved" stamp from some certification authority while others do not.

It would be nice if some sponsor (DNVGL...?) would review the code and give it an approval or a recommendation.

Cache results

Results should be cached. That way recalculations is not required all the time.

GUI

Hi!

I see you made plans to shift to Kivy, is this still something you are considering?

Section 6.2 buckling longitudinal plate

Hi @audunarn

In calc_structures: unstiffened_plate_buckling()
line 1515: sxRd = Cxfy/gammaM if not all([sig_x1<0, sig_x2<0]) else 1
should be:
sxRd = Cx
fy/gammaM if not all([sig_x1<0, sig_x2<0]) else fy/gammaM
I think.

Resistance factor for tension is yield divided by material factor, not 1

Regards,
Frederik

Cost in optimization algorithm

Implement a non dimensional cost number. Should be dependent on weight and weld length. But how to choose which one matters the most.....

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.