Skip to content

Commit 04f8172

Browse files
author
Miguel Angel Celigueta
authored
Merge pull request #756 from KratosMultiphysics/hotfix/dem-save
Hotfix/dem save spheres in group
2 parents 17d0cb2 + c0d63c1 commit 04f8172

7 files changed

Lines changed: 62 additions & 28 deletions

File tree

kratos.gid/apps/CDEM/start.tcl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,4 +71,8 @@ proc ::CDEM::CustomToolbarItems { } {
7171
Kratos::ToolbarAddItem "Bulk grouping" [file join $dir images stone.png] [list -np- ::CDEM::xml::BulkGroup] [= "Plugin\nBulk grouping"]
7272
}
7373

74+
proc ::CDEM::AfterSaveModel {filespd} {
75+
::DEM::AfterSaveModel $filespd
76+
}
77+
7478
::CDEM::Init

kratos.gid/apps/Common/xml/Processes.xml

Lines changed: 15 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2,64 +2,56 @@
22

33
<ProcessList>
44

5-
<!--Kratos base process -->
6-
<Process n="PythonProcess" pn="Base Python process" python_module="python_process"
7-
kratos_module="KratosMultiphysics" help="Python processes empty base class which does nothing">
5+
<!--Kratos base process -->
6+
<Process n="PythonProcess" pn="Base Python process" python_module="python_process" kratos_module="KratosMultiphysics" help="Python processes empty base class which does nothing">
87
<inputs>
98
</inputs>
109
</Process>
1110

12-
<!--Processes for nodes -->
13-
<Process n="AssignScalarVariableProcess" pn="Assign scalar variable process" python_module="assign_scalar_variable_process"
14-
kratos_module="KratosMultiphysics" help="This process fixes the selected components of a given vector variable">
11+
<!--Processes for nodes -->
12+
<Process n="AssignScalarVariableProcess" pn="Assign scalar variable process" python_module="assign_scalar_variable_process" kratos_module="KratosMultiphysics" help="This process fixes the selected components of a given vector variable">
1513
<inputs>
1614
<parameter n="constrained" pn="Imposed" type="bool" v="1" />
1715
<parameter n="value" pn="Value" type="double" function="1" v="0.0" has_units="1"/>
1816
</inputs>
1917
</Process>
2018

21-
<Process n="AssignVectorVariableProcess" pn="Assign vector variable process" python_module="assign_vector_variable_process"
22-
kratos_module="KratosMultiphysics" help="This process fixes the selected components of a given vector variable"
23-
write_command="write::ProcessVectorFunctionComponents" >
19+
<Process n="AssignVectorVariableProcess" pn="Assign vector variable process" python_module="assign_vector_variable_process" kratos_module="KratosMultiphysics" help="This process fixes the selected components of a given vector variable" write_command="write::ProcessVectorFunctionComponents">
2420
<inputs>
25-
<parameter n="component" pn="Component" type="vector" vectorType="double" function="1" cv="ByValue,ByValue,ByValue" v="0.0,0.0,0.0" fv="2*x,2*y*t,0.5*z" has_units="1"/>
21+
<parameter n="component" pn="Component" type="vector" vectorType="double" function="1" cv="ByValue,ByValue,ByValue" v="0.0,0.0,0.0" fv="2*x,2*y*t,0.5*z" has_units="1"/>
2622
</inputs>
2723
</Process>
2824

29-
<Process n="AssignAutomaticDirectionVectorProcess" pn="Assign automatic direction vector process" python_module="assign_vector_by_direction_process"
30-
kratos_module="KratosMultiphysics" help="" >
25+
<Process n="AssignAutomaticDirectionVectorProcess" pn="Assign automatic direction vector process" python_module="assign_vector_by_direction_process" kratos_module="KratosMultiphysics" help="">
3126
<inputs>
32-
<parameter n="modulus" pn="Value" type="double" v="1.0" function="1" has_units="1"/>
27+
<parameter n="modulus" pn="Value" type="double" v="1.0" function="1" has_units="1"/>
3328
<parameter n="direction" pn="Normal direction" type="combo" values="automatic_inwards_normal,automatic_outwards_normal" pvalues="Inwards,Outwards" v="automatic_inwards_normal" help=""/>
3429
</inputs>
3530
</Process>
3631

37-
<Process n="AssignVectorByDirectionProcess" pn="Assign vector by direction process" python_module="assign_vector_by_direction_process"
38-
kratos_module="KratosMultiphysics" help="This process sets a vector variable value over a condition according to a given modulus an direction" check="DirectorVectorNonZero direction">
32+
<Process n="AssignVectorByDirectionProcess" pn="Assign vector by direction process" python_module="assign_vector_by_direction_process" kratos_module="KratosMultiphysics" help="This process sets a vector variable value over a condition according to a given modulus an direction" check="DirectorVectorNonZero direction">
3933
<inputs>
40-
<parameter n="modulus" pn="Value" type="double" v="1.0" function="1" has_units="1"/>
34+
<parameter n="constrained" pn="Constrained" type="bool" v="0" values="0,1" has_units="0"/>
35+
<parameter n="modulus" pn="Value" type="double" v="1.0" function="1" has_units="1"/>
4136
<parameter n="direction" pn="Direction" type="vector" vectorType="double" v="0.0,0.0,0.0" help=""/>
4237
</inputs>
4338
</Process>
4439

45-
<!--Processes for conditions -->
46-
<Process n="AssignScalarVariableToConditionProcess" pn="Apply a scalar value over a condition" python_module="assign_scalar_variable_to_conditions_process"
47-
kratos_module="KratosMultiphysics" help="This process sets a scalar variable value over a condition">
40+
<!--Processes for conditions -->
41+
<Process n="AssignScalarVariableToConditionProcess" pn="Apply a scalar value over a condition" python_module="assign_scalar_variable_to_conditions_process" kratos_module="KratosMultiphysics" help="This process sets a scalar variable value over a condition">
4842
<inputs>
4943
<parameter n="value" pn="Value" type="double" v="0.0" function="1" has_units="1"/>
5044
</inputs>
5145
</Process>
5246

53-
<Process n="AssignVectorVariableToConditionProcess" pn="Assign a vector variable over a condition " python_module="assign_vector_variable_to_condition_process"
54-
kratos_module="KratosMultiphysics" help="This process sets a scalar variable value over a condition">
47+
<Process n="AssignVectorVariableToConditionProcess" pn="Assign a vector variable over a condition " python_module="assign_vector_variable_to_condition_process" kratos_module="KratosMultiphysics" help="This process sets a scalar variable value over a condition">
5548
<inputs>
5649
<parameter n="constrained" pn="Imposed" type="vector" vectorType="bool" v="1,1,1" />
5750
<parameter n="value" pn="Value" type="vector" vectorType="double" function="1" v="0.0,0.0,0.0" has_units="1"/>
5851
</inputs>
5952
</Process>
6053

61-
<Process n="AssignVectorByDirectionToConditionProcess" pn="Assign a vector value on a condition" python_module="assign_vector_by_direction_to_condition_process"
62-
kratos_module="KratosMultiphysics" help="This process sets a vector variable value over a condition according to a given modulus an direction" check="DirectorVectorNonZero direction">
54+
<Process n="AssignVectorByDirectionToConditionProcess" pn="Assign a vector value on a condition" python_module="assign_vector_by_direction_to_condition_process" kratos_module="KratosMultiphysics" help="This process sets a vector variable value over a condition according to a given modulus an direction" check="DirectorVectorNonZero direction">
6355
<inputs>
6456
<parameter n="modulus" pn="Modulus" type="double" v="1.0" function="1" has_units="1"/>
6557
<parameter n="direction" pn="Direction" type="vector" v="0.0,0.0,0.0" />

kratos.gid/apps/DEM/start.tcl

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,36 @@ proc ::DEM::AfterMeshGeneration { fail } {
166166
# }
167167
}
168168

169+
proc ::DEM::AfterSaveModel { filespd } {
170+
171+
# GiD bug detected in versions prev to 15.0.1
172+
# Spheres disapear in groups after load. Fixing it by removing the limitation in the prj file.
173+
# GiD Team -> @jginternationa and @escolano
174+
# Fixed in any 15.1.X (developer) and 15.0.1 and later (official)
175+
if {[GidUtils::VersionCmp "15.0.0"] <= 0} {
176+
::DEM::PatchMissingSpheresInGroup $filespd
177+
}
178+
}
179+
180+
proc ::DEM::PatchMissingSpheresInGroup {filespd} {
181+
set prj_file [file join [file dirname $filespd] [file rootname $filespd].prj]
182+
if {[file exists $prj_file]} {
183+
dom parse [tDOM::xmlReadFile $prj_file] doc
184+
185+
set grlist [$doc getElementsByTagName group]
186+
foreach group $grlist {
187+
if {[$group hasAttribute allowed_element_types]} {
188+
$group removeAttribute allowed_element_types
189+
}
190+
if {[$group hasAttribute allowed_types]} {
191+
$group removeAttribute allowed_types
192+
}
193+
}
194+
set fp [open $prj_file w]
195+
puts $fp [$doc asXML]
196+
close $fp
197+
}
198+
}
169199

170200

171201
::DEM::Init

kratos.gid/apps/DEM/write/writeMDPA_Parts.tcl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -428,6 +428,7 @@ proc DEM::write::GetSpheresGroups { } {
428428

429429
proc DEM::write::writeMaterialsParts { } {
430430
variable partsProperties
431+
#TODO: check this nonsense conditions/parts ??
431432
set xp1 "[spdAux::getRoute [GetAttribute conditions_un]]/condition\[@n = 'Parts'\]/group"
432433
set partsProperties $::write::mat_dict
433434
#set ::write::mat_dict [dict create]

kratos.gid/apps/DEMPFEM/start.tcl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,4 +64,8 @@ proc ::DEMPFEM::CustomToolbarItems { } {
6464
Kratos::ToolbarAddItem "Example" "example.png" [list -np- ::DEMPFEM::examples::InnerSphere] [= "Example\nInnerSphere"]
6565
}
6666

67+
proc ::DEMPFEM::AfterSaveModel {filespd} {
68+
::DEM::AfterSaveModel $filespd
69+
}
70+
6771
::DEMPFEM::Init

kratos.gid/apps/FluidDEM/start.tcl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,4 +65,8 @@ proc ::FluidDEM::CustomToolbarItems { } {
6565
Kratos::ToolbarAddItem "Example" [file join $dir images drop.png] [list -np- ::FluidDEM::examples::CylinderInFlow] [= "Example\nCylinderInFlow"]
6666
}
6767

68+
proc ::FluidDEM::AfterSaveModel {filespd} {
69+
::DEM::AfterSaveModel $filespd
70+
}
71+
6872
::FluidDEM::Init

kratos.gid/apps/Structural/xml/Elements.xml

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -458,8 +458,8 @@
458458
<ElementItem n="PrestressedMembraneElement" pn="Membrane prestressed" ov="surface" ImplementedInFile="prestress_membrane_element.cpp" ImplementedInApplication="StructuralMechanicsApplication" MinimumKratosVersion="9000" ProductionReady="ProductionReady" WorkingSpaceDimension="3D" LocalSpaceDimension="2" RequiresLocalAxes="False" LargeDeformation="False" help="This element it implements a membrane structural model" RotationDofs="False" ElementType="Membrane" AnalysisType="non_linear">
459459
<!--here we could add a list of all of the possible geometries-->
460460
<TopologyFeatures>
461-
<item GeometryType="Triangle" nodes="3" KratosName="PreStressMembraneElement3D3N"/>
462-
<item GeometryType="Quadrilateral" nodes="4" KratosName="PreStressMembraneElement3D4N"/>
461+
<item GeometryType="Triangle" nodes="3" KratosName="MembraneElement3D3N"/>
462+
<item GeometryType="Quadrilateral" nodes="4" KratosName="MembraneElement3D4N"/>
463463
</TopologyFeatures>
464464
<!-- here we add the block of features which we require from the constitutive law-->
465465
<ConstitutiveLaw_FilterFeatures>
@@ -478,11 +478,10 @@
478478
<parameter n="THICKNESS" pn="Thickness" v="1.0" unit_magnitude="L" units="m" />
479479
<parameter n="PRESTRESS_VECTOR" pn="Membrane prestress" type="inline_vector" v="0,0,0"/>
480480
<parameter n="PROJECTION_TYPE_COMBO" pn="Projection type" type="combo" v="rotational" values="rotational,planar,file">
481-
<parameter n="PRESTRESS_AXIS_GLOBAL" pn="Projection direction" type="inline_vector" v="0,0,0" parent="rotational"/>
482-
<parameter n="PRESTRESS_AXIS_1_GLOBAL" pn="Projection direction 1" type="inline_vector" v="0,0,0" parent="planar"/>
481+
<parameter n="PRESTRESS_AXIS_1_GLOBAL" pn="Projection direction 1" type="inline_vector" v="0,0,0" parent="rotational,planar"/>
483482
<parameter n="PRESTRESS_AXIS_2_GLOBAL" pn="Projection direction 2" type="inline_vector" v="0,0,0" parent="planar"/>
484483
<parameter n="PROJECTION_TYPE_FILEPATH" pn="Projection file" type="tablefile" parent="file" v="- No file"/>
485-
</parameter>
484+
</parameter>
486485
</inputs>
487486
<outputs>
488487
<parameter n="CAUCHY_STRESS_TENSOR" pn="Cauchy stress tensor" />

0 commit comments

Comments
 (0)