From 6dfa43856708c4cc191d43b4e4fe50fe0318a8e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20G=C3=A1rate?= Date: Fri, 8 Aug 2025 13:23:46 +0200 Subject: [PATCH 1/4] common scripts --- kratos.gid/scripts/Controllers/CommonProcs.tcl | 16 +++++++++++----- kratos.gid/scripts/Writing/Writing.tcl | 4 ++++ 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/kratos.gid/scripts/Controllers/CommonProcs.tcl b/kratos.gid/scripts/Controllers/CommonProcs.tcl index 1f2afa6ff..0d5425a3c 100644 --- a/kratos.gid/scripts/Controllers/CommonProcs.tcl +++ b/kratos.gid/scripts/Controllers/CommonProcs.tcl @@ -544,16 +544,22 @@ proc spdAux::ProcDirectorVectorNonZero { domNode args } { } } proc spdAux::ProcShowInWriteMode { domNode args } { + set response "hidden" set kw [lindex $args 0] - if {$kw ni [list "Geometries" "Entitites"]} {return "hidden"} + if {$kw ni [list "Geometries" "Entitites" "geometries" "entitites"]} {return "hidden"} set write_geometries_enabled 0 - if {[info exists Kratos::kratos_private(experimental_write_geometries)] && $Kratos::kratos_private(experimental_write_geometries)>0} {set write_geometries_enabled 1} - + + set write_mode [::write::GetWriteMode] + if {$write_mode eq "geometries"} { + set write_geometries_enabled 1 + } if {$write_geometries_enabled} { - if {$kw eq "Geometries"} {return "normal"} {return "hidden"} + if {$kw eq "Geometries" || $kw eq "geometries"} {set response "normal"} {set response "hidden"} } else { - if {$kw eq "Entitites"} {return "normal"} {return "hidden"} + if {$kw eq "Entitites" || $kw eq "entitites"} {set response "normal"} {set response "hidden"} } + # W "$kw -> $write_mode -> $response" + return $response } diff --git a/kratos.gid/scripts/Writing/Writing.tcl b/kratos.gid/scripts/Writing/Writing.tcl index 938376ca4..9f7444330 100644 --- a/kratos.gid/scripts/Writing/Writing.tcl +++ b/kratos.gid/scripts/Writing/Writing.tcl @@ -396,6 +396,10 @@ proc write::isquadratic {} { return [GiD_Set Model(QuadraticType)] } +proc write::GetWriteMode {} { + return [::write::GetAttribute write_mdpa_mode] +} + proc write::GetNodesFromElementFace {elem_id face_id} { set inf [GiD_Mesh get element $elem_id] set elem_type [lindex $inf 1] From 3093c66752185d0e7a27022b39bfc76470361ad8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20G=C3=A1rate?= Date: Fri, 8 Aug 2025 13:24:16 +0200 Subject: [PATCH 2/4] mdpa generator app uses new selector --- kratos.gid/apps/Common/xml/GenericSubModelPart.spd | 5 +++-- kratos.gid/apps/MdpaGenerator/app.json | 3 --- kratos.gid/apps/MdpaGenerator/start.tcl | 6 +++++- kratos.gid/apps/MdpaGenerator/write/write.tcl | 4 ++-- kratos.gid/apps/MdpaGenerator/xml/Main.spd | 4 ++-- 5 files changed, 12 insertions(+), 10 deletions(-) diff --git a/kratos.gid/apps/Common/xml/GenericSubModelPart.spd b/kratos.gid/apps/Common/xml/GenericSubModelPart.spd index 2ecb44b66..03e7a0173 100644 --- a/kratos.gid/apps/Common/xml/GenericSubModelPart.spd +++ b/kratos.gid/apps/Common/xml/GenericSubModelPart.spd @@ -1,6 +1,7 @@ - - + + + \ No newline at end of file diff --git a/kratos.gid/apps/MdpaGenerator/app.json b/kratos.gid/apps/MdpaGenerator/app.json index a233d1e7b..59e8d25bb 100644 --- a/kratos.gid/apps/MdpaGenerator/app.json +++ b/kratos.gid/apps/MdpaGenerator/app.json @@ -22,9 +22,6 @@ "unique_names": { "parts": "GenericSubmodelPart" }, - "write": { - "write_mdpa_mode": "geometries" - }, "main_launch_file": null, "description": "MDPA generator \n-Useful tool to generate modelparts" } diff --git a/kratos.gid/apps/MdpaGenerator/start.tcl b/kratos.gid/apps/MdpaGenerator/start.tcl index c2b7cf0f2..c90080f61 100644 --- a/kratos.gid/apps/MdpaGenerator/start.tcl +++ b/kratos.gid/apps/MdpaGenerator/start.tcl @@ -25,4 +25,8 @@ proc ::MdpaGenerator::Init { app } { proc ::MdpaGenerator::BreakRunCalculation {} { return true -} \ No newline at end of file +} + +proc write::GetWriteMode {} { + return [::MdpaGenerator::xml::GetCurrentWriteMode] +} diff --git a/kratos.gid/apps/MdpaGenerator/write/write.tcl b/kratos.gid/apps/MdpaGenerator/write/write.tcl index 2fec55d26..651a46fe3 100644 --- a/kratos.gid/apps/MdpaGenerator/write/write.tcl +++ b/kratos.gid/apps/MdpaGenerator/write/write.tcl @@ -21,7 +21,6 @@ proc ::MdpaGenerator::write::Init { } { set writeAttributes [dict create ] SetAttribute parts_un [::MdpaGenerator::GetUniqueName parts] - SetAttribute write_mdpa_mode [::MdpaGenerator::GetWriteProperty write_mdpa_mode] } # MDPA write event @@ -42,7 +41,8 @@ proc ::MdpaGenerator::write::writeModelPartEvent { } { # Nodal coordinates write::writeNodalCoordinates - set write_mode [::MdpaGenerator::xml::GetCurrentWriteMode] + set write_mode [::MdpaGenerator::xml::GetWriteMode] + SetAttribute write_mdpa_mode $write_mode if {$write_mode eq "geometries"} { MdpaGenerator::write::writeGeometries } else { diff --git a/kratos.gid/apps/MdpaGenerator/xml/Main.spd b/kratos.gid/apps/MdpaGenerator/xml/Main.spd index 0727f192f..a22d246d7 100644 --- a/kratos.gid/apps/MdpaGenerator/xml/Main.spd +++ b/kratos.gid/apps/MdpaGenerator/xml/Main.spd @@ -2,8 +2,8 @@ - - + + Date: Fri, 8 Aug 2025 13:38:46 +0200 Subject: [PATCH 3/4] safety check --- kratos.gid/scripts/spdAuxiliar.tcl | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/kratos.gid/scripts/spdAuxiliar.tcl b/kratos.gid/scripts/spdAuxiliar.tcl index 98359a44b..68ef26975 100644 --- a/kratos.gid/scripts/spdAuxiliar.tcl +++ b/kratos.gid/scripts/spdAuxiliar.tcl @@ -413,8 +413,11 @@ proc spdAux::GetUsedElements {{alt_un ""}} { set xp1 "[spdAux::getRoute $un]/group" foreach gNode [[customlib::GetBaseRoot] selectNodes $xp1] { - set name [write::getValueByNode [$gNode selectNodes ".//value\[@n='Element']"] ] - if {$name ni $lista} {lappend lista $name} + set element_node [$gNode selectNodes ".//value\[@n='Element'\]"] + if {$element_node ne ""} { + set name [write::getValueByNode $element_node] + if {$name ni $lista} {lappend lista $name} + } } } return $lista From b08a49c9af8237163585a570c19dfef7fbb73f67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20G=C3=A1rate?= Date: Fri, 8 Aug 2025 13:38:57 +0200 Subject: [PATCH 4/4] write geometries only if requested --- kratos.gid/apps/MdpaGenerator/write/write.tcl | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/kratos.gid/apps/MdpaGenerator/write/write.tcl b/kratos.gid/apps/MdpaGenerator/write/write.tcl index 651a46fe3..42b47001d 100644 --- a/kratos.gid/apps/MdpaGenerator/write/write.tcl +++ b/kratos.gid/apps/MdpaGenerator/write/write.tcl @@ -41,7 +41,7 @@ proc ::MdpaGenerator::write::writeModelPartEvent { } { # Nodal coordinates write::writeNodalCoordinates - set write_mode [::MdpaGenerator::xml::GetWriteMode] + set write_mode [::MdpaGenerator::xml::GetCurrentWriteMode] SetAttribute write_mdpa_mode $write_mode if {$write_mode eq "geometries"} { MdpaGenerator::write::writeGeometries @@ -75,14 +75,23 @@ proc ::MdpaGenerator::write::writeGeometries { } { # Get the list of groups in the spd set lista [::MdpaGenerator::xml::GetListOfSubModelParts] + set list_with_geometries [list] + foreach group $lista { + if {[write::isBooleanTrue [write::getValueByNode [$group selectNodes ".//value\[@n='WriteGeometries']"] ]]} { + lappend list_with_geometries $group + } + } + # Write the geometries - set ret [::write::writeGeometryConnectivities $lista] + set ret [::write::writeGeometryConnectivities $list_with_geometries] # Write the submodelparts - set what "nodal" - append what "&Geometries" - + # We do not use the filtered list so we can preserve the order. Inefficient but ordered. Mental peace foreach group $lista { + set what "nodal" + if {[write::isBooleanTrue [write::getValueByNode [$group selectNodes ".//value\[@n='WriteGeometries']"] ]]} { + set what "nodal&Geometries" + } ::write::writeGroupSubModelPart "GENERIC" [$group @n] $what }