CFD Online Discussion Forums

CFD Online Discussion Forums (http://www.cfd-online.com/Forums/)
-   OpenFOAM Programming & Development (http://www.cfd-online.com/Forums/openfoam-programming-development/)
-   -   tetDecompositionMotionSolver (http://www.cfd-online.com/Forums/openfoam-programming-development/93328-tetdecompositionmotionsolver.html)

hannes October 12, 2011 02:15

tetDecompositionMotionSolver
 
Hello,

in my FSI application, I use the tetDecompositionMotionSolver. According to what Hrv and Zeljko have reported in their paper, I have also noted that the fvMotionSolver quickly degrades the grid quality in my case while the tetFEM-Solver performs much better.
Unfortunately it is quite slow. The solver spends very much time in solving the FEM system (I guess 30 to 50% of the overall time).
As i unterstand (please correct me, if I'm wrong), in each time step the FEM equation system is build up from scratch and solved iteratively. To speed up the process, I wonder if it would be wise to build up the FEM equation system, invert the stiffness matrix and store the inverted matrix. In each time step only a matrix-vector multiplication would be required, to get the new grid motion. Of course this would imply some kind of linearization of the grid motion, but at least in my case, the displacements are rather small compared to the overall grid dimensions.
Has anyone already done some work in this direction or is there even already something implemented? I would be glad to know...

Best regards, Hannes

hjasak October 14, 2011 07:11

This depends on your geometry: in many cases you will have a large fluid domain and only a small region actually moving. I use the subsetMotion for this sort of thing, confining the motion of the mesh only in a region close to the moving wall. Depending on the case, this will give you a MASSIVE sped-up, without any of the stupid side-effects you get from solving the mesh motion equation on cell centres.

Hrv

hannes October 21, 2011 09:10

Hi Hrv,

thanks very much for this hint. I'm currently about to try this but I just got stuck on the following issue:

I have a pointVectorField named "pointDisplacement" on the global mesh with a fixedValue BC which contains the boundary values for the motion solver. Now I want to transfer this into a pointVectorField "subsetPointDisplacement" on the MeshSubset by doing:

Code:

  pointVectorField subsetPointDisplacement
  (
      IOobject
      (
          "pointDisplacement",
          mesh.subsetMesh().time().timeName(),
          mesh.subsetMesh().subMesh(),
          IOobject::NO_READ,
          IOobject::AUTO_WRITE
      ),
      mesh.subsetMesh().subPointMesh(),
      dimensionedVector("pointDisplacement", dimless, vector::zero),
      fixedValueFvPatchVectorField::typeName
  );

/* ..... */

subsetPointDisplacement=mesh.subsetMesh().interpolate(pointDisplacement);

Unfortunately, the fixedValue-BC on the subset field is all zero. I find the values of the BC scattered all over the internalField of the subset field. Is it possible that something is wrong with the addressing or did I miss something?

Thanks in advance, Hannes

Arnoldinho November 9, 2011 04:12

... sorry, put my question into an own thread: http://www.cfd-online.com/Forums/ope...-parallel.html


All times are GMT -4. The time now is 17:39.