Skip to content

Commit f24da36

Browse files
hotfix mpm
1 parent 6a78a7f commit f24da36

1 file changed

Lines changed: 43 additions & 34 deletions

File tree

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

Lines changed: 43 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
namespace eval MPM::write {
22
namespace path ::MPM
33
Kratos::AddNamespace [namespace current]
4-
4+
55
variable writeAttributes
66
variable ConditionsDictGroupIterators
77
}
@@ -14,7 +14,7 @@ proc MPM::write::Init { } {
1414
SetAttribute parts_un [::MPM::GetUniqueName parts]
1515
SetAttribute nodal_conditions_un [::MPM:::GetUniqueName nodal_conditions]
1616
SetAttribute conditions_un [::MPM::GetUniqueName conditions]
17-
17+
1818
SetAttribute writeCoordinatesByGroups [::MPM::GetWriteProperty coordinates]
1919
SetAttribute main_launch_file [::MPM::GetAttribute main_launch_file]
2020
SetAttribute materials_file [::MPM::GetWriteProperty materials_file]
@@ -28,21 +28,21 @@ proc MPM::write::writeModelPartEvent { } {
2828
write::initWriteConfiguration [GetAttributes]
2929

3030
MPM::write::UpdateMaterials
31-
31+
3232
set filename [Kratos::GetModelName]
33-
33+
3434
## Grid MPDA ##
3535
# Headers
3636
write::writeModelPartData
3737
write::WriteString "Begin Properties 0"
3838
write::WriteString "End Properties"
3939

40-
# Nodal coordinates
40+
# Nodal coordinates
4141
write::writeNodalCoordinates
4242

4343
# Grid element connectivities
4444
writeGridConnectivities
45-
45+
4646
# Write conditions
4747
writeConditions
4848

@@ -72,22 +72,30 @@ proc MPM::write::writeModelPartEvent { } {
7272
write::CloseFile
7373
}
7474

75-
proc MPM::write::writeBodyNodalCoordinates { } {
75+
proc MPM::write::GetPartsGroups { part_type {what "name"} } {
7676
set xp1 "[spdAux::getRoute [GetAttribute parts_un]]/condition/group"
7777
set body_groups [list ]
78+
set grid_elems [list GRID2D GRID3D]
7879
foreach gNode [[customlib::GetBaseRoot] selectNodes $xp1] {
7980
set elem [write::getValueByNode [$gNode selectNodes ".//value\[@n='Element'\]"] ]
80-
if {$elem ni [list GRID2D GRID3D]} {
81-
lappend body_groups [$gNode @n]
81+
82+
if {($part_type eq "grid" && $elem in $grid_elems) || ($part_type ne "grid" && $elem ni $grid_elems)} {
83+
if {$what eq "name"} {
84+
lappend body_groups [$gNode @n]
85+
} {
86+
lappend body_groups $gNode
87+
}
8288
}
8389
}
84-
write::writeNodalCoordinatesOnGroups $body_groups
90+
return $body_groups
91+
}
92+
93+
proc MPM::write::writeBodyNodalCoordinates { } {
94+
write::writeNodalCoordinatesOnGroups [MPM::write::GetPartsGroups Body]
8595
}
8696

8797
proc MPM::write::writeBodyElementConnectivities { } {
88-
set xp1 "[spdAux::getRoute [GetAttribute parts_un]]/condition/group"
89-
set body_groups [list ]
90-
foreach gNode [[customlib::GetBaseRoot] selectNodes $xp1] {
98+
foreach gNode [MPM::write::GetPartsGroups Body node] {
9199
set elem [write::getValueByNode [$gNode selectNodes ".//value\[@n='Element'\]"] ]
92100
if {$elem ni [list GRID2D GRID3D]} {
93101
write::writeGroupElementConnectivities $gNode $elem
@@ -96,8 +104,7 @@ proc MPM::write::writeBodyElementConnectivities { } {
96104
}
97105

98106
proc MPM::write::writeGridConnectivities { } {
99-
set xp1 "[spdAux::getRoute [GetAttribute parts_un]]/condition/group"
100-
foreach gNode [[customlib::GetBaseRoot] selectNodes $xp1] {
107+
foreach gNode [MPM::write::GetPartsGroups grid node] {
101108
set elem [write::getValueByNode [$gNode selectNodes ".//value\[@n='Element'\]"] ]
102109
if {$elem in [list GRID2D GRID3D]} {
103110
write::writeGroupElementConnectivities $gNode $elem
@@ -106,40 +113,29 @@ proc MPM::write::writeGridConnectivities { } {
106113
}
107114

108115
proc MPM::write::writeConditions { } {
109-
110116
variable ConditionsDictGroupIterators
111117
set ConditionsDictGroupIterators [::write::writeConditions [GetAttribute conditions_un] ]
112118
}
113119

114120
proc MPM::write::writeSubmodelparts { type } {
115121

116122
set grid_elements [list GRID2D GRID3D]
117-
118123
set xp1 "[spdAux::getRoute [GetAttribute parts_un]]/condition/group"
119-
set body_groups [list ]
120-
foreach gNode [[customlib::GetBaseRoot] selectNodes $xp1] {
124+
foreach gNode [MPM::write::GetPartsGroups $type node] {
121125
set elem [write::getValueByNode [$gNode selectNodes ".//value\[@n='Element'\]"] ]
122126
set part_name [get_domnode_attribute [$gNode parent] n]
123127
set group_name [get_domnode_attribute $gNode n]
124-
if {$type eq "grid"} {
125-
if {$elem in $grid_elements} {
126-
write::writeGroupSubModelPart $part_name $group_name "Elements"
127-
}
128-
} else {
129-
if {$elem ni $grid_elements} {
130-
write::writeGroupSubModelPart $part_name $group_name "Elements"
131-
}
132-
}
128+
write::writeGroupSubModelPart $part_name $group_name "Elements"
133129
}
134-
135130
if {$type eq "grid"} {
136131
# Write the boundary conditions submodelpart
137132
write::writeNodalConditions [GetAttribute nodal_conditions_un]
138-
133+
139134
# A Condition y a meshes-> salvo lo que no tenga topologia
140135
writeLoads
141136
}
142137
}
138+
143139
proc MPM::write::writeLoads { } {
144140
variable ConditionsDictGroupIterators
145141
set root [customlib::GetBaseRoot]
@@ -158,7 +154,20 @@ proc MPM::write::writeLoads { } {
158154

159155
proc MPM::write::writeCustomFilesEvent { } {
160156
# Materials file
161-
write::writePropertiesJsonFile [GetAttribute parts_un] [GetAttribute materials_file] True Initial_MPM_Material
157+
set mats_json [dict get [write::getPropertiesList [GetAttribute parts_un] True Initial_MPM_Material] properties ]
158+
set new_mats [list ]
159+
foreach mat $mats_json {
160+
set type [dict exists $mat Material constitutive_law]
161+
if {$type eq 0} {
162+
set submodelpart [lindex [split [dict get $mat model_part_name] "."] end]
163+
dict set mat model_part_name Background_Grid.$submodelpart
164+
}
165+
lappend new_mats $mat
166+
}
167+
write::OpenFile [GetAttribute materials_file]
168+
write::WriteJSON [dict create properties $new_mats]
169+
write::CloseFile
170+
162171
write::SetConfigurationAttribute main_launch_file [GetAttribute main_launch_file]
163172
}
164173

@@ -167,13 +176,13 @@ proc MPM::write::UpdateMaterials { } {
167176
foreach {mat props} $matdict {
168177
# Modificar la ley constitutiva
169178
dict set matdict $mat THICKNESS 1.0000E+00
170-
179+
171180
set xp1 "[spdAux::getRoute [GetAttribute parts_un]]/condition/group\[@n='$mat'\]/value\[@n='THICKNESS'\]"
172-
set vNode [[customlib::GetBaseRoot] selectNodes $xp1]
181+
set vNode [[customlib::GetBaseRoot] selectNodes $xp1]
173182
if {$vNode ne ""} {
174183
dict set matdict $mat THICKNESS [write::getValueByNode $vNode]
175184
}
176-
185+
177186
}
178187
write::setMatDict $matdict
179188
}

0 commit comments

Comments
 (0)