@@ -11,7 +11,7 @@ proc DEM::write::WriteMDPAParts { } {
1111
1212 # Nodal coordinates (only for DEM Parts <inefficient> )
1313 write::writeNodalCoordinatesOnParts
14- # write::writeNodalCoordinatesOnGroups [GetDEMGroupsCustomSubmodelpart ]
14+ write::writeNodalCoordinatesOnGroups [DEM::write::GetDEMGroupNamesCustomSubmodelpart ]
1515 write::writeNodalCoordinatesOnGroups [WriteWallGraphsFlag]
1616 write::writeNodalCoordinatesOnGroups [GetDEMGroupsInitialC]
1717 write::writeNodalCoordinatesOnGroups [GetDEMGroupsBoundayC]
@@ -30,38 +30,41 @@ proc DEM::write::WriteMDPAParts { } {
3030 writeDEMConditionMeshes
3131
3232 # CustomSubmodelParts
33- # WriteWallCustomDEMSmp not required for dem.
33+ WriteWallCustomDEMSmp; # not required for dem.
3434}
3535
36- # # TODO: proc under revision. Duplicated code. Unused in some situations
3736proc DEM::write::WriteWallCustomDEMSmp { } {
38- set xp1 " [ spdAux::getRoute [GetAttribute conditions_un] ]/condition\[ @n = 'DEM-CustomSmp'\] /group"
39- foreach group [[customlib::GetBaseRoot] selectNodes $xp1 ] {
40- set groupid [$group @n]
41- set destination_mdpa [write::getValueByNode [$group selectNodes " ./value\[ @n='WhatMdpa'\] " ]]
42- if {$destination_mdpa == " DEM" } {
37+ foreach group [GetDEMGroupsCustomSubmodelpart] {
38+ set groupid [write::GetWriteGroupName [$group @n]]
4339
44- # write::WriteString "Begin SubModelPart $groupid \/\/ Custom SubModelPart. Group name: $groupid"
45- write::WriteString " Begin SubModelPart $groupid \/\/ Custom SubModelPart. Group name: $groupid "
46- write::WriteString " Begin SubModelPartData // DEM-FEM-Wall. Group name: $groupid "
47- write::WriteString " End SubModelPartData "
48- write::WriteString " Begin SubModelPartNodes "
49- GiD_WriteCalculationFile nodes -sorted [dict create [ write::GetWriteGroupName $groupid ] [ subst " %10i \n " ]]
50- write::WriteString " End SubModelPartNodes "
51- write::WriteString " End SubModelPart "
52- write::WriteString " "
53- }
40+ # TODO: Missing write properties for Custom Submodelparts
41+
42+ # Nodes are previously printed
43+ # Print elements and connectivities
44+ set elem [ write::getValueByNode [ $group selectNodes " .//value \[ @n='Element'] " ] ]
45+ write::writeGroupElementConnectivities $group $elem
46+
47+ DEM:: write::writeSphereRadiusOnGroup $group
48+
49+ write::writeGroupSubModelPart DEM-CustomSmp $groupid Elements
5450 }
5551}
5652
53+ proc DEM::write::GetDEMGroupNamesCustomSubmodelpart { } {
54+ set groups [list ]
55+ foreach group [DEM::write::GetDEMGroupsCustomSubmodelpart] {
56+ set groupid [$group @n]
57+ lappend groups [write::GetWriteGroupName $groupid ]
58+ }
59+ return $groups
60+ }
5761proc DEM::write::GetDEMGroupsCustomSubmodelpart { } {
5862 set groups [list ]
5963 set xp2 " [ spdAux::getRoute [GetAttribute conditions_un] ]/condition\[ @n = 'DEM-CustomSmp'\] /group"
6064 foreach group [[customlib::GetBaseRoot] selectNodes $xp2 ] {
6165 set destination_mdpa [write::getValueByNode [$group selectNodes " ./value\[ @n='WhatMdpa'\] " ]]
6266 if {$destination_mdpa == " DEM" } {
63- set groupid [$group @n]
64- lappend groups [write::GetWriteGroupName $groupid ]
67+ lappend groups $group
6568 }
6669 }
6770 return $groups
@@ -94,31 +97,18 @@ proc DEM::write::writeSphereRadius { } {
9497 set root [customlib::GetBaseRoot]
9598 set xp1 " [ spdAux::getRoute [GetAttribute parts_un] ]/group"
9699 foreach group [$root selectNodes $xp1 ] {
97- set groupid [$group @n]
98- set grouppid [write::GetWriteGroupName $groupid ]
99- write::WriteString " Begin NodalData RADIUS // GUI group identifier: $grouppid "
100- GiD_WriteCalculationFile connectivities [dict create $groupid " %.0s %10d 0 %10g\n " ]
101- write::WriteString " End NodalData"
102- write::WriteString " "
100+ DEM::write::writeSphereRadiusOnGroup $group
103101 }
104102}
105103
106- # proc DEM::write::GetNodalConditionsGroups { {include_cond 0} } { # TODO UNUSED CODE
107- # set groups [list ]
108- # set xp1 "[spdAux::getRoute [GetAttribute nodal_conditions_un]]/condition/group"
109- # foreach group [[customlib::GetBaseRoot] selectNodes $xp1] {
110- # set groupid [$group @n]
111- # if {$include_cond} {lappend groups [[$group parent] @n]}
112- # lappend groups [write::GetWriteGroupName $groupid]
113- # }
114- # return $groups
115- # }
116-
117- # proc DEM::write::write2VelocityMeshes { } {
118- # foreach {cid groupid} [DEM::write::GetNodalConditionsGroups 1] {
119- # ::write::writeGroupSubModelPart $cid $groupid "nodal"
120- # }
121- # }
104+ proc DEM::write::writeSphereRadiusOnGroup { group } {
105+ set groupid [$group @n]
106+ set print_groupid [write::GetWriteGroupName $groupid ]
107+ write::WriteString " Begin NodalData RADIUS // GUI group identifier: $print_groupid "
108+ GiD_WriteCalculationFile connectivities [dict create $groupid " %.0s %10d 0 %10g\n " ]
109+ write::WriteString " End NodalData"
110+ write::WriteString " "
111+ }
122112
123113proc DEM::write::writeDEMConditionMeshes { } {
124114 set i 0
@@ -319,14 +309,15 @@ proc DEM::write::writeDEMConditionMeshes { } {
319309 }
320310}
321311
312+ # TODO: This code is extremely inefficient -> find a simple way to solve it
322313proc DEM::write::GetSpheresGroupsListInConditions { } {
323314 set conds_groups_dict [dict create ]
324315 set groups [list ]
325316
326317 # Get all the groups with spheres
327318 foreach group [GetSpheresGroups] {
328- foreach surface [GiD_EntitiesGroups get $group elements ] {
329- foreach involved_group [GiD_EntitiesGroups entity_groups elements $surface ] {
319+ foreach surface [GiD_EntitiesGroups get $group nodes ] {
320+ foreach involved_group [GiD_EntitiesGroups entity_groups nodes $surface ] {
330321 set involved_group_id [write::GetWriteGroupName $involved_group ]
331322 if {$involved_group_id ni $groups } {lappend groups $involved_group_id }
332323 }
0 commit comments