Skip to content

Commit 413aa02

Browse files
warn the user instead of changing the variables
1 parent f8e9edc commit 413aa02

2 files changed

Lines changed: 52 additions & 2 deletions

File tree

kratos.gid/kratos.tcl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -454,7 +454,7 @@ proc Kratos::Event_BeforeMeshGeneration {elementsize} {
454454
}
455455

456456
# Change the mesh settings depending on the element requirements
457-
catch {Kratos::SetMeshCriteria $elementsize}
457+
catch {Kratos::CheckMeshCriteria $elementsize}
458458

459459
# Maybe the current application needs to do some extra job
460460
set ret [apps::ExecuteOnCurrentApp BeforeMeshGeneration $elementsize]
@@ -473,7 +473,7 @@ proc Kratos::Event_AfterMeshGeneration {fail} {
473473
variable tmp_init_mesh_time
474474

475475
# Change the mesh settings depending on the element requirements. Reset previous settings
476-
catch {Kratos::ResetMeshCriteria $fail}
476+
# catch {Kratos::ResetMeshCriteria $fail}
477477

478478
# Maybe the current application needs to do some extra job
479479
apps::ExecuteOnCurrentApp AfterMeshGeneration $fail

kratos.gid/scripts/Utils.tcl

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,56 @@ proc Kratos::GetMeshBasicData { } {
291291
return $result
292292
}
293293

294+
proc Kratos::CheckMeshCriteria { elementsize } {
295+
296+
set force_mesh_order [dict create]
297+
set elements_used [spdAux::GetUsedElements]
298+
set forced_mesh_order -1
299+
foreach element_id $elements_used {
300+
set element [Model::getElement $element_id]
301+
if {[$element hasAttribute "MeshOrder"]} {
302+
set element_forces [$element getAttribute "MeshOrder"]
303+
if {$element_forces eq "Quadratic"} {
304+
set element_forces 1
305+
} else {
306+
set element_forces 0
307+
}
308+
dict set force_mesh_order $element_id $element_forces
309+
if {$forced_mesh_order eq -1} {
310+
set forced_mesh_order $element_forces
311+
} else {
312+
if {$forced_mesh_order ne $element_forces} {
313+
# W "The element $element_id requires a different mesh order"
314+
error "Incompatible mesh orders in elements"
315+
}
316+
}
317+
}
318+
}
319+
320+
if {$forced_mesh_order ne -1} {
321+
322+
set element [lindex [dict keys $force_mesh_order] 0]
323+
set previous_mesh_order [write::isquadratic]
324+
set current_mesh_type [Kratos::GetMeshOrderName $previous_mesh_order]
325+
set desired_mesh_type [Kratos::GetMeshOrderName $forced_mesh_order]
326+
if {$previous_mesh_order ne $forced_mesh_order} {
327+
W "The element $element requires a different mesh order: $desired_mesh_type"
328+
W "Currently the mesh order is $current_mesh_type. please change it in the menu Mesh > Quadratic type"
329+
return -1
330+
}
331+
}
332+
return 0
333+
}
334+
335+
proc Kratos::GetMeshOrderName {order} {
336+
switch $order {
337+
0 {return "Linear"}
338+
1 {return "Quadratic"}
339+
2 {return "Quadratic9"}
340+
default {return "Unknown"}
341+
}
342+
}
343+
294344
proc Kratos::SetMeshCriteria { elementsize } {
295345

296346
set force_mesh_order [dict create]

0 commit comments

Comments
 (0)