CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > OpenFOAM Programming & Development

ActuatorDiskExplicitForce in OF2.1. Help

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

Reply
 
LinkBack Thread Tools Display Modes
Old   June 4, 2012, 11:10
Post ActuatorDiskExplicitForce in OF2.1. Help
  #1
Member
 
M. Montero
Join Date: Mar 2009
Location: Madrid
Posts: 76
Rep Power: 7
be_inspired is on a distinguished road
Hi all,

Resume:

Are there a guide to now how to change a solver code prepared for OF1.5dev to a newer OF versions(OF2.1)?

Long version:

I have been checking the solver windSimpleFoam of the version 2.0.1 and due to the fact than it also takes into account the thrust to modify the momentum equation.

I investigate and I found the following report:

http://www.tfd.chalmers.se/~hani/kur...ningReport.pdf

It seems very interesting because it can be modelled the trust and the swirl with a radial distribution based on a analytical approach. It can be fixed the thrust and the torque of your wind turbine.

Although it was done based on OF 1.5dev, I have been trying to implement the same approach for OF 2.1 but I am not able to do it. Are there a guide to now how to change a solver between 1.5dev a newer OF versions?

When I try to compile, I receive the following error:

Code:
[beinspired@srvhpcmaster actuatorDiskExplicitForce]$ wmake
Making dependency list for source file actuatorDiskExplicitForceSimpleFoam.C
Making dependency list for source file actuatorDiskExplicitForce.cpp
could not open file actuatorDiskExplicitForce for source file actuatorDiskExplicitForce.cpp
SOURCE=actuatorDiskExplicitForceSimpleFoam.C ;  g++ -m64 -Dlinux64 -DWM_DP -Wall -Wextra -Wno-unused-parameter -Wold-style-cast -O3  -DNoRepository -ftemplate-depth-100 -I/share/apps/OpenFOAM/OpenFOAM-2.1.0/src/turbulenceModels -I/share/apps/OpenFOAM/OpenFOAM-2.1.0/src/turbulenceModels/incompressible/RAS/RASModel -I/share/apps/OpenFOAM/OpenFOAM-2.1.0/src/transportModels -I/share/apps/OpenFOAM/OpenFOAM-2.1.0/src/transportModels/incompressible/singlePhaseTransportModel -I/share/apps/OpenFOAM/OpenFOAM-2.1.0/src/finiteVolume/lnInclude -IlnInclude -I. -I/share/apps/OpenFOAM/OpenFOAM-2.1.0/src/OpenFOAM/lnInclude -I/share/apps/OpenFOAM/OpenFOAM-2.1.0/src/OSspecific/POSIX/lnInclude   -fPIC -c $SOURCE -o Make/linux64Gcc45DPOpt/actuatorDiskExplicitForceSimpleFoam.o
In file included from actuatorDiskExplicitForceSimpleFoam.C:74:0:
UEqn.H: In function 'int main(int, char**)':
UEqn.H:19:38: error: no match for 'operator+' in 'Foam::solve(const Foam::tmp<Foam::fvMatrix<Type> >&) [with Type = Foam::Vector<double>]() + VolumeForce'
/share/apps/OpenFOAM/OpenFOAM-2.1.0/src/OpenFOAM/lnInclude/dictionary.H:519:12: note: candidates are: Foam::dictionary Foam::operator+(const Foam::dictionary&, const Foam::dictionary&)
/share/apps/OpenFOAM/OpenFOAM-2.1.0/src/OpenFOAM/lnInclude/dimensionSet.H:257:29: note:                 Foam::dimensionSet Foam::operator+(const Foam::dimensionSet&, const Foam::dimensionSet&)
/share/apps/OpenFOAM/OpenFOAM-2.1.0/src/OpenFOAM/lnInclude/dimensionedScalar.H:49:19: note:                 Foam::dimensionedScalar Foam::operator+(const Foam::dimensionedScalar&, Foam::scalar)
/share/apps/OpenFOAM/OpenFOAM-2.1.0/src/OpenFOAM/lnInclude/dimensionedScalar.H:50:19: note:                 Foam::dimensionedScalar Foam::operator+(Foam::scalar, const Foam::dimensionedScalar&)
/share/apps/OpenFOAM/OpenFOAM-2.1.0/src/OpenFOAM/lnInclude/scalarField.H:77:1: note:                 Foam::tmp<Foam::Field<double> > Foam::operator+(const Foam::scalar&, const Foam::UList<double>&)
/share/apps/OpenFOAM/OpenFOAM-2.1.0/src/OpenFOAM/lnInclude/scalarField.H:77:1: note:                 Foam::tmp<Foam::Field<double> > Foam::operator+(const Foam::scalar&, const Foam::tmp<Foam::Field<double> >&)
/share/apps/OpenFOAM/OpenFOAM-2.1.0/src/OpenFOAM/lnInclude/scalarField.H:77:1: note:                 Foam::tmp<Foam::Field<double> > Foam::operator+(const Foam::UList<double>&, const Foam::scalar&)
/share/apps/OpenFOAM/OpenFOAM-2.1.0/src/OpenFOAM/lnInclude/scalarField.H:77:1: note:                 Foam::tmp<Foam::Field<double> > Foam::operator+(const Foam::tmp<Foam::Field<double> >&, const Foam::scalar&)
/share/apps/OpenFOAM/OpenFOAM-2.1.0/src/OpenFOAM/lnInclude/labelField.H:53:1: note:                 Foam::tmp<Foam::Field<int> > Foam::operator+(const Foam::label&, const Foam::UList<int>&)
/share/apps/OpenFOAM/OpenFOAM-2.1.0/src/OpenFOAM/lnInclude/labelField.H:53:1: note:                 Foam::tmp<Foam::Field<int> > Foam::operator+(const Foam::label&, const Foam::tmp<Foam::Field<int> >&)
/share/apps/OpenFOAM/OpenFOAM-2.1.0/src/OpenFOAM/lnInclude/labelField.H:53:1: note:                 Foam::tmp<Foam::Field<int> > Foam::operator+(const Foam::UList<int>&, const Foam::label&)
/share/apps/OpenFOAM/OpenFOAM-2.1.0/src/OpenFOAM/lnInclude/labelField.H:53:1: note:                 Foam::tmp<Foam::Field<int> > Foam::operator+(const Foam::tmp<Foam::Field<int> >&, const Foam::label&)
/share/apps/OpenFOAM/OpenFOAM-2.1.0/src/OpenFOAM/lnInclude/diagTensorField.H:60:1: note:                 Foam::tmp<Foam::Field<Foam::Tensor<double> > > Foam::operator+(const Foam::UList<Foam::DiagTensor<double> >&, const Foam::UList<Foam::Tensor<double> >&)
/share/apps/OpenFOAM/OpenFOAM-2.1.0/src/OpenFOAM/lnInclude/diagTensorField.H:60:1: note:                 Foam::tmp<Foam::Field<Foam::Tensor<double> > > Foam::operator+(const Foam::UList<Foam::DiagTensor<double> >&, const Foam::tmp<Foam::Field<Foam::Tensor<double> > >&)
/share/apps/OpenFOAM/OpenFOAM-2.1.0/src/OpenFOAM/lnInclude/diagTensorField.H:60:1: note:                 Foam::tmp<Foam::Field<Foam::Tensor<double> > > Foam::operator+(const Foam::tmp<Foam::Field<Foam::DiagTensor<double> > >&, const Foam::UList<Foam::Tensor<double> >&)
/share/apps/OpenFOAM/OpenFOAM-2.1.0/src/OpenFOAM/lnInclude/diagTensorField.H:60:1: note:                 Foam::tmp<Foam::Field<Foam::Tensor<double> > > Foam::operator+(const Foam::tmp<Foam::Field<Foam::DiagTensor<double> > >&, const Foam::tmp<Foam::Field<Foam::Tensor<double> > >&)
/share/apps/OpenFOAM/OpenFOAM-2.1.0/src/OpenFOAM/lnInclude/diagTensorField.H:63:1: note:                 Foam::tmp<Foam::Field<Foam::Tensor<double> > > Foam::operator+(const Foam::diagTensor&, const Foam::UList<Foam::Tensor<double> >&)
/share/apps/OpenFOAM/OpenFOAM-2.1.0/src/OpenFOAM/lnInclude/diagTensorField.H:63:1: note:                 Foam::tmp<Foam::Field<Foam::Tensor<double> > > Foam::operator+(const Foam::diagTensor&, const Foam::tmp<Foam::Field<Foam::Tensor<double> > >&)
/share/apps/OpenFOAM/OpenFOAM-2.1.0/src/OpenFOAM/lnInclude/diagTensorField.H:63:1: note:                 Foam::tmp<Foam::Field<Foam::Tensor<double> > > Foam::operator+(const Foam::UList<Foam::DiagTensor<double> >&, const Foam::tensor&)
/share/apps/OpenFOAM/OpenFOAM-2.1.0/src/OpenFOAM/lnInclude/diagTensorField.H:63:1: note:                 Foam::tmp<Foam::Field<Foam::Tensor<double> > > Foam::operator+(const Foam::tmp<Foam::Field<Foam::DiagTensor<double> > >&, const Foam::tensor&)
/share/apps/OpenFOAM/OpenFOAM-2.1.0/src/OpenFOAM/lnInclude/vectorTensorTransformI.H:263:36: note:                 Foam::vectorTensorTransform Foam::operator+(const Foam::vectorTensorTransform&, const Foam::vector&)
/share/apps/OpenFOAM/OpenFOAM-2.1.0/src/OpenFOAM/lnInclude/vectorTensorTransformI.H:273:36: note:                 Foam::vectorTensorTransform Foam::operator+(const Foam::vector&, const Foam::vectorTensorTransform&)
/share/apps/OpenFOAM/OpenFOAM-2.1.0/src/OpenFOAM/lnInclude/quaternionI.H:263:25: note:                 Foam::quaternion Foam::operator+(const Foam::quaternion&, const Foam::quaternion&)
/share/apps/OpenFOAM/OpenFOAM-2.1.0/src/OpenFOAM/lnInclude/septernionI.H:170:25: note:                 Foam::septernion Foam::operator+(const Foam::septernion&, const Foam::vector&)
/share/apps/OpenFOAM/OpenFOAM-2.1.0/src/OpenFOAM/lnInclude/septernionI.H:180:25: note:                 Foam::septernion Foam::operator+(const Foam::vector&, const Foam::septernion&)
In file included from actuatorDiskExplicitForceSimpleFoam.C:75:0:
pEqn.H:1:1: error: expected ';' before '{' token
actuatorDiskExplicitForceSimpleFoam.C:92:1: error: expected '}' at end of input
actuatorDiskExplicitForceSimpleFoam.C:92:1: error: expected '}' at end of input
/share/apps/OpenFOAM/OpenFOAM-2.1.0/src/finiteVolume/lnInclude/initContinuityErrs.H:37:8: warning: unused variable 'cumulativeContErr'
actuatorDiskExplicitForceSimpleFoam.C:92:1: error: expected '}' at end of input
make: *** [Make/linux64Gcc45DPOpt/actuatorDiskExplicitForceSimpleFoam.o] Error 1
This is my Ueqn.H code:

Code:
    // Momentum predictor

    tmp<fvVectorMatrix> UEqn
    (
        fvm::div(phi, U)
      + turbulence->divDevReff(U)
    );

    UEqn().relax();

 // Clear old values in ioVolumeForce
 for ( label k = 0; k < VolumeForce . size () ; k ++) {
 VolumeForce [k ] = vector :: zero ;
 }

 // Calculate volume force from actuator disk
 actuatorDisk.CalcActuatorDiskVolForce ( mesh , VolumeForce ) ;

    solve(UEqn() == -fvc::grad(p)) + VolumeForce
//eqnResidual = solve
//( 
//UEqn () == - fvc :: grad (p ) + VolumeForce
// ). initialResidual () ;

// maxResidual = max ( eqnResidual , maxResidual );
I have commented some lines because I receive error with eqnResidual and maxResidual due to the fact, I think, that in OF2.1 there are not included:
"readSIMPLEControls.H","initConvergenceCheck.H " and "convergenceCheck.H"

This is my first/second approach to the code of OF, so I will try to continue with the problem and If a find the mistake, I will post the solution.

Best Regards

Last edited by be_inspired; June 5, 2012 at 05:03.
be_inspired is offline   Reply With Quote

Old   June 4, 2012, 11:27
Post
  #2
Member
 
M. Montero
Join Date: Mar 2009
Location: Madrid
Posts: 76
Rep Power: 7
be_inspired is on a distinguished road
With this new Ueqn.H code, I have received the next error:

Code:
    // Momentum predictor

    tmp<fvVectorMatrix> UEqn
    (
        fvm::div(phi, U)
      + turbulence->divDevReff(U)
    );

    UEqn().relax();

 // Clear old values in ioVolumeForce
 for ( label k = 0; k < VolumeForce . size () ; k ++) {
 VolumeForce [k ] = vector :: zero ;
 }

 // Calculate volume force from actuator disk
 actuatorDisk.CalcActuatorDiskVolForce ( mesh , VolumeForce ) ;

    solve(UEqn() == -fvc::grad(p) + (VolumeForce)
//eqnResidual = solve
//( 
//UEqn () == - fvc :: grad (p ) + VolumeForce
// ). initialResidual () ;

// maxResidual = max ( eqnResidual , maxResidual );
Code:
[beinspired@srvhpcmaster actuatorDiskExplicitForce]$ wmake
Making dependency list for source file actuatorDiskExplicitForceSimpleFoam.C
Making dependency list for source file actuatorDiskExplicitForce.cpp
could not open file actuatorDiskExplicitForce for source file actuatorDiskExplicitForce.cpp
SOURCE=actuatorDiskExplicitForceSimpleFoam.C ;  g++ -m64 -Dlinux64 -DWM_DP -Wall -Wextra -Wno-unused-parameter -Wold-style-cast -O3  -DNoRepository -ftemplate-depth-100 -I/share/apps/OpenFOAM/OpenFOAM-2.1.0/src/turbulenceModels -I/share/apps/OpenFOAM/OpenFOAM-2.1.0/src/turbulenceModels/incompressible/RAS/RASModel -I/share/apps/OpenFOAM/OpenFOAM-2.1.0/src/transportModels -I/share/apps/OpenFOAM/OpenFOAM-2.1.0/src/transportModels/incompressible/singlePhaseTransportModel -I/share/apps/OpenFOAM/OpenFOAM-2.1.0/src/finiteVolume/lnInclude  -IlnInclude -I. -I/share/apps/OpenFOAM/OpenFOAM-2.1.0/src/OpenFOAM/lnInclude -I/share/apps/OpenFOAM/OpenFOAM-2.1.0/src/OSspecific/POSIX/lnInclude   -fPIC -c $SOURCE -o Make/linux64Gcc45DPOpt/actuatorDiskExplicitForceSimpleFoam.o
In file included from actuatorDiskExplicitForceSimpleFoam.C:75:0:
pEqn.H: In function 'int main(int, char**)':
pEqn.H:1:1: error: expected ')' before '{' token
actuatorDiskExplicitForceSimpleFoam.C:76:9: error: expected ';' before '}' token
/share/apps/OpenFOAM/OpenFOAM-2.1.0/src/finiteVolume/lnInclude/initContinuityErrs.H:37:8: warning: unused variable 'cumulativeContErr'
make: *** [Make/linux64Gcc45DPOpt/actuatorDiskExplicitForceSimpleFoam.o] Error 1

actuatorDiskExplicitForceSimpleFoam.C
Code:
/*---------------------------------------------------------------------------*\
  =========                 |
  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
   \\    /   O peration     |
    \\  /    A nd           | Copyright (C) 2004-2011 OpenCFD Ltd.
     \\/     M anipulation  |
-------------------------------------------------------------------------------
License
    This file is part of OpenFOAM.

    OpenFOAM is free software: you can redistribute it and/or modify it
    under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
    for more details.

    You should have received a copy of the GNU General Public License
    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.

Application
    simpleFoam

Description
    Steady-state solver for incompressible, turbulent flow

\*---------------------------------------------------------------------------*/

#include "fvCFD.H"
#include "singlePhaseTransportModel.H"
#include "RASModel.H"
#include "simpleControl.H"
//#include "IObasicSourceList.H"
#include "actuatorDiskExplicitForce.H"

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

int main(int argc, char *argv[])
{
   #include "setRootCase.H"
   #include "createTime.H"
   #include "createMesh.H"
   #include "createFields.H"
   #include "initContinuityErrs.H"
   #include "simpleControl.H"

   simpleControl simple(mesh);
// ************************************************************************* //

	Info<< "\nStarting time loop\n" << endl;

	actuatorDiskExplicitForce actuatorDisk;

	//Read actuator disk geometry
	actuatorDisk.ReadGeometry(mesh);

	//Write geometry to vtk
	actuatorDisk.WriteVTK();

    while (simple.loop())
    {
        Info<< "Time = " << runTime.timeName() << nl << endl;

//# include "readSIMPLEControls.H"
//#include "initConvergenceCheck.H"

        p.storePrevIter();

        // --- Pressure-velocity SIMPLE corrector
        {
            #include "UEqn.H"
            #include "pEqn.H"
        }

        turbulence->correct();

        runTime.write();

        Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
            << "  ClockTime = " << runTime.elapsedClockTime() << " s"
            << nl << endl;
//# include "convergenceCheck.H"
    
    }

    Info<< "End\n" << endl;

    return 0;
}



 // ************************************************************************* //
be_inspired is offline   Reply With Quote

Old   June 5, 2012, 10:47
Default I have compiled the new code, but....
  #3
Member
 
M. Montero
Join Date: Mar 2009
Location: Madrid
Posts: 76
Rep Power: 7
be_inspired is on a distinguished road
But it seems that it does not work properly.

It computes the forces (axial and tangential), but the volumeForce is always zero. There is not a source.

Please, I think that I am near to solve the problem but I do not find where it is.

Thank you

Code:
Starting time loop

 Reading actuator disk geometry .
Actuator disk values loaded from fvSolution :
mIntRadius : 2
mExtRadius : 45
mThrust : 319907
mTorque : 1112984
mRho : 1.225
mPointStartCenterLine : (-1 0 200)
mPointEndCenterLine : (6 0 200)
Time = 1

 Calculating volume force from actuator disk .
 Reading actuator disk geometry .
Actuator disk values loaded from fvSolution :
mIntRadius : 2
mExtRadius : 45
mThrust : 319907
mTorque : 1112984
mRho : 1.225
mPointStartCenterLine : (-1 0 200)
mPointEndCenterLine : (6 0 200)
 Point : 1568650 is in the actuator disk .Coordinates : (2 -13 157)
 Axial force : 1.01388393998
 Tangential force : 0.102133860429
 Tangential force : 0.102133860429
 Point : 1568651 is in the actuator disk .Coordinates : (6 -13 157)
 Axial force : 1.01388393998
 Tangential force : 0.102133860429
 Tangential force : 0.102133860429
 Point : 1568850 is in the actuator disk .Coordinates : (2 -11 157)
 Axial force : 2.81481452742
 Tangential force : 0.286984707626
 Tangential force : 0.286984707626
 Point : 1568851 is in the actuator disk .Coordinates : (6 -11 157)
 Axial force : 2.81481452742
 Tangential force : 0.286984707626
 Tangential force : 0.286984707626
 Point : 1569050 is in the actuator disk .Coordinates : (2 -9 157)
 Axial force : 3.66916761312
 Tangential force : 0.377947068908
 Tangential force : 0.377947068908
 Point : 1569051 is in the actuator disk .Coordinates : (6 -9 157)
 Axial force : 3.66916761312
 Tangential force : 0.377947068908
 Tangential force : 0.377947068908
 Point : 1569250 is in the actuator disk .Coordinates : (2 -7 157)
 Axial force : 4.21403338735
 Tangential force : 0.437715527254
 Tangential force : 0.437715527254
 Point : 1569251 is in the actuator disk .Coordinates : (6 -7 157)
 Axial force : 4.21403338735
 Tangential force : 0.437715527254
 Tangential force : 0.437715527254
 Point : 1569450 is in the actuator disk .Coordinates : (2 -5 157)
 Axial force : 4.57158094882
 Tangential force : 0.477885337417
 Tangential force : 0.477885337417
 Point : 1569451 is in the actuator disk .Coordinates : (6 -5 157)
 Axial force : 4.57158094882
 Tangential force : 0.477885337417
 Tangential force : 0.477885337417
 Point : 1569650 is in the actuator disk .Coordinates : (2 -3 157)
 Axial force : 4.79115051603
 Tangential force : 0.502989645109
 Tangential force : 0.502989645109
 Point : 1569651 is in the actuator disk .Coordinates : (6 -3 157)
 Axial force : 4.79115051603
 Tangential force : 0.502989645109
 Tangential force : 0.502989645109
 Point : 1569850 is in the actuator disk .Coordinates : (2 -1 157)
 Axial force : 4.89606361827
 Tangential force : 0.515113904249
 Tangential force : 0.515113904249
 Point : 1569851 is in the actuator disk .Coordinates : (6 -1 157)
 Axial force : 4.89606361827
 Tangential force : 0.515113904249
 Tangential force : 0.515113904249
 Point : 1570050 is in the actuator disk .Coordinates : (2 1 157)
 Axial force : 4.89606361827
 Tangential force : 0.515113904249
 Tangential force : 0.515113904249
 Point : 1570051 is in the actuator disk .Coordinates : (6 1 157)
 Axial force : 4.89606361827
 Tangential force : 0.515113904249
 Tangential force : 0.515113904249
 Point : 1570250 is in the actuator disk .Coordinates : (2 3 157)
 Axial force : 4.79115051603
 Tangential force : 0.502989645109
 Tangential force : 0.502989645109
 Point : 1570251 is in the actuator disk .Coordinates : (6 3 157)
 Axial force : 4.79115051603
 Tangential force : 0.502989645109
 Tangential force : 0.502989645109
 Point : 1570450 is in the actuator disk .Coordinates : (2 5 157)
 Axial force : 4.57158094882
 Tangential force : 0.477885337417
 Tangential force : 0.477885337417
Code:
    // Momentum predictor

    tmp<fvVectorMatrix> UEqn
    (
        fvm::div(phi, U)
      + turbulence->divDevReff(U)
    );

    UEqn().relax();

 // Clear old values in ioVolumeForce
 for (label k = 0; k < VolumeForce.size();k ++) {VolumeForce[k] = vector::zero;}

 // Calculate volume force from actuator disk
 actuatorDisk.CalcActuatorDiskVolForce (mesh,VolumeForce);

    solve(UEqn() == -fvc::grad(p) + VolumeForce);
//eqnResidual = solve
//( 
//UEqn () == - fvc :: grad (p ) + VolumeForce
// ). initialResidual () ;

// maxResidual = max ( eqnResidual , maxResidual );
be_inspired is offline   Reply With Quote

Old   August 12, 2012, 06:58
Default hello
  #4
New Member
 
sattar
Join Date: Dec 2011
Posts: 12
Rep Power: 4
drsattar is on a distinguished road
hi all

i am very interested in this case of actuator dis of Erik Svenning
but i found the same problem of you ???
are you solved??
please contact me
drsattar is offline   Reply With Quote

Old   August 17, 2012, 11:32
Default
  #5
New Member
 
Oscar Urbina
Join Date: Nov 2011
Location: Montréal
Posts: 16
Rep Power: 4
oscar_urri is on a distinguished road
hello drsattar and be_inspired,

about the Erik Svenning code there's a couple of things you ahve to take into account,

first that code was made for OpenFoam 1.5 dev, and the coding the solvers has changed from that version to 2.1.x. so that's why the simplefoam solver that comes with the code won't compile in more recent versions of openfoam. if you insist on using it you would have to cut and paste the parts of the code into the newer version of simplefoam (it can be a bit tricky - it took me a while)

second, that code was made on a openfoam workshop, and not for a phd or masters thesis, i've personally updated the code and made it run in the new version of openfoam and i've encounter a couple of mistakes in the code:

- first in the code he sets the axial and tangential force to be in the same direction, which is not true, even though openfoam works in cartesian coordiantes you have to decompose the tagential force in Z and Y.

-also the way the code selects the cells to insert the bodyforce form points and faces leads to a erratic distribution of the force.

i finally gave up on that code :s

i would refer you to this thread:

Propeller dynamics/body force model

here they show a very simple and practical way to generate and insert a bodyforce into a solver ,

and depending on you C++ it turns out to be very flexible to insert mathematical expresions to calculate the force.

i hope this helps and good luck!

Oscar
oscar_urri is offline   Reply With Quote

Old   August 17, 2012, 13:50
Post bodyForce
  #6
New Member
 
sattar
Join Date: Dec 2011
Posts: 12
Rep Power: 4
drsattar is on a distinguished road
dear oscar_urri

i am very thanful for your reply, if you like send me your email to send you the final case which i created it of actuator disk model. i wish if you able to check it...
also the case of Fan (body force mode) is not work with me???
my email (hdrsattar@yahoo.com)
thank again
drsattar is offline   Reply With Quote

Old   August 19, 2012, 19:05
Default
  #7
New Member
 
Oscar Urbina
Join Date: Nov 2011
Location: Montréal
Posts: 16
Rep Power: 4
oscar_urri is on a distinguished road
dear drsattar,

it's not necessary for you to send me an e-mail ,

my recomendation is not to use the actuador disk model form Erik Svenning, as i told you it has mistakes that i was not able to correct,

you should go with the bodyforce model, i'm going to attach a sample solver and a sample case, (it's only set to add an axial force, you're gonna have to modify it to include the tangential force),

to make a good case,

the first thing you should do is to validate your code against the analytical solution, here's and article that talks about that, and gives the formulas for the anlytical solution,

http://orbit.dtu.dk/fedora/objects/o...190785/content

after you can set up an actual real case and compare it against experimental data, or against other already validated model.

i wish i could help you more, but i also have do my own simulations, i have 2 semesters before i finish my masters and i have to concentrate on that.

if you have any other questions ask, but it might take me a while to answer,

the best of luck on your research, i know it's not easy

Oscar
Attached Files
File Type: gz simpleFoamForce.tar.gz (3.2 KB, 106 views)
File Type: gz force3.tar.gz (4.4 KB, 96 views)
oscar_urri is offline   Reply With Quote

Old   August 20, 2012, 08:00
Smile actuator disk (bodyForce)
  #8
New Member
 
sattar
Join Date: Dec 2011
Posts: 12
Rep Power: 4
drsattar is on a distinguished road
Dear oscar_urri

I am very grateful to you about your answer on my problem, now i will try to use and modify the attachment files ......
i wish to be contact with me in the future.....
thanks again
drsattar is offline   Reply With Quote

Old   July 3, 2014, 10:54
Default
  #9
Member
 
M. Montero
Join Date: Mar 2009
Location: Madrid
Posts: 76
Rep Power: 7
be_inspired is on a distinguished road
Dear oscar_urri,

With your solver, pressure wiggles are not fixed:

Pressure Jump Correction. Actuator Disc Model and numerical wiggles

This is quite quite important for me.
The report that you have linked is my reference point but I do not know how to modify simpleFoam and rotorDiskSource to manage body forces without pressure wiggles.

The problem happens when body force is directly applied over the UEqn and velocity and pressure are not coupled.
It seems like you have not implemented the correction proposed by your link

Do you have a modified version of your simpleFoamForce to solve that?

be_inspired is offline   Reply With Quote

Reply

Thread Tools
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 On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
OF2.1: turbulentInlet for LES, description of how the fluctuations are generated Jan.Östh OpenFOAM Running, Solving & CFD 6 December 17, 2012 12:55
kOmegaSST OF2.1 Help needed! wiedangel OpenFOAM Running, Solving & CFD 0 May 9, 2012 10:01


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