CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > Software User Forums > OpenFOAM

Overset mesh with deformable front mesh

Register Blogs Members List Search Today's Posts Mark Forums Read

Like Tree3Likes
  • 1 Post By Michael@UW
  • 2 Post By louisgag

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old   April 4, 2020, 04:18
Default Overset mesh with deformable front mesh
  #1
New Member
 
celia
Join Date: Nov 2019
Posts: 1
Rep Power: 0
mecbertin is on a distinguished road
Hi All,

I am hoping to get some suggestions for the OpenFOAM implementation of an overset mesh with deformable front mesh (e.g. using the displacementLaplacian solver).

I have seen this following presentation wrote about foam-extend 4.1 in November 2018:
https://foam-extend.fsb.hr/wp-conten...solid4Foam.pdf

In there, on slide 19, they are explaining "Front mesh deformation for FSI simulation", and how the mesh deformation is limited to the front mesh using subsetMotionSolverFvMesh.

I am finding foam-extend 4.1 challenging to understand compared to the traditional OpenFoam.
Would anyone have any suggestions for any material or course that could help me to set up/run my case (an overset mesh with deformable front mesh)?
Ideally, I would prefer to set up my case in OpenFOAM v1912. Would someone know what type of setup I should use with the overPimpleDyMfoam solver? Or any material or course that could help me with this?

Cheers,

Celia
mecbertin is offline   Reply With Quote

Old   July 21, 2020, 12:26
Default
  #2
Senior Member
 
Join Date: Jan 2019
Posts: 106
Blog Entries: 1
Rep Power: 5
Michael@UW is on a distinguished road
Hello Celia,
I am also interested in coupling overset with morphing. It seems we can use displacementLaplacian to deform the front body.

Code:
dynamicFvMesh       dynamicOversetFvMesh;

motionSolverLibs ( "libfvMotionSolvers.so" );

solver          displacementLaplacian;

displacementLaplacianCoeffs
{
    diffusivity     uniform 1;
}
But if I want to move the solid body (front) and deform the background patches at the same time. Do you know how to define the solid body motion at the same time in dynamicMeshDict?

Regards,
Michael
fumiya likes this.
Michael@UW is offline   Reply With Quote

Old   July 22, 2021, 08:38
Default
  #3
Senior Member
 
louisgag's Avatar
 
Louis Gagnon
Join Date: Mar 2009
Location: Stuttgart, Germany
Posts: 328
Rep Power: 16
louisgag is on a distinguished road
Send a message via ICQ to louisgag
This is old but we had the same problem here and I had to read the code a few times before we could get this working, so here's the heads up:


solidBodyDisplacementLaplacian and displacementLaplacian are not coded to support acting on different zones, so you have to split the solvers in your dynamicMeshDict as such:


Code:
/*--------------------------------*- C++ -*----------------------------------*\
| =========                 |                                                 |
| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
|  \\    /   O peration     | Version:  v2006                                 |
|   \\  /    A nd           | Website:  www.openfoam.com                      |
|    \\/     M anipulation  |                                                 |
\*---------------------------------------------------------------------------*/
FoamFile
{
    version     2.0;
    format      ascii;
    class       dictionary;
    object      dynamicMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //



dynamicFvMesh       dynamicOversetFvMesh;
solvers
{
    c1Block
    {
        motionSolverLibs (fvMotionSolvers "libcontrolled6DoFMotion.so");
        motionSolver solidBody;
        cellZone c1;
        solidBodyMotionFunction  rotatingMotion;
                origin      (0.005 0.005 0.005);
                axis        (0 0 1);
                omega       10;
    }
 
 deformations
 {
     motionSolverLibs (fvMotionSolvers "libcontrolled6DoFMotion.so");
     motionSolver displacementLaplacian;
     diffusivity uniform 1;
 }

}




// ************************************************************************* //
and keep in mind that setting a zone for the deformation part will not bring much...
quarkz and Michael@UW like this.
louisgag is offline   Reply With Quote

Old   February 27, 2022, 21:29
Default
  #4
Senior Member
 
TWB
Join Date: Mar 2009
Posts: 352
Rep Power: 16
quarkz is on a distinguished road
Hi louisgag,

my objective is simulate a plane with deforming folding wing which pitches up due to 6dof. i want the wing deformation to cause the front overset mesh to deform internally. I would like to use 6dof to determine its pitching response and cause the front mesh to rotate as a whole due to the pitching.

I tried using your dynamicMeshDict as a starting point. It seems that I can get internal mesh deformation of the front overset mesh due to the wing folding. However, OpenFOAM doesn't seem to allow the front mesh to pitch (whole mesh rotates without deformation) due to 6dof.

Is this so? Is there anyway to circumvent it? I have attached my pointDisplacement and dynamicMeshDict

Code:
/*--------------------------------*- C++ -*----------------------------------*\
| =========                 |                                                 |
| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
|  \\    /   O peration     | Version:  v1912                                 |
|   \\  /    A nd           | Website:  www.openfoam.com                      |
|    \\/     M anipulation  |                                                 |
\*---------------------------------------------------------------------------*/
FoamFile
{
    version     2.0;
    format      ascii;
    class       pointVectorField;
    object      pointDisplacement;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

dimensions      [0 1 0 0 0 0 0];

internalField   uniform (0 0 0);

boundaryField
{

	#includeEtc "caseDicts/setConstraintTypes"

	overset_p1
    {
        patchType       overset;
        type            zeroGradient;
    }


    wing
    {
    type        prototype_retract_motion;
    //type	myAngularOscillatingDisplacement;
	axis		(0 -1 0);
	origin (0.03 0 0.235);
	angle0		 0;
	amplitude       1.571;  //units of rad
	reverse_pitch   0;//0.7854;
    maximum_retract_angle 0.7854;
	omega           1.5708;       //units of rad/s
 	value           uniform (0 0 0); 
    }
    
    body_tail
    {
        type            calculated;
        value           uniform (0 0 0);
    }	

    ".*"
    {
        type            fixedValue;
        value           uniform (0 0 0);
    }
	

}


// ************************************************************************* //
Code:
/*--------------------------------*- C++ -*----------------------------------*\
| =========                 |                                                 |
| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
|  \\    /   O peration     | Version:  7                                     |
|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
|    \\/     M anipulation  |                                                 |
\*---------------------------------------------------------------------------*/
FoamFile
{
    version     2.0;
    format      ascii;
    class       dictionary;
    object      dynamicMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

dynamicFvMesh       dynamicOversetFvMesh;

/*motionSolverLibs ( "libfvMotionSolvers.so" );

solver          displacementLaplacian;

displacementLaplacianCoeffs
{
    diffusivity     uniform 1;
    //diffusivity inverseDistance 1(wing|overset_p1|body_tail);
}

dynamicOversetFvMeshCoeffs
{
//    layerRelax 0.3;
}
*/

solvers
{
    sixdof_pitch
    {
        motionSolverLibs (sixDoFRigidBodyMotion);
        motionSolver sixDoFRigidBodyMotion;
        cellSet wing_body_tail;
        patches         (wing body_tail);
	    innerDistance   100.0;
	    outerDistance   101.0;
	
	    centreOfMass    (0. 0. 0.);
	    g               (0 -9.81 0);
	    velocity        (13.89 0. 0.);
	    rho             rhoInf;
		rhoInf          1.2;
	
	    // Cuboid mass
	    mass            1.6;
	
	    // Cuboid moment of inertia about the centre of mass
	    //momentOfInertia (0.028173316 0.047624436 0.073855382);
	    momentOfInertia (0.028173316 0.073855382 0.047624436);
	
	    report          on;
	    accelerationRelaxation 0.6;
	    accelerationDamping    0.9;
	
	    solver
	    {
	        type Newmark;
	    }
	
	    constraints
	    {
	
	        
	        fixedPoint
	        {
	             sixDoFRigidBodyMotionConstraint point;
	             centreOfRotation (0. 0. 0.);
	        }
	        
	
	        fixedAxis
	        {
	            sixDoFRigidBodyMotionConstraint axis;
	            axis (0 0 1);
	        }
	        
	    }
        
        
    }
 
    wing_deformations
 	{
     	motionSolverLibs (fvMotionSolvers);
		motionSolver displacementLaplacian;
		cellZone wing_body_tail;
		//diffusivity uniform 1;
		diffusivity inverseDistance 1(wing);
		//diffusivity quadratic inverseDistance 1(wing);
    }

}
// ************************************************************************* //
quarkz is offline   Reply With Quote

Old   March 16, 2022, 08:02
Default
  #5
Senior Member
 
louisgag's Avatar
 
Louis Gagnon
Join Date: Mar 2009
Location: Stuttgart, Germany
Posts: 328
Rep Power: 16
louisgag is on a distinguished road
Send a message via ICQ to louisgag
Hi,
i don't have experience with the 6dof solver, but usually you have to project the pointDisplacement motion so that they match you rigid body motion.
Maybe you can find an example here: $FOAM_TUT/multiphase/compressibleInterDyMFoam/laminar/sphereDrop and try to adapt it overset...
Not sure I can help more than that, feel free to inspire yourself from python-based or MBDyn-based solutions:
https://darus.uni-stuttgart.de/datas...419/darus-2191

https://darus.uni-stuttgart.de/datas...419/darus-2232
louisgag is offline   Reply With Quote

Old   March 16, 2022, 23:36
Default
  #6
Senior Member
 
TWB
Join Date: Mar 2009
Posts: 352
Rep Power: 16
quarkz is on a distinguished road
Hi louisgag,

Sure, thanks for the recommendations. I'll take a look.
quarkz is offline   Reply With Quote

Old   April 13, 2022, 02:27
Default
  #7
Senior Member
 
TWB
Join Date: Mar 2009
Posts: 352
Rep Power: 16
quarkz is on a distinguished road
Hi everyone,

I'm now trying to run a simple test case to see if it works.

It consists of a background rectangle domain and a front cylinder overset mesh.

I want to test if it is possible to run a simulation such that the front cylinder overset mesh:

1. move entire overset mesh vertically up and down without deformation

and

2. move cylinder boundary vertically up and down with deformation. boundary of overset mesh is not moving.

I managed to get (1) working using the codes below but not (2). Objective is to do (1) + (2) together.

Is it possible?

I tried Michael@UW suggestions:

dynamicMeshDict

Code:
dynamicFvMesh       dynamicOversetFvMesh;

motionSolverLibs ( "libfvMotionSolvers.so" );

solver          displacementLaplacian;

displacementLaplacianCoeffs
{
    diffusivity     uniform 1;
}
pointDisplacement

Code:
boundaryField
{
    #includeEtc "caseDicts/setConstraintTypes"

    oversetPatch
    {
        patchType       overset;
        type            zeroGradient;
    }

    
	
	cyl
    {
        type            oscillatingDisplacement;
        amplitude       (0 0.5 0);
        omega           3.142;
        value           uniform (0 0 0);
    }


    ".*"
    {
        type            fixedValue;
        value		uniform    (0 0 0);
    }
}
I also tried louisgag's suggestions:

dynamicMeshDict

Code:
dynamicFvMesh       dynamicOversetFvMesh;

solvers          

{
	cylinder_overset
	{
        motionSolverLibs (fvMotionSolvers  "libcontrolled6DoFMotion.so");
		
		motionSolver            solidBody;
        solidBodyMotionFunction oscillatingLinearMotion;
		
		cellSet                 cyl_overset;
		oscillatingLinearMotionCoeffs
		{
			amplitude       (0.0 0.5 0.0);
			omega           6.2831853;//-0.7854;//-0.1745;    //5.52 rad/s
		}

        
    }
	
	deformations
 	{
     	motionSolverLibs (overset fvMotionSolvers  "libcontrolled6DoFMotion.so");
		motionSolver displacementLaplacian;
		diffusivity uniform 1;
		//diffusivity inverseDistance 1(cyl);
	}

}
pointDisplacement

Code:
boundaryField
{
    #includeEtc "caseDicts/setConstraintTypes"

    oversetPatch
    {
        patchType       overset;
        type            zeroGradient;
    }

    
	cyl
    {
        type            oscillatingDisplacement;
        amplitude       (0 0.5 0);
        omega           3.142;
        value           uniform (0 0 0);
    }


    ".*"
    {
        type            fixedValue;
        value		uniform    (0 0 0);
    }
}
Can anyone help?

Thanks
Attached Images
File Type: jpg 2022-04-13_142518.jpg (91.2 KB, 19 views)
quarkz is offline   Reply With Quote

Reply

Tags
displacementlaplacian, mesh deformation, overpimpledymfoam, overset, subset motion solver

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Overset mesh for Fluid Structure Interaction in OpenFOAM Thaw Tar OpenFOAM Programming & Development 3 February 19, 2022 20:53
[ANSYS Meshing] 3D rotating wind turbine using overset mesh Paku ANSYS Meshing & Geometry 0 September 10, 2019 23:18
Star CCM Overset Mesh Error (Rotating Turbine) thezack Siemens 7 October 12, 2016 11:14
Mesh motion with Translation & Rotation Doginal CFX 2 January 12, 2014 06:21
fluent add additional zones for the mesh file SSL FLUENT 2 January 26, 2008 11:55


All times are GMT -4. The time now is 22:11.