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/)
-   -   new thermodynamic model (http://www.cfd-online.com/Forums/openfoam-programming-development/106745-new-thermodynamic-model.html)

Tobi September 6, 2012 18:30

new thermodynamic model
 
Hi all,

i am working on a new thermodynamic model based on the flamelet solver of alberto cuoci.

I copied the thermodynamic src code into a new folder, called SLFMThermo
and renamed everything in the code to SLFM...

Okay ... after that I compiled the basicThermo and the SLFMThermo and everything worked fine.

After that I removed everything and build the alberto thermodynamicm model again and it worked :)

Now I added my model to the Make/files file and compiled again.

As I get to the SLFMThermo I ll get the following output:

Code:

SLFMThermo/SLFMThermo.C:32: error: redefinition of ‘Foam::SLFMThermo<MixtureType>::SLFMThermo(const Foam::fvMesh&)’
SLFMThermo/SLFMThermo.C:32: error: ‘Foam::SLFMThermo<MixtureType>::SLFMThermo(const Foam::fvMesh&)’ previously declared here
SLFMThermo/SLFMThermo.C:298: error: redefinition of ‘Foam::SLFMThermo<MixtureType>::~SLFMThermo()’
SLFMThermo/SLFMThermo.C:298: error: ‘virtual Foam::SLFMThermo<MixtureType>::~SLFMThermo()’ previously declared here
SLFMThermo/SLFMThermo.C:305: error: redefinition of ‘void Foam::SLFMThermo<MixtureType>::calculate()’

Why do I get redifinition error ? SLFMThermo is just declared in the SLFMThermo dict. The other thermodynamic is called hPdfThermo ?

Can someone give me an advice?
Tobi

Tobi September 7, 2012 03:55

Hi all,

today I had a look at the thermodynamic model hRho and hsRho and its the same like I have.

Well I simplyfied my c++ code so that there is just the constructor and deconstructor in the header and source files. I get the same error:

Code:

SLFMThermo/SLFMThermo.C:32: error: redefinition of ‘Foam::SLFMThermo<MixtureType>::SLFMThermo(const Foam::fvMesh&)’
SLFMThermo/SLFMThermo.C:32: error: ‘Foam::SLFMThermo<MixtureType>::SLFMThermo(const Foam::fvMesh&)’ previously declared here
SLFMThermo/SLFMThermo.C:59: error: redefinition of ‘Foam::SLFMThermo<MixtureType>::~SLFMThermo()’
SLFMThermo/SLFMThermo.C:59: error: ‘virtual Foam::SLFMThermo<MixtureType>::~SLFMThermo()’ previously declared here


My source file is:
Code:

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

#include "SLFMThermo.H"
#include "fixedValueFvPatchFields.H"

// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //

template<class MixtureType>
Foam::SLFMThermo<MixtureType>::SLFMThermo(const fvMesh& mesh)
:
    basicFThermo(mesh),
    MixtureType(*this, mesh),

    h_laminar_
    (
        IOobject
        (
            "h",
            mesh.time().timeName(),
            mesh,
            IOobject::NO_READ,
            IOobject::NO_WRITE
        ),
        mesh,
        dimensionSet(0, 2, -2, 0, 0),
        hBoundaryTypes()
    )
{

}


// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //

template<class MixtureType>
Foam::SLFMThermo<MixtureType>::~SLFMThermo()
{}


and my header file is:

Code:

*---------------------------------------------------------------------------*/

#ifndef SLFMThermo_H
#define SLFMThermo_H

#include "basicFThermo.H"
#include "basicMixture.H"

#include "OpenSMOKE_SLFM_NonAdiabaticFlamelet_Library.hpp"

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

namespace Foam
{

/*---------------------------------------------------------------------------*\
                        Class SLFMThermo Declaration
\*---------------------------------------------------------------------------*/

template<class MixtureType>
class SLFMThermo
:
    public basicFThermo,
    public MixtureType
{
private:


        volScalarField h_laminar_;

        OpenSMOKE_SLFM_NonAdiabaticFlamelet_Library    flamelets_library;


private:

        SLFMThermo(const SLFMThermo<MixtureType>&);

public:

    //- Runtime type information
    TypeName("SLFMThermo");


    // Constructors

    //- Construct from mesh
    SLFMThermo(const fvMesh&);


    //- Destructor
    virtual ~SLFMThermo();
};


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

} // End namespace Foam

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

#ifdef NoRepository
#  include "SLFMThermo.C"
#endif

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

#endif

I do not know why the output is "redefinition"? ?
:/

Couse if I just compile my thermo model it works. with both - i get redifinitions :(

Tobi September 7, 2012 05:33

Hi all,

I fixed the problem.
I deleted all folders and did the same things again.
Now I can compile everything without any errors and the solvers are working :)


If the laminarFlameletSolver works good and the validation gives good results I ll share it with you!

Tobi


All times are GMT -4. The time now is 08:15.