Skip to content
Draft
18 changes: 16 additions & 2 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 FLWss
SetAttribute time_parameters_un FLTimeParameters
SetAttribute writeCoordinatesByGroups 0
SetAttribute validApps [list "Fluid"]
Expand All @@ -25,6 +26,7 @@ proc Fluid::write::Init { } {
SetAttribute properties_location json
SetAttribute model_part_name "FluidModelPart"
SetAttribute output_model_part_name "fluid_computational_model_part"
SetAttribute skin_group_name "_HIDDEN__SKIN_"
variable last_condition_iterator
set last_condition_iterator 0
}
Expand Down Expand Up @@ -62,6 +64,7 @@ proc Fluid::write::writeModelPartEvent { } {

# Clean
unset Fluid::write::FluidConditionMap
GiD_Groups delete [GetAttribute skin_group_name]
}
proc Fluid::write::writeCustomFilesEvent { } {
# Write the fluid materials json file
Expand Down Expand Up @@ -108,6 +111,7 @@ proc Fluid::write::writeProperties { } {
proc Fluid::write::writeConditions { } {
writeBoundaryConditions
writeDrags
writeWss
}

proc Fluid::write::getFluidModelPartFilename { } {
Expand Down Expand Up @@ -135,6 +139,8 @@ proc Fluid::write::writeBoundaryConditions { } {
}
}
set skin_group_name "_HIDDEN__SKIN_"
set skin_group_name [GetAttribute skin_group_name]

if {[GiD_Groups exists $skin_group_name]} {GiD_Groups delete $skin_group_name}
spdAux::MergeGroups $skin_group_name $groups

Expand All @@ -148,8 +154,6 @@ proc Fluid::write::writeBoundaryConditions { } {
}
set last_condition_iterator [write::writeGroupConditionByUniqueId $skin_group_name $kname $nnodes 0 $Fluid::write::FluidConditionMap]

# Clean
GiD_Groups delete $skin_group_name
}

proc Fluid::write::writeDrags { } {
Expand All @@ -158,6 +162,12 @@ proc Fluid::write::writeDrags { } {
Model::ForgetNodalCondition Drag
}

proc Fluid::write::writeWss { } {
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 Expand Up @@ -191,6 +201,8 @@ proc Fluid::write::writeConditionsMesh { } {
}
}

# ::write::writeGroupSubModelPartByUniqueId "GENERIC" _HIDDEN__SKIN_ $Fluid::write::FluidConditionMap "Conditions"

foreach condid $grouped_conditions {
set xp "[spdAux::getRoute [GetAttribute conditions_un]]/condition\[@n='$condid'\]/group"
set groups_dict [dict create ]
Expand All @@ -200,6 +212,8 @@ proc Fluid::write::writeConditionsMesh { } {
}
write::writeConditionGroupedSubmodelPartsByUniqueId $condid $groups_dict $Fluid::write::FluidConditionMap
}


}

proc Fluid::write::InitConditionsMap { {map "" } } {
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 FLWss
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
writeWss
}

proc Fluid::write::writeBoundaryConditions { } {
Expand All @@ -104,6 +106,12 @@ proc Fluid::write::writeDrags { } {
Model::ForgetNodalCondition Drag
}

proc Fluid::write::writeWss { } {
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
55 changes: 55 additions & 0 deletions kratos.gid/apps/Fluid/write/writeProjectParameters.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,65 @@ 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]]"

# set write_output [write::getStringBinaryFromValue [write::getValueByNode [$root selectNodes "$xp1/value\[@n='write_wss_output_file'\]"]]]
# set print_screen [write::getStringBinaryFromValue [write::getValueByNode [$root selectNodes "$xp1/value\[@n='print_wss_to_screen'\]"]]]

# 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" GENERIC__HIDDEN__SKIN_
# dict set params "calculate_wss" $print_screen
# dict set params "calculate_osi" true
# dict set pdict "Parameters" $params

# lappend process_list $pdict


# 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 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 "write_wss_output_file" $write_output
dict set params "print_wss_to_screen" $print_screen
dict set pdict "Parameters" $params

lappend process_list $pdict
}
}

proc Fluid::write::getDragProcessList {} {
set root [customlib::GetBaseRoot]

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>
6 changes: 5 additions & 1 deletion kratos.gid/apps/Fluid/xml/Elements.xml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@
</inputs>
<outputs>
<parameter n="VORTICITY" pn="Vorticity" />
<parameter n="WSS" pn="WSS" />
</outputs>
</ElementItem>

Expand Down Expand Up @@ -91,12 +92,15 @@
<NodalConditions>
<NodalCondition n="VELOCITY"/>
<NodalCondition n="PRESSURE"/>
<NodalCondition n="WSS" />
</NodalConditions>

<inputs>
</inputs>

<outputs>
<parameter n="VORTICITY" pn="Vorticity" />
<parameter n="WSS" pn="WSS" />
</outputs>
</ElementItem>

Expand Down Expand Up @@ -208,4 +212,4 @@
</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>
5 changes: 5 additions & 0 deletions kratos.gid/apps/Fluid/xml/WSS.spd
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<container n="Wss" pn="Wss" un="FLWss" 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"/>
</container>
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