diff --git a/.gitignore b/.gitignore index 8b479a8b..b8098178 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,5 @@ # bundler snapshot of all gems and versions that it installed # https://bundler.io/rationale.html Gemfile.lock + +.jekyll-metadata diff --git a/_data/docs_v7.yml b/_data/docs_v7.yml index 840fd876..bcf13fe6 100644 --- a/_data/docs_v7.yml +++ b/_data/docs_v7.yml @@ -29,6 +29,7 @@ - title: Theory docs_v7: - Theory + - Streamwise-Periodicity - title: Users Guide docs_v7: diff --git a/_data/tutorials.yml b/_data/tutorials.yml index e69dbc6b..f6521272 100644 --- a/_data/tutorials.yml +++ b/_data/tutorials.yml @@ -25,8 +25,8 @@ - Inc_Turbulent_NACA0012 - Inc_Laminar_Step - Inc_Laminar_Cavity - - Inc_Heated_Cylinders - + - Inc_Streamwise_Periodic + - title: Structural Mechanics tutorials: - Linear_Elasticity @@ -38,6 +38,8 @@ tutorials: - Static_FSI - Dynamic_FSI_Python + - Static_CHT + - Inc_Heated_Cylinders_Unsteady - title: Design Features tutorials: diff --git a/_docs_v7/Markers-and-BC.md b/_docs_v7/Markers-and-BC.md index b9ffae3a..fae2a0b8 100755 --- a/_docs_v7/Markers-and-BC.md +++ b/_docs_v7/Markers-and-BC.md @@ -10,6 +10,7 @@ The term *Marker* refers to a named entity in your mesh file. Boundary condition - [Euler (Slip) Wall](#euler-slip-wall) - [Symmetry Wall](#symmetry-wall) - [Constant Heatflux (no-slip) Wall](#constant-heatflux-no-slip-wall) +- [Heat Transfer or Convection (no-slip) Wall](#heat-transfer-or-convection-no-slip-wall) - [Isothermal (no-slip) Wall](#isothermal-no-slip-wall) - [Farfield Boundary Condition](#farfield-boundary-condition) - [Inlet Boundary Condition](#inlet-boundary-condition) @@ -74,6 +75,20 @@ MARKER_HEATFLUX = (Wall1, 1e05, Wall2, 0.0) **Note**: Typically Navier-Stokes and RANS simulations are setup with adiabatic walls (heatflux = 0). +## Heat Transfer or Convection (no-slip) Wall ## + +| Solver | Version | +| --- | --- | +| `NAVIER_STOKES`, `RANS`, `INC_NAVIER_STOKES`, `INC_RANS` | 7.0.0 | + + +A wall with a prescribed locally variable heatflux via a heat transfer coefficient and and a Temperature at infinity (or reservoir Temperature) is defined with the `MARKER_HEATTRANSFER` option. The heatflux `q` computes to `q = h(T_inf - T_wall)`, where `T_wall` is the local wall temperature and therefore no user input. The option format is the marker name followed by the value of the heat-transfer coefficient (in Watts per square meter and Kelvin `[W/(m^2*K)],[J/(s*m^2*K)]`) and the value of the Temperature at infinity (in Kelvin `[K]`), e.g. +``` +MARKER_HEATTRANSFER = (Wall1, 10.0, 350.0, Wall2, 5.0, 330.0, ...) +``` + +**Note**: The Heat Transfer Wall degenerates to an adiabatic wall when the heat transfer coefficient is zero. On the other extreme (a very high heat transfer coefficient) the Heat Transfer Wall degenerates to an isothermal wall with Temperature at infinity being the wall temperature. + ## Isothermal (no-slip) Wall ## | Solver | Version | diff --git a/_docs_v7/Streamwise-Periodicity.md b/_docs_v7/Streamwise-Periodicity.md new file mode 100644 index 00000000..e239e87b --- /dev/null +++ b/_docs_v7/Streamwise-Periodicity.md @@ -0,0 +1,107 @@ +--- +title: Streamwise Periodicity +permalink: /docs_v7/Streamwise-Periodicity/ +--- + +| Solver | Version | +| --- | --- | +| `INC_NAVIER_STOKES`, `INC_RANS` | 7.0.0 | + + +This page contains an overview of the theory behind streamwise periodic flow and builds upon [Incompressible Navier-Stokes](/docs_v7/Theory/#incompressible-navier-stokes). A tutorial for [Streamwise Periodic Flow](/tutorials/Inc_Streamwise_Periodic/) is available. + +--- + +- [Limitations](#limitations) +- [Introduction](#introduction) +- [Pressure and Velocity Periodiciy](#pandv-periodiciy) + - [Massflow prescription](#massflow) +- [Temperature Periodiciy](#T-periodiciy) + - [Fake temperature periodicity via outlet heat sink](#fake-temperature-periodicity-via-outlet-heat-sink) +- [References](#references) + +--- + +## Limitations +- can only be used with the incompressible solver, namely `INC_NAVIER_STOKES` and `INC_RANS` +- temperature dependent fluid properties (e.g. $$c_p, \mu_{lam}$$) cannot be used with real streamwise periodic flow + +## Introduction + +A flow can be modeled as streamwise periodic if the following statements hold true: + +$$\begin{align} +\bar{v}\left( \bar{x} \right) &= \bar{v} \left( \bar{x}+\bar{t} \right), \\ +p\left( \bar{x} \right) &= p \left( \bar{x}+\bar{t} \right) + \Delta p_0, \\ +T\left( \bar{x} \right) &= T \left( \bar{x}+\bar{t} \right) - \Delta T_0. +\end{align}$$ + +With $$\bar{t}$$ being the translation vector between periodic interfaces and $$\Delta p_0, \Delta T_0$$ the constant pressure or temperature drop between the periodic interfaces. + +## Pressure and Velocity Periodicity + +The continuous relation between physical pressure $$p$$ and periodic/reduced pressure $$\tilde{p}$$ in space is: + +$$p\left( \bar{x} \right) = \tilde p \left( \bar{x} \right) - \frac{\Delta p_0}{\left\lVert\bar{t}\right\rVert_2}t_p, \quad t_p =\frac{1}{\left\lVert\bar{t}\right\rVert_2} \left| \left( \bar{x} - \bar{x}^\star \right) \cdot \bar{t} \right|.$$ + +This separation into two parts can be interpreted as a "constant" and a "linear" (along the domain) contribution. +This relation is used to compute the recovered pressure for postprocessing. +Inserting this pressure formulation into the momentum equation of the incompressible Navier-Stokes equation (see [here](/docs_v7/Theory/#incompressible-navier-stokes)) results in: + +$$\frac{\partial \bar{v}}{\partial t} + \nabla\cdot\left( \rho \bar{v} \otimes \bar{v} + \bar{\bar{I}}\tilde{p} - \bar{\bar \tau} \right) - \frac{\Delta p_0}{\left\lVert\bar{t}\right\rVert_2^2}\bar{t} = 0,$$ + +where two things changed: +1. Working variable of the pressure $$p$$ changed to the periodic pressure $$\tilde{p}$$. +2. A constant source term is added to the formulation of the momentum equation. + +The source term is now the force that drives the flow and scales with the prescribed pressure drop $$\Delta p_0$$. + +This substitution of the pressure variable has to be done in every place it appears. For pressure there is nothing further to do e.g. for the boundary conditions, which will be different for the derivation of periodic temperature. + +### Massflow prescription + +In applications often the massflux $$\dot{m}_0^2$$ is known and the pressure drop is the observable. If a massflow is prescribed the pressure drop $$\Delta p_0$$ in the source term is adapted with each iteration to match the current massflow $$\dot{m}^2$$ with the prescribed massflow: + + +$$\Delta p_0^{n+1} - \Delta p_0^{n} = \Delta \left( \Delta p_0 \right) = \frac{\frac{1}{2} \rho \left( \dot{m}_0^2 - \dot{m}^2 \right)}{\left( \rho A \right)^2}.$$ + +$$\rho$$ is the density and $$A$$ the flowed through inlet Area. For the pressure drop update a relaxation factor $$\phi$$ is used: + +$$\Delta p_0^{n+1} = \Delta p_0^{n} + \phi \Delta \left( \Delta p_0 \right).$$ + +## Temperature Periodicity + +The here presented approach for periodicity in temperature is only possible if only heatflux or symmetry boundary conditions are used, isothermal walls in particular are not allowed. In that case use the [method described below](#fake-temperature-periodicity-via-outlet-heat-sink) is used: + +Similar to the pressure term for the momentum equation the Temperature can be split in a periodic and a linear part: + +$$T\left( \bar{x} \right) = \tilde T \left( \bar{x} \right) + \frac{\Delta T_0}{\left\lVert\bar{t}\right\rVert_2}t_p, \quad t_p =\frac{1}{\left\lVert\bar{t}\right\rVert_2} \left| \left( \bar{x} - \bar{x}^\star \right) \cdot \bar{t} \right|$$ + +Just as with the pressure term, this relation is used to compute the recovered temperature for postprocessing. +Inserting the temperature formulation into the energy equation results in: + +$$\frac{\partial \left( \rho c_p \tilde{T} \right)}{\partial t} + \nabla\cdot\left( \rho c_p \tilde{T} \bar{v} - \kappa\nabla \tilde{T} \right) + \frac{Q \rho }{ \dot{m}\left\lVert\bar{t}\right\rVert_2^2} \left[ \bar{t} \cdot \bar{v} \right] = 0$$ + +With $$Q$$ being the integrated heatflux across the domain boundaries in Watts. In contrast to the derivation for pressure periodicity in the momentum equations the boundary conditions have to adapted for the energy equation. The heatflux (Neumann) wall contribution for the energy equation becomes: + +$$- \int_{\partial\Omega} \left( \kappa\nabla T \right) \cdot \bar{n} dS + \int_{\partial\Omega} \kappa\frac{Q}{\dot{m} c_p \left\lVert\bar{t}\right\rVert_2^2} \left[ \bar{t} \cdot \bar{n} \right] dS = 0 $$ + +### Temperature periodicity via outlet heat sink + +In cases where the above requirements cannot be held (e.g. isothermal walls, CHT interfaces) a simple massflow averaged outlet heat sink is implemented. In these cases pressure is still periodic but temperature is solved in its non-periodic form. Energy is extracted from the domain just at the outlet such that the temperature profile via the periodic interface is approximately retained. This of course is a major simplification that enables the use of an approximated temperature profile over the periodic interface. Solution interpretation, especially if it involves surface temperature integrals near the periodic faces, should be done with the necessary care. + +The residual contributions are in twofold. Firstly an either user provided or computed heat is extracted at the outlet with massflow averaged weighting which proved to be better than area averaged weighting: + +$$Res -= \frac{\dot m_{local}}{\dot m_{global}} Q_{integrated}$$ + +The second term is adaptive and scales with the difference between the initial temperature `INC_TEMPERATURE_INIT` and the actual area averaged temperature on the inlet: + +$$Res += \frac{1}{2} |\dot m| c_p \left( T_{inlet} - \frac{T_{init}}{T_{ref}} \right)$$ + +This allows to set the general temperature level in the domain and thereby also allows for the use of temperature material parameters, or isothermal walls and CHT interfaces. + +## References + +$$^1$$ S.V. Patankar, C.H. Liu, and E.M. Sparrow. Fully developed flow and heat transfer in ducts having streamwise-periodic variations of cross-sectional area. *Journal of Heat Transfer*, 99(2):180–186, 1977. doi: [https://doi.org/10.1115/1.3450666](https://doi.org/10.1115/1.3450666) + +$$^2$$ Steven B. Beale. On the implementation of stream-wise periodic boundary conditions. In *ASME 2005 Summer Heat Transfer Conference collocated with the ASME 2005 Pacific Rim Technical Conference and Exhibition on Integration and Packaging of MEMS, NEMS, and ElectronicSystems*, pages 771–777. American Society of Mechanical Engineers, 2005. doi: [https://doi.org/10.1115/HT2005-72271](https://doi.org/10.1115/HT2005-72271) \ No newline at end of file diff --git a/_tutorials/compressible_flow/ActuatorDisk_VariableLoad/ActuatorDisk_VariableLoad.md b/_tutorials/compressible_flow/ActuatorDisk_VariableLoad/ActuatorDisk_VariableLoad.md new file mode 100644 index 00000000..f532d610 --- /dev/null +++ b/_tutorials/compressible_flow/ActuatorDisk_VariableLoad/ActuatorDisk_VariableLoad.md @@ -0,0 +1,258 @@ +--- +title: Actuator Disk With Variable Load +permalink: /tutorials/ActuatorDisk_VariableLoad/ +written_by: Ettore Saetta, Renato Tognaccini +for_version: 7.0.8 +revised_by: +revision_date: +revised_version: +solver: RANS +requires: SU2_CFD +complexity: Basic +follows: +--- + +![Actuator Disk](../../../tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/SwirlAndCp.png) + +## Goals + +Upon completing this tutorial, the user will be able to simulate the presence of a propeller by a general actuator disk boundary condition. The model enables the simulation of propellers with variable load distribution and including swirl. The specific geometry chosen for the tutorial is composed by an actuator disk and a semi-infinite spinner (grid file and propeller data courtesy of Mauro Minervino, Centro Italiano Ricerche Aerospaziali (CIRA)). + +This tutorial is referred only to the actuator disk model `VARIABLE_LOAD` implemented in the V7.0.7. + +## Resources + +The resources for this tutorial can be found in the [compressible_flow/ActuatorDisk_VariableLoad](https://github.com/su2code/Tutorials/tree/feature_tutorial_ActuatorDisk/compressible_flow/ActuatorDisk_VariableLoad) directory in the [Tutorials repository](https://github.com/su2code/Tutorials). You will need the configuration file ([propeller_variable_load.cfg](https://github.com/su2code/Tutorials/blob/feature_tutorial_ActuatorDisk/compressible_flow/ActuatorDisk_VariableLoad/propeller_variable_load.cfg)), the mesh file ([propeller_variable_load.su2](https://github.com/su2code/Tutorials/blob/feature_tutorial_ActuatorDisk/compressible_flow/ActuatorDisk_VariableLoad/propeller_variable_load.su2)) and the propeller input data file ([ActuatorDisk.dat](https://github.com/su2code/Tutorials/blob/feature_tutorial_ActuatorDisk/compressible_flow/ActuatorDisk_VariableLoad/ActuatorDisk.dat)). +*It is important to note that the grid used in this tutorial is very coarse to keep computational effort low, finer meshes should be used.* + +It is also presented the use of [OptimalPropeller.py](https://github.com/su2code/SU2/tree/master/SU2_PY/OptimalPropeller.py) script, very useful tool to generate a propeller input data file with variable load when only total thrust is known. + +## Tutorial + +The following tutorial will walk you through the steps required when solving a flow in presence of a propeller using SU2. The tutorial will also shows how to generate the propeller input data file witht the help of the [OptimalPropeller.py](https://github.com/su2code/SU2/tree/master/SU2_PY/OptimalPropeller.py) script when only total thrust is known. To this end, it is assumed you have already obtained and compiled SU2_CFD. If you have yet to complete these requirements, please see the [Download](/docs_v7/Download/) and [Installation](/docs_v7/Installation/) pages. + +### Background + +This test case is for an actuator disk with a semi-infinite spinner. The actuator disk is a model used to simulate the effects on the aiframe of rotary wings by a simple momentum theory [1]. +In aeronautics it is a crucial topic for the airframe integration. Nowadays, a good actuator disk model is getting importance in order to simulate the effects of the propellers +of given performance on the airframe by fast CFD analysis. +However, the disadvantage of using an actuator disk model is that the unsteady effects are neglected. + +The actuator disk model used in this tutorial has been implemented referring to a propeller, so the input data file is suitable for a propeller, but not for a wind turbine. However, the model itself, can also be suitable for any rotary wing device. Note that the model has been tested only for propellers. + +The hypothesis that we will consider are: compressible and axial flow (the angle between propeller axis and freestream is small). + +### Problem Setup + +This problem will solve the flow with these conditions: +- Freestream Mach number = 0.55996 +- Angle of attack (AOA) = 0.0 deg +- Reynolds number = 3.65E7 (based on propeller diameter) +- Reynolds length = 5.0292 m + +The global propeller data are: +- Thrust coefficient = 0.15 +- Advance Ratio = 2.81487 +- Radius = 2.5146 m + +The thrust coefficient is defined using the "Renard" definition: the reference force is , where *n* are the propeller rounds per second and *D* is the propeller diameter +The advance ratio is defined as . + +### Mesh Description + +The computational domain contains the actuator disk mounted on a semi-infinite spinner. The mesh consists of 48,736 elements and 51,847 nodes. Again, we note that this is a very coarse mesh, and should one wish to obtain more accurate solutions for comparison with results in the literature, finer grids should be used. + +Three boundary conditions are employed: +- Actuator Disk on the two surfaces (upstream and downstream) of the actuator disk. +- Navier-Stokes adiabatic wall on the spinner. +- Far-field condition on the outer domain surface. + +![Domain](../../../tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/Domain.png) +Figure (1): Far-field view of the computational domain. + +![Grid XY](../../../tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/GridXY.png) +Figure (2): Mesh of the domain in the *x-y* plane. + +![Grid Disk](../../../tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/GridDisk.png) +Figure (3): Close-up view of the mesh of the actuator disk in the *y-z* plane at *x=0*. + +![Grid Disk](../../../tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/GridSpinner.png) +Figure (4): Close-up view of the mesh of the spinner in the *y-x* plane. + +### Configuration File Options + +Only the actuator disk boundary condition options are highlighted here: + +``` +% -------------------- ACTUATOR DISK BOUNDARY CONDITION --------------------------% +% +ACTDISK_DOUBLE_SURFACE = YES +% +% Actuator disk boundary type (VARIABLE_LOAD, VARIABLES_JUMP, BC_THRUST, +% DRAG_MINUS_THRUST) +ACTDISK_TYPE= VARIABLE_LOAD +% +% Actuator disk data input file name +ACTDISK_FILENAME= ActuatorDisk.dat +% +% Actuator disk boundary marker(s) with the following formats (NONE = no marker) +% Variable Load: (inlet face marker, outlet face marker, +% 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) Markers only effectively used. +MARKER_ACTDISK = ( DISK, DISK_BACK, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ) +``` + +The `ACTDISK_DOUBLE_SURFACE` option, in this case, is set to `true` because the actuator disk surface has been splitted in two parts: upstream and sownstream surfaces. +The `ACTDISK_TYPE` option, is used to choose the actuator disk boundary type. In this tutorial, we consider a variable load distribution along the disk, and that also take the *swirl* term into consideration. The actuator disk type that meets these conditions is the `VARIABLE_LOAD`. +The `ACTDISK_FILENAME` option is used to specify the name of the actuator disk data input file. Further we will see how to generate this file if only total thrust is known and not the details on the load distribution. +The `MARKER_ACTDISK` option, requires the following arguments: +- Marker of the upstream surface of the actuator disk. +- Marker of the downstream surface of the actuator disk. +- 6 zero arguments. These arguments have a different meaning using different `ACTDISK_TYPE`. In this case, they are all set to `0.0` because they are not needed. + +*If there are more actuator disks, it is possible to append them in the `MARKER_ACTDISK` option.* + +### Input Data File + +The input data file is needed for the `VARIABLE_LOAD` actuator disk type. +An example of this file (used in this tutoral) is here reported: + +``` +MARKER_ACTDISK= DISK DISK_BACK +CENTER= 0.0 0.0 0.0 +AXIS= 1.0 0.0 0.0 +RADIUS= 2.5146 +ADV_RATIO= 2.81487 +NROW= 37 +# rs=r/R dCT/drs dCP/drs dCR/drs + 0.2031 0.020066 0.0890674 0.0 + 0.2235 0.019963 0.0932674 0.0 + 0.2439 0.021707 0.0982980 0.0 + 0.2644 0.024667 0.1064153 0.0 + 0.2848 0.029147 0.1189045 0.0 + 0.3257 0.043674 0.1588513 0.0 + 0.3461 0.053380 0.1849900 0.0 + 0.3665 0.064327 0.2145367 0.0 + 0.3870 0.076521 0.2471873 0.0 + 0.4278 0.103679 0.3203392 0.0 + 0.4483 0.118918 0.3609085 0.0 + 0.4687 0.135619 0.4051864 0.0 + 0.4891 0.152986 0.4518863 0.0 + 0.5096 0.171453 0.5011266 0.0 + 0.5300 0.190755 0.5528521 0.0 + 0.5504 0.211062 0.6072281 0.0 + 0.5709 0.231313 0.6620508 0.0 + 0.5913 0.251252 0.7161404 0.0 + 0.6117 0.271376 0.7700722 0.0 + 0.6322 0.290980 0.8219708 0.0 + 0.6526 0.309848 0.8715231 0.0 + 0.6730 0.328502 0.9202496 0.0 + 0.6935 0.346774 0.9681596 0.0 + 0.7139 0.364895 1.0156277 0.0 + 0.7343 0.381991 1.0603740 0.0 + 0.7548 0.398417 1.1036331 0.0 + 0.7752 0.413550 1.1442054 0.0 + 0.7956 0.427447 1.1820164 0.0 + 0.8161 0.440093 1.2163819 0.0 + 0.8365 0.451007 1.2453084 0.0 + 0.8569 0.460535 1.2682212 0.0 + 0.8774 0.467765 1.2823500 0.0 + 0.8978 0.471296 1.2839416 0.0 + 0.9182 0.470303 1.2701343 0.0 + 0.9387 0.460921 1.2317719 0.0 + 0.9591 0.434937 1.1470356 0.0 + 0.9795 0.377288 0.9746048 0.0 +``` + +The `MARKER_ACTDISK` option, as the same for the configuration file, is used to specify the markers of the actuator disk surfaces. All the next propeller data will be referred to these surfaces. +The `CENTER` option contains the coordinates of the actuator disk center, expressed in the grid reference system. +The `AXIS` option contains the components of the unit vector normal to the actuator disk surface. +The `RADIUS` option is used to specify the actuator disk radius. +The `ADV_RATIO` option contains the advance ratio of the propeller defined as , where *n* are the propeller rounds per second and *D* is the propeller diameter. +The `NROW` option isused to indicate the number of radial stations of the actuator disk in which we assign the load distribution. +The next row is a dummy row, so it is skipped. +Then there are 4 columns containing respectively: +- The non dimensional radial station +- The thrust coefficient distribution +- The power coefficient distribution +- The radial force coefficient distribution + +These coefficients are defined using the "Renard" definition: the reference force is , while the reference power is reference force is + +*It is possible to append other propellers data at the end of the input file. Note that the order and the format of the options should not be changed.* + +The visualization of the tabular input for this case is shown in the following figure: + +![dct input](../../../tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/dct_input.png) +Figure (5): Thrust coefficient distribution along the non-dimensional radius. + +![dcp input](../../../tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/dcp_input.png) +Figure (6): Power coefficient distribution along the non-dimensional radius. + +### Optimal Propeller Script + +As already anticipated, the [OptimalPropeller.py](https://github.com/su2code/SU2/tree/master/SU2_PY/OptimalPropeller.py) script can be used to automatically generate the propeller input data file when the details on the variable load are not known. +This script allows the user to use the `VARIABLE_LOAD` actuator disk type also when only total thrust is known. The variable load distribution is obtained by the inviscid theory of the optimal propeller [1]. + +The input is interactive, and requires the following data: +1. Number of radial stations (where local data should be generated). +2. CT: the total thrust coefficient defined using the "Renard" definition. +3. R: The propeller radius expressed in meters. +4. r_hub: the hub radius expressed in meters. +5. J: the advance ratio. +6. Vinf: the free-stream velocity expressed in m/s. +7. Here, the script asks if you want to use the tip loss Prandtl correction (*yes* is the default choise). +8. N: if you chose yes in the previous stage, it requires also the number of propeller blades. + +Once the input is given, the script provides 3 plots showing the tip loss Prandtl correction function, the axial and rotational interference factors and the thrust and power coefficients distributions along the non dimentional radius. +The script also provides 2 files: +- ActuatorDisk.cfg: containing the actuator disk boundary condition options needed in the configuration file. +- ActuatorDisk.dat: containing the propeller input data file. + +*Note that the two generated files have some empty fields that need to be filled.* + + +### References + +[1] *Glauert H., Airplane Propellers, in Aerodynamic Theory, Ed. Durand W. F., Vol. IV, pp. 169 - 360, Springer, 1935.* + +### Running SU2 + +The actuator disk with variable load test case is small and will execute relatively quickly on a single workstation or laptop in serial. To run this test case, follow these steps at a terminal command line: + 1. Move to the directory containing the configuration file ([propeller_variable_load.cfg](https://github.com/su2code/Tutorials/blob/feature_tutorial_ActuatorDisk/compressible_flow/ActuatorDisk_VariableLoad/propeller_variable_load.cfg)), the mesh file ([propeller_variable_load.su2](https://github.com/su2code/Tutorials/blob/feature_tutorial_ActuatorDisk/compressible_flow/ActuatorDisk_VariableLoad/propeller_variable_load.su2)) and the propeller input data file ([ActuatorDisk.dat](https://github.com/su2code/Tutorials/blob/feature_tutorial_ActuatorDisk/compressible_flow/ActuatorDisk_VariableLoad/ActuatorDisk.dat)). Make sure that the SU2 tools were compiled, installed, and that their install location was added to your path. + 2. Run the executable by entering + + ``` + $ SU2_CFD propeller_variable_load.cfg + ``` + + at the command line. + 3. SU2 will print residual updates with each iteration of the flow solver, and the simulation will terminate after meeting the specified convergence criteria. + 4. Files containing the results will be written upon exiting SU2. The flow solution can be visualized in ParaView (.vtk) or Tecplot (.dat for ASCII). + +### Results + +Some results for this test case are shown below. + +![Mach Number](../../../tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/MachNumber.png) +Figure (7): Mach number contour in the *x-z* plane. + +![Pressure Coefficient](../../../tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/ContourCp.png) +Figure (8): Pressure coefficient contour in the *x-z* plane. + +![Swirl Vectors](../../../tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/Swirl_Vectors.png) +Figure (9): Tangential velocity vectors just downstream the actuator disk. Swirl effect visualization. + +![Momentum X](../../../tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/MomentumX.png) +Figure (10): Momentum in normal direction along *x* for different stations. + +![Pressure Coefficient X](../../../tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/PressureCoeff.png) +Figure (11): Pressure coefficient along *x* for different stations. + +![Tangential Velocity X](../../../tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/Vt_x.png) +Figure (12): Tangential velocity component along *x* for different stations. + +![Pressure Coefficient Jump](../../../tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/DeltaCp.png) +Figure (13): Pressure coefficient jump along the non-dimensional radius. + +![Tangential Velocity Jump](../../../tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/Vt.png) +Figure (14): Tangential velocity component along *z* just upstream (State 1) and downstream (State 2) the actuator disk. diff --git a/_tutorials/incompressible_flow/Inc_Streamwise_Periodic/Inc_Streamwise_Periodic.md b/_tutorials/incompressible_flow/Inc_Streamwise_Periodic/Inc_Streamwise_Periodic.md new file mode 100644 index 00000000..209f97e0 --- /dev/null +++ b/_tutorials/incompressible_flow/Inc_Streamwise_Periodic/Inc_Streamwise_Periodic.md @@ -0,0 +1,207 @@ +--- +title: Streamwise Periodic Flow +permalink: /tutorials/Inc_Streamwise_Periodic/ +written_by: TobiKattmann +for_version: 7.1.0 +revised_by: +revision_date: +revised_version: +solver: INC_RANS +requires: SU2_CFD +complexity: intermediate +follows: Inc_Laminar_Flat_Plate +--- + + +## Goals + +Upon completing this tutorial, the user will be familiar with performing streamwise periodic simulations using the incompressible solver. All available features and limitations of streamwise periodic flow will be discussed. Consequently, the following capabilities of SU2 will be showcased in this tutorial: +- How to activate streamwise periodic flow without energy equation +- Switch between pressure drop and massflow prescription +- Adding the energy equation as true streamwise periodic flow and limitations +- Alternative to streamwise periodic temperature + +## Resources + +The resources can be found in the [incompressible_flow/Inc_Streamwise_Periodic](https://github.com/su2code/Tutorials/tree/master/incompressible_flow/Inc_Streamwise_Periodic) directory in the [tutorial repository](https://github.com/su2code/Tutorials). It contains the mesh file and two configuration files which will be discussed in this tutorial. Additionally, the script to create the used mesh with [gmsh](https://gmsh.info/) can be found that folder as well. + +A more detailed theory description is available in the Docs [here](/docs_v7/Streamwise-Periodicity). + +## Tutorial + +The following tutorial will walk you through the steps required when solving for a streamwise periodic flow using the incompressible solver. It is assumed you have already obtained and compiled the SU2_CFD code for a serial computation. If you have yet to complete these requirements, please see the [Download](/docs_v7/Download/) and [Installation](/docs_v7/Installation/) pages. +Users unfamiliar with using the incompressible solver can take a look at the other incompressible testcases, especially the [Laminar Flat Plate with Heat Transfer](/tutorials/Inc_Laminar_Flat_Plate/). + +### Background + +Flows through periodically repeating geometries can be approximated by just simulating a unit cell with streamwise periodicity. This model assumption of fully developed flow can be a justified approximation but has to be checked whether it is suitable. A 2D slice through a pin-fin heat-exchanger unit-cell is presented in this tutorial. + +### Problem Setup + +This problem will solve for the incompressible RANS flow the following conditions: +- Density (constant) = 1045.0 kg/m^3 +- Viscosity (constant) = 0.001385 kg/(m-s) +- Specific Heat Capacity (constant)= 3540.0 J/(kg-K) +- laminar Prandtl number (constant) = 11.7 + +As streamwise periodic flow is simulated, periodic boundaries are used instead of in-/outlets boundaries. The pin surfaces are heatlfux markers and are heated with 5e5 W/m^2. The remaining boundaries are symmetry markers. + +![Structured quad mesh](../../tutorials_files/incompressible_flow/Inc_Streamwise_Periodic/images/mesh_bc.png) + +*Figure (1)*: Figure of the computational mesh with the used boundary conditions. + +### Mesh Description + +The computational mesh for the fluid has 8477 quad elements and is therefore fully structured. In- and outlet are meshed with 50 points and a progression such that y+<1 everywhere as the SST turbulence model is used. Each quarter-pin is meshed with 45 points in streamwise direction. A [gmsh script](https://github.com/su2code/Tutorials/tree/master/incompressible_flow/Inc_Streamwise_Periodic/chtPinArray_2d.geo) is available to recreate/modify the mesh. + +### Configuration File Options + +The available options for streamwise periodic flow are explained in this section. + +Note that streamwise periodic flow is only available for the incompressible solver. + +Using streamwise periodic flow requires having a periodic marker pair which can be set using `MARKER_PERIODIC= (, , ...)`. The designated inlet has to be set first as a convention. The vector between periodic points on the in- and outlet has to be given as well in the case for translational periodicity as is discussed here. From the `config_template.cfg`: +``` +% Periodic boundary marker(s) (NONE = no marker) +% Format: ( periodic marker, donor marker, rotation_center_x, rotation_center_y, +% rotation_center_z, rotation_angle_x-axis, rotation_angle_y-axis, +% rotation_angle_z-axis, translation_x, translation_y, translation_z, ... ) +MARKER_PERIODIC= ( NONE ) +``` +For the rotation center and angle a zero has to provided such that in this case the marker definition looks like: +``` +MARKER_PERIODIC= ( fluid_inlet, fluid_outlet, 0.0,0.0,0.0, 0.0,0.0,0.0, 0.0111544,0.0,0.0 ) +``` +At the moment, only one periodic marker pair is allowed, i.e. the combination with spanwise periodic flow is not possible. + +`KIND_STREAMWISE_PERIODIC` activates streamwise periodic flow with the choice between a prescribed `PRESSURE_DROP` or `MASSFLOW`. With `PRESSURE_DROP` the prescribed value is set using `STREAMWISE_PERIODIC_PRESSURE_DROP` which also serves as a starting value if `MASSFLOW` is chosen. + +Use `STREAMWISE_PERIODIC_MASSFLOW` for the respective massflow. With a precribed massflow the necessary pressure drop is determined iteratively, i.e. based on the difference between actual and target massflow an update to the pressure drop is estimated. This update can be relaxed using `INC_OUTLET_DAMPING`. Starting with a conservative guess to `STREAMWISE_PERIODIC_PRESSURE_DROP` and `INC_VELOCITY_INIT` will most likely a wise move. + +If the energy equation is active then one can use `STREAMWISE_PERIODIC_TEMPERATURE= YES` if only heatflux and symmetry boundaries are used additional to the periodic markers. If that is not possible (i.e. if isothermal walls are used or a CHT interface is present), a heatsink at the outlet will automatically extract energy from the domain and will force the area-averaged inlet temperature to be identical to `INC_TEMPERATURE_INIT`. In order to support this process the user can provide an amount via `STREAMWISE_PERIODIC_OUTLET_HEAT` in Watts. If the value `0.0` (or none for that matter) is given, the integrated heat via `MARKER_HEATFLUX` is used. + +Below the relevant excerpt from the `config_template.cfg` is shown. +``` +% --------------------- STREAMWISE PERIODICITY DEFINITION ---------------------% +% +% Generally for streamwise periodicity one has to set MARKER_PERIODIC= (, , ...) +% appropriately as a boundary condition. +% +% Specify type of streamwise periodicity (default=NONE, PRESSURE_DROP, MASSFLOW) +KIND_STREAMWISE_PERIODIC= NONE +% +% Delta P [Pa] value that drives the flow as a source term in the momentum equations. +% Defaults to 1.0. +STREAMWISE_PERIODIC_PRESSURE_DROP= 1.0 +% +% Target massflow [kg/s]. Necessary pressure drop is determined iteratively. +% Initial value is given via STREAMWISE_PERIODIC_PRESSURE_DROP. Default value 1.0. +% Use INC_OUTLET_DAMPING as a relaxation factor. Default value 0.1 is a good start. +STREAMWISE_PERIODIC_MASSFLOW= 0.0 +% +% Use streamwise periodic temperature (default=NO, YES) +% If NO, the heatflux is taken out at the outlet. +% This option is only necessary if INC_ENERGY_EQUATION=YES +STREAMWISE_PERIODIC_TEMPERATURE= NO +% +% Prescribe integrated heat [W] extracted at the periodic "outlet". +% Only active if STREAMWISE_PERIODIC_TEMPERATURE= NO. +% If set to zero, the heat is integrated automatically over all present MARKER_HEATFLUX. +% Upon convergence, the area averaged inlet temperature will be INC_TEMPERATURE_INIT. +% Defaults to 0.0. +STREAMWISE_PERIODIC_OUTLET_HEAT= 0.0 +% +``` + +Additional `SCREEN_OUTPUT` for streamwise periodic flow is `STREAMWISE_MASSFLOW`, `STREAMWISE_DP` (i.e. Delta P or pressure drop) and `STREAMWISE_HEAT` which shows the heatflux integrated over HEATFLUX_MARKERS. By adding `STREAMWISE_PERIODIC` to `HISTORY_OUTPUT` those values are written the history file. + +In this tutorial, 2 configuration files are provided which differ in the streamwise periodic options. + +[First](https://github.com/su2code/Tutorials/tree/master/incompressible_flow/Inc_Streamwise_Periodic/sp_pinArray_dp_hf_tp.cfg), one of the simplest setups with a user provided pressure drop over the domain is chosen. Temperature periodicity is activated. +``` +% --------------------- STREAMWISE PERIODICITY DEFINITION ---------------------% +% +KIND_STREAMWISE_PERIODIC= PRESSURE_DROP +STREAMWISE_PERIODIC_PRESSURE_DROP= 208.023676 +% +STREAMWISE_PERIODIC_TEMPERATURE= YES +% +``` +For the [second configuration](https://github.com/su2code/Tutorials/tree/master/incompressible_flow/Inc_Streamwise_Periodic/sp_pinArray_mf_hf.cfg) a massflow is prescribed. The initial pressure drop matches the final value but changes within the first iterations until the flow converges. Streamwise periodic temperature is deactivated so the outlet heatsink is used. In this case the 3 heatflux markers form a full circle which makes an exact computation of the introduced heatflux possible which can be then specified using the `STREAMWISE_PERIODIC_OUTLET_HEAT`. Note that an exact computation of this value is not always possible and also not necessary as the area-averaged inlet temperature must match `INC_TEMPERATURE_INIT` upon convergence which serves as an anchor for the temperature. +``` +% --------------------- STREAMWISE PERIODICITY DEFINITION ---------------------% +% +KIND_STREAMWISE_PERIODIC= MASSFLOW +STREAMWISE_PERIODIC_MASSFLOW= 0.85 +STREAMWISE_PERIODIC_PRESSURE_DROP= 208.023676 +INC_OUTLET_DAMPING= 0.01 +% +STREAMWISE_PERIODIC_TEMPERATURE= NO +% Computation of outlet heat: Heatflux * Area = Heatflux * pi * radius (as we have an accumulated full circle) +% 5e5[W/m] * pi * 2e-3[m] +STREAMWISE_PERIODIC_OUTLET_HEAT= -3141.5926 +% +``` + +### Running SU2 + +To run this test case, follow these steps at a terminal command line: + 1. Move to the directory containing the config files and the mesh files. Make sure that the SU2 tools were compiled, installed, and that their install location was added to your path. + 2. Run the executable by entering + + ``` + $ SU2_CFD sp_pinArray_2d_dp_hf_tp.cfg + ``` + at the command line for the first configuration. The filename makes use of some abbreviations: sp=streamwise periodic, 2d=2 dimensions, dp= delta p (prescribed), hf= heatflux (markers only), tp=temperature periodicity. The second configuration is run with + + ``` + $ SU2_CFD sp_pinArray_2d_mf_hf.cfg + ``` + + If SU2 is compiled with MPI support then you can execute SU2 in parallel + + ``` + $ mpirun -n <#cores> SU2_CFD sp_pinArray_2d_mf_hf.cfg + ``` + + where more than 8 cores do not provide major speedups due to the small mesh size. + 3. SU2 will print residual updates with each outer iteration of the flow solver, and the simulation will terminate after reaching the specified convergence criteria. + 4. Files containing the results will be written upon exiting SU2. The provided configuration files will write Paraview Multiblock files (.vtm) by default. The flow solution can be visualized in ParaView (.vtk) or Tecplot (.dat for ASCII) by setting the respective `OUTPUT_FILES` fields. + +### Results + +The results for both simulations are discussed in this section. The difference is only visible for Temperature as both configurations end up having the same pressure drop and massflow by construction. + +The visualizations are done using [Paraview](https://www.paraview.org/). To better visualize the differences, the `Reflect` (along symmetry axes) and `Transform` (at periodic interface) filters were used. + +The velocity contour lines are shown in Figure (2). The turquoise line delimits the simulation domain. Demonstrating the computation of a fully developed flow on just a representative unit cell. + +![Structured quad mesh](../../tutorials_files/incompressible_flow/Inc_Streamwise_Periodic/images/velocity_magnitude.png) + +*Figure (2)*: Velocity magnitude contour lines. The turquoise line delimits the simulation domain. + +In Figure (3) the pressure is visualized. On the top the periodic pressure which is used as solution variable does not exhibit a pressure drop over the domain and can be interpreted to show only local phenomena. On the bottom the recovered ("physical") pressure subtracts a linear term over the domain and therefore recovers the expected pressure drop. Note that negative pressures are possible in the incompressible solver as only pressure differences are used and the absolute pressure value is irrelevant. + +![Structured quad mesh](../../tutorials_files/incompressible_flow/Inc_Streamwise_Periodic/images/pressure_comparison_to_recovered.png) + +*Figure (3)*: Pressure contour lines. Top: Periodic pressure that is used as solution variable. Bottom: Recovered pressure computed as postprocessing variable. + +Similar to pressure is the handling of the streamwise periodic temperature. The visualization in Figure (4) is from the first discussed configuration. On the top the temperature filed is truly periodic and on the bottom the recoverd temperature allows a real world interpretation. + +![Structured quad mesh](../../tutorials_files/incompressible_flow/Inc_Streamwise_Periodic/images/temperature_comparison_to_recovered.png) + +*Figure (4)*: Temperature contour lines. Top: Periodic temperature that is used as solution variable. Bottom: Recovered temperature computed as postprocessing variable. + +The temperature of the second configuration with the outlet heat sink is shown in Figure (5). Of course in this case only one temperature to be analyzed. Note that the temperature on the periodic in- and outlet are identical. The outlet heat sink is necessary to prevent an infinite rise in temperature in the case of only heatflux boundaries. + +![Structured quad mesh](../../tutorials_files/incompressible_flow/Inc_Streamwise_Periodic/images/temperature_outlet_heatsink.png) + +*Figure (5)*: Temperature contour lines for simulation with an outlet heatsink. + +### Additional remarks + +The **extension to CHT** cases is straight forward as the options in the fluid zone remain the same. `STREAMWISE_PERIODIC_TEMPERATURE= NO` has to be set as that feature is not compatible with the conjugate heat interfaces. A `STREAMWISE_PERIODIC_OUTLET_HEAT` can be provided by just integrating all heatflux markers of the combined fluid and heat zones. This of course does not handle possible isothermal walls but the excess energy is automatically balanced. A [2D CHT testcase](https://github.com/su2code/TestCases/tree/master/incomp_navierstokes/streamwise_periodic/chtPinArray_2d) based on the geometry presented here and a [3D CHT testcase](https://github.com/su2code/TestCases/tree/master/incomp_navierstokes/streamwise_periodic/chtPinArray_3d) are available in the testcases of SU2 under `TestCases/incomp_navierstokes/streamwise_periodic/`. + +**Temperature depended material properties** are only reasonable to be used with `STREAMWISE_PERIODIC_TEMPERATURE= NO` as the solution variable Temperature would be truly periodic and therefore non-physical. The recovered Temperature would need to be used instead which is not available in the code at the moment. + +The **discrete adjoint** does not work with `KIND_STREAMWISE_PERIODIC= MASSFLOW` in the moment. All other features are working with the discrete adjoint solver. \ No newline at end of file diff --git a/_tutorials/index.md b/_tutorials/index.md index a2e84cb0..51fff3bf 100644 --- a/_tutorials/index.md +++ b/_tutorials/index.md @@ -63,10 +63,11 @@ Simulation of external, viscous, incompressible flow around the NACA 0012 using Simulation of internal, laminar, incompressible flow over a backward-facing step with an inlet velocity profile input from file. * [Laminar Buoyancy-driven Cavity](/tutorials/Inc_Laminar_Cavity/) Simulation of internal, laminar, incompressible flow in a differentially-heated cavity under the influence of gravity (classical natural convection case). -* [Heated Cylinders with Conjugate Heat Transfer](/tutorials/Inc_Heated_Cylinders/) -Simulation of a coupled CHT problem incorporating multiple physical zones. +* [Streamwise Periodicity](/tutorials/Inc_Streamwise_Periodic/) +Simulation of internal, turbulent, incompressible flow in a unit cell of a 2D pin-fin heat exchanger. #### Structural Mechanics + * [Linear Elasticity](/tutorials/Linear_Elasticity/) Simulation of an elasticity problem with small deformations * [Linear Dynamics](/tutorials/Linear_Dynamics/) @@ -77,12 +78,19 @@ Simulation of a non-linear structural problem with large deformations Simulation of a non-linear problem with multiple material definitions #### Multiphysics + * [Static Fluid-Structure Interaction](/tutorials/Static_FSI/) Non-linear structural mechanics coupled with incompressible Navier-Stokes flow +* [Dynamic Fluid-Structure Interaction with the Python wrapper](/tutorials/Dynamic_FSI_Python/) +Linear Nastran-like model coupled with compressible unsteady RANS equations using the Python wrapper +* [Static Conjugate Heat Transfer](/tutorials/Static_CHT/) +Simulation of multiple heated cylinders in incompressible fluid flow. +* [Unsteady Conjugate Heat Transfer](/tutorials/Inc_Heated_Cylinders_Unsteady/) +Simulation of an unsteady coupled CHT problem incorporating multiple physical zones. #### Shape Design Features -* [Unconstrained shape design of an transonic inviscid airfoil at a cte. AoA](/tutorials/Inviscid_2D_Unconstrained_NACA0012/) +* [Unconstrained shape design of an transonic inviscid airfoil at a cte. AoA](/tutorials/Inviscid_2D_Unconstrained_NACA0012/) Get a basic introduction to the SU2 design capabilities by performing an optimal shape design of a 2D geometry (isolated airfoil) without constraints. * [Constrained shape design of a transonic turbulent airfoil at a cte. CL](/tutorials/Turbulent_2D_Constrained_RAE2822/) Perform an optimal shape design of a 2D geometry (isolated airfoil at turbulent regime) with flow and geometrical constraints. diff --git a/_tutorials/multiphysics/Unsteady_FSI_Python/Dynamic_FSI_Python.md b/_tutorials/multiphysics/Unsteady_FSI_Python/Dynamic_FSI_Python.md index efc42ea0..91f25577 100644 --- a/_tutorials/multiphysics/Unsteady_FSI_Python/Dynamic_FSI_Python.md +++ b/_tutorials/multiphysics/Unsteady_FSI_Python/Dynamic_FSI_Python.md @@ -2,7 +2,7 @@ title: Dynamic Fluid-Structure Interaction (FSI) using the Python wrapper and a Nastran structural model permalink: /tutorials/Dynamic_FSI_Python/ written_by: Nicola-Fonzi -for_version: 7.0.6 +for_version: 7.1.0 revised_by: revision_date: revised_version: @@ -37,6 +37,8 @@ You can find the resources for this tutorial in [this folder](https://github.com In the [main directory](https://github.com/su2code/Tutorials/tree/master/multiphysics/unsteady_fsi_python), there are other 5 subdirectories containing the configuration files and structural models for the different Mach numbers. Please do not mix those files as the structural models and configurations are different at the different aerodynamic conditions. +Before starting this tutorial, please be sure to have compiled SU2 with the python wrapper enabled. Further, two packages are required that can be downloaded from your package manager: libspatialindex and petsc, with their python counterparts rtree and petsc4py. + ### Background The solution process will follow a very similar flow as the one explained in [this](https://su2code.github.io/tutorials/Static_FSI/) tutorial, @@ -61,7 +63,7 @@ $$ \end{cases} $$ -Where $$m$$ is the mass of the airfoil, $$I$$ the inertia around the center of mass, $$S$$ the static moment of inertia at the rotation axis, $$C$$ and $$K$$ the dampings and stiffnesses respectively. $$L$$ and $$M$$ are the lift and pitching up moment. +Where $$m$$ is the mass of the airfoil, $$I$$ the inertia around the rotation axis, $$S$$ the static moment of inertia at the rotation axis, $$C$$ and $$K$$ the dampings and stiffnesses respectively. $$L$$ and $$M$$ are the lift and pitching up moment. These equations are usually adimensionalised to obtain results independent from the free-stream density of the flow. Indeed, we can define the following parameters: @@ -197,8 +199,6 @@ Available keywords for the config file: * __NMODES__ (int): number of modes to use in the analysis. If n modes are available in the punch file, but only the first m + + +## Goals + +This tutorial is a follow-up on the [heated cylinders with conjugate heat transfer tutorial](/tutorials/Inc_Heated_Cylinders/) where a steady CHT solution was computed for a problem involving multiple physical zones. +The following capabilities of SU2 will be showcased in this tutorial: + +- Time domain and time-marching config file options (plus related ones) for unsteady simulations +- Use of time iterations, outer and inner iterations +- Paraview multiblock output + +The intent of this tutorial is to demonstrate how a steady CHT simulation can be turned into an unsteady one. + +## Resources + +The resources for this tutorial can be found in the [Inc_Heated_Cylinders_Unsteady](https://github.com/su2code/Tutorials/tree/master/multiphysics/unsteady_cht) directory in the [tutorial repository](https://github.com/su2code/Tutorials). You will need the configuration files for all physical zones ([flow_cylinder.cfg](https://github.com/su2code/Tutorials/tree/master/multiphysics/unsteady_cht/flow_cylinder.cfg), [solid_cylinder1.cfg](https://github.com/su2code/Tutorials/tree/master/multiphysics/unsteady_cht/solid_cylinder1.cfg), [solid_cylinder2.cfg](https://github.com/su2code/Tutorials/tree/master/multiphysics/unsteady_cht/solid_cylinder2.cfg), [solid_cylinder3.cfg](https://github.com/su2code/Tutorials/tree/master/multiphysics/unsteady_cht/solid_cylinder3.cfg)), the cofiguration file to invoke a multiphysics simulation run ([cht_2d_3cylinders.cfg](https://github.com/su2code/Tutorials/tree/master/multiphysics/unsteady_cht/cht_2d_3cylinders.cfg)) and the mesh file ([mesh_cht_3cyl.su2](https://github.com/su2code/Tutorials/tree/master/multiphysics/unsteady_cht/mesh_cht_3cyl.su2)). + +## Tutorial + +The following tutorial will walk you through the steps required when solving for an unsteady coupled CHT solution. It is assumed you have already obtained and compiled the SU2_CFD code for a serial computation. If you have yet to complete these requirements, please see the [Download](/docs/Download/) and [Installation](/docs/Installation/) pages and that make sure you have completed the [heated cylinders with conjugate heat transfer tutorial](/tutorials/Inc_Heated_Cylinders/). + +### Background + +For unsteady flows around walls that are transferring heat from an adjacent (solid) zone, the coupling of temperature and heat flux distributions has to be resolved for each and every time step. Both will vary over time as they depend on the current flow field. + +### Problem Setup + +The problem setup is the same as in the [heated cylinders with conjugate heat transfer tutorial](/tutorials/Inc_Heated_Cylinders/) except for the density. It is increased in all zones by a factor of 100 so that for the flow we obtain a Reynolds number of 4000 which will make it unsteady. Thus we set +``` +INC_DENSITY_INIT= 0.0210322 +``` +in [flow_cylinder.cfg](https://github.com/su2code/Tutorials/tree/master/multiphysics/unsteady_cht/flow_cylinder.cfg) and + +``` +MATERIAL_DENSITY= 0.0210322 +``` +in [solid_cylinder1.cfg](https://github.com/su2code/Tutorials/tree/master/multiphysics/unsteady_cht/solid_cylinder1.cfg), [solid_cylinder2.cfg](https://github.com/su2code/Tutorials/tree/master/multiphysics/unsteady_cht/solid_cylinder2.cfg) and [solid_cylinder3.cfg](https://github.com/su2code/Tutorials/tree/master/multiphysics/unsteady_cht/solid_cylinder3.cfg) + +For simplicity we leave all other parameters unchanged. + +### Mesh Description + +The [mesh](https://github.com/su2code/Tutorials/tree/master/multiphysics/unsteady_cht/mesh_cht_3cyl.su2) is the same as in the [heated cylinders with conjugate heat transfer tutorial](/tutorials/Inc_Heated_Cylinders/). + +### Configuration File Options + +An unsteady simulation is set up by enabling the time domain and choosing a time marching algorithm in the [master config file](https://github.com/su2code/Tutorials/tree/master/multiphysics/unsteady_cht/cht_2d_3cylinders.cfg): + +``` +TIME_DOMAIN = YES +% +% +TIME_MARCHING= DUAL_TIME_STEPPING-2ND_ORDER +``` + +The time marching parameters have to match the flow physics that should be resolved. For a given inlet velocity of 3.40297 m/s at Re = 4000, the Strouhal number estimation for the most upstream cylinder is Sr = 0.21. This gives a frequency of f = Sr*v = 0.71Hz for the vortex shedding so that a time step of 0.05s is chosen in the [master config file](https://github.com/su2code/Tutorials/tree/master/multiphysics/unsteady_cht/cht_2d_3cylinders.cfg): + +``` +TIME_STEP= 0.05 +``` + +In order to sufficiently resolve the coupling in each time step, we set the number of outer iterations to 200 in the [master config file](https://github.com/su2code/Tutorials/tree/master/multiphysics/unsteady_cht/cht_2d_3cylinders.cfg): + +``` +OUTER_ITER = 200 +``` + +The number of inner (zone-internal) iterations is set to 1 by default. We do not have to touch any of the zone-specific config files for unsteady options. + +### Running SU2 + +One time iteration will run rather quick and it is up to the user for how long the simulation should run or, equivalently, which physical time span should be covered. In the video above, 1000 time steps had been computed to generate a 50s realtime video. See the [heated cylinders with conjugate heat transfer tutorial](/tutorials/Inc_Heated_Cylinders/) how to execute SU2_CFD. \ No newline at end of file diff --git a/tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/ContourCp.png b/tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/ContourCp.png new file mode 100644 index 00000000..12ab564f Binary files /dev/null and b/tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/ContourCp.png differ diff --git a/tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/DeltaCp.png b/tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/DeltaCp.png new file mode 100644 index 00000000..d016963f Binary files /dev/null and b/tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/DeltaCp.png differ diff --git a/tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/Domain.png b/tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/Domain.png new file mode 100644 index 00000000..17398586 Binary files /dev/null and b/tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/Domain.png differ diff --git a/tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/GridDisk.png b/tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/GridDisk.png new file mode 100644 index 00000000..38c12d46 Binary files /dev/null and b/tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/GridDisk.png differ diff --git a/tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/GridSpinner.png b/tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/GridSpinner.png new file mode 100644 index 00000000..7ab717b3 Binary files /dev/null and b/tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/GridSpinner.png differ diff --git a/tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/GridXY.png b/tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/GridXY.png new file mode 100644 index 00000000..0da5abee Binary files /dev/null and b/tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/GridXY.png differ diff --git a/tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/MachNumber.png b/tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/MachNumber.png new file mode 100644 index 00000000..b76556f8 Binary files /dev/null and b/tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/MachNumber.png differ diff --git a/tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/MomentumX.png b/tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/MomentumX.png new file mode 100644 index 00000000..86e75b97 Binary files /dev/null and b/tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/MomentumX.png differ diff --git a/tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/PressureCoeff.png b/tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/PressureCoeff.png new file mode 100644 index 00000000..1ee557c8 Binary files /dev/null and b/tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/PressureCoeff.png differ diff --git a/tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/SwirlAndCp.png b/tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/SwirlAndCp.png new file mode 100644 index 00000000..34cfc987 Binary files /dev/null and b/tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/SwirlAndCp.png differ diff --git a/tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/Swirl_Vectors.png b/tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/Swirl_Vectors.png new file mode 100644 index 00000000..54092660 Binary files /dev/null and b/tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/Swirl_Vectors.png differ diff --git a/tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/Vt.png b/tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/Vt.png new file mode 100644 index 00000000..c47dbb60 Binary files /dev/null and b/tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/Vt.png differ diff --git a/tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/Vt_x.png b/tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/Vt_x.png new file mode 100644 index 00000000..695be9ba Binary files /dev/null and b/tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/Vt_x.png differ diff --git a/tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/dcp_input.png b/tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/dcp_input.png new file mode 100644 index 00000000..15c5ff21 Binary files /dev/null and b/tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/dcp_input.png differ diff --git a/tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/dct_input.png b/tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/dct_input.png new file mode 100644 index 00000000..35ccb8da Binary files /dev/null and b/tutorials_files/compressible_flow/ActuatorDisk_VariableLoad/images/dct_input.png differ diff --git a/tutorials_files/incompressible_flow/Inc_Streamwise_Periodic/images/mesh_bc.png b/tutorials_files/incompressible_flow/Inc_Streamwise_Periodic/images/mesh_bc.png new file mode 100644 index 00000000..922bf06e Binary files /dev/null and b/tutorials_files/incompressible_flow/Inc_Streamwise_Periodic/images/mesh_bc.png differ diff --git a/tutorials_files/incompressible_flow/Inc_Streamwise_Periodic/images/pressure_comparison_to_recovered.png b/tutorials_files/incompressible_flow/Inc_Streamwise_Periodic/images/pressure_comparison_to_recovered.png new file mode 100644 index 00000000..5f662bf4 Binary files /dev/null and b/tutorials_files/incompressible_flow/Inc_Streamwise_Periodic/images/pressure_comparison_to_recovered.png differ diff --git a/tutorials_files/incompressible_flow/Inc_Streamwise_Periodic/images/temperature_comparison_to_recovered.png b/tutorials_files/incompressible_flow/Inc_Streamwise_Periodic/images/temperature_comparison_to_recovered.png new file mode 100644 index 00000000..f3d0d0a5 Binary files /dev/null and b/tutorials_files/incompressible_flow/Inc_Streamwise_Periodic/images/temperature_comparison_to_recovered.png differ diff --git a/tutorials_files/incompressible_flow/Inc_Streamwise_Periodic/images/temperature_outlet_heatsink.png b/tutorials_files/incompressible_flow/Inc_Streamwise_Periodic/images/temperature_outlet_heatsink.png new file mode 100644 index 00000000..cf4fcf5c Binary files /dev/null and b/tutorials_files/incompressible_flow/Inc_Streamwise_Periodic/images/temperature_outlet_heatsink.png differ diff --git a/tutorials_files/incompressible_flow/Inc_Streamwise_Periodic/images/velocity_magnitude.png b/tutorials_files/incompressible_flow/Inc_Streamwise_Periodic/images/velocity_magnitude.png new file mode 100644 index 00000000..d72002dd Binary files /dev/null and b/tutorials_files/incompressible_flow/Inc_Streamwise_Periodic/images/velocity_magnitude.png differ diff --git a/tutorials_files/incompressible_flow/Inc_Heated_Cylinders/images/coupled_cht.png b/tutorials_files/multiphysics/steady_cht/images/coupled_cht.png similarity index 100% rename from tutorials_files/incompressible_flow/Inc_Heated_Cylinders/images/coupled_cht.png rename to tutorials_files/multiphysics/steady_cht/images/coupled_cht.png diff --git a/tutorials_files/multiphysics/steady_cht/images/heated_cylinders_ffd.png b/tutorials_files/multiphysics/steady_cht/images/heated_cylinders_ffd.png new file mode 100644 index 00000000..24284b32 Binary files /dev/null and b/tutorials_files/multiphysics/steady_cht/images/heated_cylinders_ffd.png differ diff --git a/tutorials_files/incompressible_flow/Inc_Heated_Cylinders/images/heated_cylinders_mesh.png b/tutorials_files/multiphysics/steady_cht/images/heated_cylinders_mesh.png similarity index 100% rename from tutorials_files/incompressible_flow/Inc_Heated_Cylinders/images/heated_cylinders_mesh.png rename to tutorials_files/multiphysics/steady_cht/images/heated_cylinders_mesh.png diff --git a/tutorials_files/incompressible_flow/Inc_Heated_Cylinders/images/heated_cylinders_sens.png b/tutorials_files/multiphysics/steady_cht/images/heated_cylinders_sens.png similarity index 100% rename from tutorials_files/incompressible_flow/Inc_Heated_Cylinders/images/heated_cylinders_sens.png rename to tutorials_files/multiphysics/steady_cht/images/heated_cylinders_sens.png