Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions kratos.gid/apps/Common/xml/GenericSubModelPart.spd
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<condition n="GenericModelParts" pn="Add SubModelPart" un="GenericSubmodelPart" ov="point,line,surface,volume" icon="generic" >
<value n="WriteNodes" pn="Write nodes" v="True" values="True,False" state="disabled" />
<value n="WriteElements" pn="Write elements" v="False" values="True,False" state="[ShowInWriteMode Entitites]"/>
<value n="WriteConditions" pn="Write conditions" v="True" values="True,False" state="[ShowInWriteMode Entitites]"/>
<value n="WriteElements" pn="Write elements" v="False" values="True,False" state="[ShowInWriteMode entitites]"/>
<value n="WriteConditions" pn="Write conditions" v="True" values="True,False" state="[ShowInWriteMode entitites]"/>
<value n="WriteGeometries" pn="Write geometries" v="True" values="True,False" state="[ShowInWriteMode geometries]"/>
</condition>
3 changes: 0 additions & 3 deletions kratos.gid/apps/MdpaGenerator/app.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"
}
6 changes: 5 additions & 1 deletion kratos.gid/apps/MdpaGenerator/start.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,8 @@ proc ::MdpaGenerator::Init { app } {

proc ::MdpaGenerator::BreakRunCalculation {} {
return true
}
}

proc write::GetWriteMode {} {
return [::MdpaGenerator::xml::GetCurrentWriteMode]
}
19 changes: 14 additions & 5 deletions kratos.gid/apps/MdpaGenerator/write/write.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -43,6 +42,7 @@ proc ::MdpaGenerator::write::writeModelPartEvent { } {
write::writeNodalCoordinates

set write_mode [::MdpaGenerator::xml::GetCurrentWriteMode]
SetAttribute write_mdpa_mode $write_mode
if {$write_mode eq "geometries"} {
MdpaGenerator::write::writeGeometries
} else {
Expand Down Expand Up @@ -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
}

Expand Down
4 changes: 2 additions & 2 deletions kratos.gid/apps/MdpaGenerator/xml/Main.spd
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
<container n="MdpaGenerator" pn="MdpaGenerator" icon="app" prefix="MDPAGen_" tree_state="open" open_window="0">
<container n="WriteOptions" pn="Write options" tree_state="open" un="SMP_write_options">
<value n="note" pn="Note: check kratos preferences first" state="disabled" />
<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.">
<dependencies value='elements_and_conditions' node="../value[@type='entitites']" att1='state' v1='normal' />
<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.">
<dependencies value='entitites' node="../value[@type='entitites']" att1='state' v1='normal' />
<dependencies value='geometries' node="../value[@type='entitites']" att1='state' v1='hidden' />
</value>
<value n="condition_write_mode" pn="Condition mode" v='unique' values="unique,norepeat" dict="unique,Unique ids,norepeat,overlap ids" state="hidden" type="entitites"
Expand Down
16 changes: 11 additions & 5 deletions kratos.gid/scripts/Controllers/CommonProcs.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -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
}


Expand Down
4 changes: 4 additions & 0 deletions kratos.gid/scripts/Writing/Writing.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -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]
Expand Down
7 changes: 5 additions & 2 deletions kratos.gid/scripts/spdAuxiliar.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down