11namespace eval ::Fluid::write {
22 namespace path ::Fluid
33 Kratos::AddNamespace [namespace current]
4-
4+
55 # Namespace variables declaration
66 variable writeCoordinatesByGroups
77 variable writeAttributes
@@ -20,7 +20,7 @@ proc ::Fluid::write::Init { } {
2020 SetAttribute results_un [::Fluid::GetUniqueName results]
2121 SetAttribute drag_un [::Fluid::GetUniqueName drag]
2222 SetAttribute time_parameters_un [::Fluid::GetUniqueName time_parameters]
23-
23+
2424 SetAttribute writeCoordinatesByGroups [::Fluid::GetWriteProperty coordinates]
2525 SetAttribute validApps [list " Fluid" ]
2626 SetAttribute main_launch_file [::Fluid::GetAttribute main_launch_file]
@@ -29,7 +29,7 @@ proc ::Fluid::write::Init { } {
2929 SetAttribute model_part_name [::Fluid::GetWriteProperty model_part_name]
3030 SetAttribute output_model_part_name [::Fluid::GetWriteProperty output_model_part_name]
3131 SetAttribute write_mdpa_mode [::Fluid::GetWriteProperty write_mdpa_mode]
32-
32+
3333 variable last_condition_iterator
3434 set last_condition_iterator 0
3535}
@@ -39,48 +39,48 @@ proc ::Fluid::write::writeModelPartEvent { } {
3939 # Validation
4040 set err [Validate]
4141 if {$err ne " " } {error $err }
42-
42+
4343 InitConditionsMap
44-
44+
4545 # Init data
4646 write::initWriteConfiguration [GetAttributes]
47-
47+
4848 # Headers
4949 write::writeModelPartData
5050 writeProperties
51-
51+
5252 # Nodal coordinates (1: Print only Fluid nodes <inefficient> | 0: the whole mesh <efficient>)
5353 if {[GetAttribute writeCoordinatesByGroups] ne " all" } {write::writeNodalCoordinatesOnParts} {write::writeNodalCoordinates}
54-
54+
5555 if {[GetAttribute write_mdpa_mode] eq " geometries" } {
5656 # Write geometries
5757 # Get the list of groups in the spd
5858 set lista [::Fluid::xml::GetListOfSubModelParts]
59-
59+
6060 # Write the geometries
6161 set ret [::write::writeGeometryConnectivities $lista ]
6262
6363 # Write the submodelparts
6464 foreach group $lista {
65- write::writeGroupSubModelPartAsGeometry [$group @n]
65+ write::writeGroupSubModelPartAsGeometry [$group @n]
6666 }
6767 } else {
6868 # Element connectivities (Groups on FLParts)
6969 write::writeElementConnectivities
70-
70+
7171 # Nodal conditions and conditions
7272 writeConditions
73-
73+
7474 # Custom SubmodelParts
7575 variable last_condition_iterator
7676 write::writeBasicSubmodelPartsByUniqueId $Fluid::write::FluidConditionMap $last_condition_iterator
7777 # SubmodelParts
7878 writeMeshes
79-
79+
8080 # Write custom blocks at the end of the file
8181 writeCustomBlocks
8282 }
83-
83+
8484 # Clean
8585 unset ::Fluid::write::FluidConditionMap
8686}
@@ -93,30 +93,36 @@ proc ::Fluid::write::writeCustomFilesEvent { } {
9393
9494# Custom files
9595proc ::Fluid::write::WriteMaterialsFile { {write_const_law True} {include_modelpart_name True} } {
96+
9697 set model_part_name " "
9798 if {[write::isBooleanTrue $include_modelpart_name ]} {set model_part_name [GetAttribute model_part_name]}
98- write::writePropertiesJsonFile [GetAttribute parts_un ] [GetAttribute materials_file] $write_const_law $model_part_name
99+ write::writePropertiesJsonFileDone [GetAttribute materials_file ] [Fluid::write::GetMaterialsFile $write_const_law $include_modelpart_name ]
99100}
100101proc Fluid::write::GetMaterialsFile { {write_const_law True} {include_modelpart_name True} } {
101102 set model_part_name " "
102103 if {[write::isBooleanTrue $include_modelpart_name ]} {set model_part_name [GetAttribute model_part_name]}
103- return [write::getPropertiesJson [GetAttribute parts_un] $write_const_law $model_part_name ]
104+ set parts [write::getPropertiesJson [GetAttribute parts_un] $write_const_law $model_part_name ]
105+ set base [dict create model_part_name [GetAttribute model_part_name] properties_id 0 Material null]
106+ set old_list [dict get $parts properties]
107+ set new_list [concat [list $base ] $old_list ]
108+ set result [dict create properties $new_list ]
109+ return $result
104110}
105111
106112proc ::Fluid::write::Validate {} {
107113 set err " "
108114 set root [customlib::GetBaseRoot]
109-
115+
110116 # Check only 1 part in Parts
111117 set xp1 " [ spdAux::getRoute [GetAttribute parts_un] ]/group"
112118 if {[llength [$root selectNodes $xp1 ]] ne 1} {
113119 set err " You must set one part in Parts.\n "
114120 }
115-
121+
116122 # Check closed volume
117123 # if {[CheckClosedVolume] ne 1} {
118- # append err "Check boundary conditions."
119- # }
124+ # append err "Check boundary conditions."
125+ # }
120126 return $err
121127}
122128
@@ -140,7 +146,7 @@ proc ::Fluid::write::getFluidModelPartFilename { } {
140146proc ::Fluid::write::writeBoundaryConditions { } {
141147 variable FluidConditionMap
142148 variable last_condition_iterator
143-
149+
144150 # Prepare the groups to print
145151 set BCUN [GetAttribute conditions_un]
146152 set root [customlib::GetBaseRoot]
@@ -160,7 +166,7 @@ proc ::Fluid::write::writeBoundaryConditions { } {
160166 set skin_group_name " _HIDDEN__SKIN_"
161167 if {[GiD_Groups exists $skin_group_name ]} {GiD_Groups delete $skin_group_name }
162168 spdAux::MergeGroups $skin_group_name $groups
163-
169+
164170 # Write the conditions
165171 if {$::Model::SpatialDimension eq " 3D" } {
166172 set kname SurfaceCondition3D3N
@@ -170,7 +176,7 @@ proc ::Fluid::write::writeBoundaryConditions { } {
170176 set nnodes 2
171177 }
172178 set last_condition_iterator [write::writeGroupConditionByUniqueId $skin_group_name $kname $nnodes 0 $::Fluid::write::FluidConditionMap ]
173-
179+
174180 # Clean
175181 GiD_Groups delete $skin_group_name
176182}
@@ -189,7 +195,7 @@ proc ::Fluid::write::writeMeshes { } {
189195}
190196
191197proc ::Fluid::write::writeConditionsMesh { } {
192-
198+
193199 set root [customlib::GetBaseRoot]
194200 set xp1 " [ spdAux::getRoute [GetAttribute conditions_un] ]/condition/group"
195201 set grouped_conditions [list ]
@@ -213,7 +219,7 @@ proc ::Fluid::write::writeConditionsMesh { } {
213219 }
214220 }
215221 }
216-
222+
217223 foreach condid $grouped_conditions {
218224 set xp " [ spdAux::getRoute [GetAttribute conditions_un] ]/condition\[ @n='$condid '\] /group"
219225 set groups_dict [dict create ]
@@ -227,11 +233,11 @@ proc ::Fluid::write::writeConditionsMesh { } {
227233
228234# Overwrite this function to print something at the end of the mdpa
229235proc ::Fluid::write::writeCustomBlocks { } {
230-
236+
231237}
232238
233239proc ::Fluid::write::InitConditionsMap { {map " " } } {
234-
240+
235241 variable FluidConditionMap
236242 if {$map eq " " } {
237243 set FluidConditionMap [objarray new intarray [expr [GiD_Info Mesh MaxNumElements] +1] 0]
@@ -240,7 +246,7 @@ proc ::Fluid::write::InitConditionsMap { {map "" } } {
240246 }
241247}
242248proc ::Fluid::write::FreeConditionsMap { } {
243-
249+
244250 variable FluidConditionMap
245251 unset FluidConditionMap
246252}
0 commit comments