OpenFOAM Introduction

OpenFOAM Introduction Speakers: Francois Rigo [email protected] José Rothkegel [email protected] Amandine GUISSART amandine.guissa...
Author: Lambert Bond
165 downloads 1 Views 867KB Size
OpenFOAM Introduction Speakers:

Francois Rigo [email protected] José Rothkegel [email protected] Amandine GUISSART [email protected]

February 2016

OpenFoam 

What's OpenFOAM? 



OpenFOAM: Open source Field Operation And Manipulation C++ toolbox for the development of customized numerical solvers, and pre-/post-processing utilities for the solution of continuum mechanics problems, including computational fluid dynamics (CFD).

OpenFoam 

What comes with OpenFOAM? 

Basic CFD solvers 



Incompressible flow with RANS and LES

Advanced CFD solvers 

Compressible flow solvers with RANS and LES



Buoyancy-driven flow solvers



Multiphase flow solvers



Combustion problems



Solvers for conjugate heat transfer



Particle Tracking



Molecular dynamics solvers[28]



Electromagnetics solvers



Solid dynamics solvers

OpenFoam 

What are the applications of OpenFOAM?

CATIA Room 

Ubuntu Login 

User: foam



Pass: catia1135

Linux Basics 

Open Terminal: 

In gnome 2.x: 



Applications → Accesories → Terminal

In KDE 4.x: 

Applications menu → Systems → Konsole

Linux Basics 

Create Folder 



Copy files 



~$rm name

Rename file 



~$cp name destination

Delete files(attention: no undelete option) 



~$mkdir name

~$mv name_original name_new

To edit a file, we'll use Gedit 

$gedit filename

Linux Basics 

Change directory 



Go to home directory 



~$cd

See working directory 



~$cd folder

~$pwd

See working directory's content 

~$ls

OpenFOAM Basics 

Create a directory named student_work_2016_A in the OpenFOAM work directory 

~$cd



~$cd OpenFOAM/foam-2.1.1/run 





~$cd student_work_2016_A

Rename the folder to Cavity_original 



~$cp -r tutorials/incompressible/icoFoam/cavity student_work_2016_A/

Go to student_work_2016_A 



~$mkdir student_work_2016_A

Copy the cavity problem to the created directory 



Note: you can use the key to autocomplete the line

~$mv cavity cavity_original

Go to cavity_original folder 

~$cd cavity_original

OpenFOAM Basics 

Folder structure

OpenFOAM Basics 

Test case problem: lid-driven cavity

OpenFOAM Basics 

Block Structure of of mesh

OpenFOAM Basics 

blockMeshDict

convertToMeters 0.1; vertices ( (0 0 (1 0 (1 1 (0 1 (0 0 (1 0 (1 1 (0 1 );

0) 0) 0) 0) 0.1) 0.1) 0.1) 0.1)

OpenFOAM Basics 

blockMeshDict

blocks ( hex (0 1 2 3 4 5 6 7) (20 20 1) simpleGrading (1 1 1) );

OpenFOAM Basics 

blockMeshDict

boundary ( movingWall { type wall; faces ( (3 7 6 2) ); } fixedWalls { type wall; faces ( (0 4 7 3) (2 6 5 1) (1 5 4 0) ); } ...

... frontAndBack { type empty; faces ( (0 3 2 1) (4 5 6 7) ); } );

OpenFOAM Basics 

To generate the mesh from the blockMeshDict: 



~$blockMesh

To visualize the mesh: 

~$paraFoam

OpenFOAM Basics 

In paraFoam: a) Apply in the Object Inspector b) Surface With edges in the representation menu b

a

OpenFOAM Basics 

Problem set-up 

Initial values: Folder ”0”  



Properties: Folder ”constant” 



U p TransportProperties

Numerical Control: Folder ”system”   

controlDict fvSchemes fvSolution

OpenFOAM Basics 

File: ”p”

dimensions

[0 2 -2 0 0 0 0];

internalField

uniform 0;

boundaryField { movingWall { type }

}

zeroGradient;

fixedWalls { type }

zeroGradient;

frontAndBack { type }

empty;

OpenFOAM Basics 

File: ”U”

dimensions internalField boundaryField { movingWall { type value } fixedWalls { type value } frontAndBack { type } }

[0 1 -1 0 0 0 0]; uniform (0 0 0);

fixedValue; uniform (1 0 0);

fixedValue; uniform (0 0 0);

empty;

OpenFOAM Basics 

File: ”U” 

For external flows

dimensions [0 1 -1 internalField uniform boundaryField { dummyWall { type freestreamValue } }

0 0 0 0]; (0 0 0);

freestream; uniform (1 0 0);

OpenFOAM Basics 

File: ”transportProperties”

nu [ 0 2 -1 0 0 0 0 ] 0.01;

OpenFOAM Basics 

File: ”controlDict”

application

icoFoam;

startFrom startTime stopAt endTime

startTime; 0; endTime; 0.5;

DeltaT

0.005; // CFL is imposed through δt

writeControl timeStep; writeInterval 20; purgeWrite 0; writeFormat ascii; writePrecision 6; writeCompression off; timeFormat general; timePrecision 6; runTimeModifiable true;

δ t|U| CFL= δx

OpenFOAM Basics 

To run the case 



~$icoFoam

To visualize the results: 

~$paraFoam

paraFoam Basics

a

paraFoam Basics c

b

d

paraFoam Basics 

Common toolbar

Stream tracer: to show streamlines

Glyph: to show arrows

Student Work Mesh Grading 

Problem is based on the lid-driven cavity tutorial



It introduces the mesh grading feature

Student Work 

Test case problem: lid-driven cavity

Student Work

Student Work 

Create a directory named student_work_2016_A in the OpenFOAM work directory  

~$cd ~$cd OpenFOAM/foam-2.1.1/run 



Copy the cavity problem to the created directory 



~$cp -r tutorials/incompressible/icoFoam/cavity student_work_2016_A/

Go to student_work_2016_A 



Note: you can use the key to autocomplete the line

~$cd student_work_2016_A/

Rename the folder to cavity_grading 

~$mv cavity cavity_grading

Student Work 

blockMeshDict

vertices ( (0.0 (0.5 (1.0 (0.0 (0.5 (1.0 (0.0 (0.5 (1.0

0.0 0.0 0.0 0.5 0.5 0.5 1.0 1.0 1.0

0.0) 0.0) 0.0) 0.0) 0.0) 0.0) 0.0) 0.0) 0.0)

(0.0 (0.5 (1.0 (0.0 (0.5 (1.0 (0.0 (0.5 (1.0

0.0 0.0 0.0 0.5 0.5 0.5 1.0 1.0 1.0

0.1) 0.1) 0.1) 0.1) 0.1) 0.1) 0.1) 0.1) 0.1)

);

Student Work 

blockMeshDict

blocks ( hex hex hex hex );

(0 (1 (3 (4

1 2 4 5

4 5 7 8

3 4 6 7

9 10 13 12) 10 11 14 13) 12 13 16 15) 13 14 17 16)

(10 (10 (10 (10

10 10 10 10

1) 1) 1) 1)

simpleGrading simpleGrading simpleGrading simpleGrading

(2 2 1) (0.5 2 1) (2 0.5 1) (0.5 0.5 1)

Student Work boundary ( movingWall { type wall; faces ( (6 15 16 7) (7 16 17 8) ); } fixedWalls { type wall; faces ( (3 12 15 6) (0 9 12 3) (0 1 10 9) (1 2 11 10) (2 5 14 11) (5 8 17 14) ); } ...

... frontAndBack { type empty; faces ( (0 3 4 1) (1 4 5 2) (3 6 7 4) (4 7 8 5) (9 10 13 12) (10 11 14 13) (12 13 16 15) (13 14 17 16) ); } );

Student Work 

Build mesh 



Run the files: 



~$blockMesh ~$icoFoam

View the results: 

~$paraFoam

OpenFOAM Integrals 

To calculate the integral of variable over a patch 



General structure 

~$ patchIntegrate



~$ patchIntegrate U movingWall

For example:

OpenFOAM Integrals 

To calculate forces controlDict



... timeFormat

general;

timePrecision

6;

runTimeModifiable true; functions { }

#include "forceCoeffs"

OpenFOAM Integrals 

To calculate forces  

forceCoeffs Adapted from tutorials/incompressible/simpleFoam/motorBike/system/forceCoeffs

/*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: v3.0+ | | \\ / A nd | Web: www.OpenFOAM.com | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ forceCoeffs1 { type

forceCoeffs;

functionObjectLibs ( "libforces.so" ); outputControl timeInterval

timeStep; 1;

log

yes;

patches rhoName rhoInf liftDir dragDir CofR pitchAxis magUInf lRef Aref

( patchesName ); rhoInf; // Indicates incompressible 1; // Redundant for incompressible (0 0 1); (1 0 0); (1 0 0); // Axle midpoint on ground (0 1 0); 20; 1.0; // Reference length 1.0; // Reference Area

C L=

2 FL

ρ U ∞2 A 2 FD C D= ρ U ∞2 A

}

Remember to set the correct values!!!

References 

Linux 



OpenFOAM 



Just google:”linux commands” OpenFoam User Guide

Installing OpenFOAM 

http://www.openfoam.com/version-v3.0+/

Suggest Documents