diff --git a/kratos.gid/apps/Fluid/write/write.tcl b/kratos.gid/apps/Fluid/write/write.tcl index a2cdbbce2..c4f7b2112 100644 --- a/kratos.gid/apps/Fluid/write/write.tcl +++ b/kratos.gid/apps/Fluid/write/write.tcl @@ -17,6 +17,7 @@ proc Fluid::write::Init { } { SetAttribute materials_un FLMaterials SetAttribute results_un FLResults SetAttribute drag_un FLDrags + SetAttribute wss_un FLWsss SetAttribute time_parameters_un FLTimeParameters SetAttribute writeCoordinatesByGroups 0 SetAttribute validApps [list "Fluid"] @@ -108,6 +109,7 @@ proc Fluid::write::writeProperties { } { proc Fluid::write::writeConditions { } { writeBoundaryConditions writeDrags + writeWsss } proc Fluid::write::getFluidModelPartFilename { } { @@ -158,6 +160,13 @@ proc Fluid::write::writeDrags { } { Model::ForgetNodalCondition Drag } +proc Fluid::write::writeWsss { } { + lappend ::Model::NodalConditions [::Model::NodalCondition new Wss] + write::writeNodalConditions [GetAttribute wss_un] + Model::ForgetNodalCondition Wss +} + + proc Fluid::write::writeMeshes { } { write::writePartSubModelPart write::writeNodalConditions [GetAttribute nodal_conditions_un] diff --git a/kratos.gid/apps/Fluid/write/writeByGiDId.tcl b/kratos.gid/apps/Fluid/write/writeByGiDId.tcl index 9b1bc9546..3712c5bed 100644 --- a/kratos.gid/apps/Fluid/write/writeByGiDId.tcl +++ b/kratos.gid/apps/Fluid/write/writeByGiDId.tcl @@ -14,6 +14,7 @@ proc Fluid::write::Init { } { SetAttribute conditions_un FLBC SetAttribute materials_un FLMaterials SetAttribute drag_un FLDrags + SetAttribute wss_un FLWsss SetAttribute writeCoordinatesByGroups 0 SetAttribute validApps [list "Fluid"] SetAttribute main_script_file "KratosFluid.py" @@ -88,6 +89,7 @@ proc Fluid::write::writeProperties { } { proc Fluid::write::writeConditions { } { writeBoundaryConditions writeDrags + writeWsss } proc Fluid::write::writeBoundaryConditions { } { @@ -104,6 +106,12 @@ proc Fluid::write::writeDrags { } { Model::ForgetNodalCondition Drag } +proc Fluid::write::writeWsss { } { + lappend ::Model::NodalConditions [::Model::NodalCondition new Wss] + write::writeNodalConditions [GetAttribute wss] + Model::ForgetNodalCondition Wss +} + proc Fluid::write::writeMeshes { } { write::writePartSubModelPart write::writeNodalConditions [GetAttribute nodal_conditions_un] diff --git a/kratos.gid/apps/Fluid/write/writeProjectParameters.tcl b/kratos.gid/apps/Fluid/write/writeProjectParameters.tcl index d938e5ac7..027ec1e79 100644 --- a/kratos.gid/apps/Fluid/write/writeProjectParameters.tcl +++ b/kratos.gid/apps/Fluid/write/writeProjectParameters.tcl @@ -35,10 +35,44 @@ proc Fluid::write::getAuxiliarProcessList {} { set process_list [list ] foreach process [getDragProcessList] {lappend process_list $process} + foreach process [getWssProcessList] {lappend process_list $process} return $process_list } +proc Fluid::write::getWssProcessList {} { + set root [customlib::GetBaseRoot] + + set process_list [list ] + set xp1 "[spdAux::getRoute [GetAttribute wss_un]]/group" + set groups [$root selectNodes $xp1] + foreach group $groups { + set groupName [$group @n] + set groupName [write::GetWriteGroupName $groupName] + set cid [[$group parent] @n] + set submodelpart [::write::getSubModelPartId $cid $groupName] + + set write_output [write::getStringBinaryFromValue [write::getValueByNode [$group selectNodes "./value\[@n='write_wss_output_file'\]"]]] + set print_screen [write::getStringBinaryFromValue [write::getValueByNode [$group selectNodes "./value\[@n='print_wss_to_screen'\]"]]] + set interval_name [write::getValueByNode [$group selectNodes "./value\[@n='Interval'\]"]] + + set pdict [dict create] + dict set pdict "python_module" "compute_wss_statistics_process" + dict set pdict "kratos_module" "KratosMultiphysics.FluidDynamicsBiomedicalApplication" + dict set pdict "process_name" "ComputeWssStatisticsProcess" + set params [dict create] + dict set params "model_part_name" [write::GetModelPartNameWithParent $submodelpart] + dict set params "calculate_wss" true + dict set params "calculate_osi" true + dict set pdict "Parameters" $params + + lappend process_list $pdict + } + + return $process_list +} + + proc Fluid::write::getDragProcessList {} { set root [customlib::GetBaseRoot] @@ -208,7 +242,7 @@ proc Fluid::write::getSolverSettingsDict { } { if {$currentStrategyId eq "Monolithic"} { set formulationSettingsDict [dict create] # Set element type - dict set formulationSettingsDict element_type "vms" + dict set formulationSettingsDict element_type "qsvms" # Set OSS and remove oss_switch from the original dictionary # It is important to check that there is oss_switch, otherwise the derived apps (e.g. embedded) might crash if {[dict exists $solverSettingsDict oss_switch]} { diff --git a/kratos.gid/apps/Fluid/xml/ConstitutiveLaws.xml b/kratos.gid/apps/Fluid/xml/ConstitutiveLaws.xml index e43c5960f..99c761e7e 100644 --- a/kratos.gid/apps/Fluid/xml/ConstitutiveLaws.xml +++ b/kratos.gid/apps/Fluid/xml/ConstitutiveLaws.xml @@ -20,18 +20,33 @@ - + + - --> + diff --git a/kratos.gid/apps/Fluid/xml/Elements.xml b/kratos.gid/apps/Fluid/xml/Elements.xml index cd1081b7b..54e09f796 100644 --- a/kratos.gid/apps/Fluid/xml/Elements.xml +++ b/kratos.gid/apps/Fluid/xml/Elements.xml @@ -38,11 +38,16 @@ + + + + + @@ -86,12 +91,17 @@ + + + + + - + \ No newline at end of file diff --git a/kratos.gid/apps/Fluid/xml/NodalConditions.xml b/kratos.gid/apps/Fluid/xml/NodalConditions.xml index 93ac31730..37ba30dd0 100644 --- a/kratos.gid/apps/Fluid/xml/NodalConditions.xml +++ b/kratos.gid/apps/Fluid/xml/NodalConditions.xml @@ -14,5 +14,12 @@ + + + + + + + diff --git a/kratos.gid/apps/Fluid/xml/WSS.spd b/kratos.gid/apps/Fluid/xml/WSS.spd new file mode 100644 index 000000000..658b9c519 --- /dev/null +++ b/kratos.gid/apps/Fluid/xml/WSS.spd @@ -0,0 +1,6 @@ + + + + + + diff --git a/kratos.gid/apps/Fluid/xml/XmlController.tcl b/kratos.gid/apps/Fluid/xml/XmlController.tcl index b0bcb4888..7f0b0096e 100644 --- a/kratos.gid/apps/Fluid/xml/XmlController.tcl +++ b/kratos.gid/apps/Fluid/xml/XmlController.tcl @@ -37,6 +37,13 @@ proc Fluid::xml::CustomTree { args } { gid_groups_conds::addF $xpath include [list n Drag active 1 path {apps/Fluid/xml/Drag.spd}] } + # WSS in output settings + set xpath "[spdAux::getRoute FLResults]/container\[@n='GiDOutput'\]" + if {[$root selectNodes "$xpath/condition\[@n='Wss'\]"] eq ""} { + gid_groups_conds::addF $xpath include [list n WSS active 1 path {apps/Fluid/xml/WSS.spd}] + } + + customlib::ProcessIncludes $::Kratos::kratos_private(Path) spdAux::parseRoutes