From f583135972dfd904ac3738349b94b638fc765b1a Mon Sep 17 00:00:00 2001 From: rubenzorrilla Date: Mon, 3 Jun 2024 21:27:55 +0200 Subject: [PATCH 1/3] New lid-driven cavity example --- kratos.gid/apps/Fluid/app.json | 2 +- .../Fluid/examples/CylinderInFlowP2P1.tcl | 205 ------------------ .../apps/Fluid/examples/LidDrivenCavity.tcl | 203 +++++++++++++++++ kratos.gid/apps/Fluid/examples/examples.xml | 8 +- .../apps/Fluid/images/LidDrivenCavity2D.png | Bin 0 -> 7139 bytes 5 files changed, 208 insertions(+), 210 deletions(-) delete mode 100644 kratos.gid/apps/Fluid/examples/CylinderInFlowP2P1.tcl create mode 100644 kratos.gid/apps/Fluid/examples/LidDrivenCavity.tcl create mode 100644 kratos.gid/apps/Fluid/images/LidDrivenCavity2D.png diff --git a/kratos.gid/apps/Fluid/app.json b/kratos.gid/apps/Fluid/app.json index b366beb22..d2eccc757 100644 --- a/kratos.gid/apps/Fluid/app.json +++ b/kratos.gid/apps/Fluid/app.json @@ -15,7 +15,7 @@ "start.tcl", "examples/examples.tcl", "examples/CylinderInFlow.tcl", - "examples/CylinderInFlowP2P1.tcl", + "examples/LidDrivenCavity.tcl", "examples/HighRiseBuilding.tcl", "xml/XmlController.tcl", "write/write.tcl", diff --git a/kratos.gid/apps/Fluid/examples/CylinderInFlowP2P1.tcl b/kratos.gid/apps/Fluid/examples/CylinderInFlowP2P1.tcl deleted file mode 100644 index 6758b0083..000000000 --- a/kratos.gid/apps/Fluid/examples/CylinderInFlowP2P1.tcl +++ /dev/null @@ -1,205 +0,0 @@ - -namespace eval ::Fluid::examples::CylinderInFlowP2P1 { - namespace path ::Fluid::examples - Kratos::AddNamespace [namespace current] -} - -proc ::Fluid::examples::CylinderInFlowP2P1::Init {args} { - if {![Kratos::IsModelEmpty]} { - set txt "We are going to draw the example geometry.\nDo you want to lose your previous work?" - set retval [tk_messageBox -default ok -icon question -message $txt -type okcancel] - if { $retval == "cancel" } { return } - } - DrawGeometry$::Model::SpatialDimension - AssignGroups$::Model::SpatialDimension - AssignMeshSizes$::Model::SpatialDimension - TreeAssignation$::Model::SpatialDimension - - GiD_Process 'Redraw - GidUtils::UpdateWindow GROUPS - GidUtils::UpdateWindow LAYER - GiD_Process 'Zoom Frame -} - - -# Draw Geometry -proc ::Fluid::examples::CylinderInFlowP2P1::DrawGeometry3D {args} { - DrawGeometry2D - GiD_Process Mescape Utilities Copy Surfaces Duplicate DoExtrude Volumes MaintainLayers Translation FNoJoin 0.0,0.0,0.0 FNoJoin 0.0,0.0,1.0 1 escape escape escape - GiD_Layers edit opaque Fluid 0 - - GiD_Process escape escape 'Render Flat escape 'Rotate Angle 270 90 escape escape escape escape 'Rotate objaxes x -150 y -30 escape escape -} -proc ::Fluid::examples::CylinderInFlowP2P1::DrawGeometry2D {args} { - Kratos::ResetModel - GiD_Layers create Fluid - GiD_Layers edit to_use Fluid - - # Geometry creation - ## Points ## - set coordinates [list 0 1 0 5 1 0 5 0 0 0 0 0] - set fluidPoints [list ] - foreach {x y z} $coordinates { - lappend fluidPoints [GiD_Geometry create point append Fluid $x $y $z] - } - - ## Lines ## - set fluidLines [list ] - set initial [lindex $fluidPoints 0] - foreach point [lrange $fluidPoints 1 end] { - lappend fluidLines [GiD_Geometry create line append stline Fluid $initial $point] - set initial $point - } - lappend fluidLines [GiD_Geometry create line append stline Fluid $initial [lindex $fluidPoints 0]] - - ## Surface ## - GiD_Process Mescape Geometry Create NurbsSurface {*}$fluidLines escape escape - - # Body # - GiD_Layers create Body - GiD_Layers edit to_use Body - set circle_center_x 1.25 - set circle_center_y 0.5 - set circle_center_z 0.0 - set center_radius 0.1 - GiD_Process Mescape Geometry Create Object CirclePNR $circle_center_x $circle_center_y $circle_center_z 0.0 0.0 1.0 $center_radius escape - GiD_Geometry delete surface 2 - - # Create the hole - GiD_Layers edit to_use Fluid - GiD_Process MEscape Geometry Edit HoleNurb 1 5 escape escape - -} - - -# Group assign -proc ::Fluid::examples::CylinderInFlowP2P1::AssignGroups2D {args} { - # Create the groups - GiD_Groups create Fluid - GiD_Groups edit color Fluid "#26d1a8ff" - GiD_EntitiesGroups assign Fluid surfaces 1 - - GiD_Groups create Inlet - GiD_Groups edit color Inlet "#e0210fff" - GiD_EntitiesGroups assign Inlet lines 4 - - GiD_Groups create Outlet - GiD_Groups edit color Outlet "#42eb71ff" - GiD_EntitiesGroups assign Outlet lines 2 - - GiD_Groups create No_Slip_Walls - GiD_Groups edit color No_Slip_Walls "#3b3b3bff" - GiD_EntitiesGroups assign No_Slip_Walls lines {1 3} - - GiD_Groups create No_Slip_Cylinder - GiD_Groups edit color No_Slip_Cylinder "#3b3b3bff" - GiD_EntitiesGroups assign No_Slip_Cylinder lines 5 -} -proc ::Fluid::examples::CylinderInFlowP2P1::AssignGroups3D {args} { - # Create the groups - GiD_Groups create Fluid - GiD_Groups edit color Fluid "#26d1a8ff" - GiD_EntitiesGroups assign Fluid volumes 1 - - GiD_Groups create Inlet - GiD_Groups edit color Inlet "#e0210fff" - GiD_EntitiesGroups assign Inlet surfaces 5 - - GiD_Groups create Outlet - GiD_Groups edit color Outlet "#42eb71ff" - GiD_EntitiesGroups assign Outlet surfaces 3 - - GiD_Groups create No_Slip_Walls - GiD_Groups edit color No_Slip_Walls "#3b3b3bff" - GiD_EntitiesGroups assign No_Slip_Walls surfaces {1 2 4 7} - - GiD_Groups create No_Slip_Cylinder - GiD_Groups edit color No_Slip_Cylinder "#3b3b3bff" - GiD_EntitiesGroups assign No_Slip_Cylinder surfaces 6 -} - - -# Mesh sizes -proc ::Fluid::examples::CylinderInFlowP2P1::AssignMeshSizes3D {args} { - set cylinder_mesh_size 0.005 - set walls_mesh_size 0.05 - set fluid_mesh_size 0.05 - GiD_Process Mescape Utilities Variables SizeTransitionsFactor 0.4 escape escape - GiD_Process Mescape Meshing AssignSizes Surfaces $cylinder_mesh_size {*}[GiD_EntitiesGroups get No_Slip_Cylinder surfaces] escape escape - GiD_Process Mescape Meshing AssignSizes Surfaces $walls_mesh_size {*}[GiD_EntitiesGroups get Inlet surfaces] escape escape - GiD_Process Mescape Meshing AssignSizes Surfaces $walls_mesh_size {*}[GiD_EntitiesGroups get Outlet surfaces] escape escape - GiD_Process Mescape Meshing AssignSizes Surfaces $walls_mesh_size {*}[GiD_EntitiesGroups get No_Slip_Walls surfaces] escape escape - GiD_Process Mescape Meshing AssignSizes Volumes $fluid_mesh_size [GiD_EntitiesGroups get Fluid volumes] escape escape - Kratos::Event_BeforeMeshGeneration $fluid_mesh_size -} -proc ::Fluid::examples::CylinderInFlowP2P1::AssignMeshSizes2D {args} { - set cylinder_mesh_size 0.005 - set fluid_mesh_size 0.05 - GiD_Process Mescape Utilities Variables SizeTransitionsFactor 0.4 escape escape - GiD_Process Mescape Meshing AssignSizes Lines $cylinder_mesh_size {*}[GiD_EntitiesGroups get No_Slip_Cylinder lines] escape escape - GiD_Process Mescape Meshing AssignSizes Surfaces $fluid_mesh_size [GiD_EntitiesGroups get Fluid surfaces] escape escape - Kratos::Event_BeforeMeshGeneration $fluid_mesh_size -} - - -# Tree assign -proc ::Fluid::examples::CylinderInFlowP2P1::TreeAssignation3D {args} { - TreeAssignation2D - ::Fluid::examples::AddCuts -} -proc ::Fluid::examples::CylinderInFlowP2P1::TreeAssignation2D {args} { - set nd $::Model::SpatialDimension - set root [customlib::GetBaseRoot] - - set condtype line - if {$nd eq "3D"} { set condtype surface } - - # Monolithic solution strategy set - spdAux::SetValueOnTreeItem v "Monolithic" FLSolStrat - spdAux::SetValueOnTreeItem v "bdf2" FLScheme - - # Fluid Parts - set fluidParts [spdAux::getRoute "FLParts"] - set fluidNode [customlib::AddConditionGroupOnXPath $fluidParts Fluid] - # set props [list Element Monolithic$nd ConstitutiveLaw Newtonian2DLaw DENSITY 1.0 DYNAMIC_VISCOSITY 0.002 YIELD_STRESS 0 POWER_LAW_K 1 POWER_LAW_N 1] - set props [list Element P2P1$nd ConstitutiveLaw Newtonian2DLaw DENSITY 1.0 DYNAMIC_VISCOSITY 0.002] - spdAux::SetValuesOnBaseNode $fluidNode $props - - set fluidConditions [spdAux::getRoute "FLBC"] - ::Fluid::examples::ErasePreviousIntervals - - # Fluid Inlet - Fluid::xml::CreateNewInlet Inlet {new true name inlet1 ini 0 end 1} true "6*y*(1-y)*sin(pi*t*0.5)" - Fluid::xml::CreateNewInlet Inlet {new true name inlet2 ini 1 end End} true "6*y*(1-y)" - - # Fluid Outlet - set fluidOutlet "$fluidConditions/condition\[@n='Outlet$nd'\]" - set outletNode [customlib::AddConditionGroupOnXPath $fluidOutlet Outlet] - $outletNode setAttribute ov $condtype - set props [list value 0.0] - spdAux::SetValuesOnBaseNode $outletNode $props - - # Fluid Conditions - [customlib::AddConditionGroupOnXPath "$fluidConditions/condition\[@n='NoSlip$nd'\]" No_Slip_Walls] setAttribute ov $condtype - [customlib::AddConditionGroupOnXPath "$fluidConditions/condition\[@n='NoSlip$nd'\]" No_Slip_Cylinder] setAttribute ov $condtype - - # Time parameters - set parameters [list EndTime 45 DeltaTime 0.1] - set xpath [spdAux::getRoute "FLTimeParameters"] - spdAux::SetValuesOnBasePath $xpath $parameters - - # Output - set parameters [list OutputControlType step OutputDeltaStep 1] - set xpath "[spdAux::getRoute FLResults]/container\[@n='GiDOutput'\]/container\[@n='GiDOptions'\]" - spdAux::SetValuesOnBasePath $xpath $parameters - - # Parallelism - set parameters [list ParallelSolutionType OpenMP OpenMPNumberOfThreads 4] - set xpath [spdAux::getRoute "Parallelization"] - spdAux::SetValuesOnBasePath $xpath $parameters - - # Set the linear solver as bicgstab - spdAux::SetValueOnTreeItem v "bicgstab" FLMonolithiclinear_solver_settings Solver - - spdAux::RequestRefresh -} diff --git a/kratos.gid/apps/Fluid/examples/LidDrivenCavity.tcl b/kratos.gid/apps/Fluid/examples/LidDrivenCavity.tcl new file mode 100644 index 000000000..92a100a8b --- /dev/null +++ b/kratos.gid/apps/Fluid/examples/LidDrivenCavity.tcl @@ -0,0 +1,203 @@ + +namespace eval ::Fluid::examples::LidDrivenCavity { + namespace path ::Fluid::examples + Kratos::AddNamespace [namespace current] +} + +proc ::Fluid::examples::LidDrivenCavity::Init {args} { + if {![Kratos::IsModelEmpty]} { + set txt "We are going to draw the example geometry.\nDo you want to lose your previous work?" + set retval [tk_messageBox -default ok -icon question -message $txt -type okcancel] + if { $retval == "cancel" } { return } + } + DrawGeometry$::Model::SpatialDimension + AssignGroups$::Model::SpatialDimension + AssignMeshSizes$::Model::SpatialDimension + TreeAssignation$::Model::SpatialDimension + + GiD_Process 'Redraw + GidUtils::UpdateWindow GROUPS + GidUtils::UpdateWindow LAYER + GiD_Process 'Zoom Frame +} + + +# Draw Geometry +# proc ::Fluid::examples::LidDrivenCavity::DrawGeometry3D {args} { +# DrawGeometry2D +# GiD_Process Mescape Utilities Copy Surfaces Duplicate DoExtrude Volumes MaintainLayers Translation FNoJoin 0.0,0.0,0.0 FNoJoin 0.0,0.0,1.0 1 escape escape escape +# GiD_Layers edit opaque Fluid 0 + +# GiD_Process escape escape 'Render Flat escape 'Rotate Angle 270 90 escape escape escape escape 'Rotate objaxes x -150 y -30 escape escape +# } + +proc ::Fluid::examples::LidDrivenCavity::DrawGeometry2D {args} { + Kratos::ResetModel + GiD_Layers create Fluid + GiD_Layers edit to_use Fluid + + # Geometry creation + ## Points ## + set coordinates [list 0 1 0 1 1 0 1 0 0 0 0 0] + set fluidPoints [list ] + foreach {x y z} $coordinates { + lappend fluidPoints [GiD_Geometry create point append Fluid $x $y $z] + } + + ## Lines ## + set fluidLines [list ] + set initial [lindex $fluidPoints 0] + foreach point [lrange $fluidPoints 1 end] { + lappend fluidLines [GiD_Geometry create line append stline Fluid $initial $point] + set initial $point + } + lappend fluidLines [GiD_Geometry create line append stline Fluid $initial [lindex $fluidPoints 0]] + + ## Surface ## + GiD_Process Mescape Geometry Create NurbsSurface {*}$fluidLines escape escape + + # # Body # + # GiD_Layers create Body + # GiD_Layers edit to_use Body + # set circle_center_x 1.25 + # set circle_center_y 0.5 + # set circle_center_z 0.0 + # set center_radius 0.1 + # GiD_Process Mescape Geometry Create Object CirclePNR $circle_center_x $circle_center_y $circle_center_z 0.0 0.0 1.0 $center_radius escape + # GiD_Geometry delete surface 2 + + # # Create the hole + # GiD_Layers edit to_use Fluid + # GiD_Process MEscape Geometry Edit HoleNurb 1 5 escape escape + +} + + +# Group assign +proc ::Fluid::examples::LidDrivenCavity::AssignGroups2D {args} { + # Create the groups + GiD_Groups create Fluid + GiD_Groups edit color Fluid "#26d1a8ff" + GiD_EntitiesGroups assign Fluid surfaces 1 + + GiD_Groups create Lid + GiD_Groups edit color Lid "#e0210fff" + GiD_EntitiesGroups assign Lid lines 1 + + GiD_Groups create Walls + GiD_Groups edit color Walls "#3b3b3bff" + GiD_EntitiesGroups assign Walls lines {2 3 4} + + GiD_Groups create Corner + GiD_Groups edit color Corner "#42eb71ff" + GiD_EntitiesGroups assign Corner points 4 +} + +# proc ::Fluid::examples::LidDrivenCavity::AssignGroups3D {args} { +# # Create the groups +# GiD_Groups create Fluid +# GiD_Groups edit color Fluid "#26d1a8ff" +# GiD_EntitiesGroups assign Fluid volumes 1 + +# GiD_Groups create Inlet +# GiD_Groups edit color Inlet "#e0210fff" +# GiD_EntitiesGroups assign Inlet surfaces 5 + +# GiD_Groups create Outlet +# GiD_Groups edit color Outlet "#42eb71ff" +# GiD_EntitiesGroups assign Outlet surfaces 3 + +# GiD_Groups create No_Slip_Walls +# GiD_Groups edit color No_Slip_Walls "#3b3b3bff" +# GiD_EntitiesGroups assign No_Slip_Walls surfaces {1 2 4 7} + +# GiD_Groups create No_Slip_Cylinder +# GiD_Groups edit color No_Slip_Cylinder "#3b3b3bff" +# GiD_EntitiesGroups assign No_Slip_Cylinder surfaces 6 +# } + +# Mesh sizes +# proc ::Fluid::examples::LidDrivenCavity::AssignMeshSizes3D {args} { +# set cylinder_mesh_size 0.005 +# set walls_mesh_size 0.05 +# set fluid_mesh_size 0.05 +# GiD_Process Mescape Utilities Variables SizeTransitionsFactor 0.4 escape escape +# GiD_Process Mescape Meshing AssignSizes Surfaces $cylinder_mesh_size {*}[GiD_EntitiesGroups get No_Slip_Cylinder surfaces] escape escape +# GiD_Process Mescape Meshing AssignSizes Surfaces $walls_mesh_size {*}[GiD_EntitiesGroups get Inlet surfaces] escape escape +# GiD_Process Mescape Meshing AssignSizes Surfaces $walls_mesh_size {*}[GiD_EntitiesGroups get Outlet surfaces] escape escape +# GiD_Process Mescape Meshing AssignSizes Surfaces $walls_mesh_size {*}[GiD_EntitiesGroups get No_Slip_Walls surfaces] escape escape +# GiD_Process Mescape Meshing AssignSizes Volumes $fluid_mesh_size [GiD_EntitiesGroups get Fluid volumes] escape escape +# Kratos::Event_BeforeMeshGeneration $fluid_mesh_size +# } + +proc ::Fluid::examples::LidDrivenCavity::AssignMeshSizes2D {args} { + set fluid_mesh_size 0.02 + # GiD_Process Mescape Utilities Variables SizeTransitionsFactor 0.4 escape escape + GiD_Process Mescape Meshing AssignSizes Surfaces $fluid_mesh_size [GiD_EntitiesGroups get Fluid surfaces] escape escape + Kratos::Event_BeforeMeshGeneration $fluid_mesh_size +} + + +# Tree assign +# proc ::Fluid::examples::LidDrivenCavity::TreeAssignation3D {args} { +# TreeAssignation2D +# ::Fluid::examples::AddCuts +# } + +proc ::Fluid::examples::LidDrivenCavity::TreeAssignation2D {args} { + set nd $::Model::SpatialDimension + set root [customlib::GetBaseRoot] + + set condtype line + if {$nd eq "3D"} { set condtype surface } + + # Monolithic solution strategy set + spdAux::SetValueOnTreeItem v "Monolithic" FLSolStrat + spdAux::SetValueOnTreeItem v "bdf2" FLScheme + + # Fluid Parts + set fluidParts [spdAux::getRoute "FLParts"] + set fluidNode [customlib::AddConditionGroupOnXPath $fluidParts Fluid] + set props [list Element P2P1$nd ConstitutiveLaw Newtonian2DLaw DENSITY 1.0 DYNAMIC_VISCOSITY 0.0025] + spdAux::SetValuesOnBaseNode $fluidNode $props + + set fluidConditions [spdAux::getRoute "FLBC"] + ::Fluid::examples::ErasePreviousIntervals + + # Fluid wall condition + [customlib::AddConditionGroupOnXPath "$fluidConditions/condition\[@n='NoSlip$nd'\]" Walls] setAttribute ov $condtype + + # Fluid lid velocity + set fluidLid "$fluidConditions/condition\[@n='VelocityConstraints$nd'\]" + set lidNode [customlib::AddConditionGroupOnXPath $fluidLid Lid] + $lidNode setAttribute ov $condtype + set props [list selector_component_X ByValue value_component_X 1.0 selector_component_Y ByValue value_component_Y 0.0 Interval Total] + spdAux::SetValuesOnBaseNode $lidNode $props + + # Fluid corner pressure + set fluidCorner "$fluidConditions/condition\[@n='PressureConstraints$nd'\]" + set cornerNode [customlib::AddConditionGroupOnXPath $fluidCorner Corner] + $cornerNode setAttribute ov Point + set props [list value 0.0 Interval Total] + spdAux::SetValuesOnBaseNode $cornerNode $props + + # Time parameters + set parameters [list EndTime 30.0 DeltaTime 0.25] + set xpath [spdAux::getRoute "FLTimeParameters"] + spdAux::SetValuesOnBasePath $xpath $parameters + + # Output + set parameters [list OutputControlType step OutputDeltaStep 1] + set xpath "[spdAux::getRoute FLResults]/container\[@n='GiDOutput'\]/container\[@n='GiDOptions'\]" + spdAux::SetValuesOnBasePath $xpath $parameters + + # Parallelism + set parameters [list ParallelSolutionType OpenMP OpenMPNumberOfThreads 4] + set xpath [spdAux::getRoute "Parallelization"] + spdAux::SetValuesOnBasePath $xpath $parameters + + # Set the linear solver as bicgstab + spdAux::SetValueOnTreeItem v "bicgstab" FLMonolithiclinear_solver_settings Solver + + spdAux::RequestRefresh +} diff --git a/kratos.gid/apps/Fluid/examples/examples.xml b/kratos.gid/apps/Fluid/examples/examples.xml index b015b27cd..5bab182f0 100644 --- a/kratos.gid/apps/Fluid/examples/examples.xml +++ b/kratos.gid/apps/Fluid/examples/examples.xml @@ -1,7 +1,7 @@ - This example applies an inlet condition to the air surrounding a 2D building. + This example applies an inlet condition to the air surrounding a 2D building. The default mesh is made of 4.000 trianglular elements, and the calculation generates results for 800 timesteps. - Size of model: 0.4 MB - Time: Avg calulation time: 2 minutes @@ -14,9 +14,9 @@ - - - This example uses a P2-P1 element to simulate the flow around a cylinder in 2D. + + + This example uses a P2-P1 element to simulate the 2D lid-driven cavity flow. - Quadratic mesh diff --git a/kratos.gid/apps/Fluid/images/LidDrivenCavity2D.png b/kratos.gid/apps/Fluid/images/LidDrivenCavity2D.png new file mode 100644 index 0000000000000000000000000000000000000000..80a3d6d3a78459028282619f039b4f21bf671d44 GIT binary patch literal 7139 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 Z{{fp{$5qk5|8M{R002ovPDHLkV1h+9FsA?j literal 0 HcmV?d00001 From 64bfe414efa8bf267385120bd47ae225f08f1ef1 Mon Sep 17 00:00:00 2001 From: rubenzorrilla Date: Mon, 3 Jun 2024 21:28:01 +0200 Subject: [PATCH 2/3] Pressure conditions --- kratos.gid/apps/Fluid/xml/Conditions.xml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/kratos.gid/apps/Fluid/xml/Conditions.xml b/kratos.gid/apps/Fluid/xml/Conditions.xml index 2d47db9b4..db7a2754f 100644 --- a/kratos.gid/apps/Fluid/xml/Conditions.xml +++ b/kratos.gid/apps/Fluid/xml/Conditions.xml @@ -98,4 +98,16 @@ + + + + + + + + + + + + From bcb242a5458c9c1099c24617fcabe8054d6703a2 Mon Sep 17 00:00:00 2001 From: rubenzorrilla Date: Mon, 3 Jun 2024 23:00:54 +0200 Subject: [PATCH 3/3] Enhance description --- kratos.gid/apps/Fluid/examples/examples.xml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/kratos.gid/apps/Fluid/examples/examples.xml b/kratos.gid/apps/Fluid/examples/examples.xml index 5bab182f0..bad46c82b 100644 --- a/kratos.gid/apps/Fluid/examples/examples.xml +++ b/kratos.gid/apps/Fluid/examples/examples.xml @@ -4,8 +4,8 @@ This example applies an inlet condition to the air surrounding a 2D building. The default mesh is made of 4.000 trianglular elements, and the calculation generates results for 800 timesteps. - Size of model: 0.4 MB - - Time: Avg calulation time: 2 minutes - Size with results: 250 MB + - Avg. calulation time: 2 minutes @@ -17,7 +17,10 @@ This example uses a P2-P1 element to simulate the 2D lid-driven cavity flow. - - Quadratic mesh + - Requires quadratic mesh + - Size of model: 2.3 MB + - Size with results: 484 MB + - Avg. calculation time: 2 minutes