FSI Tutorial 2D ============================================== Introduction ------------ We consider a 2d driven cavity example as sketched in Fig. :ref:`1.1 `. For further details and references we refer the reader to [Wall99]_ .. figure:: /_assets/Angabeskizze.jpg :alt: The driven cavity example in 2d :name: tut_fsi_preexo_2d:1.1 The driven cavity example in 2d You can find the complete journal in `tests/tutorials/tutorial_fsi.jou`. Within Cubit, open the Journal-Editor (*Tools*\ :math:`\to`\ *Journal Editor*), paste the text from the journal file and press *play*. Export the created geometry and mesh to an EXODUS file via *File*\ :math:`\to`\ *Export...*. During export, set the dimension explicitly to 2D. The FSI problem with a partitioned solver ------------------------------------------- Here, we create the |FOURC| input file for the FSI problem, that is solved using a partitioned scheme, which means that the fluid and the solid problem are solved sequentially. For a monolithic scheme, see :ref:`the section below`. Geometry description ~~~~~~~~~~~~~~~~~~~~ The geometry is described in the file `tutorial_fsi_2d.e` we created before. It contains two element blocks for the fluid and the structure domain, respectively. We reference this file in the input file and assign the correct element types and material properties to the blocks: .. code-block:: yaml STRUCTURE GEOMETRY: FILE: tutorial_fsi_2d.e ELEMENT_BLOCKS: - ID: 1 ELEMENT_NAME: WALL ELEMENT_DATA: MAT 2 KINEM nonlinear EAS none THICK 1.0 STRESS_STRAIN plane_strain GP 2 2 FLUID GEOMETRY: FILE: tutorial_fsi_2d.e ELEMENT_BLOCKS: - ID: 2 ELEMENT_NAME: FLUID ELEMENT_DATA: MAT 1 NA ALE MATERIALS: - MAT: 1 MAT_fluid: DYNVISCOSITY: 0.01 DENSITY: 1 - MAT: 2 MAT_ElastHyper: NUMMAT: 1 MATIDS: - 3 DENS: 500 - MAT: 3 ELAST_CoupNeoHooke: YOUNG: 250 - MAT: 4 MAT_Struct_StVenantKirchhoff: YOUNG: 1 NUE: 0 DENS: 1 General parameters ~~~~~~~~~~~~~~~~~~ We set the following parameters in the input file: .. code-block:: yaml PROBLEM TYPE: PROBLEMTYPE: Fluid_Structure_Interaction ALE DYNAMIC: ALE_TYPE: springs_spatial MAXITER: 4 TOLRES: 0.0001 TOLDISP: 0.0001 RESULTSEVERY: 1 LINEAR_SOLVER: 1 FLUID DYNAMIC: LINEAR_SOLVER: 2 TIMEINTEGR: Np_Gen_Alpha GRIDVEL: BDF2 ADAPTCONV: true ITEMAX: 50 STRUCTURAL DYNAMIC: INT_STRATEGY: Standard M_DAMP: 0.5 K_DAMP: 0.5 TOLDISP: 1e-12 TOLRES: 1e-12 TOLPRE: 1e-10 TOLINCO: 1e-10 PREDICT: ConstDisVelAcc LINEAR_SOLVER: 3 FSI DYNAMIC: MAXTIME: 3 NUMSTEP: 3 SECONDORDER: true SOLVER 1: SOLVER: UMFPACK AZSUB: 300 NAME: ALE solver SOLVER 2: SOLVER: Belos AZTOL: 1e-12 AZSUB: 300 NAME: Fluid solver SOLVER 3: SOLVER: UMFPACK AZSUB: 300 NAME: Structure solver We define the domain of the ALE problem as a clone of the fluid domain and assign a material: .. code-block:: yaml CLONING MATERIAL MAP: - SRC_FIELD: fluid SRC_MAT: 1 TAR_FIELD: ale TAR_MAT: 4 - ``FUNCT 1`` insert ``SYMBOLIC_FUNCTION_OF_SPACE_TIME (1-cos(2*t*pi/5))`` defining time-dependent inflow and lid movement - ``FUNCT 2`` insert ``SYMBOLIC_FUNCTION_OF_SPACE_TIME 10*(y-1)*(1-cos(2*t*pi/5))`` representing the spatial inflow distribution Safe the file under a different name, e.g. ’dc2d_fsi.head’. Boundary conditions ~~~~~~~~~~~~~~~~~~~ The boundary conditions are set as follows: - Dirichlet boundary conditions for structure, fluid and ALE: .. code-block:: yaml DESIGN LINE DIRICH CONDITIONS: - E: 1 ENTITY_TYPE: node_set_id NUMDOF: 2 ONOFF: - 1 - 1 VAL: - 0 - 0 FUNCT: - 0 - 0 - E: 5 ENTITY_TYPE: node_set_id NUMDOF: 3 ONOFF: - 1 - 1 - 0 VAL: - 0 - 0 - 0 FUNCT: - 0 - 0 - 0 - E: 6 ENTITY_TYPE: node_set_id NUMDOF: 3 ONOFF: - 1 - 1 - 0 VAL: - 1 - 0 - 0 FUNCT: - 1 - 0 - 0 - E: 7 ENTITY_TYPE: node_set_id NUMDOF: 3 ONOFF: - 1 - 1 - 0 VAL: - 1 - 0 - 0 FUNCT: - 2 - 0 - 0 DESIGN POINT DIRICH CONDITIONS: - E: 3 ENTITY_TYPE: node_set_id NUMDOF: 2 ONOFF: - 1 - 1 VAL: - 0 - 0 FUNCT: - 0 - 0 - E: 4 ENTITY_TYPE: node_set_id NUMDOF: 2 ONOFF: - 1 - 1 VAL: - 0 - 0 FUNCT: - 0 - 0 - E: 10 ENTITY_TYPE: node_set_id NUMDOF: 3 ONOFF: - 1 - 1 - 0 VAL: - 1 - 0 - 0 FUNCT: - 1 - 0 - 0 - E: 11 ENTITY_TYPE: node_set_id NUMDOF: 3 ONOFF: - 1 - 1 - 0 VAL: - 0 - 0 - 0 FUNCT: - 0 - 0 - 0 - E: 12 ENTITY_TYPE: node_set_id NUMDOF: 3 ONOFF: - 1 - 1 - 0 VAL: - 0 - 0 - 0 FUNCT: - 0 - 0 - 0 DESIGN LINE ALE DIRICH CONDITIONS: - E: 6 ENTITY_TYPE: node_set_id NUMDOF: 2 ONOFF: - 1 - 1 VAL: - 0 - 0 FUNCT: - 0 - 0 - E: 8 ENTITY_TYPE: node_set_id NUMDOF: 2 ONOFF: - 1 - 1 VAL: - 0 - 0 FUNCT: - 0 - 0 DESIGN POINT ALE DIRICH CONDITIONS: - E: 13 ENTITY_TYPE: node_set_id NUMDOF: 2 ONOFF: - 1 - 1 VAL: - 0 - 0 FUNCT: - 0 - 0 - FSI coupling conditions: .. code-block:: yaml DESIGN FSI COUPLING LINE CONDITIONS: - E: 2 ENTITY_TYPE: node_set_id coupling_id: 1 - E: 9 ENTITY_TYPE: node_set_id coupling_id: 1 Running the Simulation ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Run in a shell :: ./4C /output_prefix .. _`tut_fsi_preexo_2d:postprocess`: Postprocessing -------------- .. admonition:: Warning The procedure described here is likely outdated and needs to be update by the output taskforce! You can postprocess your results with any visualization software you like. In this tutorial, we choose *Paraview*. Before you can open the results, you have to generate a filter again. Call *make post_drt_ensight* in the |FOURC|-directory. Filter your results in the output directory with the call .. container:: center ``./post_drt_ensight --file=[outputdirectory]/outputprefix`` After this open *paraview*, go to - *File\ :math:`\to`\ Open Data* and select the filtered *\*.case file*. - Only for older versions of *Paraview*: - Select the time step in the *Select Time Value* window on the left and - shift *Byte order* to *little endian* - Click on *accept* (or *apply*) to activate the display. - In the *Display tab* (section *Color*) you can choose now between *Point pressure* and *Point velocity*, whatever you want to display. - Use a *warp vector* to visualize the simulation results on the deformed domain. - For the scale, activate the *Scalar bar* button in the *View section*. .. _`tut_fsi_preexo_2d:monolithic`: The FSI problem with a monolithic solver ---------------------------------------- There are two possibilities for monolithic schemes: - fluid-split: the fluid field is chosen as slave field, the structure field is chosen as master field. - structure-split: the structure field is chosen as slave field, the fluid field is chosen as master field. In order to use a monolithic solver, change the coupling algorithm ``COUPALGO`` in the ``FSI DYNAMIC`` section in the \*.head-file. Additionally, special care has to be taken of the interface degrees of freedom, that are subject to Dirichlet boundary conditions. The interface is always governed by the master field. The slave interface degrees of freedom do not occur in the global system of equations and, thus, are not allowed to carry Dirichlet boundary conditions. Tolerances for the nonlinear convergence check in monolithic FSI are set with the following parameters in the ``FSI DYNAMIC`` section: .. container:: center | ``TOL_DIS_INC_INF`` | ``TOL_DIS_INC_L2`` | ``TOL_DIS_RES_INF`` | ``TOL_DIS_RES_L2`` | ``TOL_FSI_INC_INF`` | ``TOL_FSI_INC_L2`` | ``TOL_FSI_RES_INF`` | ``TOL_FSI_RES_L2`` | ``TOL_PRE_INC_INF`` | ``TOL_PRE_INC_L2`` | ``TOL_PRE_RES_INF`` | ``TOL_RPE_RES_L2`` | ``TOL_VEL_INC_INF`` | ``TOL_VEL_INC_L2`` | ``TOL_VEL_RES_INF`` | ``TOL_VEL_RES_L2`` Fluid split ~~~~~~~~~~~ - Choose ``iter_monolithicfluidsplit`` as ``COUPALGO`` in the ``FSI DYNAMIC`` section. - Remove the Dirichlet condition on node set 12 in order to remove the Dirichlet boundary conditions from the fluid (=slave) interface degrees of freedom. Create the input file as described above. Start |FOURC| as usual. Structure split ~~~~~~~~~~~~~~~ - Choose ``iter_monolithicstructuresplit`` as ``COUPALGO`` in the ``FSI DYNAMIC`` section. - Remove the Dirichlet condition on node set 4 in order to remove the Dirichlet boundary conditions from the structure (=slave) interface degrees of freedom. Start |FOURC| as usual.