Skip to content

Commit 1e383e4

Browse files
committed
add example
1 parent f7b24bd commit 1e383e4

1 file changed

Lines changed: 73 additions & 32 deletions

File tree

kratos.gid/apps/ShallowWater/examples/DamBreak.tcl

Lines changed: 73 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -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

4866
proc ::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

6793
proc ::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

Comments
 (0)