Skip to content

Commit 9f9ac59

Browse files
committed
Fine
1 parent 52a60c3 commit 9f9ac59

12 files changed

Lines changed: 435456 additions & 1 deletion

fluid_structure_interaction/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ Coming soon...
55

66
## Validation Cases
77
- [FSI lid driven cavity](https://github.com/KratosMultiphysics/Examples/blob/master/fluid_structure_interaction/validation/fsi_lid_driven_cavity/README.md)
8+
- [Flexible membrane airfoil (embedded)](https://github.com/KratosMultiphysics/Examples/blob/master/fluid_structure_interaction/validation/embedded_fsi_membrane_airfoil/README.md)
89
- [Mixer with flexible blades (embedded)](https://github.com/KratosMultiphysics/Examples/blob/master/fluid_structure_interaction/validation/embedded_fsi_mixer_Y/README.md)
910
- [Mok benchmark](https://github.com/KratosMultiphysics/Examples/blob/master/fluid_structure_interaction/validation/fsi_mok/README.md)
1011
- [Mok benchmark (embedded)](https://github.com/KratosMultiphysics/Examples/blob/master/fluid_structure_interaction/validation/embedded_fsi_mok/README.md)
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# Flexible membrane airfoil
2+
3+
**Author:** [Rubén Zorrilla](https://github.com/rubenzorrilla)
4+
5+
**Kratos version:** 9.5
6+
7+
**Source files:** [Flexible membrane airfoil](https://github.com/KratosMultiphysics/Examples/tree/master/fluid_structure_interaction/validation/embedded_fsi_membrane_airfoil/source)
8+
9+
## Case Specification
10+
This example reproduces a reduced-scale experiment of a flexible membrane airfoil[1]. The embedded (i.e., CutFEM) framework for thin-walled bodies is applied in order to avoid the preprocessing and mesh entanglement issues appearing when using volumetric meshes around membrane-like bodies [2].
11+
12+
The problem set up consists in a 2D idealization of the flexible membrane airfoil at an angle of attack of 4º. The lenght and thickness of the membrane are 0.15m and 2e-4m, respectively, while the material parameters are a Young modulus of 250e3Pa and zero Poisson ration. The fluid properties are set such that Re=2500. The structure and fluid density ratio is 441.75. The inlet characteristic velocity is 2.5833m/s.
13+
14+
## Results
15+
The fluid domain is meshed with a 144k P1P1 elements unstructured mesh. The membrane is meshed with 128 line elements implementing a simplified 2D non-linear membrane formulation. The problem is run with a ramp up function of 1s and for an extra second so to ensure that the membrane reaches the steady state.
16+
17+
The steady state velocity and pressure contour fields as well as the displacement vector field are shown below. The obtained results are in line with similar numerical experiments [3].
18+
19+
<p align="center">
20+
<figure>
21+
<img src="data/embedded_fsi_membrane_airfoil_fluid_v.gif" alt="Fluid velocity contour field." style="width: 600px;"/>
22+
<figcaption>Velocity field and level set isosurface.</figcaption>
23+
</figure>
24+
</p>
25+
26+
<p align="center">
27+
<figure>
28+
<img src="data/embedded_fsi_membrane_airfoil_fluid_p.gif" alt="Fluid pressure contour field." style="width: 600px;"/>
29+
<figcaption>Pressure field and level set isosurface.</figcaption>
30+
</figure>
31+
</p>
32+
33+
<p align="center">
34+
<figure>
35+
<img src="data/embedded_fsi_membrane_airfoil_structure_u.gif" alt="Membrane displacement vector field." style="width: 600px;"/>
36+
<figcaption>Pressure field and level set isosurface.</figcaption>
37+
</figure>
38+
</p>
39+
40+
## References
41+
[1] P. Rojratsirikul, Z. Wang and I. Gursul, I, Unsteady Aerodynamics of Membrane Airfoils. Paper presented at 46th AIAA Aerospace Sciences Meeting and Exhibit, Reno, Nevada, 2008 [10.2514/6.2008-613](https://doi.org/10.2514/6.2008-613).
42+
43+
[2] R. Zorrilla, R. Rossi, R. Wüchner and E. Oñate, An embedded Finite Element framework for the resolution of strongly coupled Fluid–Structure Interaction problems. Application to volumetric and membrane-like structures, Computer Methods in Applied Mechanics and Engineering (368), 2020 [10.1016/j.cma.2020.113179](https://doi.org/10.1016/j.cma.2020.113179).
44+
45+
[3] R. E. Gordnier, High fidelity computational simulation of a membrane wing airfoil, Journal of Fluids and Structures (25), 2009, [10.1016/j.jfluidstructs.2009.03.004](https://doi.org/10.1016/j.jfluidstructs.2009.03.004).
5.31 MB
Loading
6.34 MB
Loading
3.32 MB
Loading
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"properties" : [{
3+
"model_part_name" : "FluidModelPart",
4+
"properties_id" : 0,
5+
"Material" : null
6+
},{
7+
"model_part_name" : "FluidModelPart.FluidParts_Fluid",
8+
"properties_id" : 1,
9+
"Material" : {
10+
"constitutive_law" : {
11+
"name" : "Newtonian2DLaw"
12+
},
13+
"Variables" : {
14+
"DENSITY" : 1.0,
15+
"DYNAMIC_VISCOSITY" : 0.000155
16+
},
17+
"Tables" : null
18+
}
19+
}]
20+
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import sys
2+
import math
3+
import time
4+
import importlib
5+
6+
import KratosMultiphysics
7+
8+
def CreateAnalysisStageWithFlushInstance(cls, global_model, parameters):
9+
class AnalysisStageWithFlush(cls):
10+
11+
def __init__(self, model,project_parameters, flush_frequency=10.0):
12+
super().__init__(model,project_parameters)
13+
self.flush_frequency = flush_frequency
14+
self.last_flush = time.time()
15+
sys.stdout.flush()
16+
17+
def Initialize(self):
18+
super().Initialize()
19+
sys.stdout.flush()
20+
21+
def FinalizeSolutionStep(self):
22+
super().FinalizeSolutionStep()
23+
24+
if self.parallel_type == "OpenMP":
25+
now = time.time()
26+
if now - self.last_flush > self.flush_frequency:
27+
sys.stdout.flush()
28+
self.last_flush = now
29+
30+
return AnalysisStageWithFlush(global_model, parameters)
31+
32+
if __name__ == "__main__":
33+
34+
with open("ProjectParameters.json", 'r') as parameter_file:
35+
parameters = KratosMultiphysics.Parameters(parameter_file.read())
36+
37+
analysis_stage_module_name = parameters["analysis_stage"].GetString()
38+
analysis_stage_class_name = analysis_stage_module_name.split('.')[-1]
39+
analysis_stage_class_name = ''.join(x.title() for x in analysis_stage_class_name.split('_'))
40+
41+
analysis_stage_module = importlib.import_module(analysis_stage_module_name)
42+
analysis_stage_class = getattr(analysis_stage_module, analysis_stage_class_name)
43+
44+
global_model = KratosMultiphysics.Model()
45+
simulation = CreateAnalysisStageWithFlushInstance(analysis_stage_class, global_model, parameters)
46+
simulation.Run()

0 commit comments

Comments
 (0)