You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -33,9 +33,9 @@ A sketch of the problem at hand is presented below:
33
33
34
34
### Resources
35
35
36
-
You can find the resources for this tutorial in the folder[fsi/steady_state](https://github.com/su2code/Tutorials/tree/master/multiphysics/steady_fsi) of the [Tutorials repository](https://github.com/su2code/Tutorials). There is a [FSI config file](https://github.com/su2code/Tutorials/tree/master/multiphysics/steady_fsi/config_fsi_steady.cfg) and two sub-config files for the [flow](https://github.com/su2code/Tutorials/tree/master/multiphysics/steady_fsi/config_channel.cfg)and [structural](https://github.com/su2code/Tutorials/tree/master/multiphysics/steady_fsi/config_cantilever.cfg) subproblems.
36
+
You can find the resources for this tutorial in [this folder](https://github.com/su2code/Tutorials/tree/master/multiphysics/unsteady_fsi_python) of the [Tutorials repository](https://github.com/su2code/Tutorials). There is a [matlab file](https://github.com/su2code/Tutorials/tree/master/multiphysics/unsteady_fsi_python/FlatPlateModel.m) that can be used to produce validation data with Theodorsen theory and the [mesh file](https://github.com/su2code/Tutorials/tree/master/multiphysics/unsteady_fsi_python/airfoil.su2).
37
37
38
-
Moreover, you will need two mesh files for the [flow domain](https://github.com/su2code/Tutorials/tree/master/multiphysics/steady_fsi/mesh_channel.su2)and the [cantilever](https://github.com/su2code/Tutorials/tree/master/multiphysics/steady_fsi/mesh_cantilever.su2).
38
+
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.
39
39
40
40
### Background
41
41
@@ -163,6 +163,18 @@ TIME_DOMAIN = YES
163
163
TIME_STEP= 1e-3
164
164
```
165
165
166
+
It is important to set an appropriate convergence criteria for the fluid zone. Indeed, while the structural part is linear and requires no interations, it is important that
167
+
the fluid zone correcly converges for accurate results.
168
+
169
+
The relative residual cannot be used as this is reset at each inner iteration. Thus, aver the first inner loop, it would be difficult to obtain convergence as the absolute
170
+
residuals are already quite low. For this reason we will use:
171
+
172
+
```
173
+
CONV_CRITERIA = RESIDUAL
174
+
CONV_FIELD= RMS_DENSITY
175
+
CONV_RESIDUAL_MINVAL= -9.0
176
+
```
177
+
166
178
#### Configuration File for the solid zone
167
179
168
180
This configuration file will be read by the structural python solver included in SU2, that will read the preprocessed Nastran model.
@@ -177,7 +189,7 @@ structural deformations when the body is surrounded by the flow
177
189
178
190
Available keyword for the config file:
179
191
180
-
NMODES (int): number of modes to use in the analysis -> if n modes are available in
192
+
NMODES (int): number of modes to use in the analysis. If n modes are available in
181
193
the punch file, but only the first m<n are required, set this to m
182
194
183
195
IMPOSED_MODE (int): mode with an imposed motion
@@ -238,33 +250,50 @@ The modes are coupled, thus appropriate initial conditions for both can be obtai
238
250
The most important interface configuration keywords are:
239
251
240
252
NDIM (int): 2 or 3 depending if the model is bidimensional or tridimensional
253
+
241
254
RESTART_ITER (int): Restart iteration
255
+
242
256
TIME_TRESHOLD (int): Time iteration after which fluid and structure are coupled
243
257
in an unsteady simulation
258
+
244
259
NB_FSI_ITER (int): Number of max internal iterations to couple fluid and structure
260
+
245
261
RBF_RADIUS (float): Radius for the RBF interpolation. It is dimensional (i.e. in meters)
246
262
and must be set so that at least 5 structural points are always
247
263
inside a sphere with that radius and centered in any of the
248
264
structural nodes. The more nodes are included, the better
249
265
the interpolation. However, with larger radius, the interpolation
250
-
matrix may become close to singular.
266
+
matrix may become close to singular
267
+
251
268
AITKEN_PARAM (float): Under relaxation parameter, between 0 and 1
269
+
252
270
UNST_TIMESTEP (float): Physical time step size in unsteady simulations, must match
253
-
the one in the other cfg files.
254
-
UNST_TIME (float): Physical simulation time for unsteady problems.
255
-
FSI_TOLERANCE (float): Tolerance for inner loop convergence between fluid and structure
271
+
the one in the other cfg files
272
+
273
+
UNST_TIME (float): Physical simulation time for unsteady problems
274
+
275
+
FSI_TOLERANCE (float): Tolerance for inner loop convergence between fluid and structure. This is the maximum average structural displacements, between two inner iterations,
276
+
that can be accepted
277
+
256
278
CFD_CONFIG_FILE_NAME (string): Path of fluid cfg file
279
+
257
280
CSD_SOLVER (string): Behaviour of the structural solver to be used. AEROELASTIC if
258
281
the structural equation of motions must be solved, IMPOSED if
259
-
a movement of the structure is imposed.
282
+
a movement of the structure is imposed
283
+
260
284
CSD_CONFIG_FILE_NAME (string): Path to solid cfg file
285
+
261
286
RESTART_SOL (string): YES or NO
287
+
262
288
MATCHING_MESH (string): YES or NO, the fluid and structural mesh match at the interface
289
+
263
290
MESH_INTERP_METHOD (string): Interpolation method in case of nonmatching meshes. TPS or RBF
291
+
264
292
DISP_PRED (string): Displacement predictor order FIRST_ORDER or SECOND_ORDER. To
265
-
be used in unsteady simulations.
266
-
AITKEN_RELAX (string): DYNAMIC or STATIC. It can be automatically changed during
267
-
the simulation.
293
+
be used in unsteady simulations
294
+
295
+
AITKEN_RELAX (string): DYNAMIC or STATIC
296
+
268
297
TIME_MARCHING (string): YES or NO
269
298
270
299
```
@@ -288,185 +317,31 @@ TIME_MARCHING = YES
288
317
```
289
318
### Running SU2
290
319
291
-
Follow the links provided to download the [FSI config file](https://github.com/su2code/Tutorials/blob/master/fsi/steady_state/config_fsi_steady.cfg) and the [flow](https://github.com/su2code/Tutorials/blob/master/fsi/steady_state/config_channel.cfg) and [structural](https://github.com/su2code/Tutorials/blob/master/fsi/steady_state/config_cantilever.cfg) sub-config files.
292
-
293
-
Also, you will need two files for the [channel mesh](https://github.com/su2code/Tutorials/blob/master/fsi/steady_state/mesh_channel.su2) and the [cantilever mesh](https://github.com/su2code/Tutorials/blob/master/fsi/steady_state/mesh_cantilever.su2). Please note that the latter is different from the structural mechanics tutorial due to a different definition of the boundary conditions.
294
-
295
-
Execute the code with the standard command and using the multi-zone config file
296
-
297
-
```
298
-
$ SU2_CFD config_fsi_steady.cfg
299
-
```
300
-
301
-
which will show the following convergence history:
The code is stopped as soon as the values of ```avg[bgs][0]``` and ```avg[bgs][1]``` are below the convergence criteria set in the config file.
329
-
330
-
The displacement field on the structural domain and the velocity field on the flow domain obtained in ```fsi_steady_1.vtu```_and ```fsi_steady_0.vtu``` respectively are shown below:
$ mpirun -np X python3 /your/path/to/fsi_computation.py --parallel -f fsi.cfg
369
332
```
370
333
371
-
where the -9 convergence parameter is reached in almost half the iterations as per the non-relaxed case.
334
+
Substituting X with the appropriate number of cores.
372
335
373
-
#### Printing the inner convergence
374
-
375
-
Sometimes, especially when things don't work as expected, it's interesting to visualize the convergence of each of the subproblems. This can be achieved enabling
376
-
377
-
```
378
-
WRT_ZONE_CONV = YES
379
-
```
336
+
Generate validation data running the matlab script. This will produce the required database containing the time history of angle of attack and vertical displacement.
380
337
381
-
in the main config file of the multizone problem, ```config_fsi_steady.cfg```. In most cases we will not be interested on every single inner iteration of the fluid domain; we can use
382
-
383
-
```
384
-
SCREEN_WRT_FREQ_INNER = 10
385
-
```
386
-
387
-
in ```config_channel.cfg``` to limit the printout to every 10 iterations. The resulting screen output is the following:
where it can be observed that the multizone summary corresponds to the non-relaxed case presented first, and each of the subproblems are converged to a very high accuracy level.
459
338
460
339
### References
461
340
$$^1$$ Sanchez, R. (2018), A coupled adjoint method for optimal design in fluid-structure interaction problems with large displacements, _PhD thesis, Imperial College London_, DOI: [10.25560/58882](https://doi.org/10.25560/58882)
462
341
463
-
$$^2$$ Matthies H. G. and Steindorf J. (2002), Partitioned but strongly coupled iteration schemes fornonlinear fluid–structure interaction, _Computers & Structures, 80(27–30):199–1999_.
464
-
465
342
### Attribution
466
343
467
-
If you are using this content for your research, please kindly cite the following reference in your derived works:
468
-
469
-
Sanchez, R. _et al._ (2018), [Coupled Adjoint-Based Sensitivities in Large-Displacement Fluid-Structure Interaction using Algorithmic Differentiation](https://spiral.imperial.ac.uk/handle/10044/1/51023), _Int J Numer Meth Engng, Vol 111, Issue 7, pp 1081-1107_. DOI: [10.1002/nme.5700](https://doi.org/10.1002/nme.5700)
344
+
Coming soon...
470
345
471
346
<dl>
472
347
This work is licensed under a <arel="license"href="http://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International License</a>
0 commit comments