KratosDemStructuresCouplingApplication 10.4.4__py3-none-any.whl
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.
- KratosMultiphysics/.libs/KratosDemStructuresCouplingApplication.so +0 -0
- KratosMultiphysics/.libs/libKratosDemStructuresCouplingCore.dylib +0 -0
- KratosMultiphysics/DemStructuresCouplingApplication/__init__.py +7 -0
- KratosMultiphysics/DemStructuresCouplingApplication/control_module_fem_dem_utility.py +109 -0
- KratosMultiphysics/DemStructuresCouplingApplication/control_module_process.py +29 -0
- KratosMultiphysics/DemStructuresCouplingApplication/dem_fem_coupling_algorithm.py +251 -0
- KratosMultiphysics/DemStructuresCouplingApplication/dem_fem_launcher.py +10 -0
- KratosMultiphysics/DemStructuresCouplingApplication/dem_main_script_ready_for_coupling_with_fem.py +29 -0
- KratosMultiphysics/DemStructuresCouplingApplication/dem_poromechanics_coupling_analysis_stage.py +424 -0
- KratosMultiphysics/DemStructuresCouplingApplication/dem_structures_coupling_gid_output.py +201 -0
- KratosMultiphysics/DemStructuresCouplingApplication/multiaxial_control_module_fem_dem_generalized_2d_utility.py +141 -0
- KratosMultiphysics/DemStructuresCouplingApplication/sand_production_post_process_tool.py +135 -0
- KratosMultiphysics/DemStructuresCouplingApplication/sp_dem_fem_coupling_algorithm.py +303 -0
- KratosMultiphysics/DemStructuresCouplingApplication/sp_dem_fem_launcher.py +10 -0
- KratosMultiphysics/DemStructuresCouplingApplication/sp_statistics.py +143 -0
- KratosMultiphysics/DemStructuresCouplingApplication/sp_statistics_2.py +139 -0
- KratosMultiphysics/DemStructuresCouplingApplication/stress_failure_check_utility.py +36 -0
- kratosdemstructurescouplingapplication-10.4.4.dist-info/METADATA +17 -0
- kratosdemstructurescouplingapplication-10.4.4.dist-info/RECORD +27 -0
- kratosdemstructurescouplingapplication-10.4.4.dist-info/WHEEL +6 -0
- kratosdemstructurescouplingapplication.dylibs/libKratosCore.dylib +4 -0
- kratosdemstructurescouplingapplication.dylibs/libKratosDEMCore.dylib +0 -0
- kratosdemstructurescouplingapplication.dylibs/libKratosPoromechanicsCore.dylib +0 -0
- kratosdemstructurescouplingapplication.dylibs/libKratosStructuralMechanicsCore.dylib +0 -0
- kratosdemstructurescouplingapplication.dylibs/libgcc_s.1.1.dylib +0 -0
- kratosdemstructurescouplingapplication.dylibs/libgomp.1.dylib +0 -0
- kratosdemstructurescouplingapplication.dylibs/libstdc++.6.dylib +0 -0
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import matplotlib.pyplot as plt
|
|
2
|
+
import numpy as np
|
|
3
|
+
import h5py
|
|
4
|
+
|
|
5
|
+
# Read HDF5 file
|
|
6
|
+
file_name = 'sp_data.hdf5'
|
|
7
|
+
f = h5py.File(file_name, 'r')
|
|
8
|
+
|
|
9
|
+
# File Attributes
|
|
10
|
+
test_id = f.attrs['test_id']
|
|
11
|
+
internal_radius = f.attrs['internal_radius']
|
|
12
|
+
external_radius = f.attrs['external_radius']
|
|
13
|
+
interface_radius = f.attrs['interface_radius']
|
|
14
|
+
thickness = f.attrs['thickness']
|
|
15
|
+
volume = f.attrs['volume']
|
|
16
|
+
real_probe_height = f.attrs['real_probe_height']
|
|
17
|
+
target_porosity = f.attrs['target_porosity']
|
|
18
|
+
porosity = f.attrs['porosity']
|
|
19
|
+
density = f.attrs['density']
|
|
20
|
+
|
|
21
|
+
# General factors
|
|
22
|
+
height_factor = real_probe_height / thickness
|
|
23
|
+
porosity_factor = (1.0-target_porosity)/(1.0-porosity)
|
|
24
|
+
gram_factor = 1000.0
|
|
25
|
+
|
|
26
|
+
# Total initial mass
|
|
27
|
+
initial_radii = np.array(f['0'].get('radius'))
|
|
28
|
+
initial_radii_3 = np.power(initial_radii,3)
|
|
29
|
+
initial_masses = 4.0/3.0 * np.pi * density * gram_factor * height_factor * porosity_factor * initial_radii_3
|
|
30
|
+
initial_mass = np.sum(initial_masses)
|
|
31
|
+
# print(initial_mass)
|
|
32
|
+
|
|
33
|
+
# SP
|
|
34
|
+
all_times=[]
|
|
35
|
+
all_pressures=[]
|
|
36
|
+
all_sps=[]
|
|
37
|
+
|
|
38
|
+
# Time and external applied pressure
|
|
39
|
+
failure_step = 175 # TODO
|
|
40
|
+
max_step = 2*failure_step
|
|
41
|
+
max_step = failure_step
|
|
42
|
+
times = np.zeros(max_step+1)
|
|
43
|
+
for i in range(max_step):
|
|
44
|
+
times[i+1] = f[str(i)].attrs['time']
|
|
45
|
+
p_rate = 5e10 # TODO
|
|
46
|
+
psi_factor = 0.000145038
|
|
47
|
+
pressures = [p_rate*t*psi_factor for t in times] # Pressure in psi
|
|
48
|
+
t_f=times[failure_step]
|
|
49
|
+
# print(t_f)
|
|
50
|
+
# Estimated time of initial sanding. TODO
|
|
51
|
+
# t_is=times[90]
|
|
52
|
+
# t_is=times[130]
|
|
53
|
+
# print(t_is)
|
|
54
|
+
|
|
55
|
+
# Maximum number of intact bonds to consider spheres as SP
|
|
56
|
+
max_num_bonds = 6.0 # TODO: this should be an int
|
|
57
|
+
|
|
58
|
+
for numbonds in np.arange(0.0,max_num_bonds,1.0):
|
|
59
|
+
sps = np.zeros(max_step+1)
|
|
60
|
+
for i in range(max_step):
|
|
61
|
+
|
|
62
|
+
# Read datasets
|
|
63
|
+
all_radii = np.array(f[str(i)].get('radius'))
|
|
64
|
+
continuum_bonds = np.array(f[str(i)].get('current_continuum_bonds'))
|
|
65
|
+
xs = np.array(f[str(i)].get('x'))
|
|
66
|
+
ys = np.array(f[str(i)].get('y'))
|
|
67
|
+
|
|
68
|
+
# Separate internal and external spheres (weak region and strong region)
|
|
69
|
+
xs_2 = np.power(xs,2)
|
|
70
|
+
ys_2 = np.power(ys,2)
|
|
71
|
+
distance_2 = xs_2 + ys_2
|
|
72
|
+
# weak_radius = 0.5*(internal_radius+interface_radius)
|
|
73
|
+
# if times[i+1] < t_is:
|
|
74
|
+
# weak_radius = internal_radius
|
|
75
|
+
# else:
|
|
76
|
+
# weak_radius = internal_radius + (interface_radius-internal_radius)/(t_f-t_is)*(times[i+1]-t_is)
|
|
77
|
+
# TODO: count all the spheres in the domain
|
|
78
|
+
weak_radius = interface_radius
|
|
79
|
+
internal_radii = np.where(distance_2<weak_radius**2,all_radii,0.0) # spheres between inner wall (hole) and a certain radius (weak region)
|
|
80
|
+
external_radii = np.where(distance_2>=weak_radius**2,all_radii,0.0) # spheres between a certain radius and the interface wall (dem-fem wall) (strong region)
|
|
81
|
+
|
|
82
|
+
# Eliminate spheres that are free (SP), taking special care of those falling near the hole (internal spheres)
|
|
83
|
+
cont_internal_radii = np.where(continuum_bonds>numbonds,internal_radii,0.0) # We eliminate spheres with small number of bonds in the weak part of the probe
|
|
84
|
+
cont_external_radii = np.where(continuum_bonds>0.0,external_radii,0.0)
|
|
85
|
+
|
|
86
|
+
total_radii_3 = np.power(cont_internal_radii+cont_external_radii,3)
|
|
87
|
+
|
|
88
|
+
# Compute SP
|
|
89
|
+
masses = 4.0/3.0 * np.pi * density * gram_factor * height_factor * porosity_factor * total_radii_3
|
|
90
|
+
current_mass = np.sum(masses)
|
|
91
|
+
current_sp = initial_mass - current_mass
|
|
92
|
+
sps[i+1] = current_sp
|
|
93
|
+
|
|
94
|
+
all_times.append(times)
|
|
95
|
+
all_pressures.append(pressures)
|
|
96
|
+
all_sps.append(sps)
|
|
97
|
+
|
|
98
|
+
# Experiment data
|
|
99
|
+
with open('ctw16_experiment.txt') as exp_f:
|
|
100
|
+
exp_times=[]
|
|
101
|
+
exp_pressures=[]
|
|
102
|
+
exp_sps=[]
|
|
103
|
+
for line in exp_f:
|
|
104
|
+
fields = line.strip().split()
|
|
105
|
+
if fields:
|
|
106
|
+
exp_times.append(float(fields[0]))
|
|
107
|
+
exp_pressures.append(float(fields[1]))
|
|
108
|
+
exp_sps.append(float(fields[2]))
|
|
109
|
+
all_times.append(exp_times)
|
|
110
|
+
all_pressures.append(exp_pressures)
|
|
111
|
+
all_sps.append(exp_sps)
|
|
112
|
+
|
|
113
|
+
# Graphs
|
|
114
|
+
graph_name='sp_bonds_t.pdf'
|
|
115
|
+
graph_name='sp_bonds.pdf'
|
|
116
|
+
|
|
117
|
+
graph_labels=['SP up to 0 intact bonds',
|
|
118
|
+
'SP up to 1 intact bonds',
|
|
119
|
+
'SP up to 2 intact bonds',
|
|
120
|
+
'SP up to 3 intact bonds',
|
|
121
|
+
'SP up to 4 intact bonds',
|
|
122
|
+
'SP up to 5 intact bonds',
|
|
123
|
+
'ctw16 experiment',
|
|
124
|
+
]
|
|
125
|
+
|
|
126
|
+
f = plt.figure()
|
|
127
|
+
|
|
128
|
+
for name, pressures, productions in zip(graph_labels, all_pressures, all_sps):
|
|
129
|
+
plt.plot(pressures, productions,label=name)
|
|
130
|
+
#p_is = p_rate*t_is*psi_factor
|
|
131
|
+
#plt.axvline(x=p_is, c='k', ls='--', label='estimated numerical initial sanding')
|
|
132
|
+
|
|
133
|
+
# for name, times, productions in zip(graph_labels, all_times, all_sps):
|
|
134
|
+
# plt.plot(times, productions,label=name)
|
|
135
|
+
# plt.axvline(x=t_is, c='k', ls='--', label='estimated numerical initial sanding')
|
|
136
|
+
# plt.axvline(x=t_f, c='k', ls=':', label='numerical collapse')
|
|
137
|
+
|
|
138
|
+
plt.legend(loc=2, prop={'size': 6})
|
|
139
|
+
plt.xlabel('p (psi)')
|
|
140
|
+
# plt.xlabel('Time (s)')
|
|
141
|
+
plt.ylabel('Sand Production (g)')
|
|
142
|
+
plt.title('SP depending on number of intact bonds')
|
|
143
|
+
f.savefig(graph_name, bbox_inches='tight')
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import matplotlib.pyplot as plt
|
|
2
|
+
import numpy as np
|
|
3
|
+
import h5py
|
|
4
|
+
|
|
5
|
+
# Read HDF5 file
|
|
6
|
+
file_name = 'sp_data.hdf5'
|
|
7
|
+
f = h5py.File(file_name, 'r')
|
|
8
|
+
|
|
9
|
+
# File Attributes
|
|
10
|
+
test_id = f.attrs['test_id']
|
|
11
|
+
internal_radius = f.attrs['internal_radius']
|
|
12
|
+
external_radius = f.attrs['external_radius']
|
|
13
|
+
interface_radius = f.attrs['interface_radius']
|
|
14
|
+
thickness = f.attrs['thickness']
|
|
15
|
+
volume = f.attrs['volume']
|
|
16
|
+
real_probe_height = f.attrs['real_probe_height']
|
|
17
|
+
target_porosity = f.attrs['target_porosity']
|
|
18
|
+
porosity = f.attrs['porosity']
|
|
19
|
+
density = f.attrs['density']
|
|
20
|
+
|
|
21
|
+
# Time and external applied pressure
|
|
22
|
+
failure_step = 300 # TODO
|
|
23
|
+
max_step = failure_step
|
|
24
|
+
times = np.zeros(max_step)
|
|
25
|
+
for i in range(max_step):
|
|
26
|
+
times[i] = f[str(i)].attrs['time']
|
|
27
|
+
|
|
28
|
+
delta_probe_radius = (interface_radius-internal_radius)/5.0
|
|
29
|
+
# internal_radius_2 = internal_radius**2
|
|
30
|
+
probe_radius_1 = (internal_radius+delta_probe_radius*1)**2
|
|
31
|
+
probe_radius_2 = (internal_radius+delta_probe_radius*2)**2
|
|
32
|
+
probe_radius_3 = (internal_radius+delta_probe_radius*3)**2
|
|
33
|
+
probe_radius_4 = (internal_radius+delta_probe_radius*4)**2
|
|
34
|
+
interface_radius_2 = interface_radius**2
|
|
35
|
+
avg_num_intact_bonds_0 = np.zeros(max_step)
|
|
36
|
+
avg_num_intact_bonds_1 = np.zeros(max_step)
|
|
37
|
+
avg_num_intact_bonds_2 = np.zeros(max_step)
|
|
38
|
+
avg_num_intact_bonds_3 = np.zeros(max_step)
|
|
39
|
+
avg_num_intact_bonds_4 = np.zeros(max_step)
|
|
40
|
+
|
|
41
|
+
avg_num_broken_bonds_0 = np.zeros(max_step)
|
|
42
|
+
avg_num_broken_bonds_1 = np.zeros(max_step)
|
|
43
|
+
avg_num_broken_bonds_2 = np.zeros(max_step)
|
|
44
|
+
avg_num_broken_bonds_3 = np.zeros(max_step)
|
|
45
|
+
avg_num_broken_bonds_4 = np.zeros(max_step)
|
|
46
|
+
|
|
47
|
+
for i in range(max_step):
|
|
48
|
+
|
|
49
|
+
# Read datasets
|
|
50
|
+
continuum_bonds = np.array(f[str(i)].get('current_continuum_bonds'))
|
|
51
|
+
initial_continuum_bonds = np.array(f[str(i)].get('initial_continuum_bonds'))
|
|
52
|
+
xs = np.array(f[str(i)].get('x'))
|
|
53
|
+
ys = np.array(f[str(i)].get('y'))
|
|
54
|
+
|
|
55
|
+
xs_2 = np.power(xs,2)
|
|
56
|
+
ys_2 = np.power(ys,2)
|
|
57
|
+
distance_2 = xs_2 + ys_2
|
|
58
|
+
|
|
59
|
+
num_intact_bonds_0 = np.where(distance_2<probe_radius_1,continuum_bonds,-100.0)
|
|
60
|
+
index_to_delete = np.where(num_intact_bonds_0<0.0)[0]
|
|
61
|
+
num_intact_bonds_0 = np.delete(num_intact_bonds_0,index_to_delete)
|
|
62
|
+
num_init_bonds_0 = np.where(distance_2<probe_radius_1,initial_continuum_bonds,-100.0)
|
|
63
|
+
index_to_delete = np.where(num_init_bonds_0<0.0)[0]
|
|
64
|
+
num_init_bonds_0 = np.delete(num_init_bonds_0,index_to_delete)
|
|
65
|
+
num_broken_bonds_0 = num_init_bonds_0 - num_intact_bonds_0
|
|
66
|
+
avg_num_intact_bonds_0[i] = np.sum(num_intact_bonds_0)/len(num_intact_bonds_0)
|
|
67
|
+
avg_num_broken_bonds_0[i] = np.sum(num_broken_bonds_0)/len(num_broken_bonds_0)
|
|
68
|
+
|
|
69
|
+
num_intact_bonds_1 = np.where(distance_2>=probe_radius_1,continuum_bonds,-100)
|
|
70
|
+
num_intact_bonds_1 = np.where(distance_2<probe_radius_2,num_intact_bonds_1,-100)
|
|
71
|
+
index_to_delete = np.where(num_intact_bonds_1<0.0)[0]
|
|
72
|
+
num_intact_bonds_1 = np.delete(num_intact_bonds_1,index_to_delete)
|
|
73
|
+
num_init_bonds_1 = np.where(distance_2>=probe_radius_1,initial_continuum_bonds,-100)
|
|
74
|
+
num_init_bonds_1 = np.where(distance_2<probe_radius_2,num_init_bonds_1,-100)
|
|
75
|
+
index_to_delete = np.where(num_init_bonds_1<0.0)[0]
|
|
76
|
+
num_init_bonds_1 = np.delete(num_init_bonds_1,index_to_delete)
|
|
77
|
+
num_broken_bonds_1 = num_init_bonds_1 - num_intact_bonds_1
|
|
78
|
+
avg_num_intact_bonds_1[i] = np.sum(num_intact_bonds_1)/len(num_intact_bonds_1)
|
|
79
|
+
avg_num_broken_bonds_1[i] = np.sum(num_broken_bonds_1)/len(num_broken_bonds_1)
|
|
80
|
+
|
|
81
|
+
num_intact_bonds_2 = np.where(distance_2>=probe_radius_2,continuum_bonds,-100)
|
|
82
|
+
num_intact_bonds_2 = np.where(distance_2<probe_radius_3,num_intact_bonds_2,-100)
|
|
83
|
+
index_to_delete = np.where(num_intact_bonds_2<0.0)[0]
|
|
84
|
+
num_intact_bonds_2 = np.delete(num_intact_bonds_2,index_to_delete)
|
|
85
|
+
num_init_bonds_2 = np.where(distance_2>=probe_radius_2,initial_continuum_bonds,-100)
|
|
86
|
+
num_init_bonds_2 = np.where(distance_2<probe_radius_3,num_init_bonds_2,-100)
|
|
87
|
+
index_to_delete = np.where(num_init_bonds_2<0.0)[0]
|
|
88
|
+
num_init_bonds_2 = np.delete(num_init_bonds_2,index_to_delete)
|
|
89
|
+
num_broken_bonds_2 = num_init_bonds_2 - num_intact_bonds_2
|
|
90
|
+
avg_num_intact_bonds_2[i] = np.sum(num_intact_bonds_2)/len(num_intact_bonds_2)
|
|
91
|
+
avg_num_broken_bonds_2[i] = np.sum(num_broken_bonds_2)/len(num_broken_bonds_2)
|
|
92
|
+
|
|
93
|
+
num_intact_bonds_3 = np.where(distance_2>=probe_radius_3,continuum_bonds,-100)
|
|
94
|
+
num_intact_bonds_3 = np.where(distance_2<probe_radius_4,num_intact_bonds_3,-100)
|
|
95
|
+
index_to_delete = np.where(num_intact_bonds_3<0.0)[0]
|
|
96
|
+
num_intact_bonds_3 = np.delete(num_intact_bonds_3,index_to_delete)
|
|
97
|
+
num_init_bonds_3 = np.where(distance_2>=probe_radius_3,initial_continuum_bonds,-100)
|
|
98
|
+
num_init_bonds_3 = np.where(distance_2<probe_radius_4,num_init_bonds_3,-100)
|
|
99
|
+
index_to_delete = np.where(num_init_bonds_3<0.0)[0]
|
|
100
|
+
num_init_bonds_3 = np.delete(num_init_bonds_3,index_to_delete)
|
|
101
|
+
num_broken_bonds_3 = num_init_bonds_3 - num_intact_bonds_3
|
|
102
|
+
avg_num_intact_bonds_3[i] = np.sum(num_intact_bonds_3)/len(num_intact_bonds_3)
|
|
103
|
+
avg_num_broken_bonds_3[i] = np.sum(num_broken_bonds_3)/len(num_broken_bonds_3)
|
|
104
|
+
|
|
105
|
+
num_intact_bonds_4 = np.where(distance_2>probe_radius_4,continuum_bonds,-100.0)
|
|
106
|
+
index_to_delete = np.where(num_intact_bonds_4<0.0)[0]
|
|
107
|
+
num_intact_bonds_4 = np.delete(num_intact_bonds_4,index_to_delete)
|
|
108
|
+
num_init_bonds_4 = np.where(distance_2>probe_radius_4,initial_continuum_bonds,-100.0)
|
|
109
|
+
index_to_delete = np.where(num_init_bonds_4<0.0)[0]
|
|
110
|
+
num_init_bonds_4 = np.delete(num_init_bonds_4,index_to_delete)
|
|
111
|
+
num_broken_bonds_4 = num_init_bonds_4 - num_intact_bonds_4
|
|
112
|
+
avg_num_intact_bonds_4[i] = np.sum(num_intact_bonds_4)/len(num_intact_bonds_4)
|
|
113
|
+
avg_num_broken_bonds_4[i] = np.sum(num_broken_bonds_4)/len(num_broken_bonds_4)
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
# Graphs
|
|
117
|
+
fig1, axs1 = plt.subplots(3, 2, figsize=(7, 7))
|
|
118
|
+
|
|
119
|
+
graph_name='average_number_intact_bonds_probe_radius.pdf'
|
|
120
|
+
|
|
121
|
+
axs1[0,0].plot(times,avg_num_intact_bonds_0)
|
|
122
|
+
axs1[1,0].plot(times,avg_num_intact_bonds_1)
|
|
123
|
+
axs1[2,0].plot(times,avg_num_intact_bonds_2)
|
|
124
|
+
axs1[0,1].plot(times,avg_num_intact_bonds_3)
|
|
125
|
+
axs1[1,1].plot(times,avg_num_intact_bonds_4)
|
|
126
|
+
|
|
127
|
+
fig1.savefig(graph_name)
|
|
128
|
+
|
|
129
|
+
fig2, axs2 = plt.subplots(3, 2, figsize=(7, 7))
|
|
130
|
+
|
|
131
|
+
graph_name='average_number_broken_bonds_probe_radius.pdf'
|
|
132
|
+
|
|
133
|
+
axs2[0,0].plot(times,avg_num_broken_bonds_0)
|
|
134
|
+
axs2[1,0].plot(times,avg_num_broken_bonds_1)
|
|
135
|
+
axs2[2,0].plot(times,avg_num_broken_bonds_2)
|
|
136
|
+
axs2[0,1].plot(times,avg_num_broken_bonds_3)
|
|
137
|
+
axs2[1,1].plot(times,avg_num_broken_bonds_4)
|
|
138
|
+
|
|
139
|
+
fig2.savefig(graph_name)
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import KratosMultiphysics
|
|
2
|
+
import KratosMultiphysics.DemStructuresCouplingApplication as DemFem
|
|
3
|
+
|
|
4
|
+
class StressFailureCheckUtility():
|
|
5
|
+
def __init__(self, model_part, test_number):
|
|
6
|
+
|
|
7
|
+
if not test_number:
|
|
8
|
+
return
|
|
9
|
+
|
|
10
|
+
self.model_part = model_part
|
|
11
|
+
|
|
12
|
+
if test_number == 1: # CTW16
|
|
13
|
+
minimum_radius = 0.00381
|
|
14
|
+
maximum_radius = 0.01381 #0.00501
|
|
15
|
+
elif test_number == 2: # CTW10
|
|
16
|
+
minimum_radius = 0.0127
|
|
17
|
+
maximum_radius = 0.0139
|
|
18
|
+
else: # Blind test
|
|
19
|
+
minimum_radius = 0.0381
|
|
20
|
+
maximum_radius = 0.0393
|
|
21
|
+
|
|
22
|
+
self.settings = KratosMultiphysics.Parameters( """
|
|
23
|
+
{
|
|
24
|
+
"cylinder_center": [0.0,0.0,0.0]
|
|
25
|
+
} """ )
|
|
26
|
+
|
|
27
|
+
self.settings.AddEmptyValue("min_radius")
|
|
28
|
+
self.settings["min_radius"].SetDouble(minimum_radius)
|
|
29
|
+
self.settings.AddEmptyValue("max_radius")
|
|
30
|
+
self.settings["max_radius"].SetDouble(maximum_radius)
|
|
31
|
+
|
|
32
|
+
self.utility = DemFem.StressFailureCheckUtilities(self.model_part, self.settings)
|
|
33
|
+
|
|
34
|
+
def ExecuteFinalizeSolutionStep(self):
|
|
35
|
+
|
|
36
|
+
self.utility.ExecuteFinalizeSolutionStep()
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: KratosDemStructuresCouplingApplication
|
|
3
|
+
Version: 10.4.4
|
|
4
|
+
Summary: KRATOS Multiphysics ("Kratos") is a framework for building parallel, multi-disciplinary simulation software, aiming at modularity, extensibility, and high performance. Kratos is written in C++, and counts with an extensive Python interface.
|
|
5
|
+
Author-email: Kratos Team <kratos@listas.cimne.upc.edu>
|
|
6
|
+
License: BSD-4-Clause
|
|
7
|
+
Classifier: Programming Language :: C++
|
|
8
|
+
Classifier: Programming Language :: Python :: 3
|
|
9
|
+
Classifier: Topic :: Scientific/Engineering
|
|
10
|
+
Requires-Python: >=3.8
|
|
11
|
+
Requires-Dist: kratosdemapplication==10.4.4
|
|
12
|
+
Requires-Dist: kratosmultiphysics==10.4.4
|
|
13
|
+
Requires-Dist: kratosporomechanicsapplication==10.4.4
|
|
14
|
+
Requires-Dist: kratosstructuralmechanicsapplication==10.4.4
|
|
15
|
+
Description-Content-Type: text/markdown
|
|
16
|
+
|
|
17
|
+
## DEM-Structures Coupling Application
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
KratosMultiphysics/DemStructuresCouplingApplication/dem_fem_coupling_algorithm.py,sha256=7IDDCeDRlbtail89L0IZH3NBhxuR6sBdRUCA3Ir06d0,13360
|
|
2
|
+
KratosMultiphysics/DemStructuresCouplingApplication/sand_production_post_process_tool.py,sha256=Bap4FcD41gCo2UTDcDPmVDUMjQprs1aZVnzdOEM_Fjw,7151
|
|
3
|
+
KratosMultiphysics/DemStructuresCouplingApplication/dem_structures_coupling_gid_output.py,sha256=6EFyVd8cWJQmthpKRpjsomqYMTQskW4WJbB3Zp6Z4Fw,8749
|
|
4
|
+
KratosMultiphysics/DemStructuresCouplingApplication/__init__.py,sha256=yBBXD5CRVs_ZpazcqKkGfZagku3aqOJo07uBLLMKa8k,308
|
|
5
|
+
KratosMultiphysics/DemStructuresCouplingApplication/sp_statistics.py,sha256=hzFLbpvmFjEVXLYY0rg0iubBVlQdoUJLvwsY3_xF4UU,5052
|
|
6
|
+
KratosMultiphysics/DemStructuresCouplingApplication/dem_poromechanics_coupling_analysis_stage.py,sha256=E4_8t9dIWRKnHzxUHaWxWo21Hxpb6Fm9dduPp1ftrQI,24071
|
|
7
|
+
KratosMultiphysics/DemStructuresCouplingApplication/stress_failure_check_utility.py,sha256=O648a86VVioFDlGW6p025bEofGSc6lRQ3lPXPw-JkOw,1140
|
|
8
|
+
KratosMultiphysics/DemStructuresCouplingApplication/multiaxial_control_module_fem_dem_generalized_2d_utility.py,sha256=6aXqVXZACNWu8vfCqzZ-ielD4E2OxLWTYfAw3ARUczg,6652
|
|
9
|
+
KratosMultiphysics/DemStructuresCouplingApplication/sp_dem_fem_launcher.py,sha256=qVjl6yo3D6u9h9RFd4EFnnXc59Kyya__39ExQrvJFSc,389
|
|
10
|
+
KratosMultiphysics/DemStructuresCouplingApplication/dem_main_script_ready_for_coupling_with_fem.py,sha256=u_YJ0dmcWYze8YB42GX1Zi2ZJRcC-B8M2KwFF4OljhU,1114
|
|
11
|
+
KratosMultiphysics/DemStructuresCouplingApplication/sp_dem_fem_coupling_algorithm.py,sha256=wVO6mSRUJEHLiHwfPQgoEOpYCriF3SW__H9XVXT1IG4,15991
|
|
12
|
+
KratosMultiphysics/DemStructuresCouplingApplication/sp_statistics_2.py,sha256=ggqH79yBPaHqgKREbwwp44BcgtycG7pG_FTR77ZdQ4A,6398
|
|
13
|
+
KratosMultiphysics/DemStructuresCouplingApplication/control_module_fem_dem_utility.py,sha256=4kFvdo_E230dsQ2eQCTOIuPms-_fblyRlodzLGFxL5c,4825
|
|
14
|
+
KratosMultiphysics/DemStructuresCouplingApplication/dem_fem_launcher.py,sha256=RWW69NOz6fMY-eZGFUVeXA4hZc7anPqT7xh5LJqP6oA,382
|
|
15
|
+
KratosMultiphysics/DemStructuresCouplingApplication/control_module_process.py,sha256=obzmvT_ssEvG5h8Y6u_ilprOKxhjssLpVk-Y735zYdc,1358
|
|
16
|
+
KratosMultiphysics/.libs/libKratosDemStructuresCouplingCore.dylib,sha256=raV8uRCZ13tbyq_4jzVlOf8g29Wd0vAb6XSvGTXsPys,2494592
|
|
17
|
+
KratosMultiphysics/.libs/KratosDemStructuresCouplingApplication.so,sha256=RJo8KysypkVpUwUthpFajwFmXBwOTok-EwskrRRaIMg,2226880
|
|
18
|
+
kratosdemstructurescouplingapplication-10.4.4.dist-info/RECORD,,
|
|
19
|
+
kratosdemstructurescouplingapplication-10.4.4.dist-info/WHEEL,sha256=QX0UaoWXQIAv8vp5R3do793urekDoJdJRoGCk8nXIBY,115
|
|
20
|
+
kratosdemstructurescouplingapplication-10.4.4.dist-info/METADATA,sha256=qFboNEJQJ7wBjnUwXeVJwS7yog4yP61rg-XVBVhcYWE,882
|
|
21
|
+
kratosdemstructurescouplingapplication.dylibs/libstdc++.6.dylib,sha256=Evj6w_OS_5KZkCtzPWv2krwVowjlzK5MLjAxRd0k8Gc,3403264
|
|
22
|
+
kratosdemstructurescouplingapplication.dylibs/libKratosStructuralMechanicsCore.dylib,sha256=Qb8OCjNNRNzZkunYM8VNCKhDvseac40mhJm7ogg68yY,21304288
|
|
23
|
+
kratosdemstructurescouplingapplication.dylibs/libKratosDEMCore.dylib,sha256=GS5_Y5GGPYEINWpXLXPln-6lplVdp6_RNtUxcpJfJW0,9988256
|
|
24
|
+
kratosdemstructurescouplingapplication.dylibs/libKratosCore.dylib,sha256=4ezGluhB6_qb9DnuWJCmX2VtpS9wWe16aOe9HLXVMSo,63629792
|
|
25
|
+
kratosdemstructurescouplingapplication.dylibs/libKratosPoromechanicsCore.dylib,sha256=LQQiPBK9v22upHeTQgul2dXFTX1gygPU7R584JD6zr0,15479760
|
|
26
|
+
kratosdemstructurescouplingapplication.dylibs/libgcc_s.1.1.dylib,sha256=LEUPpUC5mgEGvZcGWJjec9KZLBW-qoyUL1QxmuVKXDw,219232
|
|
27
|
+
kratosdemstructurescouplingapplication.dylibs/libgomp.1.dylib,sha256=uQnW1i3Whh3qhRZgpBI1xCtHg5C5iHGCybc19JwuAGs,438880
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|