Skip to content

Commit 3699194

Browse files
Merge branch 'master' into CompressibleFluid
2 parents 3e510e5 + 0d337ac commit 3699194

34 files changed

Lines changed: 1101 additions & 116 deletions

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

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,33 @@ proc ::Fluid::write::GetProblemData_Dict { } {
2727
proc ::Fluid::write::GetProcesses_Dict { } {
2828
set processesDict [dict create]
2929
dict set processesDict initial_conditions_process_list [write::getConditionsParametersDict [::Fluid::GetUniqueName nodal_conditions] "Nodal"]
30-
dict set processesDict boundary_conditions_process_list [write::getConditionsParametersDict [::Fluid::GetUniqueName conditions]]
30+
set boundary_conditions_process_list [process_special_conditions [write::getConditionsParametersDict [::Fluid::GetUniqueName conditions]]]
31+
dict set processesDict boundary_conditions_process_list $boundary_conditions_process_list
3132
dict set processesDict gravity [list [getGravityProcessDict] ]
3233
dict set processesDict auxiliar_process_list [getAuxiliarProcessList]
3334
return $processesDict
3435
}
3536

37+
proc ::Fluid::write::process_special_conditions { list_of_processes } {
38+
set new_list [list ]
39+
foreach process $list_of_processes {
40+
# Wall law has nested parameters
41+
if {[dict get $process process_name] eq "ApplyWallLawProcess" } {
42+
if {[dict get $process Parameters wall_model] eq "navier_slip"} {
43+
dict set process Parameters wall_model_settings slip_length [dict get $process Parameters slip_length]
44+
}
45+
if {[dict get $process Parameters wall_model] eq "linear_log"} {
46+
dict set process Parameters wall_model_settings y_wall [dict get $process Parameters y_wall]
47+
}
48+
dict unset process Parameters y_wall
49+
dict unset process Parameters slip_length
50+
}
51+
lappend new_list $process
52+
}
53+
return $new_list
54+
55+
}
56+
3657
proc ::Fluid::write::writeParametersEvent { } {
3758
set projectParametersDict [getParametersDict]
3859
write::SetParallelismConfiguration

kratos.gid/apps/Fluid/xml/Conditions.xml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,22 @@
7070
<inputs></inputs>
7171
<outputs></outputs>
7272
</ConditionItem>
73+
<ConditionItem n="WallLaw2D" pn="Wall law" ImplementedInFile="" Interval="False" ImplementedInApplication="FluidApplication" MinimumKratosVersion="9000" WorkingSpaceDimension="2D" LocalSpaceDimension="1" SkinConditions="True" App="Fluid" ElementType="Line" ProcessName="ApplyWallLawProcess" help="">
74+
<TopologyFeatures>
75+
<item GeometryType="Line" nodes="2" KratosName=""/>
76+
</TopologyFeatures>
77+
<DegreesOfFreedom></DegreesOfFreedom>
78+
<inputs></inputs>
79+
<outputs></outputs>
80+
</ConditionItem>
81+
<ConditionItem n="WallLaw3D" pn="Wall law" ImplementedInFile="" Interval="False" ImplementedInApplication="FluidApplication" MinimumKratosVersion="9000" WorkingSpaceDimension="3D" LocalSpaceDimension="2" SkinConditions="True" App="Fluid" ElementType="Surface" ProcessName="ApplyWallLawProcess" help="">
82+
<TopologyFeatures>
83+
<item GeometryType="Triangle" nodes="3" KratosName=""/>
84+
</TopologyFeatures>
85+
<DegreesOfFreedom></DegreesOfFreedom>
86+
<inputs></inputs>
87+
<outputs></outputs>
88+
</ConditionItem>
7389
<ConditionItem n="VelocityConstraints2D" pn="Custom velocity constraints" ImplementedInFile=".cpp" Interval="Total" ImplementedInApplication="FluidApplication" MinimumKratosVersion="9000" WorkingSpaceDimension="2D" LocalSpaceDimension="2" SkinConditions="False" ElementType="Line" App="Fluid" ProcessName="AssignVectorVariableProcess" VariableName="VELOCITY" help="" units="m/s" unit_magnitude="Velocity">
7490
<TopologyFeatures></TopologyFeatures>
7591
<DegreesOfFreedom></DegreesOfFreedom>

kratos.gid/apps/Fluid/xml/Processes.xml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,13 @@
2929
</inputs>
3030
</Process>
3131

32+
<Process n="ApplyWallLawProcess" pn="Assign wall law process" python_module="apply_wall_law_process" kratos_module="KratosMultiphysics.FluidDynamicsApplication" help="">
33+
<inputs>
34+
<parameter n="wall_model" pn="Wall model" type="combo" values="navier_slip,linear_log" pvalues="Navier-slip,Linear-log" v="navier_slip" help="">
35+
<parameter parent="navier_slip" n="slip_length" pn="Slip length" type="double" v="0.001" unit_magnitude="L" units="m" help=""/>
36+
<parameter parent="linear_log" n="y_wall" pn="Wall distance" type="double" v="0.001" unit_magnitude="L" units="m" help=""/>
37+
</parameter>
38+
</inputs>
39+
</Process>
40+
3241
</ProcessList>

kratos.gid/apps/MPM/app.json

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,10 @@
1616
"script_files": [
1717
"start.tcl",
1818
"examples/examples.tcl",
19+
"examples/StaticCantileverBeam.tcl",
20+
"examples/CantileverBeam.tcl",
1921
"examples/FallingSandBall.tcl",
22+
"examples/GranularFlow.tcl",
2023
"xml/XmlController.tcl",
2124
"write/write.tcl",
2225
"write/writeProjectParameters.tcl"
@@ -31,7 +34,7 @@
3134
"permissions": {
3235
"open_tree": true,
3336
"show_toolbar": true,
34-
"intervals": true,
37+
"intervals": false,
3538
"wizard": false
3639
},
3740
"unique_names": {
@@ -47,4 +50,4 @@
4750
},
4851
"main_launch_file": "../../exec/MainKratos.py",
4952
"examples": "examples/examples.xml"
50-
}
53+
}
Lines changed: 165 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,165 @@
1+
namespace eval ::MPM::examples::CantileverBeam {
2+
namespace path ::MPM::examples
3+
Kratos::AddNamespace [namespace current]
4+
5+
}
6+
proc ::MPM::examples::CantileverBeam::Init {args} {
7+
if {![Kratos::IsModelEmpty]} {
8+
set txt "We are going to draw the example geometry.\nDo you want to lose your previous work?"
9+
set retval [tk_messageBox -default ok -icon question -message $txt -type okcancel]
10+
if { $retval == "cancel" } { return }
11+
}
12+
DrawGeometry$::Model::SpatialDimension
13+
AssignGroups$::Model::SpatialDimension
14+
TreeAssignation$::Model::SpatialDimension
15+
16+
GiD_Process 'Redraw
17+
GidUtils::UpdateWindow GROUPS
18+
GidUtils::UpdateWindow LAYER
19+
GiD_Process 'Zoom Frame
20+
}
21+
22+
23+
# Draw Geometry
24+
proc ::MPM::examples::CantileverBeam::DrawGeometry3D {args} {
25+
# DrawCantileverBeamGeometry2D
26+
# GiD_Process Mescape Utilities Copy Surfaces Duplicate DoExtrude Volumes MaintainLayers Translation FNoJoin 0.0,0.0,0.0 FNoJoin 0.0,0.0,1.0 1 escape escape escape
27+
# GiD_Layers edit opaque Fluid 0
28+
29+
# GiD_Process escape escape 'Render Flat escape 'Rotate Angle 270 90 escape escape escape escape 'Rotate objaxes x -150 y -30 escape escape
30+
}
31+
proc ::MPM::examples::CantileverBeam::DrawGeometry2D {args} {
32+
Kratos::ResetModel
33+
GiD_Layers create HyperelasticBeam
34+
GiD_Layers edit to_use HyperelasticBeam
35+
GiD_Layers edit color HyperelasticBeam "#e1aa72"
36+
37+
# HyperelasticBeam square
38+
## Points ##
39+
set coordinates [list {0 0 0} {0 1 0} {10 1 0} {10 0 0}]
40+
set material_points [list ]
41+
foreach point $coordinates {
42+
lappend material_points [GiD_Geometry create point append HyperelasticBeam {*}$point]
43+
}
44+
45+
## Lines ##
46+
set material_lines [list ]
47+
set initial [lindex $material_points 0]
48+
foreach point [lrange $material_points 1 end] {
49+
lappend material_lines [GiD_Geometry create line append stline HyperelasticBeam $initial $point]
50+
set initial $point
51+
}
52+
lappend material_lines [GiD_Geometry create line append stline HyperelasticBeam $initial [lindex $material_points 0]]
53+
54+
## Surface ##
55+
GiD_Process Mescape Geometry Create NurbsSurface {*}$material_lines escape escape
56+
57+
58+
# Grid creation
59+
GiD_Layers create Grid
60+
GiD_Layers edit to_use Grid
61+
GiD_Layers edit color Grid "#fddda0"
62+
63+
## Points ##
64+
set coordinates [list {0 -4 0} {0 2 0} {12 2 0} {12 -4 0}]
65+
set grid_points [list ]
66+
foreach point $coordinates {
67+
lappend grid_points [GiD_Geometry create point append Grid {*}$point]
68+
}
69+
70+
## Lines ##
71+
set grid_lines [list ]
72+
set initial [lindex $grid_points 0]
73+
foreach point [lrange $grid_points 1 end] {
74+
lappend grid_lines [GiD_Geometry create line append stline Grid $initial $point]
75+
set initial $point
76+
}
77+
lappend grid_lines [GiD_Geometry create line append stline Grid $initial [lindex $grid_points 0]]
78+
79+
## Surface ##
80+
GiD_Process Mescape Geometry Create NurbsSurface {*}$grid_lines escape escape
81+
}
82+
83+
84+
# Group assign
85+
proc ::MPM::examples::CantileverBeam::AssignGroups2D {args} {
86+
# Create the groups
87+
GiD_Groups create HyperelasticBeam
88+
GiD_Groups edit color HyperelasticBeam "#26d1a8ff"
89+
GiD_EntitiesGroups assign HyperelasticBeam surfaces 1
90+
91+
GiD_Groups create Grid
92+
GiD_Groups edit color Grid "#e0210fff"
93+
GiD_EntitiesGroups assign Grid surfaces 2
94+
95+
GiD_Groups create FixedDisplacement
96+
GiD_Groups edit color FixedDisplacement "#3b3b3bff"
97+
GiD_EntitiesGroups assign FixedDisplacement lines 5
98+
}
99+
100+
proc ::MPM::examples::CantileverBeam::AssignGroups3D {args} {
101+
102+
}
103+
104+
# Tree assign
105+
proc ::MPM::examples::CantileverBeam::TreeAssignation3D {args} {
106+
TreeAssignation2D
107+
}
108+
109+
proc ::MPM::examples::CantileverBeam::TreeAssignation2D {args} {
110+
set nd $::Model::SpatialDimension
111+
set root [customlib::GetBaseRoot]
112+
113+
set condtype line
114+
if {$nd eq "3D"} { set condtype surface }
115+
116+
# StageInfo
117+
spdAux::SetValueOnTreeItem v "Dynamic" MPMSoluType
118+
119+
# Parts
120+
set mpm_parts_route [spdAux::getRoute "MPMParts"]
121+
122+
# Erase Intervals
123+
ErasePreviousIntervals
124+
125+
## Hyperelastic beam
126+
set mpm_solid_parts_route "${mpm_parts_route}/condition\[@n='Parts_Material_domain'\]"
127+
set mpm_solid_part [customlib::AddConditionGroupOnXPath $mpm_solid_parts_route HyperelasticBeam]
128+
$mpm_solid_part setAttribute ov surface
129+
set constitutive_law_name "HyperElasticNeoHookeanPlaneStrain${nd}Law"
130+
set props [list Element UpdatedLagrangian$nd ConstitutiveLaw $constitutive_law_name Material HyperelasticBeam DENSITY 1000 YOUNG_MODULUS 90000000 POISSON_RATIO 0.49 THICKNESS 0.1 PARTICLES_PER_ELEMENT 6]
131+
spdAux::SetValuesOnBaseNode $mpm_solid_part $props
132+
133+
## Grid
134+
set mpm_grid_parts_route "${mpm_parts_route}/condition\[@n='Parts_Grid'\]"
135+
set mpm_grid_part [customlib::AddConditionGroupOnXPath $mpm_grid_parts_route Grid]
136+
$mpm_grid_part setAttribute ov surface
137+
set props [list Element GRID$nd ]
138+
spdAux::SetValuesOnBaseNode $mpm_grid_part $props
139+
140+
# Fix Displacement
141+
## Create interval subgroup
142+
GiD_Groups clone FixedDisplacement Total
143+
GiD_Groups edit parent Total FixedDisplacement
144+
spdAux::AddIntervalGroup FixedDisplacement "FixedDisplacement"
145+
GiD_Groups edit state "FixedDisplacement" hidden
146+
147+
## Assign boundary condition
148+
set mpm_bc_route [spdAux::getRoute "MPMNodalConditions"]
149+
set mpm_displacement_route "${mpm_bc_route}/condition\[@n='DISPLACEMENT'\]"
150+
set mpm_displacement [customlib::AddConditionGroupOnXPath $mpm_displacement_route "FixedDisplacement"]
151+
$mpm_displacement setAttribute ov $condtype
152+
set props [list selector_component_X ByValue value_component_X 0.0 selector_component_Y ByValue value_component_Y 0.0 selector_component_Z ByValue value_component_Z 0.0]
153+
spdAux::SetValuesOnBaseNode $mpm_displacement $props
154+
155+
# Set gravity On
156+
spdAux::SetValueOnTreeItem v "On" ActivateGravity
157+
158+
# Solution strategy parameters
159+
spdAux::SetValueOnTreeItem v "0.01" MPTimeParameters DeltaTime
160+
spdAux::SetValueOnTreeItem v "10" MPTimeParameters EndTime
161+
spdAux::SetValueOnTreeItem v "wtep" GiDOptions OutputControlType
162+
spdAux::SetValueOnTreeItem v "0.1" GiDOptions OutputDeltaTime
163+
spdAux::SetValueOnTreeItem v "time" VtkOptions OutputControlType
164+
spdAux::SetValueOnTreeItem v "0.1" VtkOptions OutputDeltaTime
165+
}

kratos.gid/apps/MPM/examples/FallingSandBall.tcl

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -106,8 +106,11 @@ proc ::MPM::examples::FallingSandBall::TreeAssignation2D {args} {
106106
# Parts
107107
set mpm_parts_route [spdAux::getRoute "MPMParts"]
108108

109+
# Erase Intervals
110+
ErasePreviousIntervals
111+
109112
## Sand
110-
set mpm_solid_parts_route "${mpm_parts_route}/condition\[@n='Parts_Solid'\]"
113+
set mpm_solid_parts_route "${mpm_parts_route}/condition\[@n='Parts_Material_domain'\]"
111114
set mpm_solid_part [customlib::AddConditionGroupOnXPath $mpm_solid_parts_route Sand]
112115
$mpm_solid_part setAttribute ov surface
113116
set constitutive_law_name "HenckyMCPlasticPlaneStrain${nd}Law"
@@ -121,7 +124,6 @@ proc ::MPM::examples::FallingSandBall::TreeAssignation2D {args} {
121124
set props [list Element GRID$nd ]
122125
spdAux::SetValuesOnBaseNode $mpm_grid_part $props
123126

124-
125127
# Fix Displacement
126128
## Create interval subgroup
127129
GiD_Groups clone FixedDisplacement Total
@@ -134,14 +136,21 @@ proc ::MPM::examples::FallingSandBall::TreeAssignation2D {args} {
134136
set mpm_displacement_route "${mpm_bc_route}/condition\[@n='DISPLACEMENT'\]"
135137
set mpm_displacement [customlib::AddConditionGroupOnXPath $mpm_displacement_route "FixedDisplacement//Total"]
136138
$mpm_displacement setAttribute ov $condtype
137-
set props [list selector_component_X ByValue value_component_X 0.0 selector_component_Y ByValue value_component_Y 0.0 selector_component_Z ByValue value_component_Z 0.0 Interval Total]
139+
set props [list selector_component_X ByValue value_component_X 0.0 selector_component_Y ByValue value_component_Y 0.0 selector_component_Z ByValue value_component_Z 0.0]
138140
spdAux::SetValuesOnBaseNode $mpm_displacement $props
139141

140142
## Slip
141143
set mpm_loads_route [spdAux::getRoute "MPMLoads"]
142144
[customlib::AddConditionGroupOnXPath "$mpm_loads_route/condition\[@n='Slip$nd'\]" Slip] setAttribute ov $condtype
143145

146+
# Set gravity On
147+
spdAux::SetValueOnTreeItem v "On" ActivateGravity
148+
144149
# Solution strategy parameters
145-
spdAux::SetValueOnTreeItem v "0.005" MPMTimeParameters DeltaTime
146-
spdAux::SetValueOnTreeItem v "0.01" GiDOptions OutputDeltaTime
150+
spdAux::SetValueOnTreeItem v "0.005" MPTimeParameters DeltaTime
151+
spdAux::SetValueOnTreeItem v "2" MPTimeParameters EndTime
152+
spdAux::SetValueOnTreeItem v "time" GiDOptions OutputControlType
153+
spdAux::SetValueOnTreeItem v "0.02" GiDOptions OutputDeltaTime
154+
spdAux::SetValueOnTreeItem v "time" VtkOptions OutputControlType
155+
spdAux::SetValueOnTreeItem v "0.02" VtkOptions OutputDeltaTime
147156
}

0 commit comments

Comments
 (0)