KratosDamApplication 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/KratosDamApplication.so +0 -0
- KratosMultiphysics/.libs/libKratosDamCore.dylib +0 -0
- KratosMultiphysics/DamApplication/__init__.py +10 -0
- KratosMultiphysics/DamApplication/apply_constraint_vector_dam_table_process.py +62 -0
- KratosMultiphysics/DamApplication/apply_load_vector_dam_process.py +76 -0
- KratosMultiphysics/DamApplication/apply_load_vector_dam_table_process.py +69 -0
- KratosMultiphysics/DamApplication/check_and_prepare_model_process_dam_mechanical.py +83 -0
- KratosMultiphysics/DamApplication/check_and_prepare_model_process_dam_thermal.py +155 -0
- KratosMultiphysics/DamApplication/check_and_prepare_selfweight_model_process_dam.py +85 -0
- KratosMultiphysics/DamApplication/dam_P_solver.py +164 -0
- KratosMultiphysics/DamApplication/dam_UP_mechanical_solver.py +128 -0
- KratosMultiphysics/DamApplication/dam_UP_thermo_mechanic_solver.py +156 -0
- KratosMultiphysics/DamApplication/dam_analysis.py +463 -0
- KratosMultiphysics/DamApplication/dam_cleaning_utility.py +25 -0
- KratosMultiphysics/DamApplication/dam_constitutive_law_utility.py +18 -0
- KratosMultiphysics/DamApplication/dam_construction_utility.py +162 -0
- KratosMultiphysics/DamApplication/dam_eigen_solver.py +163 -0
- KratosMultiphysics/DamApplication/dam_mapping_variables_utility.py +48 -0
- KratosMultiphysics/DamApplication/dam_mechanical_solver.py +424 -0
- KratosMultiphysics/DamApplication/dam_selfweight_solver.py +452 -0
- KratosMultiphysics/DamApplication/dam_thermo_mechanic_solver.py +523 -0
- KratosMultiphysics/DamApplication/gid_dam_output_process.py +763 -0
- KratosMultiphysics/DamApplication/global_joint_stress_utility.py +27 -0
- KratosMultiphysics/DamApplication/impose_2d_random_fields_variable_process.py +71 -0
- KratosMultiphysics/DamApplication/impose_3d_random_fields_variable_process.py +74 -0
- KratosMultiphysics/DamApplication/impose_chemo_mechanical_aging_process.py +23 -0
- KratosMultiphysics/DamApplication/impose_face_heat_flux_process.py +59 -0
- KratosMultiphysics/DamApplication/impose_grouting_reference_temperature_process.py +25 -0
- KratosMultiphysics/DamApplication/impose_heat_source_process.py +34 -0
- KratosMultiphysics/DamApplication/impose_input_table_nodal_young_modulus_process.py +45 -0
- KratosMultiphysics/DamApplication/impose_nodal_reference_temperature_process.py +42 -0
- KratosMultiphysics/DamApplication/impose_nodal_young_modulus_process.py +28 -0
- KratosMultiphysics/DamApplication/impose_reservoir_temperature_condition_process.py +45 -0
- KratosMultiphysics/DamApplication/impose_temperature_by_device_process.py +21 -0
- KratosMultiphysics/DamApplication/impose_thermal_parameters_scalar_value_process.py +63 -0
- KratosMultiphysics/DamApplication/impose_uniform_temperature_process.py +42 -0
- KratosMultiphysics/DamApplication/impose_water_loads_condition_process.py +48 -0
- KratosMultiphysics/DamApplication/save_variables_utility.py +132 -0
- KratosMultiphysics/DamApplication/special_condition_process.py +18 -0
- KratosMultiphysics/DamApplication/streamlines_output_utility.py +22 -0
- KratosMultiphysics/DamApplication/transfer_selfweight_stress_utility.py +20 -0
- kratosdamapplication-10.4.4.dist-info/METADATA +40 -0
- kratosdamapplication-10.4.4.dist-info/RECORD +51 -0
- kratosdamapplication-10.4.4.dist-info/WHEEL +6 -0
- kratosdamapplication.dylibs/libKratosConstitutiveLawsCore.dylib +4 -0
- kratosdamapplication.dylibs/libKratosCore.dylib +4 -0
- kratosdamapplication.dylibs/libKratosPoromechanicsCore.dylib +0 -0
- kratosdamapplication.dylibs/libKratosStructuralMechanicsCore.dylib +0 -0
- kratosdamapplication.dylibs/libgcc_s.1.1.dylib +0 -0
- kratosdamapplication.dylibs/libgomp.1.dylib +0 -0
- kratosdamapplication.dylibs/libstdc++.6.dylib +0 -0
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
|
|
2
|
+
# Application dependent names and paths
|
|
3
|
+
from KratosMultiphysics import _ImportApplication
|
|
4
|
+
import KratosMultiphysics.StructuralMechanicsApplication
|
|
5
|
+
import KratosMultiphysics.PoromechanicsApplication
|
|
6
|
+
from KratosDamApplication import *
|
|
7
|
+
application = KratosDamApplication()
|
|
8
|
+
application_name = "KratosDamApplication"
|
|
9
|
+
|
|
10
|
+
_ImportApplication(application,application_name)
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import KratosMultiphysics
|
|
2
|
+
import KratosMultiphysics.DamApplication as KratosDam
|
|
3
|
+
from KratosMultiphysics.assign_scalar_variable_process import AssignScalarVariableProcess
|
|
4
|
+
|
|
5
|
+
def Factory(settings, Model):
|
|
6
|
+
if not isinstance(settings, KratosMultiphysics.Parameters):
|
|
7
|
+
raise Exception("expected input shall be a Parameters object, encapsulating a json string")
|
|
8
|
+
return ApplyConstraintVectorDamTableProcess(Model, settings["Parameters"])
|
|
9
|
+
|
|
10
|
+
## All the processes python should be derived from "Process"
|
|
11
|
+
|
|
12
|
+
class ApplyConstraintVectorDamTableProcess(KratosMultiphysics.Process):
|
|
13
|
+
def __init__(self, Model, settings ):
|
|
14
|
+
KratosMultiphysics.Process.__init__(self)
|
|
15
|
+
|
|
16
|
+
model_part = Model[settings["model_part_name"].GetString()]
|
|
17
|
+
variable_name = settings["variable_name"].GetString()
|
|
18
|
+
|
|
19
|
+
self.components_process_list = []
|
|
20
|
+
|
|
21
|
+
x_params = KratosMultiphysics.Parameters("{}")
|
|
22
|
+
x_params.AddValue("model_part_name",settings["model_part_name"])
|
|
23
|
+
x_params.AddValue("constrained",settings["constrained"][0])
|
|
24
|
+
x_params.AddValue("value",settings["value"][0])
|
|
25
|
+
x_params.AddEmptyValue("variable_name").SetString(variable_name+"_X")
|
|
26
|
+
if settings["Value_Table"][0].GetInt() == 0:
|
|
27
|
+
self.components_process_list.append(AssignScalarVariableProcess(Model, x_params))
|
|
28
|
+
else:
|
|
29
|
+
x_params.AddValue("table",settings["Value_Table"][0])
|
|
30
|
+
self.components_process_list.append(KratosDam.ApplyComponentTableProcessDam(model_part, x_params))
|
|
31
|
+
|
|
32
|
+
y_params = KratosMultiphysics.Parameters("{}")
|
|
33
|
+
y_params.AddValue("model_part_name",settings["model_part_name"])
|
|
34
|
+
y_params.AddValue("constrained",settings["constrained"][1])
|
|
35
|
+
y_params.AddValue("value",settings["value"][1])
|
|
36
|
+
y_params.AddEmptyValue("variable_name").SetString(variable_name+"_Y")
|
|
37
|
+
if settings["Value_Table"][1].GetInt() == 0:
|
|
38
|
+
self.components_process_list.append(AssignScalarVariableProcess(Model, y_params))
|
|
39
|
+
else:
|
|
40
|
+
y_params.AddValue("table",settings["Value_Table"][1])
|
|
41
|
+
self.components_process_list.append(KratosDam.ApplyComponentTableProcessDam(model_part, y_params))
|
|
42
|
+
|
|
43
|
+
z_params = KratosMultiphysics.Parameters("{}")
|
|
44
|
+
z_params.AddValue("model_part_name",settings["model_part_name"])
|
|
45
|
+
z_params.AddValue("constrained",settings["constrained"][2])
|
|
46
|
+
z_params.AddValue("value",settings["value"][2])
|
|
47
|
+
z_params.AddEmptyValue("variable_name").SetString(variable_name+"_Z")
|
|
48
|
+
if settings["Value_Table"][2].GetInt() == 0:
|
|
49
|
+
self.components_process_list.append(AssignScalarVariableProcess(Model, z_params))
|
|
50
|
+
else:
|
|
51
|
+
z_params.AddValue("table",settings["Value_Table"][2])
|
|
52
|
+
self.components_process_list.append(KratosDam.ApplyComponentTableProcessDam(model_part, z_params))
|
|
53
|
+
|
|
54
|
+
def ExecuteBeforeSolutionLoop(self):
|
|
55
|
+
|
|
56
|
+
for component in self.components_process_list:
|
|
57
|
+
component.ExecuteBeforeSolutionLoop()
|
|
58
|
+
|
|
59
|
+
def ExecuteInitializeSolutionStep(self):
|
|
60
|
+
|
|
61
|
+
for component in self.components_process_list:
|
|
62
|
+
component.ExecuteInitializeSolutionStep()
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import KratosMultiphysics
|
|
2
|
+
from KratosMultiphysics.assign_scalar_variable_process import (
|
|
3
|
+
AssignScalarVariableProcess,
|
|
4
|
+
)
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def Factory(settings, Model):
|
|
8
|
+
if not isinstance(settings, KratosMultiphysics.Parameters):
|
|
9
|
+
raise Exception(
|
|
10
|
+
"expected input shall be a Parameters object, encapsulating a json string"
|
|
11
|
+
)
|
|
12
|
+
return ApplyLoadVectorDamProcess(Model, settings["Parameters"])
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
## All the processes python should be derived from "Process"
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class ApplyLoadVectorDamProcess(KratosMultiphysics.Process):
|
|
19
|
+
def __init__(self, Model, settings):
|
|
20
|
+
KratosMultiphysics.Process.__init__(self)
|
|
21
|
+
|
|
22
|
+
variable_name = settings["variable_name"].GetString()
|
|
23
|
+
|
|
24
|
+
self.components_process_list = []
|
|
25
|
+
|
|
26
|
+
self.factor = settings["modulus"].GetDouble()
|
|
27
|
+
self.direction = [
|
|
28
|
+
settings["direction"][0].GetDouble(),
|
|
29
|
+
settings["direction"][1].GetDouble(),
|
|
30
|
+
settings["direction"][2].GetDouble(),
|
|
31
|
+
]
|
|
32
|
+
self.value = [
|
|
33
|
+
self.direction[0] * self.factor,
|
|
34
|
+
self.direction[1] * self.factor,
|
|
35
|
+
self.direction[2] * self.factor,
|
|
36
|
+
]
|
|
37
|
+
|
|
38
|
+
if abs(self.value[0]) > 1.0e-15:
|
|
39
|
+
x_params = KratosMultiphysics.Parameters("{}")
|
|
40
|
+
x_params.AddValue("model_part_name", settings["model_part_name"])
|
|
41
|
+
x_params.AddEmptyValue("constrained").SetBool(False)
|
|
42
|
+
x_params.AddEmptyValue("value").SetDouble(self.value[0])
|
|
43
|
+
x_params.AddEmptyValue("variable_name").SetString(variable_name + "_X")
|
|
44
|
+
self.components_process_list.append(
|
|
45
|
+
AssignScalarVariableProcess(Model, x_params)
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
if abs(self.value[1]) > 1.0e-15:
|
|
49
|
+
y_params = KratosMultiphysics.Parameters("{}")
|
|
50
|
+
y_params.AddValue("model_part_name", settings["model_part_name"])
|
|
51
|
+
y_params.AddEmptyValue("constrained").SetBool(False)
|
|
52
|
+
y_params.AddEmptyValue("value").SetDouble(self.value[1])
|
|
53
|
+
y_params.AddEmptyValue("variable_name").SetString(variable_name + "_Y")
|
|
54
|
+
self.components_process_list.append(
|
|
55
|
+
AssignScalarVariableProcess(Model, y_params)
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
if abs(self.value[2]) > 1.0e-15:
|
|
59
|
+
z_params = KratosMultiphysics.Parameters("{}")
|
|
60
|
+
z_params.AddValue("model_part_name", settings["model_part_name"])
|
|
61
|
+
z_params.AddEmptyValue("constrained").SetBool(False)
|
|
62
|
+
z_params.AddEmptyValue("value").SetDouble(self.value[2])
|
|
63
|
+
z_params.AddEmptyValue("variable_name").SetString(variable_name + "_Z")
|
|
64
|
+
self.components_process_list.append(
|
|
65
|
+
AssignScalarVariableProcess(Model, z_params)
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
def ExecuteBeforeSolutionLoop(self):
|
|
69
|
+
|
|
70
|
+
for component in self.components_process_list:
|
|
71
|
+
component.ExecuteBeforeSolutionLoop()
|
|
72
|
+
|
|
73
|
+
def ExecuteInitializeSolutionStep(self):
|
|
74
|
+
|
|
75
|
+
for component in self.components_process_list:
|
|
76
|
+
component.ExecuteInitializeSolutionStep()
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import KratosMultiphysics
|
|
2
|
+
import KratosMultiphysics.DamApplication as KratosDam
|
|
3
|
+
from KratosMultiphysics.assign_scalar_variable_process import AssignScalarVariableProcess
|
|
4
|
+
|
|
5
|
+
def Factory(settings, Model):
|
|
6
|
+
if not isinstance(settings, KratosMultiphysics.Parameters):
|
|
7
|
+
raise Exception("expected input shall be a Parameters object, encapsulating a json string")
|
|
8
|
+
return ApplyLoadVectorDamTableProcess(Model, settings["Parameters"])
|
|
9
|
+
|
|
10
|
+
## All the processes python should be derived from "Process"
|
|
11
|
+
|
|
12
|
+
class ApplyLoadVectorDamTableProcess(KratosMultiphysics.Process):
|
|
13
|
+
def __init__(self, Model, settings ):
|
|
14
|
+
KratosMultiphysics.Process.__init__(self)
|
|
15
|
+
|
|
16
|
+
model_part = Model[settings["model_part_name"].GetString()]
|
|
17
|
+
variable_name = settings["variable_name"].GetString()
|
|
18
|
+
|
|
19
|
+
self.components_process_list = []
|
|
20
|
+
|
|
21
|
+
self.factor = settings["modulus"].GetDouble()
|
|
22
|
+
self.direction = [settings["direction"][0].GetDouble(),settings["direction"][1].GetDouble(),settings["direction"][2].GetDouble()]
|
|
23
|
+
self.value = [self.direction[0]*self.factor, self.direction[1]*self.factor, self.direction[2]*self.factor]
|
|
24
|
+
|
|
25
|
+
if abs(self.value[0])>1.0e-15:
|
|
26
|
+
x_params = KratosMultiphysics.Parameters("{}")
|
|
27
|
+
x_params.AddValue("model_part_name",settings["model_part_name"])
|
|
28
|
+
x_params.AddEmptyValue("constrained").SetBool(False)
|
|
29
|
+
x_params.AddEmptyValue("value").SetDouble(self.value[0])
|
|
30
|
+
x_params.AddEmptyValue("variable_name").SetString(variable_name+"_X")
|
|
31
|
+
if settings["table"].GetInt() == 0:
|
|
32
|
+
self.components_process_list.append(AssignScalarVariableProcess(Model, x_params))
|
|
33
|
+
else:
|
|
34
|
+
x_params.AddValue("table", settings["table"])
|
|
35
|
+
self.components_process_list.append(KratosDam.ApplyComponentTableProcessDam(model_part, x_params))
|
|
36
|
+
|
|
37
|
+
if abs(self.value[1])>1.0e-15:
|
|
38
|
+
y_params = KratosMultiphysics.Parameters("{}")
|
|
39
|
+
y_params.AddValue("model_part_name",settings["model_part_name"])
|
|
40
|
+
y_params.AddEmptyValue("constrained").SetBool(False)
|
|
41
|
+
y_params.AddEmptyValue("value").SetDouble(self.value[1])
|
|
42
|
+
y_params.AddEmptyValue("variable_name").SetString(variable_name+"_Y")
|
|
43
|
+
if settings["table"].GetInt() == 0:
|
|
44
|
+
self.components_process_list.append(AssignScalarVariableProcess(Model, y_params))
|
|
45
|
+
else:
|
|
46
|
+
y_params.AddValue("table",settings["table"])
|
|
47
|
+
self.components_process_list.append(KratosDam.ApplyComponentTableProcessDam(model_part, y_params))
|
|
48
|
+
|
|
49
|
+
if abs(self.value[2])>1.0e-15:
|
|
50
|
+
z_params = KratosMultiphysics.Parameters("{}")
|
|
51
|
+
z_params.AddValue("model_part_name",settings["model_part_name"])
|
|
52
|
+
z_params.AddEmptyValue("constrained").SetBool(False)
|
|
53
|
+
z_params.AddEmptyValue("value").SetDouble(self.value[2])
|
|
54
|
+
z_params.AddEmptyValue("variable_name").SetString(variable_name+"_Z")
|
|
55
|
+
if settings["table"].GetInt() == 0:
|
|
56
|
+
self.components_process_list.append(AssignScalarVariableProcess(Model, z_params))
|
|
57
|
+
else:
|
|
58
|
+
z_params.AddValue("table",settings["table"])
|
|
59
|
+
self.components_process_list.append(KratosDam.ApplyComponentTableProcessDam(model_part, z_params))
|
|
60
|
+
|
|
61
|
+
def ExecuteBeforeSolutionLoop(self):
|
|
62
|
+
|
|
63
|
+
for component in self.components_process_list:
|
|
64
|
+
component.ExecuteBeforeSolutionLoop()
|
|
65
|
+
|
|
66
|
+
def ExecuteInitializeSolutionStep(self):
|
|
67
|
+
|
|
68
|
+
for component in self.components_process_list:
|
|
69
|
+
component.ExecuteInitializeSolutionStep()
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import KratosMultiphysics
|
|
2
|
+
|
|
3
|
+
def Factory(settings, Model):
|
|
4
|
+
if not isinstance(settings, Parameters):
|
|
5
|
+
raise Exception("expected input shall be a Parameters object, encapsulating a json string")
|
|
6
|
+
return CheckAndPrepareModelProcessDamMechanical(Model, settings["Parameters"])
|
|
7
|
+
|
|
8
|
+
## All the processes python should be derived from "Process"
|
|
9
|
+
class CheckAndPrepareModelProcessDamMechanical(KratosMultiphysics.Process):
|
|
10
|
+
"""Prepare the computing model part.
|
|
11
|
+
|
|
12
|
+
The computing model part is created if it does not exist. Nodes and elements
|
|
13
|
+
from the domain sub model parts are added to the computing model part.
|
|
14
|
+
Conditions are added from the processes sub model parts.
|
|
15
|
+
"""
|
|
16
|
+
def __init__(self, main_model_part, Parameters ):
|
|
17
|
+
KratosMultiphysics.Process.__init__(self)
|
|
18
|
+
self.main_model_part = main_model_part
|
|
19
|
+
|
|
20
|
+
self.mechanical_model_part_name = Parameters["mechanical_model_part_name"].GetString()
|
|
21
|
+
self.mechanical_domain_sub_model_part_list = Parameters["mechanical_domain_sub_model_part_list"]
|
|
22
|
+
self.mechanical_loads_sub_model_part_list = Parameters["mechanical_loads_sub_model_part_list"]
|
|
23
|
+
self.body_domain_sub_model_part_list = Parameters["body_domain_sub_model_part_list"]
|
|
24
|
+
self.body_domain_sub_sub_model_part_list = Parameters["body_domain_sub_sub_model_part_list"]
|
|
25
|
+
self.loads_sub_model_part_list = Parameters["loads_sub_model_part_list"]
|
|
26
|
+
self.loads_sub_sub_model_part_list = Parameters["loads_sub_sub_model_part_list"]
|
|
27
|
+
|
|
28
|
+
def Execute(self):
|
|
29
|
+
# Construct the computing model part: a model part which contains the mesh to compute
|
|
30
|
+
self.main_model_part.CreateSubModelPart(self.mechanical_model_part_name)
|
|
31
|
+
mechanical_model_part = self.main_model_part.GetSubModelPart(self.mechanical_model_part_name)
|
|
32
|
+
mechanical_model_part.ProcessInfo = self.main_model_part.ProcessInfo
|
|
33
|
+
mechanical_model_part.Properties = self.main_model_part.Properties
|
|
34
|
+
mechanical_model_part.Set(KratosMultiphysics.ACTIVE)
|
|
35
|
+
|
|
36
|
+
domain_parts = []
|
|
37
|
+
for i in range(self.mechanical_domain_sub_model_part_list.size()):
|
|
38
|
+
domain_parts.append(self.main_model_part.GetSubModelPart(self.mechanical_domain_sub_model_part_list[i].GetString()))
|
|
39
|
+
# Adding Nodes to Computing Model Part
|
|
40
|
+
list_of_ids = set()
|
|
41
|
+
for part in domain_parts:
|
|
42
|
+
for node in part.Nodes:
|
|
43
|
+
list_of_ids.add(node.Id)
|
|
44
|
+
mechanical_model_part.AddNodes(list(list_of_ids))
|
|
45
|
+
# Adding Elements to Computing Model Part
|
|
46
|
+
list_of_ids = set()
|
|
47
|
+
for part in domain_parts:
|
|
48
|
+
for elem in part.Elements:
|
|
49
|
+
list_of_ids.add(elem.Id)
|
|
50
|
+
mechanical_model_part.AddElements(list(list_of_ids))
|
|
51
|
+
# Adding Conditions to Computing Model Part
|
|
52
|
+
domain_conditions = []
|
|
53
|
+
for i in range(self.mechanical_loads_sub_model_part_list.size()):
|
|
54
|
+
domain_conditions.append(self.main_model_part.GetSubModelPart(self.mechanical_loads_sub_model_part_list[i].GetString()))
|
|
55
|
+
list_of_ids = set()
|
|
56
|
+
for part in domain_conditions:
|
|
57
|
+
for cond in part.Conditions:
|
|
58
|
+
list_of_ids.add(cond.Id)
|
|
59
|
+
mechanical_model_part.AddConditions(list(list_of_ids))
|
|
60
|
+
|
|
61
|
+
# Adding Computing Sub Sub Model Parts
|
|
62
|
+
# Body - Joints
|
|
63
|
+
for i in range(self.body_domain_sub_model_part_list.size()):
|
|
64
|
+
body_sub_model_part = self.main_model_part.GetSubModelPart(self.body_domain_sub_model_part_list[i].GetString())
|
|
65
|
+
mechanical_model_part.CreateSubModelPart(self.body_domain_sub_sub_model_part_list[i].GetString())
|
|
66
|
+
body_sub_sub_model_part = mechanical_model_part.GetSubModelPart(self.body_domain_sub_sub_model_part_list[i].GetString())
|
|
67
|
+
list_of_ids = set()
|
|
68
|
+
for node in body_sub_model_part.Nodes:
|
|
69
|
+
list_of_ids.add(node.Id)
|
|
70
|
+
body_sub_sub_model_part.AddNodes(list(list_of_ids))
|
|
71
|
+
list_of_ids = set()
|
|
72
|
+
for elem in body_sub_model_part.Elements:
|
|
73
|
+
list_of_ids.add(elem.Id)
|
|
74
|
+
body_sub_sub_model_part.AddElements(list(list_of_ids))
|
|
75
|
+
# Arc-Length
|
|
76
|
+
for i in range(self.loads_sub_model_part_list.size()):
|
|
77
|
+
load_sub_model_part = self.main_model_part.GetSubModelPart(self.loads_sub_model_part_list[i].GetString())
|
|
78
|
+
mechanical_model_part.CreateSubModelPart(self.loads_sub_sub_model_part_list[i].GetString())
|
|
79
|
+
load_sub_sub_model_part = mechanical_model_part.GetSubModelPart(self.loads_sub_sub_model_part_list[i].GetString())
|
|
80
|
+
list_of_ids = set()
|
|
81
|
+
for node in load_sub_model_part.Nodes:
|
|
82
|
+
list_of_ids.add(node.Id)
|
|
83
|
+
load_sub_sub_model_part.AddNodes(list(list_of_ids))
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import KratosMultiphysics
|
|
2
|
+
|
|
3
|
+
def Factory(settings, Model):
|
|
4
|
+
if not isinstance(settings, Parameters):
|
|
5
|
+
raise Exception("expected input shall be a Parameters object, encapsulating a json string")
|
|
6
|
+
return CheckAndPrepareModelProcessDamThermal(Model, settings["Parameters"])
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
## All the processes python should be derived from "Process"
|
|
10
|
+
class CheckAndPrepareModelProcessDamThermal(KratosMultiphysics.Process):
|
|
11
|
+
"""Prepare the computing model part.
|
|
12
|
+
|
|
13
|
+
The computing model part is created if it does not exist. Nodes and elements
|
|
14
|
+
from the domain sub model parts are added to the computing model part.
|
|
15
|
+
Conditions are added from the processes sub model parts.
|
|
16
|
+
"""
|
|
17
|
+
def __init__(self, main_model_part, Parameters ):
|
|
18
|
+
KratosMultiphysics.Process.__init__(self)
|
|
19
|
+
self.main_model_part = main_model_part
|
|
20
|
+
|
|
21
|
+
self.thermal_model_part_name = Parameters["thermal_model_part_name"].GetString()
|
|
22
|
+
self.thermal_domain_sub_model_part_list = Parameters["thermal_domain_sub_model_part_list"]
|
|
23
|
+
self.thermal_loads_sub_model_part_list = Parameters["thermal_loads_sub_model_part_list"]
|
|
24
|
+
self.thermal_domain_sub_sub_model_part_list = Parameters["thermal_domain_sub_sub_model_part_list"]
|
|
25
|
+
self.thermal_loads_sub_sub_model_part_list = Parameters["thermal_loads_sub_sub_model_part_list"]
|
|
26
|
+
|
|
27
|
+
self.mechanical_model_part_name = Parameters["mechanical_model_part_name"].GetString()
|
|
28
|
+
self.mechanical_domain_sub_model_part_list = Parameters["mechanical_domain_sub_model_part_list"]
|
|
29
|
+
self.mechanical_loads_sub_model_part_list = Parameters["mechanical_loads_sub_model_part_list"]
|
|
30
|
+
self.body_domain_sub_model_part_list = Parameters["body_domain_sub_model_part_list"]
|
|
31
|
+
self.body_domain_sub_sub_model_part_list = Parameters["body_domain_sub_sub_model_part_list"]
|
|
32
|
+
self.loads_sub_model_part_list = Parameters["loads_sub_model_part_list"]
|
|
33
|
+
self.loads_sub_sub_model_part_list = Parameters["loads_sub_sub_model_part_list"]
|
|
34
|
+
|
|
35
|
+
def Execute(self):
|
|
36
|
+
|
|
37
|
+
## Construct the thermal model part:
|
|
38
|
+
thermal_parts = []
|
|
39
|
+
for i in range(self.thermal_domain_sub_model_part_list.size()):
|
|
40
|
+
thermal_parts.append(self.main_model_part.GetSubModelPart(self.thermal_domain_sub_model_part_list[i].GetString()))
|
|
41
|
+
self.main_model_part.CreateSubModelPart(self.thermal_model_part_name)
|
|
42
|
+
thermal_model_part = self.main_model_part.GetSubModelPart(self.thermal_model_part_name)
|
|
43
|
+
thermal_model_part.ProcessInfo = self.main_model_part.ProcessInfo
|
|
44
|
+
thermal_model_part.Properties = self.main_model_part.Properties
|
|
45
|
+
thermal_model_part.Set(KratosMultiphysics.ACTIVE)
|
|
46
|
+
print("Adding Nodes to Thermal Model Part")
|
|
47
|
+
list_of_ids = set()
|
|
48
|
+
for part in thermal_parts:
|
|
49
|
+
for node in part.Nodes:
|
|
50
|
+
list_of_ids.add(node.Id)
|
|
51
|
+
thermal_model_part.AddNodes(list(list_of_ids))
|
|
52
|
+
print("Adding Elements to Thermal Model Part")
|
|
53
|
+
list_of_ids = set()
|
|
54
|
+
for part in thermal_parts:
|
|
55
|
+
for elem in part.Elements:
|
|
56
|
+
list_of_ids.add(elem.Id)
|
|
57
|
+
thermal_model_part.AddElements(list(list_of_ids))
|
|
58
|
+
# Thermal Conditions
|
|
59
|
+
print("Adding Thermal Conditions to Thermal Model Part")
|
|
60
|
+
thermal_conditions = []
|
|
61
|
+
for i in range(self.thermal_loads_sub_model_part_list.size()):
|
|
62
|
+
thermal_conditions.append(self.main_model_part.GetSubModelPart(self.thermal_loads_sub_model_part_list[i].GetString()))
|
|
63
|
+
list_of_ids = set()
|
|
64
|
+
for part in thermal_conditions:
|
|
65
|
+
for cond in part.Conditions:
|
|
66
|
+
list_of_ids.add(cond.Id)
|
|
67
|
+
thermal_model_part.AddConditions(list(list_of_ids))
|
|
68
|
+
# Sub sub model parts
|
|
69
|
+
# Construction process
|
|
70
|
+
print("Adding Thermal Sub Sub Model Parts")
|
|
71
|
+
for i in range(self.thermal_domain_sub_model_part_list.size()):
|
|
72
|
+
thermal_sub_model_part = self.main_model_part.GetSubModelPart(self.thermal_domain_sub_model_part_list[i].GetString())
|
|
73
|
+
thermal_model_part.CreateSubModelPart(self.thermal_domain_sub_sub_model_part_list[i].GetString())
|
|
74
|
+
thermal_sub_sub_model_part = thermal_model_part.GetSubModelPart(self.thermal_domain_sub_sub_model_part_list[i].GetString())
|
|
75
|
+
list_of_ids = set()
|
|
76
|
+
for elem in thermal_sub_model_part.Elements:
|
|
77
|
+
list_of_ids.add(elem.Id)
|
|
78
|
+
thermal_sub_sub_model_part.AddElements(list(list_of_ids))
|
|
79
|
+
list_of_ids = set()
|
|
80
|
+
for node in thermal_sub_model_part.Nodes:
|
|
81
|
+
list_of_ids.add(node.Id)
|
|
82
|
+
thermal_sub_sub_model_part.AddNodes(list(list_of_ids))
|
|
83
|
+
for i in range(self.thermal_loads_sub_model_part_list.size()):
|
|
84
|
+
thermal_load_sub_model_part = self.main_model_part.GetSubModelPart(self.thermal_loads_sub_model_part_list[i].GetString())
|
|
85
|
+
thermal_model_part.CreateSubModelPart(self.thermal_loads_sub_sub_model_part_list[i].GetString())
|
|
86
|
+
thermal_load_sub_sub_model_part = thermal_model_part.GetSubModelPart(self.thermal_loads_sub_sub_model_part_list[i].GetString())
|
|
87
|
+
list_of_ids = set()
|
|
88
|
+
for node in thermal_load_sub_model_part.Nodes:
|
|
89
|
+
list_of_ids.add(node.Id)
|
|
90
|
+
thermal_load_sub_sub_model_part.AddNodes(list(list_of_ids))
|
|
91
|
+
list_of_ids = set()
|
|
92
|
+
for cond in thermal_load_sub_model_part.Conditions:
|
|
93
|
+
list_of_ids.add(cond.Id)
|
|
94
|
+
thermal_load_sub_sub_model_part.AddConditions(list(list_of_ids))
|
|
95
|
+
print(thermal_model_part)
|
|
96
|
+
|
|
97
|
+
## Construct the mechanical model part:
|
|
98
|
+
mechanical_parts = []
|
|
99
|
+
for i in range(self.mechanical_domain_sub_model_part_list.size()):
|
|
100
|
+
mechanical_parts.append(self.main_model_part.GetSubModelPart(self.mechanical_domain_sub_model_part_list[i].GetString()))
|
|
101
|
+
self.main_model_part.CreateSubModelPart(self.mechanical_model_part_name)
|
|
102
|
+
mechanical_model_part = self.main_model_part.GetSubModelPart(self.mechanical_model_part_name)
|
|
103
|
+
mechanical_model_part.ProcessInfo = self.main_model_part.ProcessInfo
|
|
104
|
+
mechanical_model_part.Properties = self.main_model_part.Properties
|
|
105
|
+
mechanical_model_part.Set(KratosMultiphysics.ACTIVE)
|
|
106
|
+
print("Adding Nodes to Mechanical Model Part")
|
|
107
|
+
list_of_ids = set()
|
|
108
|
+
for part in mechanical_parts:
|
|
109
|
+
for node in part.Nodes:
|
|
110
|
+
list_of_ids.add(node.Id)
|
|
111
|
+
mechanical_model_part.AddNodes(list(list_of_ids))
|
|
112
|
+
print("Adding Elements to Mechanical Model Part")
|
|
113
|
+
list_of_ids = set()
|
|
114
|
+
for part in mechanical_parts:
|
|
115
|
+
for elem in part.Elements:
|
|
116
|
+
list_of_ids.add(elem.Id)
|
|
117
|
+
mechanical_model_part.AddElements(list(list_of_ids))
|
|
118
|
+
# Mechanical Conditions
|
|
119
|
+
print("Adding Conditions to Mechanical Model Part")
|
|
120
|
+
mechanical_conditions = []
|
|
121
|
+
for i in range(self.mechanical_loads_sub_model_part_list.size()):
|
|
122
|
+
mechanical_conditions.append(self.main_model_part.GetSubModelPart(self.mechanical_loads_sub_model_part_list[i].GetString()))
|
|
123
|
+
list_of_ids = set()
|
|
124
|
+
for part in mechanical_conditions:
|
|
125
|
+
for cond in part.Conditions:
|
|
126
|
+
list_of_ids.add(cond.Id)
|
|
127
|
+
mechanical_model_part.AddConditions(list(list_of_ids))
|
|
128
|
+
print("Adding Mechanical Sub Sub Model Parts")
|
|
129
|
+
# Sub sub model parts
|
|
130
|
+
# Body - Joints
|
|
131
|
+
for i in range(self.body_domain_sub_model_part_list.size()):
|
|
132
|
+
body_sub_model_part = self.main_model_part.GetSubModelPart(self.body_domain_sub_model_part_list[i].GetString())
|
|
133
|
+
mechanical_model_part.CreateSubModelPart(self.body_domain_sub_sub_model_part_list[i].GetString())
|
|
134
|
+
body_sub_sub_model_part = mechanical_model_part.GetSubModelPart(self.body_domain_sub_sub_model_part_list[i].GetString())
|
|
135
|
+
list_of_ids = set()
|
|
136
|
+
for node in body_sub_model_part.Nodes:
|
|
137
|
+
list_of_ids.add(node.Id)
|
|
138
|
+
body_sub_sub_model_part.AddNodes(list(list_of_ids))
|
|
139
|
+
list_of_ids = set()
|
|
140
|
+
for elem in body_sub_model_part.Elements:
|
|
141
|
+
list_of_ids.add(elem.Id)
|
|
142
|
+
body_sub_sub_model_part.AddElements(list(list_of_ids))
|
|
143
|
+
# Arc-length
|
|
144
|
+
for i in range(self.loads_sub_model_part_list.size()):
|
|
145
|
+
load_sub_model_part = self.main_model_part.GetSubModelPart(self.loads_sub_model_part_list[i].GetString())
|
|
146
|
+
mechanical_model_part.CreateSubModelPart(self.loads_sub_sub_model_part_list[i].GetString())
|
|
147
|
+
load_sub_sub_model_part = mechanical_model_part.GetSubModelPart(self.loads_sub_sub_model_part_list[i].GetString())
|
|
148
|
+
list_of_ids = set()
|
|
149
|
+
for node in load_sub_model_part.Nodes:
|
|
150
|
+
list_of_ids.add(node.Id)
|
|
151
|
+
load_sub_sub_model_part.AddNodes(list(list_of_ids))
|
|
152
|
+
for cond in load_sub_model_part.Conditions:
|
|
153
|
+
list_of_ids.add(cond.Id)
|
|
154
|
+
load_sub_sub_model_part.AddConditions(list(list_of_ids))
|
|
155
|
+
print(mechanical_model_part)
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import KratosMultiphysics
|
|
2
|
+
|
|
3
|
+
def Factory(settings, Model):
|
|
4
|
+
if not isinstance(settings, Parameters):
|
|
5
|
+
raise Exception("expected input shall be a Parameters object, encapsulating a json string")
|
|
6
|
+
return CheckAndPrepareSelfweightModelProcess(Model, settings["Parameters"])
|
|
7
|
+
|
|
8
|
+
## All the processes python should be derived from "Process"
|
|
9
|
+
class CheckAndPrepareSelfweightModelProcess(KratosMultiphysics.Process):
|
|
10
|
+
"""Prepare the computing model part.
|
|
11
|
+
|
|
12
|
+
The computing model part is created if it does not exist. Nodes and elements
|
|
13
|
+
from the domain sub model parts are added to the computing model part.
|
|
14
|
+
Conditions are added from the processes sub model parts.
|
|
15
|
+
"""
|
|
16
|
+
def __init__(self, main_model_part, Parameters ):
|
|
17
|
+
KratosMultiphysics.Process.__init__(self)
|
|
18
|
+
self.main_model_part = main_model_part
|
|
19
|
+
|
|
20
|
+
self.mechanical_model_part_name = Parameters["mechanical_model_part_name"].GetString()
|
|
21
|
+
self.mechanical_domain_sub_model_part_list = Parameters["mechanical_domain_sub_model_part_list"]
|
|
22
|
+
self.mechanical_loads_sub_model_part_list = Parameters["mechanical_loads_sub_model_part_list"]
|
|
23
|
+
self.body_domain_sub_model_part_list = Parameters["body_domain_sub_model_part_list"]
|
|
24
|
+
self.body_domain_sub_sub_model_part_list = Parameters["body_domain_sub_sub_model_part_list"]
|
|
25
|
+
self.loads_sub_model_part_list = Parameters["loads_sub_model_part_list"]
|
|
26
|
+
self.loads_sub_sub_model_part_list = Parameters["loads_sub_sub_model_part_list"]
|
|
27
|
+
|
|
28
|
+
def Execute(self):
|
|
29
|
+
|
|
30
|
+
## Construct the mechanical model part:
|
|
31
|
+
mechanical_parts = []
|
|
32
|
+
for i in range(self.mechanical_domain_sub_model_part_list.size()):
|
|
33
|
+
mechanical_parts.append(self.main_model_part.GetSubModelPart(self.mechanical_domain_sub_model_part_list[i].GetString()))
|
|
34
|
+
self.main_model_part.CreateSubModelPart(self.mechanical_model_part_name)
|
|
35
|
+
mechanical_model_part = self.main_model_part.GetSubModelPart(self.mechanical_model_part_name)
|
|
36
|
+
mechanical_model_part.ProcessInfo = self.main_model_part.ProcessInfo
|
|
37
|
+
mechanical_model_part.Properties = self.main_model_part.Properties
|
|
38
|
+
mechanical_model_part.Set(KratosMultiphysics.ACTIVE)
|
|
39
|
+
print("Adding Nodes to Mechanical Model Part")
|
|
40
|
+
list_of_ids = set()
|
|
41
|
+
for part in mechanical_parts:
|
|
42
|
+
for node in part.Nodes:
|
|
43
|
+
list_of_ids.add(node.Id)
|
|
44
|
+
mechanical_model_part.AddNodes(list(list_of_ids))
|
|
45
|
+
print("Adding Elements to Mechanical Model Part")
|
|
46
|
+
list_of_ids = set()
|
|
47
|
+
for part in mechanical_parts:
|
|
48
|
+
for elem in part.Elements:
|
|
49
|
+
list_of_ids.add(elem.Id)
|
|
50
|
+
mechanical_model_part.AddElements(list(list_of_ids))
|
|
51
|
+
# Mechanical Conditions
|
|
52
|
+
print("Adding Conditions to Mechanical Model Part")
|
|
53
|
+
mechanical_conditions = []
|
|
54
|
+
for i in range(self.mechanical_loads_sub_model_part_list.size()):
|
|
55
|
+
mechanical_conditions.append(self.main_model_part.GetSubModelPart(self.mechanical_loads_sub_model_part_list[i].GetString()))
|
|
56
|
+
list_of_ids = set()
|
|
57
|
+
for part in mechanical_conditions:
|
|
58
|
+
for cond in part.Conditions:
|
|
59
|
+
list_of_ids.add(cond.Id)
|
|
60
|
+
mechanical_model_part.AddConditions(list(list_of_ids))
|
|
61
|
+
print("Adding Mechanical Sub Sub Model Parts")
|
|
62
|
+
# Sub sub model parts
|
|
63
|
+
# Body - Joints
|
|
64
|
+
for i in range(self.body_domain_sub_model_part_list.size()):
|
|
65
|
+
body_sub_model_part = self.main_model_part.GetSubModelPart(self.body_domain_sub_model_part_list[i].GetString())
|
|
66
|
+
mechanical_model_part.CreateSubModelPart(self.body_domain_sub_sub_model_part_list[i].GetString())
|
|
67
|
+
body_sub_sub_model_part = mechanical_model_part.GetSubModelPart(self.body_domain_sub_sub_model_part_list[i].GetString())
|
|
68
|
+
list_of_ids = set()
|
|
69
|
+
for node in body_sub_model_part.Nodes:
|
|
70
|
+
list_of_ids.add(node.Id)
|
|
71
|
+
body_sub_sub_model_part.AddNodes(list(list_of_ids))
|
|
72
|
+
list_of_ids = set()
|
|
73
|
+
for elem in body_sub_model_part.Elements:
|
|
74
|
+
list_of_ids.add(elem.Id)
|
|
75
|
+
body_sub_sub_model_part.AddElements(list(list_of_ids))
|
|
76
|
+
# Arc-length
|
|
77
|
+
for i in range(self.loads_sub_model_part_list.size()):
|
|
78
|
+
load_sub_model_part = self.main_model_part.GetSubModelPart(self.loads_sub_model_part_list[i].GetString())
|
|
79
|
+
mechanical_model_part.CreateSubModelPart(self.loads_sub_sub_model_part_list[i].GetString())
|
|
80
|
+
load_sub_sub_model_part = mechanical_model_part.GetSubModelPart(self.loads_sub_sub_model_part_list[i].GetString())
|
|
81
|
+
list_of_ids = set()
|
|
82
|
+
for node in load_sub_model_part.Nodes:
|
|
83
|
+
list_of_ids.add(node.Id)
|
|
84
|
+
load_sub_sub_model_part.AddNodes(list(list_of_ids))
|
|
85
|
+
print(mechanical_model_part)
|