@@ -26,42 +26,68 @@ proc ::ShallowWater::examples::DamBreak::DrawGeometry {args} {
2626
2727 # Geometry creation
2828 # # Points ##
29- set coordinates [list 0 0 0 10 0 0 10 1 0 0 1 0]
30- set geom_points [list ]
31- foreach {x y z} $coordinates {
32- lappend geom_points [GiD_Geometry create point append main_layer $x $y $z ]
29+ set coordinates_left [list 0 0 0 5 0 0 5 1 0 0 1 0]
30+ set geom_points_left [list ]
31+ foreach {x y z} $coordinates_left {
32+ lappend geom_points_left [GiD_Geometry create point append main_layer $x $y $z ]
33+ }
34+
35+ set coordinates_right [list 5 0 0 10 0 0 10 1 0 5 1 0]
36+ set geom_points_right [list ]
37+ foreach {x y z} $coordinates_right {
38+ lappend geom_points_right [GiD_Geometry create point append main_layer $x $y $z ]
3339 }
3440
3541 # # Lines ##
36- set geom_lines [list ]
37- set initial [lindex $geom_points 0]
38- foreach point [lrange $geom_points 1 end] {
39- lappend geom_lines [GiD_Geometry create line append stline main_layer $initial $point ]
42+ set geom_lines_left [list ]
43+ set initial [lindex $geom_points_left 0]
44+ foreach point [lrange $geom_points_left 1 end] {
45+ lappend geom_lines_left [GiD_Geometry create line append stline main_layer $initial $point ]
4046 set initial $point
4147 }
42- lappend geom_lines [GiD_Geometry create line append stline main_layer $initial [lindex $geom_points 0]]
48+ lappend geom_lines_left [GiD_Geometry create line append stline main_layer $initial [lindex $geom_points_left 0]]
49+
50+ set geom_lines_right [list ]
51+ set initial [lindex $geom_points_right 0]
52+ foreach point [lrange $geom_points_right 1 end] {
53+ lappend geom_lines_right [GiD_Geometry create line append stline main_layer $initial $point ]
54+ set initial $point
55+ }
56+ lappend geom_lines_right [GiD_Geometry create line append stline main_layer $initial [lindex $geom_points_right 0]]
4357
4458 # # Surface ##
45- GiD_Process Mescape Geometry Create NurbsSurface {*}$geom_lines escape escape
59+ GiD_Process Mescape Geometry Create NurbsSurface {*}$geom_lines_left escape escape
60+ GiD_Process Mescape Geometry Create NurbsSurface {*}$geom_lines_right escape escape
61+
62+ # # Remove the duplicated line
63+ GiD_Process Mescape Utilities Collapse model Yes
4664}
4765
4866proc ::ShallowWater::examples::DamBreak::AssignGroups {args} {
4967 # Create and assign the groups
5068 GiD_Groups create Body
5169 GiD_Groups edit color Body " #26d1a8ff"
52- GiD_EntitiesGroups assign Body surfaces 1
70+ GiD_EntitiesGroups assign Body surfaces {1 2}
71+
72+ GiD_Groups create Reservoir
73+ GiD_Groups edit color Reservoir " #26d1a8ff"
74+ GiD_EntitiesGroups assign Reservoir surfaces 1
75+
76+ GiD_Groups create Channel
77+ GiD_Groups edit color Channel " #26d1a8ff"
78+ GiD_EntitiesGroups assign Channel surfaces 2
5379
5480 GiD_Groups create Walls
5581 GiD_Groups edit color Walls " #3b3b3bff"
56- GiD_EntitiesGroups assign Walls lines [ list 1 3]
82+ GiD_EntitiesGroups assign Walls lines { 1 3 5 7}
5783
5884 GiD_Groups create Left
5985 GiD_Groups edit color Left " #3b3b3bff"
6086 GiD_EntitiesGroups assign Left lines 4
6187
6288 GiD_Groups create Right
6389 GiD_Groups edit color Right " #3b3b3bff"
64- GiD_EntitiesGroups assign Right lines 2
90+ GiD_EntitiesGroups assign Right lines 6
6591}
6692
6793proc ::ShallowWater::examples::DamBreak::TreeAssignation {args} {
@@ -72,34 +98,49 @@ proc ::ShallowWater::examples::DamBreak::TreeAssignation {args} {
7298 set props [list Element GENERIC_ELEMENT Material Concrete]
7399 spdAux::SetValuesOnBaseNode $part_node $props
74100
75- # Nodal Conditions
76- # set nodal_conditions [spdAux::getRoute "SWBenchmarks"]
77- # set benchmark_cond "$nodal_conditions/condition\[@n='DamBreakBenchmark'\]"
78- # set benchmark_node [customlib::AddConditionGroupOnXPath $thermalnodcond Body]
79- # $benchmark_node setAttribute ov surface
80- # set props [list value 303.15] ### Con los valores por defecto de Kratos ya va bien
81- # spdAux::SetValuesOnBaseNode $thermalnodNode $props
101+ # Topography data
102+ set topography_conditions [spdAux::getRoute " SWTopographicData" ]
103+ set topography_cond " $topography_conditions /condition\[ @n='Topography'\] "
104+ set topography_node [customlib::AddConditionGroupOnXPath $topography_cond Body]
105+ $topography_node setAttribute ov surface
106+ set props [list value 0.0]
107+ spdAux::SetValuesOnBaseNode $topography_node $props
108+
109+ # Initial conditions
110+ set initial_conditions [spdAux::getRoute " SWInitialConditions" ]
111+ set initial_cond " $initial_conditions /condition\[ @n='InitialWaterLevel'\] "
112+ spdAux::AddIntervalGroup Reservoir " Reservoir//Initial"
113+ set initial_node [customlib::AddConditionGroupOnXPath $initial_cond " Reservoir//Initial" ]
114+ $initial_node setAttribute ov surface
115+ set props [list value 1.0 Interval Initial]
116+ spdAux::SetValuesOnBaseNode $initial_node $props
117+
118+ spdAux::AddIntervalGroup Channel " Channel//Initial"
119+ set initial_node [customlib::AddConditionGroupOnXPath $initial_cond " Channel//Initial" ]
120+ $initial_node setAttribute ov surface
121+ set props [list value 0.8 Interval Initial]
122+ spdAux::SetValuesOnBaseNode $initial_node $props
82123
83124 # Conditions
84125 set boundary_conditions [spdAux::getRoute " SWConditions" ]
85126 set flow_rate_cond " $boundary_conditions /condition\[ @n='ImposedFlowRate'\] "
86127 spdAux::AddIntervalGroup Walls " Walls//Total"
87128 set flow_rate_node [customlib::AddConditionGroupOnXPath $flow_rate_cond " Walls//Total" ]
88129 $flow_rate_node setAttribute ov line
89- set props [list value_component_X 303.15 selector_component_Y Not Interval Total]
130+ set props [list selector_component_X Not value_component_Y 0.0 Interval Total]
131+ spdAux::SetValuesOnBaseNode $flow_rate_node $props
132+
133+ spdAux::AddIntervalGroup Right " Right//Total"
134+ set flow_rate_node [customlib::AddConditionGroupOnXPath $flow_rate_cond " Right//Total" ]
135+ $flow_rate_node setAttribute ov line
136+ set props [list value_component_X 0.0 selector_component_Y Not Interval Total]
90137 spdAux::SetValuesOnBaseNode $flow_rate_node $props
91138
92- # set flow_rate_cond "$boundary_conditions/condition\[@n='ImposedFlowRate'\]"
93- # set flow_rate_node [customlib::AddConditionGroupOnXPath $flow_rate_cond Right]
94- # $flow_rate_node setAttribute ov line
95- # set props [list value 303.15 Interval Total] ### que es esto? ASIGNAR: X impuesto, Y libre
96- # spdAux::SetValuesOnBaseNode $flow_rate_node $props
97-
98- # set flow_rate_cond "$boundary_conditions/condition\[@n='ImposedFlowRate'\]"
99- # set flow_rate_node [customlib::AddConditionGroupOnXPath $flow_rate_cond Left]
100- # $flow_rate_node setAttribute ov line
101- # set props [list value 303.15 Interval Total] ### que es esto? ASIGNAR: Y impuesto, X libre
102- # spdAux::SetValuesOnBaseNode $flow_rate_node $props
139+ spdAux::AddIntervalGroup Left " Left//Total"
140+ set flow_rate_node [customlib::AddConditionGroupOnXPath $flow_rate_cond " Left//Total" ]
141+ $flow_rate_node setAttribute ov line
142+ set props [list value_component_X 0.0 selector_component_Y Not Interval Total]
143+ spdAux::SetValuesOnBaseNode $flow_rate_node $props
103144
104145 # Refresh
105146 spdAux::RequestRefresh
0 commit comments