Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions kratos.gid/apps/Fluid/write/write.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -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"]
Expand Down Expand Up @@ -108,6 +109,7 @@ proc Fluid::write::writeProperties { } {
proc Fluid::write::writeConditions { } {
writeBoundaryConditions
writeDrags
writeWsss
}

proc Fluid::write::getFluidModelPartFilename { } {
Expand Down Expand Up @@ -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]
Expand Down
8 changes: 8 additions & 0 deletions kratos.gid/apps/Fluid/write/writeByGiDId.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -88,6 +89,7 @@ proc Fluid::write::writeProperties { } {
proc Fluid::write::writeConditions { } {
writeBoundaryConditions
writeDrags
writeWsss
}

proc Fluid::write::writeBoundaryConditions { } {
Expand All @@ -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]
Expand Down
36 changes: 35 additions & 1 deletion kratos.gid/apps/Fluid/write/writeProjectParameters.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -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]

Expand Down Expand Up @@ -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]} {
Expand Down
19 changes: 17 additions & 2 deletions kratos.gid/apps/Fluid/xml/ConstitutiveLaws.xml
Original file line number Diff line number Diff line change
Expand Up @@ -20,18 +20,33 @@
</CLaw>

<!-- TODO: Add back the Herschel–Bulkley constitutive law once the new elements, which will use the Kratos constitutive laws, migration are set as default monolithic element -->
<!-- <CLaw n="HerschelBulkley3DLaw" pn="Herschel-Bulkley" ProductionReady="ProductionReady" help="Herschel–Bulkley fluid -> tau = tau0 + k * gamma^n" App="Fluid" ImplementedInApplication="FluidDynamicsApplication" Dimension="3D">
<CLaw n="Bingham3DLaw" pn="Bingham" ProductionReady="ProductionReady" help="Bingham fluid -> tau = tau0 + k * gamma" App="Fluid" ImplementedInApplication="FluidDynamicsApplication" Dimension="3D">
<inputs>
<parameter n="DENSITY" pn="Density" unit_magnitude="Density" units="kg/m^3" v="1000"/>
<parameter n="DYNAMIC_VISCOSITY" pn="Kinematic viscosity" unit_magnitude="L^2/T" units="m^2/s" v="1e-3" help="Fluidized viscosity."/>
<parameter n="YIELD_STRESS" pn="Yield stress (τ)" v="0.01" units="Pa" unit_magnitude="P"/>
<parameter n="REGULARIZATION_COEFFICIENT" pn="REGULARIZATION_COEFFICIENT" v="0.01" />
</inputs>
<outputs>
<parameter n="TAU" pn="Equivalent deviatoric stress (τ)"/>
<parameter n="MU" pn="Dynamic viscosity"/>
<parameter n="EQ_STRAIN_RATE" pn="Equivalent strain rate"/>
</outputs>
</CLaw>
<!-- Add more constitutive Law-->
<CLaw n="HerschelBulkley3DLaw" pn="Herschel-Bulkley" ProductionReady="ProductionReady" help="Herschel–Bulkley fluid -> tau = tau0 + k * gamma^n" App="Fluid" ImplementedInApplication="FluidDynamicsApplication" Dimension="3D">
<inputs>
<parameter n="DENSITY" pn="Density" unit_magnitude="Density" units="kg/m^3" v="1000"/>
<parameter n="DYNAMIC_VISCOSITY" pn="Kinematic viscosity" unit_magnitude="L^2/T" units="m^2/s" v="1e-3" help="Fluidized viscosity."/>
<parameter n="YIELD_STRESS" pn="Yield stress (τ)" v="0" units="Pa" unit_magnitude="P"/>
<parameter n="POWER_LAW_K" pn="Consistency index (k)" v="1"/>
<parameter n="POWER_LAW_N" pn="Flow index (n)" v="1" />
<parameter n="REGULARIZATION_COEFFICIENT" pn="REGULARIZATION_COEFFICIENT" v="0.01" />
</inputs>
<outputs>
<parameter n="TAU" pn="Equivalent deviatoric stress (τ)"/>
<parameter n="MU" pn="Dynamic viscosity"/>
<parameter n="EQ_STRAIN_RATE" pn="Equivalent strain rate"/>
</outputs>
</CLaw> -->
</CLaw>
</ConstitutiveLaws>
12 changes: 11 additions & 1 deletion kratos.gid/apps/Fluid/xml/Elements.xml
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,16 @@
<NodalConditions>
<NodalCondition n="VELOCITY"/>
<NodalCondition n="PRESSURE"/>
<NodalCondition n="WSS" />
</NodalConditions>
<inputs>
</inputs>
<outputs>
<parameter n="VORTICITY" pn="Vorticity" />
<parameter n="WSS" pn="WSS" />
<parameter n="TWSS" pn="TWSS" />
<parameter n="OSI" pn="OSI" />
<parameter n="ECAP" pn="ECAP" />
</outputs>
</ElementItem>
<ElementItem n="Monolithic2D" pn="Monolithic 2D" ImplementedInFile="fractional_step.cpp" ImplementedInApplication="FluidDynamicsApplication" MinimumKratosVersion="9000" ProductionReady="ProductionReady" WorkingSpaceDimension="2D" LocalSpaceDimension="2" RequiresLocalAxes="False" LargeDeformation="False" MainDofsVariables="VELOCITY" ElementType="Fluid" help="This element implements a Monolithic Element">
Expand Down Expand Up @@ -86,12 +91,17 @@
<NodalConditions>
<NodalCondition n="VELOCITY"/>
<NodalCondition n="PRESSURE"/>
<NodalCondition n="WSS" />
</NodalConditions>
<inputs>
</inputs>
<outputs>
<parameter n="VORTICITY" pn="Vorticity" />
<parameter n="WSS" pn="WSS" />
<parameter n="TWSS" pn="TWSS" />
<parameter n="OSI" pn="OSI" />
<parameter n="ECAP" pn="ECAP" />
</outputs>
</ElementItem>

</ElementList>
</ElementList>
7 changes: 7 additions & 0 deletions kratos.gid/apps/Fluid/xml/NodalConditions.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,12 @@
<value n="constrained" v="0" state="hidden" />
</DefaultValues>
</NodalConditionItem>

<NodalConditionItem n="WSS" pn="WSS" ProcessName="AssignScalarVariableProcess" VariableName="WSS" Interval="False" unit_magnitude="P" units="Pa" App="Fluid" ImplementedInApplication="FluidDynamicsApplication">

<DefaultValues>
<value n="constrained" v="0" state="hidden" />
</DefaultValues>
</NodalConditionItem>

</NodalConditionList>
6 changes: 6 additions & 0 deletions kratos.gid/apps/Fluid/xml/WSS.spd
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<condition n="Wss" pn="Wss" un="FLWsss" ov="[CheckGeometry 2]" icon="drag">
<value n="write_wss_output_file" pn="Write wss output file" v="1" values="0,1"/>
<value n="print_wss_to_screen" pn="Print wss to screen" v="0" values="0,1"/>
<value n="Interval" pn="Time interval" v="Total" values="[getIntervals]" help=""/>
</condition>
7 changes: 7 additions & 0 deletions kratos.gid/apps/Fluid/xml/XmlController.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down