@@ -33,7 +33,12 @@ proc ::ConjugateHeatTransfer::write::getParametersDict { } {
3333}
3434
3535proc ::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
7681proc ::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}
0 commit comments