Skip to content

Commit 237ce6b

Browse files
Merge pull request #960 from KratosMultiphysics/geo-print
[Geomechanics] Add conditions and improve example
2 parents f974403 + 22aa6c6 commit 237ce6b

18 files changed

Lines changed: 489 additions & 88 deletions

kratos.gid/apps/Fluid/write/writeProjectParameters.tcl

Lines changed: 2 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -106,8 +106,8 @@ proc ::Fluid::write::UpdateModelers { projectParametersDict {stage ""} } {
106106
if {[GetAttribute write_mdpa_mode] eq "geometries"} {
107107
# Add the entities creation modeler
108108
set entities_modeler [dict create name "Modelers.KratosMultiphysics.CreateEntitiesFromGeometriesModeler"]
109-
dict set entities_modeler "parameters" elements_list [Fluid::write::GetMatchSubModelPart element $stage]
110-
dict set entities_modeler "parameters" conditions_list [Fluid::write::GetMatchSubModelPart condition $stage]
109+
dict set entities_modeler "parameters" elements_list [::write::GetMatchSubModelPart element $stage]
110+
dict set entities_modeler "parameters" conditions_list [::write::GetMatchSubModelPart condition $stage]
111111
lappend modelerts_list $entities_modeler
112112
}
113113

@@ -116,50 +116,6 @@ proc ::Fluid::write::UpdateModelers { projectParametersDict {stage ""} } {
116116
return $projectParametersDict
117117
}
118118

119-
# what can be element, condition
120-
proc Fluid::write::GetMatchSubModelPart { what {stage ""} } {
121-
set model_part_basename [write::GetConfigurationAttribute model_part_name]
122-
set entity_name element_name
123-
if {$what == "condition"} {set entity_name condition_name}
124-
125-
set elements_list [list ]
126-
set processed_groups_list [list ]
127-
set groups [::Fluid::xml::GetListOfSubModelParts $stage]
128-
foreach group $groups {
129-
set good_name ""
130-
# get the group and submodelpart name
131-
set group_name [$group @n]
132-
133-
set group_name [write::GetWriteGroupName $group_name]
134-
if {$group_name ni $processed_groups_list} {lappend processed_groups_list $group_name} {continue}
135-
if {$what == "condition"} {set cid [[$group parent] @n]} {
136-
set element_node [$group selectNodes "./value\[@n='Element']"]
137-
if {[llength $element_node] == 0} {continue}
138-
set cid [write::getValueByNode $element_node]
139-
}
140-
if {$cid eq ""} {continue}
141-
if {$what == "condition"} {set entity [::Model::getCondition $cid]} {set entity [::Model::getElement $cid]}
142-
if {$entity eq ""} {continue}
143-
if {$what == "condition"} {
144-
if {[$entity getGroupBy] eq "Condition"} {
145-
set good_name "_HIDDEN_$cid"
146-
if {$good_name ni $processed_groups_list} {lappend processed_groups_list $good_name} {continue}
147-
}
148-
}
149-
if {$good_name eq ""} {set good_name [write::transformGroupName $group_name]}
150-
# Get the entity (element or condition)
151-
if {[$group hasAttribute ov]} {set ov [get_domnode_attribute $group ov]} {set ov [get_domnode_attribute [$group parent] ov]}
152-
153-
lassign [write::getEtype $ov $group_name] etype nnodes
154-
155-
set kname [$entity getTopologyKratosName $etype $nnodes]
156-
set pair [ dict create model_part_name $model_part_basename.$good_name $entity_name $kname]
157-
158-
lappend elements_list $pair
159-
160-
}
161-
return $elements_list
162-
}
163119

164120
proc ::Fluid::write::writeParametersEvent { } {
165121
set write_parameters_mode 0

kratos.gid/apps/GeoMechanics/app.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
"controllers/Python.tcl",
2020
"controllers/PhreaticLine.tcl",
2121
"examples/examples.tcl",
22-
"examples/FirstExample.tcl"
22+
"examples/Simple.tcl"
2323
],
2424
"start_script": "::GeoMechanics::Init",
2525
"requirements": {
@@ -29,7 +29,7 @@
2929
"permissions": {
3030
"open_tree": true,
3131
"show_toolbar": true,
32-
"intervals": true,
32+
"intervals": false,
3333
"wizard": false,
3434
"stages": true
3535
},

kratos.gid/apps/GeoMechanics/examples/FirstExample.tcl

Lines changed: 59 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -59,16 +59,15 @@ proc ::GeoMechanics::examples::FirstExample::AssignGroups {args} {
5959

6060
GiD_Groups create Clay_after_excavation
6161
GiD_EntitiesGroups assign Clay_after_excavation surfaces 2
62+
GiD_Groups edit color Clay_after_excavation "#995e05"
6263

6364
GiD_Groups create Excavated
6465
GiD_EntitiesGroups assign Excavated surfaces 1
66+
GiD_Groups edit color Excavated "#6e4aff"
6567

6668
GiD_Groups create Load
6769
GiD_EntitiesGroups assign Load lines 8
6870

69-
GiD_Groups create Body
70-
GiD_EntitiesGroups assign Body surfaces {1 2}
71-
7271
GiD_Groups create Hydrostatic_load_in_sloot
7372
GiD_EntitiesGroups assign Hydrostatic_load_in_sloot lines {4 5 6}
7473

@@ -104,7 +103,10 @@ proc ::GeoMechanics::examples::FirstExample::TreeAssignation {args} {
104103

105104
# Parts
106105
set parts [spdAux::getRoute "GEOMParts" $stage]/condition\[@n='Parts_GeoSteadyState'\]
107-
set body_node [customlib::AddConditionGroupOnXPath $parts Body]
106+
set body_node [customlib::AddConditionGroupOnXPath $parts Clay_after_excavation]
107+
set props [list YOUNG_MODULUS 1000 POISSON_RATIO 0.3]
108+
spdAux::SetValuesOnBaseNode $body_node $props
109+
set body_node [customlib::AddConditionGroupOnXPath $parts Excavated_clay]
108110
set props [list YOUNG_MODULUS 1000 POISSON_RATIO 0.3]
109111
spdAux::SetValuesOnBaseNode $body_node $props
110112

@@ -117,8 +119,6 @@ proc ::GeoMechanics::examples::FirstExample::TreeAssignation {args} {
117119
GiD_Groups edit parent Total Bottom
118120
spdAux::AddIntervalGroup Bottom "Bottom//Total"
119121
GiD_Groups edit state "Bottom//Total" hidden
120-
GiD_Groups edit color "Bottom" "#25ff48"
121-
GiD_Groups edit color "Bottom//Total" "#25ff48"
122122
set displacement [spdAux::getRoute "GEOMNodalConditions" $stage]/condition\[@n='DISPLACEMENT'\]
123123
set displacement_node [customlib::AddConditionGroupOnXPath $displacement "Bottom//Total"]
124124
$displacement_node setAttribute ov line
@@ -130,8 +130,6 @@ proc ::GeoMechanics::examples::FirstExample::TreeAssignation {args} {
130130
GiD_Groups edit parent Total Side_sliders
131131
spdAux::AddIntervalGroup Side_sliders "Side_sliders//Total"
132132
GiD_Groups edit state "Side_sliders//Total" hidden
133-
GiD_Groups edit color "Side_sliders" "#ff2548"
134-
GiD_Groups edit color "Side_sliders//Total" "#ff2548"
135133
set displacement [spdAux::getRoute "GEOMNodalConditions" $stage]/condition\[@n='DISPLACEMENT'\]
136134
set displacement_node [customlib::AddConditionGroupOnXPath $displacement "Side_sliders//Total"]
137135
$displacement_node setAttribute ov line
@@ -143,34 +141,79 @@ proc ::GeoMechanics::examples::FirstExample::TreeAssignation {args} {
143141
GiD_Groups edit parent Total Body
144142
spdAux::AddIntervalGroup Body "Body//Total"
145143
GiD_Groups edit state "Body//Total" hidden
146-
GiD_Groups edit color "Body" "#ff2548"
147-
GiD_Groups edit color "Body//Total" "#ff2548"
148144
set gravity [spdAux::getRoute "GEOMLoads" $stage]/condition\[@n='SelfWeight2D'\]
149145
set gravity_node [customlib::AddConditionGroupOnXPath $gravity "Body//Total"]
150146
$gravity_node setAttribute ov surface
151147
set props [list modulus 9.81 value_direction_Y -1.0 Interval Total]
152148
spdAux::SetValuesOnBaseNode $gravity_node $props
153149

150+
151+
# Stage 2
152+
::GeoMechanics::xml::NewStage "Stage 2"
153+
set stage [$root selectNodes ".//container\[@n='stages'\]/blockdata\[@name = 'Stage 2'\]"]
154+
154155
# Top Pressure
155156
GiD_Groups clone Load Total
156157
GiD_Groups edit parent Total Load
157-
spdAux::AddIntervalGroup Body "Load//Total"
158+
spdAux::AddIntervalGroup Load "Load//Total"
158159
GiD_Groups edit state "Load//Total" hidden
159-
GiD_Groups edit color "Load" "#ff2548"
160-
GiD_Groups edit color "Load//Total" "#ff2548"
161160
set pressure [spdAux::getRoute "GEOMLoads" $stage]/condition\[@n='LinePressure2D'\]
162161
set pressure_node [customlib::AddConditionGroupOnXPath $pressure "Load//Total"]
163162
$pressure_node setAttribute ov line
164163
set props [list value 5000 Interval Total]
165164
spdAux::SetValuesOnBaseNode $pressure_node $props
166165

166+
# Stage 3
167+
::GeoMechanics::xml::NewStage "Stage 3"
168+
set stage [$root selectNodes ".//container\[@n='stages'\]/blockdata\[@name = 'Stage 3'\]"]
169+
170+
# Remove body to split into excavated and clay
171+
gid_groups_conds::delete ".//container\[@n='stages'\]/blockdata\[@name = 'Stage 3'\]/container\[@n = 'Parts']/condition/group"
172+
gid_groups_conds::delete ".//container\[@n='stages'\]/blockdata\[@name = 'Stage 3'\]/container\[@n = 'Loads']/condition\[@n='SelfWeight2D'\]/group"
167173

174+
# Parts
175+
set parts [spdAux::getRoute "GEOMParts" $stage]/condition\[@n='Parts_GeoSteadyState'\]
176+
set body_node [customlib::AddConditionGroupOnXPath $parts Clay_after_excavation]
177+
set props [list YOUNG_MODULUS 1000 POISSON_RATIO 0.3]
178+
spdAux::SetValuesOnBaseNode $body_node $props
168179

180+
set parts [spdAux::getRoute "GEOMParts" $stage]/condition\[@n='Parts_GeoSteadyState'\]
181+
set body_node [customlib::AddConditionGroupOnXPath $parts Excavated]
182+
set props [list YOUNG_MODULUS 1000 POISSON_RATIO 0.3]
183+
spdAux::SetValuesOnBaseNode $body_node $props
169184

170-
# Prepare stages
171-
::GeoMechanics::xml::NewStage "Stage 2"
172-
::GeoMechanics::xml::NewStage "Stage 3"
185+
186+
# Gravity
187+
GiD_Groups clone Clay_after_excavation Total
188+
GiD_Groups edit parent Total Clay_after_excavation
189+
spdAux::AddIntervalGroup Body "Clay_after_excavation//Total"
190+
GiD_Groups edit state "Clay_after_excavation//Total" hidden
191+
set gravity [spdAux::getRoute "GEOMLoads" $stage]/condition\[@n='SelfWeight2D'\]
192+
set gravity_node [customlib::AddConditionGroupOnXPath $gravity "Clay_after_excavation//Total"]
193+
$gravity_node setAttribute ov surface
194+
set props [list modulus 9.81 value_direction_Y -1.0 Interval Total]
195+
spdAux::SetValuesOnBaseNode $gravity_node $props
196+
197+
GiD_Groups clone Excavated Total
198+
GiD_Groups edit parent Total Excavated
199+
spdAux::AddIntervalGroup Body "Excavated//Total"
200+
GiD_Groups edit state "Excavated//Total" hidden
201+
set gravity [spdAux::getRoute "GEOMLoads" $stage]/condition\[@n='SelfWeight2D'\]
202+
set gravity_node [customlib::AddConditionGroupOnXPath $gravity "Excavated//Total"]
203+
$gravity_node setAttribute ov surface
204+
set props [list modulus 9.81 value_direction_Y -1.0 Interval Total]
205+
spdAux::SetValuesOnBaseNode $gravity_node $props
206+
207+
208+
# Stage 4
173209
::GeoMechanics::xml::NewStage "Stage 4"
210+
set stage [$root selectNodes ".//container\[@n='stages'\]/blockdata\[@name = 'Stage 4'\]"]
211+
212+
# Remove excavated
213+
gid_groups_conds::delete ".//container\[@n='stages'\]/blockdata\[@name = 'Stage 4'\]/container\[@n = 'Parts']/condition/group\[@n='Excavated'\]"
214+
gid_groups_conds::delete ".//container\[@n='stages'\]/blockdata\[@name = 'Stage 4'\]/container\[@n = 'Loads']/condition\[@n='SelfWeight2D'\]/group\[@n='Excavated//Total'\]"
215+
216+
174217
spdAux::parseRoutes
175218

176219
::GeoMechanics::PrevStage

0 commit comments

Comments
 (0)