ANYstructure 5.3.0__tar.gz → 5.3.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. {anystructure-5.3.0 → anystructure-5.3.2}/ANYstructure.egg-info/PKG-INFO +1 -1
  2. {anystructure-5.3.0 → anystructure-5.3.2}/ANYstructure.egg-info/SOURCES.txt +2 -0
  3. {anystructure-5.3.0 → anystructure-5.3.2}/MANIFEST.in +1 -0
  4. {anystructure-5.3.0 → anystructure-5.3.2}/PKG-INFO +1 -1
  5. {anystructure-5.3.0 → anystructure-5.3.2}/README.md +6 -0
  6. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/calc_structure.py +0 -1
  7. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/helper.py +1 -3
  8. anystructure-5.3.2/anystruct/images/cylinder_opt.png +0 -0
  9. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/main_application.py +13 -3
  10. {anystructure-5.3.0 → anystructure-5.3.2}/setup.py +1 -1
  11. anystructure-5.3.2/tests/test_helper_stress_force_conversion.py +61 -0
  12. {anystructure-5.3.0 → anystructure-5.3.2}/ANYstructure.egg-info/dependency_links.txt +0 -0
  13. {anystructure-5.3.0 → anystructure-5.3.2}/ANYstructure.egg-info/entry_points.txt +0 -0
  14. {anystructure-5.3.0 → anystructure-5.3.2}/ANYstructure.egg-info/requires.txt +0 -0
  15. {anystructure-5.3.0 → anystructure-5.3.2}/ANYstructure.egg-info/top_level.txt +0 -0
  16. {anystructure-5.3.0 → anystructure-5.3.2}/LICENSE +0 -0
  17. {anystructure-5.3.0 → anystructure-5.3.2}/README.rst +0 -0
  18. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/ANYstructure_documentation.pdf +0 -0
  19. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/SN_curve_parameters.py +0 -0
  20. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/__init__.py +0 -0
  21. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/__main__.py +0 -0
  22. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/api.py +0 -0
  23. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/buckling_calc_external.py +0 -0
  24. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/bulb_anglebar_tbar_flatbar.csv +0 -0
  25. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/calc_loads.py +0 -0
  26. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/compartment_window.py +0 -0
  27. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/example_data.py +0 -0
  28. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/example_data_puls.py +0 -0
  29. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/excel_inteface.py +0 -0
  30. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/fatigue_window.py +0 -0
  31. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/grid_window.py +0 -0
  32. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/gui.py +0 -0
  33. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/images/ANYstructure_logo.jpg +0 -0
  34. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/images/Buckling_Strength_of_Shells.png +0 -0
  35. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/images/Panel_geometry_definitions.png +0 -0
  36. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/images/current_comps_NONE.png +0 -0
  37. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/images/fls_button.gif +0 -0
  38. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/images/img_T_L_FB.gif +0 -0
  39. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/images/img_axial_stresses.gif +0 -0
  40. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/images/img_ext_pressure_button.gif +0 -0
  41. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/images/img_ext_pressure_button_def.gif +0 -0
  42. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/images/img_fixation_parameters.gif +0 -0
  43. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/images/img_generate_report.gif +0 -0
  44. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/images/img_int_pressure_button.gif +0 -0
  45. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/images/img_int_pressure_button_search.gif +0 -0
  46. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/images/img_multi_opt.gif +0 -0
  47. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/images/img_optimize.gif +0 -0
  48. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/images/img_plate_and_stiffener.gif +0 -0
  49. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/images/img_stf_button.gif +0 -0
  50. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/images/img_stiffener.gif +0 -0
  51. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/images/img_stress_button.gif +0 -0
  52. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/images/img_title.gif +0 -0
  53. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/images/img_transverse_stress.gif +0 -0
  54. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/load_factor_window.py +0 -0
  55. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/load_window.py +0 -0
  56. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/make_grid_numpy.py +0 -0
  57. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/make_queue.py +0 -0
  58. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/make_stack.py +0 -0
  59. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/ml_files/CL_CSR-Tank_req_cl_predictor.pickle +0 -0
  60. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/ml_files/CL_CSR-Tank_req_cl_scaler.pickle +0 -0
  61. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/ml_files/CL_CSR_plate_cl,_CSR_web_cl,_CSR_web_flange_cl,_CSR_flange_cl_predictor.pickle +0 -0
  62. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/ml_files/CL_CSR_plate_cl,_CSR_web_cl,_CSR_web_flange_cl,_CSR_flange_cl_scaler.pickle +0 -0
  63. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/ml_files/CL_output_cl_str_buc_110_predictor_In-plane_support_cl_1_SP.pickle +0 -0
  64. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/ml_files/CL_output_cl_str_buc_110_predictor_In-plane_support_cl_1_UP.pickle +0 -0
  65. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/ml_files/CL_output_cl_str_buc_110_predictor_In-plane_support_cl_2,_3_SP.pickle +0 -0
  66. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/ml_files/CL_output_cl_str_buc_110_predictor_In-plane_support_cl_2,_3_UP.pickle +0 -0
  67. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/ml_files/CL_output_cl_str_buc_110_scaler_In-plane_support_cl_1_SP.pickle +0 -0
  68. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/ml_files/CL_output_cl_str_buc_110_scaler_In-plane_support_cl_1_UP.pickle +0 -0
  69. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/ml_files/CL_output_cl_str_buc_110_scaler_In-plane_support_cl_2,_3_SP.pickle +0 -0
  70. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/ml_files/CL_output_cl_str_buc_110_scaler_In-plane_support_cl_2,_3_UP.pickle +0 -0
  71. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/ml_files/CL_output_cl_str_buc_115_predictor_In-plane_support_cl_1_SP.pickle +0 -0
  72. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/ml_files/CL_output_cl_str_buc_115_predictor_In-plane_support_cl_1_UP.pickle +0 -0
  73. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/ml_files/CL_output_cl_str_buc_115_predictor_In-plane_support_cl_2,_3_SP.pickle +0 -0
  74. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/ml_files/CL_output_cl_str_buc_115_predictor_In-plane_support_cl_2,_3_UP.pickle +0 -0
  75. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/ml_files/CL_output_cl_str_buc_115_scaler_In-plane_support_cl_1_SP.pickle +0 -0
  76. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/ml_files/CL_output_cl_str_buc_115_scaler_In-plane_support_cl_1_UP.pickle +0 -0
  77. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/ml_files/CL_output_cl_str_buc_115_scaler_In-plane_support_cl_2,_3_SP.pickle +0 -0
  78. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/ml_files/CL_output_cl_str_buc_115_scaler_In-plane_support_cl_2,_3_UP.pickle +0 -0
  79. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/ml_files/CL_output_cl_str_ult_110_predictor_In-plane_support_cl_1_SP.pickle +0 -0
  80. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/ml_files/CL_output_cl_str_ult_110_predictor_In-plane_support_cl_1_UP.pickle +0 -0
  81. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/ml_files/CL_output_cl_str_ult_110_predictor_In-plane_support_cl_2,_3_SP.pickle +0 -0
  82. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/ml_files/CL_output_cl_str_ult_110_predictor_In-plane_support_cl_2,_3_UP.pickle +0 -0
  83. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/ml_files/CL_output_cl_str_ult_110_scaler_In-plane_support_cl_1_SP.pickle +0 -0
  84. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/ml_files/CL_output_cl_str_ult_110_scaler_In-plane_support_cl_1_UP.pickle +0 -0
  85. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/ml_files/CL_output_cl_str_ult_110_scaler_In-plane_support_cl_2,_3_SP.pickle +0 -0
  86. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/ml_files/CL_output_cl_str_ult_110_scaler_In-plane_support_cl_2,_3_UP.pickle +0 -0
  87. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/ml_files/CL_output_cl_str_ult_115_predictor_In-plane_support_cl_1_SP.pickle +0 -0
  88. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/ml_files/CL_output_cl_str_ult_115_predictor_In-plane_support_cl_1_UP.pickle +0 -0
  89. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/ml_files/CL_output_cl_str_ult_115_predictor_In-plane_support_cl_2,_3_SP.pickle +0 -0
  90. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/ml_files/CL_output_cl_str_ult_115_predictor_In-plane_support_cl_2,_3_UP.pickle +0 -0
  91. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/ml_files/CL_output_cl_str_ult_115_scaler_In-plane_support_cl_1_SP.pickle +0 -0
  92. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/ml_files/CL_output_cl_str_ult_115_scaler_In-plane_support_cl_1_UP.pickle +0 -0
  93. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/ml_files/CL_output_cl_str_ult_115_scaler_In-plane_support_cl_2,_3_SP.pickle +0 -0
  94. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/ml_files/CL_output_cl_str_ult_115_scaler_In-plane_support_cl_2,_3_UP.pickle +0 -0
  95. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/opt_problem.py +0 -0
  96. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/optimize.py +0 -0
  97. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/optimize_cylinder.py +0 -0
  98. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/optimize_geometry.py +0 -0
  99. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/optimize_multiple_window.py +0 -0
  100. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/optimize_window.py +0 -0
  101. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/pl_stf_window.py +0 -0
  102. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/report_generator.py +0 -0
  103. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/sections.csv +0 -0
  104. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/sesam_interface.py +0 -0
  105. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/ship_section_example.txt +0 -0
  106. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/stresses_window.py +0 -0
  107. {anystructure-5.3.0 → anystructure-5.3.2}/anystruct/testCalc.py +0 -0
  108. {anystructure-5.3.0 → anystructure-5.3.2}/setup.cfg +0 -0
  109. {anystructure-5.3.0 → anystructure-5.3.2}/tests/test_calc_loads_loads.py +0 -0
  110. {anystructure-5.3.0 → anystructure-5.3.2}/tests/test_calc_loads_tank.py +0 -0
  111. {anystructure-5.3.0 → anystructure-5.3.2}/tests/test_calc_structure_scantlings.py +0 -0
  112. {anystructure-5.3.0 → anystructure-5.3.2}/tests/test_calc_structure_structure.py +0 -0
  113. {anystructure-5.3.0 → anystructure-5.3.2}/tests/test_calc_strucure_fatigue.py +0 -0
  114. {anystructure-5.3.0 → anystructure-5.3.2}/tests/test_grid_operations.py +0 -0
  115. {anystructure-5.3.0 → anystructure-5.3.2}/tests/test_make_grid.py +0 -0
  116. {anystructure-5.3.0 → anystructure-5.3.2}/tests/test_optimize.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ANYstructure
3
- Version: 5.3.0
3
+ Version: 5.3.2
4
4
  Summary: A plate field optimization tool for offshore structures calculated according to DNV standards
5
5
  Home-page: https://github.com/audunarn/ANYstructure
6
6
  Author: Audun Arnesen Nyhus
@@ -50,6 +50,7 @@ anystruct/images/ANYstructure_logo.jpg
50
50
  anystruct/images/Buckling_Strength_of_Shells.png
51
51
  anystruct/images/Panel_geometry_definitions.png
52
52
  anystruct/images/current_comps_NONE.png
53
+ anystruct/images/cylinder_opt.png
53
54
  anystruct/images/fls_button.gif
54
55
  anystruct/images/img_T_L_FB.gif
55
56
  anystruct/images/img_axial_stresses.gif
@@ -109,5 +110,6 @@ tests/test_calc_structure_scantlings.py
109
110
  tests/test_calc_structure_structure.py
110
111
  tests/test_calc_strucure_fatigue.py
111
112
  tests/test_grid_operations.py
113
+ tests/test_helper_stress_force_conversion.py
112
114
  tests/test_make_grid.py
113
115
  tests/test_optimize.py
@@ -18,6 +18,7 @@ include anystruct\images\img_stress_button.gif
18
18
  include anystruct\images\img_T_L_FB.gif
19
19
  include anystruct\images\img_title.gif
20
20
  include anystruct\images\img_transverse_stress.gif
21
+ include anystruct\images\cylinder_opt.png
21
22
  include anystruct\images\ANYstructure_logo.jpg
22
23
  include anystruct\images\current_comps_NONE.png
23
24
  include anystruct\images\Buckling_Strength_of_Shells.png
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ANYstructure
3
- Version: 5.3.0
3
+ Version: 5.3.2
4
4
  Summary: A plate field optimization tool for offshore structures calculated according to DNV standards
5
5
  Home-page: https://github.com/audunarn/ANYstructure
6
6
  Author: Audun Arnesen Nyhus
@@ -2,6 +2,12 @@
2
2
  ANYstructure is the ultimate steel structure design tool for plate fields and cylinders!
3
3
  Weight optimization for all structures with machine learning capabilities.
4
4
  Calculations are based on DNV standards and rules
5
+ ### What's new in 5.3.1 ###
6
+ * Force to stress to force conversion fix for cylinders.
7
+ ### What's new in 5.3.0 ###
8
+ * Fixed critical caluculation bug in column buckling
9
+ * Some minor bug fixing
10
+ * Changed some text
5
11
  ### What's new in 5.2.0 ###
6
12
  * Support for python 3.13
7
13
  * Some bug fixing
@@ -3570,7 +3570,6 @@ class CylinderAndCurvedPlate():
3570
3570
  sasd_iter -= 10
3571
3571
  else:
3572
3572
  sasd_iter -= 20
3573
-
3574
3573
  return 0 if len(logger) == 1 else max(max(logger[:-1]),0)
3575
3574
  from_table = iter_table_2()
3576
3575
 
@@ -536,7 +536,7 @@ def helper_cylinder_stress_to_force_to_stress(stresses = None, forces = None, ge
536
536
  if not conical:
537
537
  sasd, smsd, tTsd, tQsd, shsd = stresses
538
538
  Nsd = (sasd * 2 * math.pi * shell_radius * eq_thk) / 1000
539
- Msd = (smsd / (shell_radius * shell_t / 2)) * Itot / 1000000
539
+ Msd = (smsd * Itot) / ((shell_radius + shell_t / 2) * 1000000)
540
540
  Tsd = tTsd * 2 * math.pi * shell_t * math.pow(shell_radius, 2) / 1000000
541
541
  Qsd = tQsd * math.pi * shell_radius * shell_t / 1000
542
542
  else:
@@ -562,8 +562,6 @@ def helper_cylinder_stress_to_force_to_stress(stresses = None, forces = None, ge
562
562
  if __name__ == '__main__':
563
563
  from tkinter import *
564
564
 
565
-
566
-
567
565
  class AllTkinterWidgets:
568
566
  def __init__(self, master):
569
567
  frame = Frame(master, width=500, height=400, bd=1)
@@ -1064,6 +1064,8 @@ class Application():
1064
1064
 
1065
1065
  chk_deltax = 0.1
1066
1066
  chk_deltay = 0.025
1067
+ (ttk.Label(self._tab_information, text='Labelling options. For non-cylinder structure only. ', font="Text 9")
1068
+ .place(relx=0.02, rely=2*chk_deltay))
1067
1069
  self._information_gui_chk_structure = [
1068
1070
  ttk.Checkbutton(self._tab_information,
1069
1071
  variable = self._new_label_color_coding,
@@ -1122,7 +1124,7 @@ class Application():
1122
1124
  ttk.Label(self._tab_information, text='Structure type'),
1123
1125
  ttk.Label(self._tab_information, text='Buckling - SP or UP'),
1124
1126
  ttk.Label(self._tab_information, text='Buckling acceptance criteria')]
1125
- idx = 2
1127
+ idx = 3
1126
1128
  for lab, ent in zip(self._information_gui_chk_structure, self._information_gui_lab_chk_structure):
1127
1129
  lab.place(relx=0.02, rely=idx*chk_deltay)
1128
1130
  ent.place(relx=0.02 + chk_deltax, rely=idx*chk_deltay)
@@ -3706,7 +3708,10 @@ class Application():
3706
3708
  all_cyl_chks = list()
3707
3709
  for key, val in cylinder_results.items():
3708
3710
  if key in ['Unstiffened shell', 'Longitudinal stiffened shell',
3709
- 'Ring stiffened shell', 'Heavy ring frame']:
3711
+ 'Ring stiffened shell', 'Heavy ring frame', 'Column stability UF']:
3712
+ if (key == 'Column stability UF' and
3713
+ cylinder_results['Need to check column buckling'] is False):
3714
+ continue
3710
3715
 
3711
3716
  all_cyl_chks.append(True if val is None else val < 1)
3712
3717
  elif key == 'Stiffener check' and val is not None:
@@ -4876,12 +4881,16 @@ class Application():
4876
4881
  )
4877
4882
  uf_col = 'green'
4878
4883
  else:
4884
+ uf_col = 'black'
4879
4885
  if results['Column stability UF'] is None:
4880
4886
  text_value = 'N/A'
4881
4887
  else:
4882
4888
  text_value = 'Column buckling need to be checked, UF = ' + str(
4883
4889
  round(results['Column stability UF'], 2))
4884
- uf_col = 'red'
4890
+ if results['Column stability UF'] <= 1.0:
4891
+ uf_col = 'green'
4892
+ else:
4893
+ uf_col = 'red'
4885
4894
  else:
4886
4895
  text_value = 'N/A' if value is None else str(round(value, 2))
4887
4896
 
@@ -6890,6 +6899,7 @@ class Application():
6890
6899
  is None
6891
6900
  else Structure(imported_dict['Ring frame']))
6892
6901
 
6902
+
6893
6903
  # opening the loads
6894
6904
  variables = ['poly_third','poly_second', 'poly_first', 'poly_const', 'load_condition',
6895
6905
  'structure_type', 'man_press', 'static_draft', 'name_of_load', 'limit_state',
@@ -27,7 +27,7 @@ setup(
27
27
  name='ANYstructure', # Required
28
28
  url = 'https://github.com/audunarn/ANYstructure',
29
29
  entry_points={"console_scripts": ['ANYstructure = anystruct.__main__:main']},
30
- version='5.3.0', # Required
30
+ version='5.3.2', # Required
31
31
  license='MIT',
32
32
  description='A plate field optimization tool for offshore structures calculated according to DNV standards',
33
33
  long_description = readme(),
@@ -0,0 +1,61 @@
1
+ import math
2
+ import sys
3
+ from pathlib import Path
4
+
5
+ sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
6
+
7
+ import anystruct.helper as hlp
8
+
9
+
10
+ class _DummyCylinder:
11
+ """Minimal stub mimicking ``CylinderAndCurvedPlate`` ``get_Itot``."""
12
+
13
+ def __init__(self, itot):
14
+ self._itot = itot
15
+
16
+ def get_Itot(self, **_kwargs):
17
+ return self._itot
18
+
19
+
20
+ def _round_trip_forces(forces, **kwargs):
21
+ stresses = hlp.helper_cylinder_stress_to_force_to_stress(forces=forces, **kwargs)
22
+ back = hlp.helper_cylinder_stress_to_force_to_stress(stresses=stresses, **kwargs)
23
+ return stresses, back
24
+
25
+
26
+ def test_round_trip_unstiffened_shell():
27
+ dummy = _DummyCylinder(8.9)
28
+ kwargs = dict(
29
+ geometry=1,
30
+ shell_t=0.02,
31
+ shell_radius=6.5,
32
+ shell_spacing=1.0,
33
+ CylinderAndCurvedPlate=dummy,
34
+ )
35
+ forces = (1.2e6, 5.5e7, 2.4e5, 3.1e5)
36
+
37
+ _, converted = _round_trip_forces(forces, **kwargs)
38
+
39
+ for original, recovered in zip(forces, converted[:4]):
40
+ assert math.isclose(original, recovered, rel_tol=1e-9)
41
+
42
+
43
+ def test_round_trip_longitudinal_stiffened_shell():
44
+ dummy = _DummyCylinder(12.1)
45
+ kwargs = dict(
46
+ geometry=3,
47
+ shell_t=0.025,
48
+ shell_radius=4.5,
49
+ shell_spacing=0.8,
50
+ hw=0.35,
51
+ tw=0.018,
52
+ b=0.22,
53
+ tf=0.02,
54
+ CylinderAndCurvedPlate=dummy,
55
+ )
56
+ forces = (2.5e6, 7.2e7, 4.3e5, 5.6e5)
57
+
58
+ _, converted = _round_trip_forces(forces, **kwargs)
59
+
60
+ for original, recovered in zip(forces, converted[:4]):
61
+ assert math.isclose(original, recovered, rel_tol=1e-9)
File without changes
File without changes
File without changes