The question of a square-flap-fsi example based on turek-hron-fsi

Hi everyone!
I am new to precice.I am now trying to calculate a fluid-structure coupling calculus for a square column backed by a flexible plate, which is based on turek-hron-fsi. This example was modified from the turek-hron-fsi file. This example is also two-dimensional. I use blockMesh to mesh the whole fluid and make_grid in dealii to mesh the flexible plate, where the dealii related mesh code is as follows:

if (parameters.scenario == "FSI3")
  {
    // FSI 3
    n_x          = 20;//18;
    n_y          =  3;
    n_z          =  1;
/*  point_bottom = dim == 3 ? Point<dim>(0.24899, 0.19, -0.005) :
                              Point<dim>(0.24899, 0.19);
    point_tip =
      dim == 3 ? Point<dim>(0.6, 0.21, 0.005) : Point<dim>(0.6, 0.21);      */   
    
   point_bottom = dim == 3 ? Point<dim>(0.055, -0.0003, 0) :
                             Point<dim>(0.055, -0.0003);
     point_tip =
      dim == 3 ? Point<dim>(0.095, 0.0003, 0.03) : Point<dim>(0.095, 0.0003);    //square_flap     

    // IDs for FSI3
    id_flap_long_bottom  = 2; // x direction
    id_flap_long_top     = 3;
    id_flap_short_bottom = 0; // y direction
    id_flap_short_top    = 1;
  } 

// Same for both scenarios, only relevant for quasi-2D
const unsigned int id_flap_out_of_plane_bottom = 4; // z direction
const unsigned int id_flap_out_of_plane_top    = 5;

const std::vector<unsigned int> repetitions =
  dim == 2 ? std::vector<unsigned int>({n_x, n_y}) :
             std::vector<unsigned int>({n_x, n_y, n_z});

// Generate the mesh
GridGenerator::subdivided_hyper_rectangle(triangulation,
                                          repetitions,
                                          point_bottom,
                                          point_tip,
                                          /*colorize*/ true);


// refine all cells global_refinement times
const unsigned int global_refinement = 0;
triangulation.refine_global(global_refinement);

Where point_bottom and point_tip are the two corner points of the flex board. The dimensions of the flex plate are the ones I specified to match the fluid field grid dimensions. About whether the two correspond consistently or not this is not clear to me, all the time I have had some problems:

  1. the fluid field runs divergent during the coupling process, but I also tried to verify the flow field mesh reasonableness by performing only separate fluid field calculations, and found that there is no problem with this fluid field mesh operation
  2. i also tried to set the observation point (0.095, 0) in precice-config.xml to monitor the displacement and pressure data. I found that the observation location point in the result file is not the one I set (0.095, 0) and there is no displacement data.
    Observation point code:

    The data results are shown in the documentation.
    precice-Solid-watchpoint-Flap-Tip.log (1.3 KB)

I can’t solve this problem right now, I don’t know if it’s just a fluid mesh problem or a mismatch between the fluid and structural mesh that’s causing the coupling to diverge.
I hope someone with experience who knows how to do this will make some suggestions, thanks. If you need other related files, please leave a message.

Hi @cj1823149636,

there are different options to check your meshes visually.

You can use preCICE directly by exporting the interface meshes such that you can see the vertices passed to preCICE in paraView. You can find all relevant information regarding the configuration changes as well as the visualization on the Export configuration | preCICE - The Coupling Library documentation page.

As an alternative, you can directly inspect the meshes of OpenFOAM and deal.II using ParaView. Our Quickstart contains some useful information how you can accomplish that. The deal.II solver produces vtk files you can directly load into ParaView.

Thank you for the help you have provided! I realized that my structural mesh and the rectangular flex plate size in the fluid mesh are mismatched: the mesh in the fluid is what I need, the mesh in the structural is the original FSI3 center plate size, which is not what I need. In fact, however, I’ve changed the grid size code in make-grid in dealii-adapter/nonlinear_elasticity/nonlinear_elasticity.cc (below):

if (parameters.scenario == "FSI3")
  {
    // FSI 3
    n_x          = 40;//18;
    n_y          =  1;
    n_z          =  1;
/*  point_bottom = dim == 3 ? Point<dim>(0.24899, 0.19, -0.005) :
                              Point<dim>(0.24899, 0.19);
    point_tip =
      dim == 3 ? Point<dim>(0.6, 0.21, 0.005) : Point<dim>(0.6, 0.21);      */   
    
   point_bottom = dim == 3 ? Point<dim>(0.055, 0.0597, 0) :
                             Point<dim>(0.055, 0.0597);
     point_tip =
      dim == 3 ? Point<dim>(0.095, 0.0603, 0.03) : Point<dim>(0.095, 0.0603);    //square_flap     

    // IDs for FSI3
    id_flap_long_bottom  = 2; // x direction
    id_flap_long_top     = 3;
    id_flap_short_bottom = 0; // y direction
    id_flap_short_top    = 1;
  }

The standard content at “//square-flap” is the size of the rectangular corner I need.
So, I don’t understand: why have I already changed the structure dimensions, only to find that the dimensions of the original example remain the same? Did I change the wrong code? Or did I change the wrong file? Or is there a command missing?
Please give me some help and advice.

Your changes will show up if you select model = neo-Hookean and scenario = FSI3 . Is that the case for you?

Here’s the parameter file in dealii, I’ve been choosing both FSI3 and neo-Hookean, and still have the same problem as before!

# Listing of Parameters
# Dimensional quantities are in SI units
# --------------------------------------

subsection Time
  # End time
  set End time        = 10

  # Time step size
  set Time step size  = 0.001

  # Write results every x timesteps
  set Output interval       = 100

  # Output folder
  set Output folder   = dealii-output
end

subsection Discretization
  # Polynomial degree of the FE system
  set Polynomial degree   = 4
end

subsection System properties
  # Poisson's ratio
  set Poisson's ratio = 0.35                     #!

  # Shear modulus
  set Shear modulus   = 9.2593e5              #!

  # Density
  set rho             = 100                      #!

  # Body forces x,y,z
  set body forces     = 0.0,0.0,0.0
end

subsection Solver
  # Structural model to be used: linear or neo-Hookean
  set Model                     = neo-Hookean

  # Linear solver: CG or Direct
  set Solver type               = Direct

  # Max CG solver iterations (multiples of the system matrix size)
  # In 2D, this value is best set at 2. In 3D, a value of 1 works fine.
  set Max iteration multiplier  = 1

  # Relative drop criterion for CG solver residual (multiplied by residual norm, ignored if Model == linear or solver == direct)
  # Hard-coded to absolute criterion of 1e-10 for the linear model.
  set Residual                  = 1e-6

  # Number of Newton-Raphson iterations allowed (ignored if Model == linear)
  set Max iterations Newton-Raphson = 15

  # Relative displacement error tolerance for non-linear iteration (ignored if Model == linear)
  set Tolerance displacement        = 1.0e-5

  # Relative force residual tolerance for non-linear iteration (ignored if Model == linear)
  set Tolerance force               = 1.0e-7     #!
end

subsection precice configuration
  # Cases: FSI3 or PF for perpendicular flap
  set Scenario            = FSI3

  # Name of the precice configuration file
  set precice config-file = ../precice-config.xml

  # Name of the participant in the precice-config.xml file
  set Participant name    = Solid

  # Name of the coupling mesh in the precice-config.xml file
  set Mesh name           = Solid-Mesh

  # Name of the read data in the precice-config.xml file
  set Read data name      = Stress

  # Name of the write data in the precice-config.xml file
  set Write data name     = Displacement
end

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.