Skip to content

Commit be5a690

Browse files
Merge pull request #1018 from KratosMultiphysics/hotfix-mdpa
Hotfix mdpa generator
2 parents 73e7d0e + b08a49c commit be5a690

File tree

8 files changed

+44
-20
lines changed

8 files changed

+44
-20
lines changed
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<condition n="GenericModelParts" pn="Add SubModelPart" un="GenericSubmodelPart" ov="point,line,surface,volume" icon="generic" >
33
<value n="WriteNodes" pn="Write nodes" v="True" values="True,False" state="disabled" />
4-
<value n="WriteElements" pn="Write elements" v="False" values="True,False" state="[ShowInWriteMode Entitites]"/>
5-
<value n="WriteConditions" pn="Write conditions" v="True" values="True,False" state="[ShowInWriteMode Entitites]"/>
4+
<value n="WriteElements" pn="Write elements" v="False" values="True,False" state="[ShowInWriteMode entitites]"/>
5+
<value n="WriteConditions" pn="Write conditions" v="True" values="True,False" state="[ShowInWriteMode entitites]"/>
6+
<value n="WriteGeometries" pn="Write geometries" v="True" values="True,False" state="[ShowInWriteMode geometries]"/>
67
</condition>

kratos.gid/apps/MdpaGenerator/app.json

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,6 @@
2222
"unique_names": {
2323
"parts": "GenericSubmodelPart"
2424
},
25-
"write": {
26-
"write_mdpa_mode": "geometries"
27-
},
2825
"main_launch_file": null,
2926
"description": "MDPA generator \n-Useful tool to generate modelparts"
3027
}

kratos.gid/apps/MdpaGenerator/start.tcl

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,8 @@ proc ::MdpaGenerator::Init { app } {
2525

2626
proc ::MdpaGenerator::BreakRunCalculation {} {
2727
return true
28-
}
28+
}
29+
30+
proc write::GetWriteMode {} {
31+
return [::MdpaGenerator::xml::GetCurrentWriteMode]
32+
}

kratos.gid/apps/MdpaGenerator/write/write.tcl

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ proc ::MdpaGenerator::write::Init { } {
2121
set writeAttributes [dict create ]
2222

2323
SetAttribute parts_un [::MdpaGenerator::GetUniqueName parts]
24-
SetAttribute write_mdpa_mode [::MdpaGenerator::GetWriteProperty write_mdpa_mode]
2524
}
2625

2726
# MDPA write event
@@ -43,6 +42,7 @@ proc ::MdpaGenerator::write::writeModelPartEvent { } {
4342
write::writeNodalCoordinates
4443

4544
set write_mode [::MdpaGenerator::xml::GetCurrentWriteMode]
45+
SetAttribute write_mdpa_mode $write_mode
4646
if {$write_mode eq "geometries"} {
4747
MdpaGenerator::write::writeGeometries
4848
} else {
@@ -75,14 +75,23 @@ proc ::MdpaGenerator::write::writeGeometries { } {
7575
# Get the list of groups in the spd
7676
set lista [::MdpaGenerator::xml::GetListOfSubModelParts]
7777

78+
set list_with_geometries [list]
79+
foreach group $lista {
80+
if {[write::isBooleanTrue [write::getValueByNode [$group selectNodes ".//value\[@n='WriteGeometries']"] ]]} {
81+
lappend list_with_geometries $group
82+
}
83+
}
84+
7885
# Write the geometries
79-
set ret [::write::writeGeometryConnectivities $lista]
86+
set ret [::write::writeGeometryConnectivities $list_with_geometries]
8087

8188
# Write the submodelparts
82-
set what "nodal"
83-
append what "&Geometries"
84-
89+
# We do not use the filtered list so we can preserve the order. Inefficient but ordered. Mental peace
8590
foreach group $lista {
91+
set what "nodal"
92+
if {[write::isBooleanTrue [write::getValueByNode [$group selectNodes ".//value\[@n='WriteGeometries']"] ]]} {
93+
set what "nodal&Geometries"
94+
}
8695
::write::writeGroupSubModelPart "GENERIC" [$group @n] $what
8796
}
8897

kratos.gid/apps/MdpaGenerator/xml/Main.spd

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
<container n="MdpaGenerator" pn="MdpaGenerator" icon="app" prefix="MDPAGen_" tree_state="open" open_window="0">
33
<container n="WriteOptions" pn="Write options" tree_state="open" un="SMP_write_options">
44
<value n="note" pn="Note: check kratos preferences first" state="disabled" />
5-
<value n="write_mode" pn="Write mode" v="geometries" un="SMP_write_mode" values="elements_and_conditions,geometries" dict="elements_and_conditions,Elements and conditions,geometries,Geometries" help="Write mode for the submodelpart.\nElements and conditions means that the submodelpart will be written as a set of elements and conditions.\nGeometries means that the submodelpart will be written as a set of geometries.">
6-
<dependencies value='elements_and_conditions' node="../value[@type='entitites']" att1='state' v1='normal' />
5+
<value n="write_mode" pn="Write mode" v="geometries" un="SMP_write_mode" values="entitites,geometries" dict="entitites,Elements and conditions,geometries,Geometries" help="Write mode for the submodelpart.\nElements and conditions means that the submodelpart will be written as a set of elements and conditions.\nGeometries means that the submodelpart will be written as a set of geometries.">
6+
<dependencies value='entitites' node="../value[@type='entitites']" att1='state' v1='normal' />
77
<dependencies value='geometries' node="../value[@type='entitites']" att1='state' v1='hidden' />
88
</value>
99
<value n="condition_write_mode" pn="Condition mode" v='unique' values="unique,norepeat" dict="unique,Unique ids,norepeat,overlap ids" state="hidden" type="entitites"

kratos.gid/scripts/Controllers/CommonProcs.tcl

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -544,16 +544,22 @@ proc spdAux::ProcDirectorVectorNonZero { domNode args } {
544544
}
545545
}
546546
proc spdAux::ProcShowInWriteMode { domNode args } {
547+
set response "hidden"
547548
set kw [lindex $args 0]
548-
if {$kw ni [list "Geometries" "Entitites"]} {return "hidden"}
549+
if {$kw ni [list "Geometries" "Entitites" "geometries" "entitites"]} {return "hidden"}
549550
set write_geometries_enabled 0
550-
if {[info exists Kratos::kratos_private(experimental_write_geometries)] && $Kratos::kratos_private(experimental_write_geometries)>0} {set write_geometries_enabled 1}
551-
551+
552+
set write_mode [::write::GetWriteMode]
553+
if {$write_mode eq "geometries"} {
554+
set write_geometries_enabled 1
555+
}
552556
if {$write_geometries_enabled} {
553-
if {$kw eq "Geometries"} {return "normal"} {return "hidden"}
557+
if {$kw eq "Geometries" || $kw eq "geometries"} {set response "normal"} {set response "hidden"}
554558
} else {
555-
if {$kw eq "Entitites"} {return "normal"} {return "hidden"}
559+
if {$kw eq "Entitites" || $kw eq "entitites"} {set response "normal"} {set response "hidden"}
556560
}
561+
# W "$kw -> $write_mode -> $response"
562+
return $response
557563
}
558564

559565

kratos.gid/scripts/Writing/Writing.tcl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -396,6 +396,10 @@ proc write::isquadratic {} {
396396
return [GiD_Set Model(QuadraticType)]
397397
}
398398

399+
proc write::GetWriteMode {} {
400+
return [::write::GetAttribute write_mdpa_mode]
401+
}
402+
399403
proc write::GetNodesFromElementFace {elem_id face_id} {
400404
set inf [GiD_Mesh get element $elem_id]
401405
set elem_type [lindex $inf 1]

kratos.gid/scripts/spdAuxiliar.tcl

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -413,8 +413,11 @@ proc spdAux::GetUsedElements {{alt_un ""}} {
413413

414414
set xp1 "[spdAux::getRoute $un]/group"
415415
foreach gNode [[customlib::GetBaseRoot] selectNodes $xp1] {
416-
set name [write::getValueByNode [$gNode selectNodes ".//value\[@n='Element']"] ]
417-
if {$name ni $lista} {lappend lista $name}
416+
set element_node [$gNode selectNodes ".//value\[@n='Element'\]"]
417+
if {$element_node ne ""} {
418+
set name [write::getValueByNode $element_node]
419+
if {$name ni $lista} {lappend lista $name}
420+
}
418421
}
419422
}
420423
return $lista

0 commit comments

Comments
 (0)