abaqustools 2.34__tar.gz → 2.35__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 (53) hide show
  1. {abaqustools-2.34 → abaqustools-2.35}/PKG-INFO +3 -2
  2. {abaqustools-2.34 → abaqustools-2.35}/abaqustools.egg-info/PKG-INFO +3 -2
  3. {abaqustools-2.34 → abaqustools-2.35}/abaqustools.egg-info/SOURCES.txt +0 -1
  4. {abaqustools-2.34 → abaqustools-2.35}/abq.py +24 -9
  5. abaqustools-2.35/example/truss/abaqus.rpy +29 -0
  6. abaqustools-2.35/example/trussjointc/abaqus.rpy +102 -0
  7. {abaqustools-2.34 → abaqustools-2.35}/example/trussjointc/create_model2.py +2 -2
  8. {abaqustools-2.34 → abaqustools-2.35}/example/trussjointc/simple_trussjointc.com +1 -1
  9. abaqustools-2.35/example/trussjointc/simple_trussjointc.dat +27794 -0
  10. abaqustools-2.35/example/trussjointc/simple_trussjointc.inp +3524 -0
  11. {abaqustools-2.34 → abaqustools-2.35}/example/trussjointc/simple_trussjointc.sim +0 -0
  12. {abaqustools-2.34 → abaqustools-2.35}/kw.py +926 -573
  13. {abaqustools-2.34 → abaqustools-2.35}/odbexport/export.py +63 -5
  14. {abaqustools-2.34 → abaqustools-2.35}/odbexport/odbfunc.py +6 -2
  15. {abaqustools-2.34 → abaqustools-2.35}/pyproject.toml +1 -1
  16. abaqustools-2.35/useful/ModelViewPlugin.zip +0 -0
  17. abaqustools-2.34/example/truss/abaqus.rpy +0 -113
  18. abaqustools-2.34/example/trussjointc/abaqus.rpy +0 -1319
  19. abaqustools-2.34/example/trussjointc/abaqus.rpy.8 +0 -74
  20. abaqustools-2.34/example/trussjointc/simple_trussjointc.dat +0 -103
  21. abaqustools-2.34/example/trussjointc/simple_trussjointc.inp +0 -3585
  22. abaqustools-2.34/useful/ModelViewPlugin.zip +0 -0
  23. {abaqustools-2.34 → abaqustools-2.35}/LICENSE +0 -0
  24. {abaqustools-2.34 → abaqustools-2.35}/README.md +0 -0
  25. {abaqustools-2.34 → abaqustools-2.35}/abaqustools.egg-info/dependency_links.txt +0 -0
  26. {abaqustools-2.34 → abaqustools-2.35}/abaqustools.egg-info/requires.txt +0 -0
  27. {abaqustools-2.34 → abaqustools-2.35}/abaqustools.egg-info/top_level.txt +0 -0
  28. {abaqustools-2.34 → abaqustools-2.35}/example/truss/abaqus.rpy.1 +0 -0
  29. {abaqustools-2.34 → abaqustools-2.35}/example/truss/create_model.py +0 -0
  30. {abaqustools-2.34 → abaqustools-2.35}/example/truss/simple_truss.com +0 -0
  31. {abaqustools-2.34 → abaqustools-2.35}/example/truss/simple_truss.dat +0 -0
  32. {abaqustools-2.34 → abaqustools-2.35}/example/truss/simple_truss.inp +0 -0
  33. {abaqustools-2.34 → abaqustools-2.35}/example/truss/simple_truss.msg +0 -0
  34. {abaqustools-2.34 → abaqustools-2.35}/example/truss/simple_truss.odb +0 -0
  35. {abaqustools-2.34 → abaqustools-2.35}/example/truss/simple_truss.prt +0 -0
  36. {abaqustools-2.34 → abaqustools-2.35}/example/truss/simple_truss.sim +0 -0
  37. {abaqustools-2.34 → abaqustools-2.35}/example/truss/simple_truss.sta +0 -0
  38. {abaqustools-2.34 → abaqustools-2.35}/example/trussjointc/abaqus.rpy.10 +0 -0
  39. {abaqustools-2.34 → abaqustools-2.35}/example/trussjointc/abaqus.rpy.11 +0 -0
  40. {abaqustools-2.34 → abaqustools-2.35}/example/trussjointc/abaqus.rpy.2 +0 -0
  41. {abaqustools-2.34 → abaqustools-2.35}/example/trussjointc/abaqus.rpy.9 +0 -0
  42. {abaqustools-2.34 → abaqustools-2.35}/example/trussjointc/create_model.py +0 -0
  43. {abaqustools-2.34 → abaqustools-2.35}/odbexport/__init__.py +0 -0
  44. {abaqustools-2.34 → abaqustools-2.35}/odbexport_example/Export.py +0 -0
  45. {abaqustools-2.34 → abaqustools-2.35}/odbexport_example/Model_single_deck.odb +0 -0
  46. {abaqustools-2.34 → abaqustools-2.35}/odbexport_example/Model_single_deck_exportmodal.h5 +0 -0
  47. {abaqustools-2.34 → abaqustools-2.35}/odbexport_example/Model_single_deck_exportmodal.py +0 -0
  48. {abaqustools-2.34 → abaqustools-2.35}/odbexport_example/Model_single_deck_exportstatic.py +0 -0
  49. {abaqustools-2.34 → abaqustools-2.35}/odbexport_example/Model_twin_deck.odb +0 -0
  50. {abaqustools-2.34 → abaqustools-2.35}/setup.cfg +0 -0
  51. {abaqustools-2.34 → abaqustools-2.35}/useful/Plot_model_and_modes.py +0 -0
  52. {abaqustools-2.34 → abaqustools-2.35}/useful/plugin_readme.txt +0 -0
  53. {abaqustools-2.34 → abaqustools-2.35}/useful/tilepictures.m +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: abaqustools
3
- Version: 2.34
3
+ Version: 2.35
4
4
  Summary: Tools for FEM software ABAQUS.
5
5
  Author-email: "O. W. Petersen" <oyvind.w.petersen@ntnu.no>
6
6
  Project-URL: repository, https://github.com/Oyvindwpetersen/abaqustools/
@@ -12,3 +12,4 @@ Requires-Dist: scipy
12
12
  Requires-Dist: nexusformat
13
13
  Requires-Dist: h5py
14
14
  Requires-Dist: putools
15
+ Dynamic: license-file
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: abaqustools
3
- Version: 2.34
3
+ Version: 2.35
4
4
  Summary: Tools for FEM software ABAQUS.
5
5
  Author-email: "O. W. Petersen" <oyvind.w.petersen@ntnu.no>
6
6
  Project-URL: repository, https://github.com/Oyvindwpetersen/abaqustools/
@@ -12,3 +12,4 @@ Requires-Dist: scipy
12
12
  Requires-Dist: nexusformat
13
13
  Requires-Dist: h5py
14
14
  Requires-Dist: putools
15
+ Dynamic: license-file
@@ -23,7 +23,6 @@ example/trussjointc/abaqus.rpy
23
23
  example/trussjointc/abaqus.rpy.10
24
24
  example/trussjointc/abaqus.rpy.11
25
25
  example/trussjointc/abaqus.rpy.2
26
- example/trussjointc/abaqus.rpy.8
27
26
  example/trussjointc/abaqus.rpy.9
28
27
  example/trussjointc/create_model.py
29
28
  example/trussjointc/create_model2.py
@@ -11,6 +11,7 @@ import numpy as np
11
11
  import os
12
12
  import putools
13
13
  import time
14
+ import subprocess
14
15
 
15
16
  #%%
16
17
 
@@ -67,7 +68,7 @@ def printerror(jobname,foldername=''):
67
68
 
68
69
  #%%
69
70
 
70
- def checkduplicate(inputname):
71
+ def checkduplicate(inputname,halt=True):
71
72
 
72
73
  '''
73
74
  Check input file, alert if duplicate node or element numbers
@@ -93,7 +94,8 @@ def checkduplicate(inputname):
93
94
  input_file_lines=fid.read().splitlines()
94
95
  fid.close()
95
96
 
96
- node_or_element=['*NODE,' , '*ELEMENT,']
97
+ node_or_element=['*NODE' , '*ELEMENT']
98
+ node_or_element_false=['*NODE OUTPUT' , '*ELEMENT OUTPUT']
97
99
 
98
100
  # Index of lines with star, used for finding end of node/element block
99
101
  idx_star=putools.num.listindexsub(input_file_lines,'*')
@@ -102,6 +104,9 @@ def checkduplicate(inputname):
102
104
 
103
105
  # Find all lines with *NODE or *ELEMENT
104
106
  idx_keyword=putools.num.listindexsub(input_file_lines,node_or_element[index])
107
+ idx_keyword_false=putools.num.listindexsub(input_file_lines,node_or_element_false[index])
108
+
109
+ idx_keyword = list(set(idx_keyword) - set(idx_keyword_false))
105
110
 
106
111
  numbers_list=[None]*len(idx_keyword)
107
112
 
@@ -127,7 +132,9 @@ def checkduplicate(inputname):
127
132
 
128
133
  print('***** Duplicate ' + node_or_element[index] + ' numbers:')
129
134
  print(numbers_dup)
130
- raise Exception('***** Duplicates not allowed, see above printed numbers')
135
+
136
+ if halt==True:
137
+ raise Exception('***** Duplicates not allowed, see above printed numbers')
131
138
 
132
139
 
133
140
  #%%
@@ -197,21 +204,29 @@ def runjob(foldername,inputname,jobname='',abaqus_cmd='abaqus',cpus=4,echo_cmd=T
197
204
 
198
205
  t0=putools.timing.tic()
199
206
  #(sys_out)=os.system(system_cmd)
200
- sys_out=os.popen(system_cmd).read()
207
+ # sys_out=os.popen(system_cmd).read()
208
+
209
+ result = subprocess.run(system_cmd, shell=True, capture_output=True, text=True)
210
+
211
+ print('STDERR:', result.stderr)
212
+ print('STDOUT:', result.stdout)
213
+
214
+ #raise RuntimeError('Command failed, see error above')
215
+
201
216
  t1=putools.timing.tocs(t0)
202
217
 
203
218
  # Change back to original folder
204
219
  os.chdir(folder_current)
205
220
 
206
221
  if echo_cmd:
207
- print(sys_out)
222
+ print(result.stdout)
208
223
 
209
224
  # Check if job is successful
210
- completed='COMPLETED' in sys_out
211
- if completed:
225
+ completed_bool='COMPLETED' in result.stdout
226
+ if completed_bool:
212
227
  print('***** ABAQUS job completed in ' + putools.num.num2strf(t1,1) + ' s')
213
228
 
214
- error_bool='Abaqus/Analysis exited with error' in sys_out
229
+ error_bool='Abaqus/Analysis exited with error' in result.stdout
215
230
 
216
231
  if error_bool:
217
232
  time.sleep(1)
@@ -220,4 +235,4 @@ def runjob(foldername,inputname,jobname='',abaqus_cmd='abaqus',cpus=4,echo_cmd=T
220
235
  if halt_error:
221
236
  raise Exception('***** Stopped due to ABAQUS errors, see message above')
222
237
 
223
- return completed
238
+ return completed_bool
@@ -0,0 +1,29 @@
1
+ # -*- coding: mbcs -*-
2
+ #
3
+ # Abaqus/Viewer Release 2017 replay file
4
+ # Internal Version: 2016_09_27-23.54.59 126836
5
+ # Run by oyvinpet on Fri Jan 31 07:39:57 2025
6
+ #
7
+
8
+ # from driverUtils import executeOnCaeGraphicsStartup
9
+ # executeOnCaeGraphicsStartup()
10
+ #: Executing "onCaeGraphicsStartup()" in the site directory ...
11
+ from abaqus import *
12
+ from abaqusConstants import *
13
+ session.Viewport(name='Viewport: 1', origin=(0.0, 0.0), width=79.6640548706055,
14
+ height=105.125)
15
+ session.viewports['Viewport: 1'].makeCurrent()
16
+ session.viewports['Viewport: 1'].maximize()
17
+ from viewerModules import *
18
+ from driverUtils import executeOnCaeStartup
19
+ executeOnCaeStartup()
20
+ o2 = session.openOdb(name='simple_truss.odb')
21
+ #: Model: C:/Cloud/OD_OWP/Work/Python/Github/abaqustools/example/truss/simple_truss.odb
22
+ #: Number of Assemblies: 1
23
+ #: Number of Assembly instances: 0
24
+ #: Number of Part instances: 1
25
+ #: Number of Meshes: 1
26
+ #: Number of Element Sets: 3
27
+ #: Number of Node Sets: 4
28
+ #: Number of Steps: 2
29
+ session.viewports['Viewport: 1'].setValues(displayedObject=o2)
@@ -0,0 +1,102 @@
1
+ # -*- coding: mbcs -*-
2
+ #
3
+ # Abaqus/Viewer Release 2017 replay file
4
+ # Internal Version: 2016_09_27-23.54.59 126836
5
+ # Run by oyvinpet on Fri Jan 31 07:41:12 2025
6
+ #
7
+
8
+ # from driverUtils import executeOnCaeGraphicsStartup
9
+ # executeOnCaeGraphicsStartup()
10
+ #: Executing "onCaeGraphicsStartup()" in the site directory ...
11
+ from abaqus import *
12
+ from abaqusConstants import *
13
+ session.Viewport(name='Viewport: 1', origin=(0.0, 0.0), width=79.6640548706055,
14
+ height=105.125)
15
+ session.viewports['Viewport: 1'].makeCurrent()
16
+ session.viewports['Viewport: 1'].maximize()
17
+ from viewerModules import *
18
+ from driverUtils import executeOnCaeStartup
19
+ executeOnCaeStartup()
20
+ o2 = session.openOdb(name='simple_trussjointc.odb')
21
+ #: Model: c:/cloud/od_owp/work/python/github/abaqustools/example/trussjointc/simple_trussjointc.odb
22
+ #: Number of Assemblies: 1
23
+ #: Number of Assembly instances: 0
24
+ #: Number of Part instances: 1
25
+ #: Number of Meshes: 1
26
+ #: Number of Element Sets: 51
27
+ #: Number of Node Sets: 19
28
+ #: Number of Steps: 1
29
+ session.viewports['Viewport: 1'].setValues(displayedObject=o2)
30
+ session.viewports['Viewport: 1'].view.setValues(nearPlane=37.1481,
31
+ farPlane=54.5279, width=24.5299, height=9.56152, cameraPosition=(26.1367,
32
+ -40.0306, 16.5925), cameraUpVector=(-0.48178, 0.459889, 0.745916),
33
+ cameraTarget=(10.8681, -0.135856, 2.2678))
34
+ session.viewports['Viewport: 1'].view.setValues(nearPlane=31.2711,
35
+ farPlane=58.8748, width=20.6492, height=8.04887, cameraPosition=(-26.736,
36
+ 3.31335, 28.464), cameraUpVector=(0.559357, 0.819197, 0.126636),
37
+ cameraTarget=(9.96447, 0.604917, 2.47069))
38
+ session.viewports['Viewport: 1'].view.setValues(nearPlane=33.4218,
39
+ farPlane=56.621, width=22.0694, height=8.60245, cameraPosition=(-17.1156,
40
+ -14.5765, 35.1248), cameraUpVector=(0.92647, 0.110357, 0.359827),
41
+ cameraTarget=(9.96839, 0.597637, 2.4734))
42
+ session.viewports['Viewport: 1'].view.setValues(nearPlane=35.42,
43
+ farPlane=54.5272, width=23.3889, height=9.11677, cameraPosition=(-12.378,
44
+ -37.8069, -4.87823), cameraUpVector=(0.171776, 0.102768, 0.979761),
45
+ cameraTarget=(9.9649, 0.61475, 2.50287))
46
+ session.viewports['Viewport: 1'].view.setValues(nearPlane=34.16,
47
+ farPlane=55.8047, width=22.5569, height=8.79248, cameraPosition=(-17.5218,
48
+ -34.5083, 8.85578), cameraUpVector=(0.0519255, 0.539614, 0.84031),
49
+ cameraTarget=(9.97415, 0.608815, 2.47816))
50
+ session.viewports['Viewport: 1'].view.setValues(nearPlane=34.2618,
51
+ farPlane=55.703, width=22.6241, height=8.81869, cameraPosition=(-17.5218,
52
+ -34.5083, 8.85578), cameraUpVector=(0.241531, 0.39918, 0.884487),
53
+ cameraTarget=(9.97415, 0.608815, 2.47816))
54
+ #:
55
+ #: Element: PART_TRUSS.30214
56
+ #: Type: JOINTC
57
+ #: Material:
58
+ #: Section:
59
+ #: Connect: 11, 30201
60
+ #: Results: Integration Point values not available
61
+ #:
62
+ #: Element: PART_TRUSS.30214
63
+ #: Type: JOINTC
64
+ #: Material:
65
+ #: Section:
66
+ #: Connect: 11, 30201
67
+ #: Results: Integration Point values not available
68
+ #:
69
+ #: Element: PART_TRUSS.30201
70
+ #: Type: B31
71
+ #: Material:
72
+ #: Section:
73
+ #: Connect: 30201, 30202
74
+ #: Results: Integration Point values not available
75
+ #:
76
+ #: Element: PART_TRUSS.30311
77
+ #: Type: B31
78
+ #: Material:
79
+ #: Section:
80
+ #: Connect: 30311, 30312
81
+ #: Results: Integration Point values not available
82
+ #:
83
+ #: Element: PART_TRUSS.30313
84
+ #: Type: JOINTC
85
+ #: Material:
86
+ #: Section:
87
+ #: Connect: 30312, 12
88
+ #: Results: Integration Point values not available
89
+ #:
90
+ #: Element: PART_TRUSS.30413
91
+ #: Type: JOINTC
92
+ #: Material:
93
+ #: Section:
94
+ #: Connect: 12, 30401
95
+ #: Results: Integration Point values not available
96
+ #:
97
+ #: Element: PART_TRUSS.20214
98
+ #: Type: JOINTC
99
+ #: Material:
100
+ #: Section:
101
+ #: Connect: 12, 20201
102
+ #: Results: Integration Point values not available
@@ -105,7 +105,7 @@ for k in np.arange(0,7):
105
105
 
106
106
 
107
107
 
108
- kw.elementjointc(fid, node1, node2, coord1 , coord2 , nodes_el_chord[k,0]*100, nodes_el_chord[k,0]*100,'B31',setname, [0,1,0],kj1,kj2,offset1=0.1,offset2=0.1,max_length=0.4) #
108
+ kw.memberjointc(fid, node1, node2, coord1 , coord2 , nodes_el_chord[k,0]*100, nodes_el_chord[k,0]*100,'B31',setname, [0,1,0],kj1,kj2,offset1=0.1,offset2=0.1,max_length=0.4) #
109
109
 
110
110
  kw.beamgeneralsection(fid, setname, 7850, [1e-3,1e-7,0,1e-6,1e-7], [0,1,0], [210e9,81e9])
111
111
 
@@ -147,7 +147,7 @@ for k in np.arange(0,8):
147
147
  #kj2=[1e99,1e99,1e99,1e99,1e99,1e99]
148
148
 
149
149
 
150
- kw.elementjointc(fid, node1, node2, coord1 , coord2 , nodes_el_dia[k,0]*100,nodes_el_dia[k,0]*100,'B31',setname, [0,1,0],kj1,kj2,offset1=0.1,offset2=0.1,max_length=0.5) #
150
+ kw.memberjointc(fid, node1, node2, coord1 , coord2 , nodes_el_dia[k,0]*100,nodes_el_dia[k,0]*100,'B31',setname, [0,1,0],kj1,kj2,offset1=0.1,offset2=0.1,max_length=0.5) #
151
151
 
152
152
  kw.beamgeneralsection(fid, setname, 7850, [1e-3,1e-7,0,1e-6,1e-7], [0,1,0], [210e9,81e9])
153
153
 
@@ -46,7 +46,7 @@ options = {
46
46
  'moldflowFiles':[],
47
47
  'moldflowMaterial':OFF,
48
48
  'mp_file_system':(DETECT, DETECT),
49
- 'mp_head_node':('ntnu08422.win.ntnu.no', 'ntnu08422', '10.100.160.131', '192.168.10.105'),
49
+ 'mp_head_node':('ntnu08422.win.ntnu.no', 'ntnu08422', '10.100.224.48', '192.168.68.102'),
50
50
  'mp_host_list':(('ntnu08422', 4),),
51
51
  'mp_mode':MPI,
52
52
  'mp_mode_requested':MPI,