Skip to content

Commit 1fa25fe

Browse files
authored
Merge pull request #922 from KratosMultiphysics/hotfix-mpm-stabilization
Hotfix mpm stabilization
2 parents f2a0b37 + 694038e commit 1fa25fe

5 files changed

Lines changed: 45 additions & 20 deletions

File tree

kratos.gid/apps/MPM/write/write.tcl

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -90,10 +90,9 @@ proc MPM::write::GetPartsGroups { part_type {what "name"} } {
9090
return $body_groups
9191
}
9292

93-
9493
proc ::MPM::write::GetUsedElements { {get "Objects"} } {
9594
set lista [list ]
96-
foreach gNode [write::getPartsGroupsId node] {
95+
foreach gNode [MPM::write::GetPartsGroups Body node] {
9796
set elem_name [write::getValueByNode [$gNode selectNodes ".//value\[@n='Element']"] ]
9897
set e [Model::getElement $elem_name]
9998
if {$get eq "Name"} { set e [$e getName] }
@@ -102,7 +101,6 @@ proc ::MPM::write::GetUsedElements { {get "Objects"} } {
102101
return $lista
103102
}
104103

105-
106104
proc MPM::write::writeBodyNodalCoordinates { } {
107105
write::writeNodalCoordinatesOnGroups [MPM::write::GetPartsGroups Body]
108106
}

kratos.gid/apps/MPM/xml/Elements.xml

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<ElementList>
33
<!--updated lagrangian-->
4-
<ElementItem n="UpdatedLagrangian2D" pn="Updated lagrangian" ov="surface" ImplementedInFile="updated_lagrangian.cpp" ImplementedInApplication="ParticleMechanicsApplication" MinimumKratosVersion="9000" WorkingSpaceDimension="2D" LocalSpaceDimension="2" RequiresLocalAxes="No" LargeDeformation="Yes,No" ElementType="Material_domain" help="Updated Lagrangian 2D element for large deformation kinematics consist of a material point and connectivity nodes." AnalysisType="non_linear">
4+
<ElementItem n="UpdatedLagrangian2D" pn="Updated lagrangian" ov="surface" ImplementedInFile="updated_lagrangian.cpp" ImplementedInApplication="ParticleMechanicsApplication" MinimumKratosVersion="9000" WorkingSpaceDimension="2D" LocalSpaceDimension="2" RequiresLocalAxes="No" LargeDeformation="Yes,No" ElementType="Material_domain" help="Updated Lagrangian 2D element for large deformation kinematics consist of a material point and connectivity nodes." AnalysisType="non_linear">
55
<!--here we could add a list of all of the possible geometries-->
66
<TopologyFeatures>
77
<item GeometryType="Triangle" nodes="3" KratosName="UpdatedLagrangian2D3N"/>
88
<item GeometryType="Quadrilateral" nodes="4" KratosName="UpdatedLagrangian2D4N"/>
99
</TopologyFeatures>
10-
<!-- here we add the block of features which we require from the constitutive law-->
10+
<!-- here we add the block of features which we require from the constitutive law-->
1111
<ConstitutiveLaw_FilterFeatures>
1212
<filter field="App" value="MPM"/>
1313
<filter field="FormulationType" value="Irreducible"/>
@@ -19,8 +19,8 @@
1919
<NodalCondition n="ACCELERATION"/>
2020
</NodalConditions>
2121
<inputs>
22-
<parameter n="THICKNESS" pn="Thickness" v="1.0" unit_magnitude="L" units="m" />
23-
<parameter n="PARTICLES_PER_ELEMENT" pn="Particles per element" type="combo" v="1" values="1,3,4,6,9,12,16,33" pvalues="1 (for triangles or quads),3 (for triangles),4 (for quads),6 (for triangles),9 (for quads),12 (for triangles),16 (for triangles or quads),33 (for triangles)" help="Number of particle generated for each element. Available options are: Triangular: 1,3,6,12,16,33 and Quadrilateral: 1,4,9,16" />
22+
<parameter n="THICKNESS" pn="Thickness" v="1.0" unit_magnitude="L" units="m" />
23+
<parameter n="PARTICLES_PER_ELEMENT" pn="Particles per element" type="combo" v="1" values="1,3,4,6,9,12,16,33" pvalues="1 (for triangles or quads),3 (for triangles),4 (for quads),6 (for triangles),9 (for quads),12 (for triangles),16 (for triangles or quads),33 (for triangles)" help="Number of particle generated for each element. Available options are: Triangular: 1,3,6,12,16,33 and Quadrilateral: 1,4,9,16" />
2424
</inputs>
2525
<outputs>
2626
<parameter n="MP_VELOCITY" pn="Material point velocity" v="true" />
@@ -50,7 +50,7 @@
5050
<NodalCondition n="ACCELERATION"/>
5151
</NodalConditions>
5252
<inputs>
53-
<parameter n="THICKNESS" pn="Thickness" v="1.0" unit_magnitude="L" units="m" />
53+
<parameter n="THICKNESS" pn="Thickness" v="1.0" unit_magnitude="L" units="m" />
5454
<parameter n="PARTICLES_PER_ELEMENT" pn="Particle per element" type="integer" v="1" help="Number of particle generated for each element. Available options are: Triangular: 1,3,6,12,16,33 and Quadrilateral: 1,4,9,16" />
5555
</inputs>
5656
<outputs>
@@ -64,7 +64,7 @@
6464
</ElementItem>
6565
<ElementItem n="UpdatedLagrangian2DAxisymmetry" pn="Updated lagrangian" ov="surface" ImplementedInFile="updated_lagrangian_axisymmetry.cpp" ImplementedInApplication="ParticleMechanicsApplication" MinimumKratosVersion="9000" WorkingSpaceDimension="2Da" LocalSpaceDimension="2" RequiresLocalAxes="No" LargeDeformation="Yes,No" ElementType="Material_domain" help="Updated Lagrangian 2D axis-symmetric element for large deformation kinematics consist of a material point and connectivity nodes" AnalysisType="non_linear,linear">
6666

67-
<!--here we could add a list of all of the possible geometries-->
67+
<!--here we could add a list of all of the possible geometries-->
6868
<TopologyFeatures>
6969
<item GeometryType="Triangle" nodes="3" KratosName="UpdatedLagrangianAxisymmetry2D3N"/>
7070
<item GeometryType="Quadrilateral" nodes="4" KratosName="UpdatedLagrangianAxisymmetry2D4N"/>
@@ -81,7 +81,7 @@
8181
<NodalCondition n="ACCELERATION"/>
8282
</NodalConditions>
8383
<inputs>
84-
<parameter n="THICKNESS" pn="Thickness" v="1.0" unit_magnitude="L" units="m" />
84+
<parameter n="THICKNESS" pn="Thickness" v="1.0" unit_magnitude="L" units="m" />
8585
<parameter n="PARTICLES_PER_ELEMENT" pn="Particles per element" type="combo" v="1" values="1,3,4,6,9,12,16,33" pvalues="1 (for triangles or quads),3 (for triangles),4 (for quads),6 (for triangles),9 (for quads),12 (for triangles),16 (for triangles or quads),33 (for triangles)" help="Number of particle generated for each element. Available options are: Triangular: 1,3,6,12,16,33 and Quadrilateral: 1,4,9,16" />
8686
</inputs>
8787
<outputs>
@@ -94,7 +94,7 @@
9494
</outputs>
9595
</ElementItem>
9696

97-
<ElementItem n="UpdatedLagrangian3D" pn="Updated lagrangian" ov="volume" ImplementedInFile="updated_lagrangian.cpp" ImplementedInApplication="ParticleMechanicsApplication" MinimumKratosVersion="9000" WorkingSpaceDimension="3D" LocalSpaceDimension="3" RequiresLocalAxes="False" LargeDeformation="False" ElementType="Material_domain" help="Updated Lagrangian 3D element for large deformation kinematics consists of a material point and connectivity nodes." AnalysisType="non_linear">
97+
<ElementItem n="UpdatedLagrangian3D" pn="Updated lagrangian" ov="volume" ImplementedInFile="updated_lagrangian.cpp" ImplementedInApplication="ParticleMechanicsApplication" MinimumKratosVersion="9000" WorkingSpaceDimension="3D" LocalSpaceDimension="3" RequiresLocalAxes="False" LargeDeformation="False" ElementType="Material_domain" help="Updated Lagrangian 3D element for large deformation kinematics consists of a material point and connectivity nodes." AnalysisType="non_linear">
9898
<!--here we could add a list of all of the possible geometries-->
9999
<TopologyFeatures>
100100
<item GeometryType="Tetrahedra" nodes="4" KratosName="UpdatedLagrangian3D4N"/>
@@ -123,7 +123,7 @@
123123
<parameter n="MP_EQUIVALENT_PLASTIC_STRAIN" pn="Material point equivalent plastic strain" v="false" />
124124
</outputs>
125125
</ElementItem>
126-
<ElementItem n="UpdatedLagrangianUP3D" pn="Updated lagrangian mixed UP" ov="volume" ImplementedInFile="updated_lagrangian.cpp" ImplementedInApplication="ParticleMechanicsApplication" MinimumKratosVersion="9000" ProductionReady="ProductionReady" WorkingSpaceDimension="3D" LocalSpaceDimension="3" RequiresLocalAxes="No" LargeDeformation="No" ElementType="Material_domain" help="Updated Lagrangian 3D element for large deformation kinematics consists of a material point and connectivity nodes." AnalysisType="non_linear">
126+
<ElementItem n="UpdatedLagrangianUP3D" pn="Updated lagrangian mixed UP" ov="volume" ImplementedInFile="updated_lagrangian.cpp" ImplementedInApplication="ParticleMechanicsApplication" MinimumKratosVersion="9000" ProductionReady="ProductionReady" WorkingSpaceDimension="3D" LocalSpaceDimension="3" RequiresLocalAxes="No" LargeDeformation="No" ElementType="Material_domain" help="Updated Lagrangian 3D element for large deformation kinematics consists of a material point and connectivity nodes." AnalysisType="non_linear">
127127
<!--here we could add a list of all of the possible geometries-->
128128
<TopologyFeatures>
129129
<item GeometryType="Tetrahedra" nodes="4" KratosName="UpdatedLagrangian3D4N"/>
@@ -141,7 +141,7 @@
141141
<NodalCondition n="ACCELERATION"/>
142142
</NodalConditions>
143143
<inputs>
144-
<parameter n="PARTICLES_PER_ELEMENT" pn="Particles per element" type="combo" v="1" values="1,3,4,6,9,12,16,33" pvalues="1 (for triangles or quads),3 (for triangles),4 (for quads),6 (for triangles),9 (for quads),12 (for triangles),16 (for triangles or quads),33 (for triangles)" help="Number of particle generated for each element. Available options are: Tetrahedral: 1,3,6,12 and Hexahedral: 1,4,9,16" />
144+
<parameter n="PARTICLES_PER_ELEMENT" pn="Particles per element" type="combo" v="1" values="1,3,4,6,9,12,16,33" pvalues="1 (for triangles or quads),3 (for triangles),4 (for quads),6 (for triangles),9 (for quads),12 (for triangles),16 (for triangles or quads),33 (for triangles)" help="Number of particle generated for each element. Available options are: Tetrahedral: 1,3,6,12 and Hexahedral: 1,4,9,16" />
145145
</inputs>
146146
<outputs>
147147
<parameter n="MP_VELOCITY" pn="Material point velocity" v="true" />
@@ -192,7 +192,7 @@
192192
<inputs></inputs>
193193
<outputs></outputs>
194194
</ElementItem>
195-
<ElementItem n="GRID3D" pn="Background Grid" ov="volume" ImplementedInApplication="ParticleMechanicsApplication" WorkingSpaceDimension="3D" LocalSpaceDimension="3" RequiresLocalAxes="No" LargeDeformation="No" ElementType="Grid" help="3D Background element required for the computation of material point method." AnalysisType="non_linear">
195+
<ElementItem n="GRID3D" pn="Background Grid" ov="volume" ImplementedInApplication="ParticleMechanicsApplication" WorkingSpaceDimension="3D" LocalSpaceDimension="3" RequiresLocalAxes="No" LargeDeformation="No" ElementType="Grid" help="3D Background element required for the computation of material point method." AnalysisType="non_linear">
196196
<!--here we could add a list of all of the possible geometries-->
197197
<TopologyFeatures>
198198
<item GeometryType="Tetrahedra" nodes="4" KratosName="Element3D4N"/>

kratos.gid/apps/MPM/xml/Procs.spd

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,16 @@
2424
return [MPM::xml::ProcGetSolutionStrategiesMPM $domNode $args]
2525
]]>
2626
</proc>
27+
<proc n='CheckActivateStabilizationState' args='args'>
28+
<![CDATA[
29+
return [MPM::xml::ProcCheckActivateStabilizationState $domNode $args]
30+
]]>
31+
</proc>
2732

33+
<proc n='CheckStabilizationState' args='args'>
34+
<![CDATA[
35+
return [MPM::xml::ProcCheckStabilizationState $domNode $args]
36+
]]>
37+
</proc>
2838

2939
</container>

kratos.gid/apps/MPM/xml/SolutionStrategy.spd

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,11 @@
77
<value n="DeltaTime" pn="Delta time" v="0.01" help="User-defined time step" />
88
</container>
99
<container n="StratParams" pn="Strategy parameters" un="STStratParams" icon="groupsTreeNew.gif" open_window="0" state="[HideIfUniqueName STSoluType eigen_value]">
10-
<value n="ActivateStabilization" pn="Stabilization" type="combo" v="Off" values="Off,On" help="Stabilization" open_window="0" actualize_tree="1" state="normal">
11-
<dependencies value="Off" node="../value[@n='stabilization']" att1="state" v1="hidden"/>
12-
<dependencies value="On" node="../value[@n='stabilization']" att1="state" v1="normal"/>
13-
</value>
14-
<value n="stabilization" pn="Stabilization method" type="combo" v="ppp" values="ppp" pvalues="PPP" help="Stabilization method"/>
10+
<value n="ActivateStabilization" pn="Stabilization" type="combo" v="Off" values="Off,On" help="Stabilization" open_window="0" actualize_tree="1" state="[CheckActivateStabilizationState]" />
11+
<value n="stabilization" pn="Stabilization method" type="combo" v="ppp" values="ppp" pvalues="PPP" help="Stabilization method" state="[CheckStabilizationState]"/>
1512
<dynamicnode command="spdAux::injectSolStratParams" args="ImplementedInApplication StructuralMechanicsApplication"/>
1613
</container>
17-
<include n="Gravity" active="1" path="apps/MPM/xml/Gravity.spd"/>
14+
<include n="Gravity" active="1" path="apps/MPM/xml/Gravity.spd"/>
1815
<include n="Parallelism" active="1" path="apps/Common/xml/Parallelism.spd"/>
1916
<dynamicnode command="spdAux::injectSolvers" args=""/>
2017
</container>

kratos.gid/apps/MPM/xml/XmlController.tcl

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,3 +74,23 @@ proc MPM::xml::ProcCheckGeometry {domNode args} {
7474
}
7575
return $ret
7676
}
77+
78+
proc MPM::xml::ProcCheckActivateStabilizationState {domNode args} {
79+
set ret "hidden"
80+
set up_mixed UpdatedLagrangianUP$::Model::SpatialDimension
81+
set used_elements [::MPM::write::GetUsedElements Name]
82+
if {$up_mixed in $used_elements} {
83+
set ret "normal"
84+
}
85+
return $ret
86+
}
87+
88+
proc MPM::xml::ProcCheckStabilizationState {domNode args} {
89+
set ret "hidden"
90+
set first_check [MPM::xml::ProcCheckActivateStabilizationState domNode args]
91+
if {$first_check eq "normal"} {
92+
set second_check [write::getValueByNode [$domNode selectNodes "..//value\[@n='ActivateStabilization']"] ]
93+
if {$second_check eq "On"} {set ret "normal"}
94+
}
95+
return $ret
96+
}

0 commit comments

Comments
 (0)