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