@@ -291,6 +291,61 @@ proc Kratos::GetMeshBasicData { } {
291291 return $result
292292}
293293
294+ proc Kratos::SetMeshCriteria { 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 previous_mesh_order [write::isquadratic]
323+ variable mesh_criteria_forced
324+ dict set mesh_criteria_forced " PreviousMeshOrder" [write::isquadratic]
325+ GiD_Set Model(QuadraticType) $forced_mesh_order
326+ set mesh_type " Quadratic"
327+ if {$forced_mesh_order eq 0} {
328+ set mesh_type " Linear"
329+ }
330+ ::GidUtils::SetWarnLine " Setting mesh mode: $mesh_type "
331+ }
332+ }
333+
334+
335+ proc Kratos::ResetMeshCriteria { fail } {
336+ variable mesh_criteria_forced
337+ if {[dict exists $mesh_criteria_forced " PreviousMeshOrder" ]} {
338+ set previous_mesh_order [dict get $mesh_criteria_forced " PreviousMeshOrder" ]
339+ GiD_Set Model(QuadraticType) $previous_mesh_order
340+ set mesh_type " Quadratic"
341+ if {$previous_mesh_order eq 0} {
342+ set mesh_type " Linear"
343+ }
344+ ::GidUtils::SetWarnLine " Restoring mesh mode: $mesh_type "
345+ dict unset mesh_criteria_forced " PreviousMeshOrder"
346+ }
347+ }
348+
294349proc ? {question true_val false_val} {
295350 return [expr $question ? $true_val : $false_val ]
296351}
0 commit comments