@@ -10,6 +10,7 @@ proc ::Buoyancy::write::Init { } {
1010 # Add thermal unique names to Fluid write variables
1111 Fluid::write::SetAttribute thermal_bc_un [ConvectionDiffusion::write::GetAttribute conditions_un]
1212 Fluid::write::SetAttribute thermal_initial_cnd_un [ConvectionDiffusion::write::GetAttribute nodal_conditions_un]
13+
1314}
1415
1516# Events
@@ -18,39 +19,17 @@ proc ::Buoyancy::write::writeModelPartEvent { } {
1819 set err [Validate]
1920 if {$err ne " " } {error $err }
2021
21- # Start Fluid write variables
22- Fluid::write::Init
23- # Fluid has implemented the geometry mode, but we do not use it yet in inherited apps
24- ::Fluid::write::SetAttribute write_mdpa_mode [::Buoyancy::GetWriteProperty write_mdpa_mode]
25- # Start Fluid write conditions map from scratch
26- Fluid::write::InitConditionsMap
27-
28- # Init data
29- write::initWriteConfiguration [Fluid::write::GetAttributes]
30-
31- # Headers
32- write::writeModelPartData
33- Fluid::write::writeProperties
34-
35- # Nodal coordinates (1: Print only Fluid nodes <inefficient> | 0: the whole mesh <efficient>)
36- if {[Fluid::write::GetAttribute writeCoordinatesByGroups] ne " all" } {write::writeNodalCoordinatesOnParts} {write::writeNodalCoordinates}
22+ ::Fluid::write::Init
3723
38- # Element connectivities (Groups on FLParts)
39- write::writeElementConnectivities
24+ set fluid_base_xpath [spdAux::getRoute Buoyancy_FL]
25+ set fluid_base [[customlib::GetBaseRoot] selectNodes $fluid_base_xpath ]
26+ set ::Fluid::write::base_root $fluid_base
27+
28+ ::Fluid::write::writeModelPartEvent
4029
41- # Nodal conditions and conditions
42- Fluid:: write::writeConditions
30+ # Write Boussinesq submodel part as nodals
31+ ::Buoyancy:: write::writeBoussinesqSubModelPart
4332
44- # SubmodelParts
45- Fluid::write::writeMeshes
46- write::writeNodalConditions [GetAttribute thermal_initial_cnd_un]
47- Buoyancy::write::writeSubModelParts
48-
49- # Boussinesq nodes
50- Buoyancy::write::writeBoussinesqSubModelPart
51-
52- # Custom SubmodelParts
53- # write::writeBasicSubmodelParts [Fluid::write::getLastConditionId]
5433}
5534
5635proc ::Buoyancy::write::writeCustomFilesEvent { } {
@@ -71,9 +50,22 @@ proc ::Buoyancy::write::WriteMaterialsFile {{write_const_law True} {include_mode
7150 Fluid::write::WriteMaterialsFile $write_const_law $include_modelpart_name
7251
7352 # Write Buoyancy materials file
74- set model_part_name " "
75- if {[write::isBooleanTrue $include_modelpart_name ]} {set model_part_name [GetModelPartName]}
76- write::writePropertiesJsonFile [GetAttribute parts_un] " BuoyancyMaterials.json" $write_const_law $model_part_name
53+ set clear_mat [::Buoyancy::write::GetBuoyancyMaterialsFile $write_const_law $include_modelpart_name ]
54+ write::writePropertiesJsonFileDone " BuoyancyMaterials.json" $clear_mat
55+ }
56+
57+ proc ::Buoyancy::write::GetBuoyancyMaterialsFile { {write_const_law True} {include_modelpart_name True} {model_part_name " " } } {
58+
59+ if {[write::isBooleanTrue $include_modelpart_name ] && $model_part_name eq " " } {set model_part_name [GetModelPartName]}
60+
61+ set mats [write::getPropertiesJson [GetAttribute parts_un] $write_const_law $model_part_name ]
62+
63+ # keep only first entry
64+ set clear_mat [dict get $mats properties]
65+ set clear_mat [lindex $clear_mat 0]
66+ dict set clear_mat model_part_name ThermalModelPart
67+ set clear_mat [dict create properties [list $clear_mat ]]
68+ return $clear_mat
7769}
7870
7971proc ::Buoyancy::write::writeSubModelParts { } {
@@ -100,7 +92,7 @@ proc ::Buoyancy::write::writeBoussinesqSubModelPart { } {
10092 set groupid " _Boussinesq_hidden_"
10193 GiD_Groups create $groupid
10294 GiD_EntitiesGroups assign $groupid nodes [GiD_Mesh list node]
103- ::write::writeGroupSubModelPart Boussinesq $groupid " Nodes "
95+ ::write::writeGroupSubModelPartAsGeometry $groupid
10496 GiD_Groups delete $groupid
10597}
10698
0 commit comments