Skip to content

Commit 71255b2

Browse files
Merge branch 'write-geoms-migration' into fsi-geoms-migration
2 parents 84acb28 + d6c6e95 commit 71255b2

10 files changed

Lines changed: 133 additions & 36 deletions

File tree

kratos.gid/apps/Buoyancy/write/write.tcl

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,16 +50,22 @@ proc ::Buoyancy::write::WriteMaterialsFile {{write_const_law True} {include_mode
5050
Fluid::write::WriteMaterialsFile $write_const_law $include_modelpart_name
5151

5252
# Write Buoyancy materials file
53-
set model_part_name ""
54-
if {[write::isBooleanTrue $include_modelpart_name]} {set model_part_name [GetModelPartName]}
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]}
5560

5661
set mats [write::getPropertiesJson [GetAttribute parts_un] $write_const_law $model_part_name]
62+
5763
# keep only first entry
5864
set clear_mat [dict get $mats properties]
5965
set clear_mat [lindex $clear_mat 0]
6066
dict set clear_mat model_part_name ThermalModelPart
6167
set clear_mat [dict create properties [list $clear_mat]]
62-
write::writePropertiesJsonFileDone "BuoyancyMaterials.json" $clear_mat
68+
return $clear_mat
6369
}
6470

6571
proc ::Buoyancy::write::writeSubModelParts { } {

kratos.gid/apps/Buoyancy/write/writeProjectParameters.tcl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Project Parameters
2-
proc ::Buoyancy::write::getParametersDict { } {
2+
proc ::Buoyancy::write::getParametersDict { {stage ""} } {
33
set projectParametersDict [dict create]
44

55
# Analysis stage field
@@ -21,7 +21,7 @@ proc ::Buoyancy::write::getParametersDict { } {
2121
dict set projectParametersDict processes [Buoyancy::write::GetProcesses_Dict]
2222

2323
# modelers
24-
set projectParametersDict [::write::GetModelersDict $projectParametersDict]
24+
set projectParametersDict [::write::GetModelersDict $projectParametersDict $stage]
2525

2626
return $projectParametersDict
2727
}

kratos.gid/apps/Buoyancy/xml/Main.spd

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<container n="Buoyancy" pn="Buoyancy" icon="app" prefix="Buoyancy_" tree_state="open" open_window="0">
44

5-
<container n="Fluid" pn="Fluid" icon="units" prefix="FL" tree_state="open" open_window="0">
5+
<container n="Fluid" pn="Fluid" icon="units" prefix="FL" un="Buoyancy_FL" tree_state="open" open_window="0">
66
<include n="AnalysisType" active="1" path="apps/Fluid/xml/AnalysisType.spd"/>
77
<include n="Parts" active="1" path="apps/Fluid/xml/Parts.spd"/>
88
<include n="InitialConditions" active="1" path="apps/Fluid/xml/InitialConditions.spd"/>
@@ -11,7 +11,7 @@
1111
<include n="Materials" active="1" path="apps/Fluid/xml/Materials.spd"/>
1212
</container>
1313

14-
<container n="ConvectionDiffusion" pn="Thermal" icon="app" prefix="CNVDFF" tree_state="open" open_window="0">
14+
<container n="ConvectionDiffusion" pn="Thermal" icon="app" prefix="CNVDFF" un="Buoyancy_CNVDFF" tree_state="open" open_window="0">
1515
<include n="StageInfo" active="1" path="apps/ConvectionDiffusion/xml/StageInfo.spd"/>
1616
<!-- <include n="Parts" active="1" state="hidden" path="apps/ConvectionDiffusion/xml/Parts.spd"/> -->
1717
<include n="InitialConditions" active="1" path="apps/ConvectionDiffusion/xml/InitialConditions.spd"/>

kratos.gid/apps/ConjugateHeatTransfer/write/write.tcl

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,13 +88,31 @@ proc ::ConjugateHeatTransfer::write::PrepareBuoyancy { } {
8888
}
8989

9090
proc ::ConjugateHeatTransfer::write::WriteMaterialsFile { {write_const_law True} {include_modelpart_name True} } {
91-
Buoyancy::write::WriteMaterialsFile $write_const_law $include_modelpart_name
91+
ConjugateHeatTransfer::write::WriteBuoyancyMaterialsFile $write_const_law $include_modelpart_name
9292
ConvectionDiffusion::write::WriteMaterialsFile False $include_modelpart_name
9393
}
9494

95+
proc ::ConjugateHeatTransfer::write::WriteBuoyancyMaterialsFile { {write_const_law True} {include_modelpart_name True} } {
96+
## Write fluid material file
97+
set model_part_name ""
98+
if {[write::isBooleanTrue $include_modelpart_name]} {set model_part_name [GetAttribute model_part_name]}
99+
set fluid_materials [Fluid::write::GetMaterialsFile $write_const_law $include_modelpart_name]
100+
write::writePropertiesJsonFileDone [::Fluid::write::GetAttribute materials_file] $fluid_materials
101+
102+
# Write Buoyancy materials file
103+
set buoyancy_material [::Buoyancy::write::GetBuoyancyMaterialsFile $write_const_law $include_modelpart_name FluidThermalModelPart]
104+
set clear_mat [dict get $buoyancy_material properties]
105+
set clear_mat [lindex $clear_mat 0]
106+
dict set clear_mat model_part_name FluidThermalModelPart
107+
set clear_mat [dict create properties [list $clear_mat]]
108+
write::writePropertiesJsonFileDone "BuoyancyMaterials.json" $clear_mat
109+
}
95110

96111
proc ::ConjugateHeatTransfer::write::GetAttribute {att} {
97112
variable writeAttributes
113+
if {![dict exists $writeAttributes $att]} {
114+
return ""
115+
}
98116
return [dict get $writeAttributes $att]
99117
}
100118

kratos.gid/apps/ConjugateHeatTransfer/write/writeProjectParameters.tcl

Lines changed: 57 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,12 @@ proc ::ConjugateHeatTransfer::write::getParametersDict { } {
3333
}
3434

3535
proc ::ConjugateHeatTransfer::write::writeParametersEvent { } {
36-
set projectParametersDict [getParametersDict]
36+
try {
37+
set projectParametersDict [getParametersDict]
38+
} on error {errorMsg} {
39+
apps::setActiveAppSoft ConjugateHeatTransfer
40+
error $errorMsg
41+
}
3742
write::SetParallelismConfiguration
3843
write::WriteJSON $projectParametersDict
3944
}
@@ -51,15 +56,15 @@ proc ::ConjugateHeatTransfer::write::GetSolverSettingsDict {} {
5156
dict unset ConjugateHeatTransfer::write::fluid_domain_solver_settings model_import_settings
5257
# Buoyancy Thermic > model_part_name
5358
dict set ConjugateHeatTransfer::write::fluid_domain_solver_settings solver_settings thermal_solver_settings model_part_name "FluidThermalModelPart"
54-
59+
5560
dict set solver_settings_dict fluid_domain_solver_settings [dict get $ConjugateHeatTransfer::write::fluid_domain_solver_settings solver_settings]
5661
dict set solver_settings_dict solid_domain_solver_settings thermal_solver_settings [dict get $ConjugateHeatTransfer::write::solid_domain_solver_settings solver_settings]
5762

5863
# Coupling settings
5964
set solid_interfaces_list_raw [write::GetSubModelPartFromCondition CNVDFFBC SolidThermalInterface$::Model::SpatialDimension]
6065
set fluid_interfaces_list_raw [write::GetSubModelPartFromCondition Buoyancy_CNVDFFBC FluidThermalInterface$::Model::SpatialDimension]
6166
foreach solid_interface $solid_interfaces_list_raw {lappend solid_interfaces_list [join [list ThermalModelPart $solid_interface] "."]}
62-
foreach fluid_interface $fluid_interfaces_list_raw {lappend fluid_interfaces_list [join [list FluidModelPart $fluid_interface] "."]}
67+
foreach fluid_interface $fluid_interfaces_list_raw {lappend fluid_interfaces_list [join [list FluidThermalModelPart $fluid_interface] "."]}
6368

6469
set coupling_settings [dict create]
6570
dict set coupling_settings max_iteration [write::getValue CHTGeneralParameters max_iteration]
@@ -69,15 +74,16 @@ proc ::ConjugateHeatTransfer::write::GetSolverSettingsDict {} {
6974
dict set solver_settings_dict coupling_settings $coupling_settings
7075

7176
dict unset solver_settings_dict fluid_domain_solver_settings model_import_settings
72-
77+
7378
return $solver_settings_dict
7479
}
7580

7681
proc ::ConjugateHeatTransfer::write::GetProcessList { } {
7782
set processes [dict create]
7883

7984
# Get and add fluid processes
80-
dict set processes fluid_constraints_process_list [dict get $ConjugateHeatTransfer::write::fluid_domain_solver_settings processes constraints_process_list]
85+
set fluid_constraints_process_list [dict get $ConjugateHeatTransfer::write::fluid_domain_solver_settings processes constraints_process_list]
86+
dict set processes fluid_constraints_process_list [::ConjugateHeatTransfer::write::TransformFluidProcess $fluid_constraints_process_list]
8187

8288
# Get and add solid processes
8389
dict set processes solid_initial_conditions_process_list [dict get $ConjugateHeatTransfer::write::solid_domain_solver_settings processes initial_conditions_process_list]
@@ -115,7 +121,7 @@ proc ::ConjugateHeatTransfer::write::GetOutputProcessesList { } {
115121

116122
set need_vtk [write::getValue EnableVtkOutput]
117123
if {[write::isBooleanTrue $need_vtk]} {
118-
# Set a different output_name for the fluid and solid domains
124+
# Set a different output_name for the fluid and solid domains
119125
set fluid_output [lindex [dict get $ConjugateHeatTransfer::write::fluid_domain_solver_settings output_processes vtk_output] 0]
120126
set solid_output [lindex [dict get $ConjugateHeatTransfer::write::solid_domain_solver_settings output_processes vtk_output] 0]
121127

@@ -145,7 +151,8 @@ proc ::ConjugateHeatTransfer::write::InitExternalProjectParameters { } {
145151
::ConvectionDiffusion::write::SetAttribute conditions_un Buoyancy_CNVDFFBC
146152
::ConvectionDiffusion::write::SetAttribute thermal_bc_un Buoyancy_CNVDFFBC
147153
::ConvectionDiffusion::write::SetAttribute model_part_name FluidThermalModelPart
148-
set ConjugateHeatTransfer::write::fluid_domain_solver_settings [Buoyancy::write::getParametersDict]
154+
set buoyancy_stage [[customlib::GetBaseRoot] selectNodes [spdAux::getRoute CHTBuoyancy]]
155+
set ConjugateHeatTransfer::write::fluid_domain_solver_settings [Buoyancy::write::getParametersDict $buoyancy_stage]
149156

150157
# Heating section
151158
apps::setActiveAppSoft ConvectionDiffusion
@@ -154,7 +161,8 @@ proc ::ConjugateHeatTransfer::write::InitExternalProjectParameters { } {
154161
::ConvectionDiffusion::write::SetAttribute model_part_name ThermalModelPart
155162
::ConvectionDiffusion::write::SetAttribute thermal_bc_un CNVDFFBC
156163
write::initWriteConfiguration [ConvectionDiffusion::write::GetAttributes]
157-
set ConjugateHeatTransfer::write::solid_domain_solver_settings [ConvectionDiffusion::write::getParametersDict]
164+
set heating_stage [[customlib::GetBaseRoot] selectNodes [spdAux::getRoute CHTCNVDFF]]
165+
set ConjugateHeatTransfer::write::solid_domain_solver_settings [ConvectionDiffusion::write::getParametersDict $heating_stage]
158166

159167
apps::setActiveAppSoft ConjugateHeatTransfer
160168
}
@@ -163,12 +171,13 @@ proc ::ConjugateHeatTransfer::write::PlaceMDPAImports { projectParametersDict }
163171
variable mdpa_files
164172

165173
set new_modelers [list]
166-
174+
167175
set modelers [dict get $projectParametersDict modelers]
168176
# remove the modelers that import the mdpa files (name = Modelers.KratosMultiphysics.ImportMDPAModeler)
169177
set modelers [lsearch -all -inline -not -glob $modelers *ImportMDPAModeler*]
170178
lappend new_modelers [dict create name "Modelers.KratosMultiphysics.ImportMDPAModeler" parameters [dict create input_filename [lindex $mdpa_files 0] model_part_name "FluidModelPart"]]
171179
lappend new_modelers [dict create name "Modelers.KratosMultiphysics.ImportMDPAModeler" parameters [dict create input_filename [lindex $mdpa_files 1] model_part_name "ThermalModelPart"]]
180+
lappend new_modelers [dict create name "Modelers.KratosMultiphysics.ConnectivityPreserveModeler" parameters [dict create origin_model_part_name "FluidModelPart" destination_model_part_name "FluidThermalModelPart"]]
172181
set modelers [concat $new_modelers $modelers]
173182
dict set projectParametersDict modelers $modelers
174183
return $projectParametersDict
@@ -179,6 +188,11 @@ proc ::ConjugateHeatTransfer::write::ModelersPrefix { projectParametersDict } {
179188
set new_modelers [list]
180189
set thermal_modelparts [dict get $projectParametersDict solver_settings solid_domain_solver_settings thermal_solver_settings processes_sub_model_part_list]
181190
# W "Thermal modelparts: $thermal_modelparts"
191+
set fluid_modelparts [dict get $projectParametersDict solver_settings fluid_domain_solver_settings fluid_solver_settings skin_parts]
192+
lappend fluid_modelparts [dict get $projectParametersDict solver_settings fluid_domain_solver_settings fluid_solver_settings no_skin_parts]
193+
# W "Fluid modelparts: $fluid_modelparts"
194+
set fluid_thermal_modelparts [dict get $projectParametersDict solver_settings fluid_domain_solver_settings thermal_solver_settings processes_sub_model_part_list]
195+
# W "Fluid thermal modelparts: $fluid_thermal_modelparts"
182196
foreach modeler $modelers {
183197
set name [dict get $modeler name]
184198
if {[string match "Modelers.KratosMultiphysics.CreateEntitiesFromGeometriesModeler" $name]} {
@@ -191,20 +205,29 @@ proc ::ConjugateHeatTransfer::write::ModelersPrefix { projectParametersDict } {
191205

192206
if {$raw_name in $thermal_modelparts} {
193207
set new_element $element
208+
lappend new_element_list $new_element
194209
} else {
195210
set new_element [dict create model_part_name "FluidModelPart.$raw_name" element_name [dict get $element element_name]]
211+
set new_element2 [dict create model_part_name "FluidThermalModelPart.$raw_name" element_name [dict get $element element_name]]
212+
lappend new_element_list $new_element
213+
lappend new_element_list $new_element2
196214
}
197-
lappend new_element_list $new_element
198215
dict set new_parameters elements_list $new_element_list
199216
}
200217
set new_conditions_list [list ]
218+
set cond_submodelpart [list ]
201219
foreach condition [dict get $modeler parameters conditions_list] {
202220
set model_part_name [dict get $condition model_part_name]
203221
set raw_name [lindex [split $model_part_name "."] 1]
204222
if {$raw_name in $thermal_modelparts} {
205-
set new_condition $condition
223+
set new_condition [dict create model_part_name "ThermalModelPart.$raw_name" condition_name [dict get $condition condition_name]]
206224
} else {
207-
set new_condition [dict create model_part_name "FluidModelPart.$raw_name" condition_name [dict get $condition condition_name]]
225+
if {$raw_name in $fluid_modelparts && $raw_name ni $cond_submodelpart} {
226+
set new_condition [dict create model_part_name "FluidModelPart.$raw_name" condition_name [dict get $condition condition_name]]
227+
lappend cond_submodelpart $raw_name
228+
} elseif {$raw_name in $fluid_thermal_modelparts} {
229+
set new_condition [dict create model_part_name "FluidThermalModelPart.$raw_name" condition_name [dict get $condition condition_name]]
230+
}
208231
}
209232
lappend new_conditions_list $new_condition
210233
dict set new_parameters conditions_list $new_conditions_list
@@ -216,4 +239,26 @@ proc ::ConjugateHeatTransfer::write::ModelersPrefix { projectParametersDict } {
216239
}
217240
dict set projectParametersDict modelers $new_modelers
218241
return $projectParametersDict
242+
}
243+
244+
proc ::ConjugateHeatTransfer::write::TransformFluidProcess {fluid_constraints_process_list} {
245+
# Find any process with python_module = apply_thermal_face_process and change the Parameters.model_part_name to FluidThermalModelPart
246+
set new_fluid_constraints_process_list [list]
247+
foreach process $fluid_constraints_process_list {
248+
set new_process $process
249+
# temporal trick to set the model_part base
250+
# TODO: set a list of thermal model parts
251+
if {[dict get $process python_module] == "apply_thermal_face_process" ||
252+
253+
([dict exists $process Parameters variable_name] &&
254+
[dict get $process Parameters variable_name] == "TEMPERATURE") } {
255+
set old_name [dict get $process Parameters model_part_name]
256+
# old name is in the form FluidModelPart.XXX
257+
# new name is in the form FluidThermalModelPart.XXX
258+
set new_name "FluidThermalModelPart.[lindex [split $old_name "."] 1]"
259+
dict set new_process Parameters model_part_name $new_name
260+
}
261+
lappend new_fluid_constraints_process_list $new_process
262+
}
263+
return $new_fluid_constraints_process_list
219264
}

kratos.gid/apps/ConjugateHeatTransfer/xml/Conditions.xml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
WorkingSpaceDimension="2D" LocalSpaceDimension="1" SkinConditions="True" App="Fluid"
88
ElementType="Line" ProcessName="ApplyThermalFaceProcess" help="This process sets the interface thermal behavior">
99
<TopologyFeatures>
10-
<item GeometryType="Line" nodes="2" KratosName="LineCondition2D2N"/>
10+
<item GeometryType="Line" nodes="2" KratosName="ThermalFace2D2N"/>
1111
</TopologyFeatures>
1212
<DefaultValues>
1313
<value n="ambient_temperature" v="0.0" state="hidden" />
@@ -24,8 +24,8 @@
2424
WorkingSpaceDimension="3D" LocalSpaceDimension="1" SkinConditions="True" App="Fluid"
2525
ElementType="Surface" ProcessName="ApplyThermalFaceProcess" help="This process sets the interface thermal behavior">
2626
<TopologyFeatures>
27-
<item GeometryType="Triangle" nodes="3" KratosName="SurfaceCondition3D3N"/>
28-
<item GeometryType="Quadrilateral" nodes="4" KratosName="SurfaceCondition3D4N"/>
27+
<item GeometryType="Triangle" nodes="3" KratosName="ThermalFace3D3N"/>
28+
<item GeometryType="Quadrilateral" nodes="4" KratosName="ThermalFace3D4N"/>
2929
</TopologyFeatures>
3030
<DefaultValues>
3131
<value n="ambient_temperature" v="0.0" state="hidden" />
@@ -43,7 +43,7 @@
4343
WorkingSpaceDimension="2D" LocalSpaceDimension="1" SkinConditions="True" App="ConvectionDiffusion"
4444
ElementType="Line" ProcessName="ApplyThermalFaceProcess" help="This process sets the interface thermal behavior">
4545
<TopologyFeatures>
46-
<item GeometryType="Line" nodes="2" KratosName="LineCondition2D2N"/>
46+
<item GeometryType="Line" nodes="2" KratosName="ThermalFace2D2N"/>
4747
</TopologyFeatures>
4848
<DefaultValues>
4949
<value n="ambient_temperature" v="0.0" state="hidden" />
@@ -57,8 +57,8 @@
5757
WorkingSpaceDimension="3D" LocalSpaceDimension="1" SkinConditions="True" App="ConvectionDiffusion"
5858
ElementType="Surface" ProcessName="ApplyThermalFaceProcess" help="This process sets the interface thermal behavior">
5959
<TopologyFeatures>
60-
<item GeometryType="Triangle" nodes="3" KratosName="SurfaceCondition3D3N"/>
61-
<item GeometryType="Quadrilateral" nodes="4" KratosName="SurfaceCondition3D4N"/>
60+
<item GeometryType="Triangle" nodes="3" KratosName="ThermalFace3D3N"/>
61+
<item GeometryType="Quadrilateral" nodes="4" KratosName="ThermalFace3D4N"/>
6262
</TopologyFeatures>
6363
<DefaultValues>
6464
<value n="ambient_temperature" v="0.0" state="hidden" />

kratos.gid/apps/ConjugateHeatTransfer/xml/Main.spd

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<container n="ConjugateHeatTransfer" pn="Conjugate heat transfer" icon="heat" prefix="CHT" tree_state="open" open_window="0">
44

5-
<container n="Buoyancy" pn="Buoyancy" icon="app" prefix="Buoyancy_" tree_state="open" open_window="0">
5+
<container n="Buoyancy" pn="Buoyancy" icon="app" prefix="Buoyancy_" un="CHTBuoyancy" tree_state="open" open_window="0">
66

77
<container n="Fluid" pn="Fluid" icon="units" un="Buoyancy_FL" prefix="FL" tree_state="open" open_window="0">
88
<include n="AnalysisType" active="1" path="apps/Fluid/xml/AnalysisType.spd"/>
@@ -13,7 +13,7 @@
1313
<include n="Materials" active="1" path="apps/Fluid/xml/Materials.spd"/>
1414
</container>
1515

16-
<container n="ConvectionDiffusion" pn="Fluid thermal" icon="heat" prefix="Buoyancy_CNVDFF" un="Buoyancy_CNVDFF" tree_state="open" open_window="0">
16+
<container n="ConvectionDiffusion" pn="Fluid thermal" icon="heat" prefix="Buoyancy_CNVDFF" un="Buoyancy_CNVDFF" modelpart_name="FluidThermalModelPart" tree_state="open" open_window="0">
1717
<include n="StageInfo" active="1" path="apps/ConvectionDiffusion/xml/StageInfo.spd"/>
1818
<include n="Parts" active="1" state="hidden" path="apps/ConvectionDiffusion/xml/Parts.spd"/>
1919
<include n="InitialConditions" un="Buoyancy_CNVDFFNodalConditions" active="1" path="apps/ConvectionDiffusion/xml/InitialConditions.spd"/>

kratos.gid/apps/ConvectionDiffusion/write/writeProjectParameters.tcl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Project Parameters
2-
proc ::ConvectionDiffusion::write::getParametersDict { } {
2+
proc ::ConvectionDiffusion::write::getParametersDict { {stage ""} } {
33

44
set projectParametersDict [dict create]
55

@@ -32,7 +32,7 @@ proc ::ConvectionDiffusion::write::getParametersDict { } {
3232
dict set projectParametersDict restart_options $restartDict
3333

3434
# Get the modelers
35-
set projectParametersDict [write::GetModelersDict $projectParametersDict]
35+
set projectParametersDict [write::GetModelersDict $projectParametersDict $stage]
3636

3737
return $projectParametersDict
3838
}

0 commit comments

Comments
 (0)