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.
Files changed (51) hide show
  1. KratosMultiphysics/.libs/KratosDamApplication.so +0 -0
  2. KratosMultiphysics/.libs/libKratosDamCore.dylib +0 -0
  3. KratosMultiphysics/DamApplication/__init__.py +10 -0
  4. KratosMultiphysics/DamApplication/apply_constraint_vector_dam_table_process.py +62 -0
  5. KratosMultiphysics/DamApplication/apply_load_vector_dam_process.py +76 -0
  6. KratosMultiphysics/DamApplication/apply_load_vector_dam_table_process.py +69 -0
  7. KratosMultiphysics/DamApplication/check_and_prepare_model_process_dam_mechanical.py +83 -0
  8. KratosMultiphysics/DamApplication/check_and_prepare_model_process_dam_thermal.py +155 -0
  9. KratosMultiphysics/DamApplication/check_and_prepare_selfweight_model_process_dam.py +85 -0
  10. KratosMultiphysics/DamApplication/dam_P_solver.py +164 -0
  11. KratosMultiphysics/DamApplication/dam_UP_mechanical_solver.py +128 -0
  12. KratosMultiphysics/DamApplication/dam_UP_thermo_mechanic_solver.py +156 -0
  13. KratosMultiphysics/DamApplication/dam_analysis.py +463 -0
  14. KratosMultiphysics/DamApplication/dam_cleaning_utility.py +25 -0
  15. KratosMultiphysics/DamApplication/dam_constitutive_law_utility.py +18 -0
  16. KratosMultiphysics/DamApplication/dam_construction_utility.py +162 -0
  17. KratosMultiphysics/DamApplication/dam_eigen_solver.py +163 -0
  18. KratosMultiphysics/DamApplication/dam_mapping_variables_utility.py +48 -0
  19. KratosMultiphysics/DamApplication/dam_mechanical_solver.py +424 -0
  20. KratosMultiphysics/DamApplication/dam_selfweight_solver.py +452 -0
  21. KratosMultiphysics/DamApplication/dam_thermo_mechanic_solver.py +523 -0
  22. KratosMultiphysics/DamApplication/gid_dam_output_process.py +763 -0
  23. KratosMultiphysics/DamApplication/global_joint_stress_utility.py +27 -0
  24. KratosMultiphysics/DamApplication/impose_2d_random_fields_variable_process.py +71 -0
  25. KratosMultiphysics/DamApplication/impose_3d_random_fields_variable_process.py +74 -0
  26. KratosMultiphysics/DamApplication/impose_chemo_mechanical_aging_process.py +23 -0
  27. KratosMultiphysics/DamApplication/impose_face_heat_flux_process.py +59 -0
  28. KratosMultiphysics/DamApplication/impose_grouting_reference_temperature_process.py +25 -0
  29. KratosMultiphysics/DamApplication/impose_heat_source_process.py +34 -0
  30. KratosMultiphysics/DamApplication/impose_input_table_nodal_young_modulus_process.py +45 -0
  31. KratosMultiphysics/DamApplication/impose_nodal_reference_temperature_process.py +42 -0
  32. KratosMultiphysics/DamApplication/impose_nodal_young_modulus_process.py +28 -0
  33. KratosMultiphysics/DamApplication/impose_reservoir_temperature_condition_process.py +45 -0
  34. KratosMultiphysics/DamApplication/impose_temperature_by_device_process.py +21 -0
  35. KratosMultiphysics/DamApplication/impose_thermal_parameters_scalar_value_process.py +63 -0
  36. KratosMultiphysics/DamApplication/impose_uniform_temperature_process.py +42 -0
  37. KratosMultiphysics/DamApplication/impose_water_loads_condition_process.py +48 -0
  38. KratosMultiphysics/DamApplication/save_variables_utility.py +132 -0
  39. KratosMultiphysics/DamApplication/special_condition_process.py +18 -0
  40. KratosMultiphysics/DamApplication/streamlines_output_utility.py +22 -0
  41. KratosMultiphysics/DamApplication/transfer_selfweight_stress_utility.py +20 -0
  42. kratosdamapplication-10.4.4.dist-info/METADATA +40 -0
  43. kratosdamapplication-10.4.4.dist-info/RECORD +51 -0
  44. kratosdamapplication-10.4.4.dist-info/WHEEL +6 -0
  45. kratosdamapplication.dylibs/libKratosConstitutiveLawsCore.dylib +4 -0
  46. kratosdamapplication.dylibs/libKratosCore.dylib +4 -0
  47. kratosdamapplication.dylibs/libKratosPoromechanicsCore.dylib +0 -0
  48. kratosdamapplication.dylibs/libKratosStructuralMechanicsCore.dylib +0 -0
  49. kratosdamapplication.dylibs/libgcc_s.1.1.dylib +0 -0
  50. kratosdamapplication.dylibs/libgomp.1.dylib +0 -0
  51. kratosdamapplication.dylibs/libstdc++.6.dylib +0 -0
@@ -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)