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

foam extend 3.2 + libacoustics-OF3.0.0

Register Blogs Community New Posts Updated Threads Search

Like Tree1Likes
  • 1 Post By Zeppo

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old   February 23, 2017, 02:51
Default foam extend 3.2 + libacoustics-OF3.0.0
  #1
Member
 
thegauravonline's Avatar
 
GS
Join Date: Mar 2016
Posts: 81
Rep Power: 10
thegauravonline is on a distinguished road
I am working on FSI package in foam-extend 3.2 as native openFoam does not support FSI.

Next, I wish to compile the below acoustics library in foam extend. This library was presented in OF workshop 13 and only available for openFOAM 3.

https://github.com/unicfdlab/Trainin...ustics-OF3.0.0

For installing this on foam-extend 3.2, I did try to make some changes in make->options but after a point I am unable to connect the requisite files (mainly rasModel.h).

Can someone please help me in converting the compatibility of the libAcoustics3.0.0 from openFOAM 3 to foam-extend 3.2.

Very Thanks .
thegauravonline is offline   Reply With Quote

Old   March 23, 2017, 17:16
Default
  #2
Senior Member
 
Zeppo's Avatar
 
Sergei
Join Date: Dec 2009
Posts: 261
Rep Power: 21
Zeppo will become famous soon enough
Your link is broken.
You should provide more info explayning what you are doing step by step to compile the code, what errors you got and so on.
Zeppo is offline   Reply With Quote

Old   March 31, 2017, 05:40
Default
  #3
Member
 
thegauravonline's Avatar
 
GS
Join Date: Mar 2016
Posts: 81
Rep Power: 10
thegauravonline is on a distinguished road
while compling:

I am facing issue precisely at this point.

Code:
Curle/SoundObserver.C: In member function ‘void Foam::SoundObserver::apressure(Foam::scalar)’:
Curle/SoundObserver.C:123:24: error: no matching function for call to ‘Foam::List<double>::append(Foam::scalar&)’
     p_.append(apressure);
                        ^
In file included from /home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/List.H:264:0,
                 from /home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/HashTable.C:30,
                 from /home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/Istream.H:181,
                 from /home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/ISstream.H:40,
                 from /home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/IOstreams.H:38,
                 from /home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/VectorSpace.C:27,
                 from /home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/VectorSpace.H:169,
                 from /home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/VectorTemplate.H:44,
                 from /home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/vector.H:39,
                 from Curle/SoundObserver.H:41,
                 from Curle/SoundObserver.C:26:
/home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/ListI.H:97:13: note: candidate: void Foam::List<T>::append(const Foam::UList<T>&) [with T = double]
 inline void Foam::List<T>::append(const UList<T>& lst)
             ^
/home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/ListI.H:97:13: note:   no known conversion for argument 1 from ‘Foam::scalar {aka double}’ to ‘const Foam::UList<double>&’
/home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/ListI.H:118:13: note: candidate: void Foam::List<T>::append(const Foam::UIndirectList<T>&) [with T = double]
 inline void Foam::List<T>::append(const UIndirectList<T>& lst)
             ^
/home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/ListI.H:118:13: note:   no known conversion for argument 1 from ‘Foam::scalar {aka double}’ to ‘const Foam::UIndirectList<double>&’
Curle/SoundObserver.C: In member function ‘void Foam::SoundObserver::atime(Foam::scalar)’:
Curle/SoundObserver.C:129:23: error: no matching function for call to ‘Foam::List<double>::append(Foam::scalar&)’
     time_.append(atime);
                       ^
In file included from /home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/List.H:264:0,
                 from /home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/HashTable.C:30,
                 from /home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/Istream.H:181,
                 from /home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/ISstream.H:40,
                 from /home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/IOstreams.H:38,
                 from /home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/VectorSpace.C:27,
                 from /home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/VectorSpace.H:169,
                 from /home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/VectorTemplate.H:44,
                 from /home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/vector.H:39,
                 from Curle/SoundObserver.H:41,
                 from Curle/SoundObserver.C:26:
/home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/ListI.H:97:13: note: candidate: void Foam::List<T>::append(const Foam::UList<T>&) [with T = double]
 inline void Foam::List<T>::append(const UList<T>& lst)
             ^
/home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/ListI.H:97:13: note:   no known conversion for argument 1 from ‘Foam::scalar {aka double}’ to ‘const Foam::UList<double>&’
/home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/ListI.H:118:13: note: candidate: void Foam::List<T>::append(const Foam::UIndirectList<T>&) [with T = double]
 inline void Foam::List<T>::append(const UIndirectList<T>& lst)
             ^
/home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/ListI.H:118:13: note:   no known conversion for argument 1 from ‘Foam::scalar {aka double}’ to ‘const Foam::UIndirectList<double>&’
Curle/SoundObserver.dep:202: recipe for target 'Make/linux64GccDPOpt/SoundObserver.o' failed
make: *** [Make/linux64GccDPOpt/SoundObserver.o] Error 1
make: *** Waiting for unfinished jobs....
In file included from /home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/OutputFilterFunctionObject.C:27:0,
                 from /home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/OutputFilterFunctionObject.H:204,
                 from Curle/CurleFunctionObject.H:40,
                 from Curle/CurleFunctionObject.C:26:
/home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/IOOutputFilter.H: In instantiation of ‘void Foam::IOOutputFilter<OutputFilter>::movePoints(const pointField&) [with OutputFilter = Foam::Curle; Foam::pointField = Foam::Field<Foam::Vector<double> >]’:
Curle/CurleFunctionObject.C:40:1:   required from here
/home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/IOOutputFilter.H:113:37: error: no matching function for call to ‘Foam::IOOutputFilter<Foam::Curle>::movePoints(const pointField&)’
             OutputFilter::movePoints(points);
                                     ^
In file included from Curle/CurleFunctionObject.H:39:0,
                 from Curle/CurleFunctionObject.C:26:
Curle/Curle.H:213:22: note: candidate: virtual void Foam::Curle::movePoints(const Foam::polyMesh&)
         virtual void movePoints(const polyMesh&)
                      ^
Curle/Curle.H:213:22: note:   no known conversion for argument 1 from ‘const pointField {aka const Foam::Field<Foam::Vector<double> >}’ to ‘const Foam::polyMesh&’
Curle/CurleFunctionObject.dep:330: recipe for target 'Make/linux64GccDPOpt/CurleFunctionObject.o' failed
make: *** [Make/linux64GccDPOpt/CurleFunctionObject.o] Error 1
In file included from Curle/Curle.C:29:0:
/home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/createTime.H:5:11: error: ‘Info’ in namespace ‘Foam’ does not name a type
     Foam::Info<< "Create time\n" << Foam::endl;
           ^
/home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/createTime.H:10:9: error: ‘args’ was not declared in this scope
         args.rootPath(),
         ^
/home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/createTime.H:11:9: error: ‘args’ was not declared in this scope
         args.caseName(),
         ^
/home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/createTime.H:14:10: error: ‘args’ was not declared in this scope
         !args.optionFound("noFunctionObjects")
          ^
Curle/Curle.C: In member function ‘Foam::tmp<Foam::Field<double> > Foam::Curle::normalStress(const Foam::word&) const’:
Curle/Curle.C:52:37: error: ‘const class Foam::fvBoundaryMesh’ has no member named ‘findPatchID’
     label patchId = mesh.boundary().findPatchID(patchName);
                                     ^
Curle/Curle.C: In member function ‘virtual void Foam::Curle::read(const Foam::dictionary&)’:
Curle/Curle.C:200:6: error: no matching function for call to ‘Foam::List<Foam::SoundObserver>::append(Foam::SoundObserver)’
      );
      ^
In file included from /home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/List.H:264:0,
                 from /home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/HashTable.C:30,
                 from /home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/Istream.H:181,
                 from /home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/ISstream.H:40,
                 from /home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/IOstreams.H:38,
                 from /home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/VectorSpace.C:27,
                 from /home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/VectorSpace.H:169,
                 from /home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/VectorTemplate.H:44,
                 from /home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/vector.H:39,
                 from /home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/coordinateSystem.H:131,
                 from Curle/Curle.H:43,
                 from Curle/Curle.C:26:
/home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/ListI.H:97:13: note: candidate: void Foam::List<T>::append(const Foam::UList<T>&) [with T = Foam::SoundObserver]
 inline void Foam::List<T>::append(const UList<T>& lst)
             ^
/home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/ListI.H:97:13: note:   no known conversion for argument 1 from ‘Foam::SoundObserver’ to ‘const Foam::UList<Foam::SoundObserver>&’
/home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/ListI.H:118:13: note: candidate: void Foam::List<T>::append(const Foam::UIndirectList<T>&) [with T = Foam::SoundObserver]
 inline void Foam::List<T>::append(const UIndirectList<T>& lst)
             ^
/home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/ListI.H:118:13: note:   no known conversion for argument 1 from ‘Foam::SoundObserver’ to ‘const Foam::UIndirectList<Foam::SoundObserver>&’
Curle/Curle.C: In member function ‘void Foam::Curle::correct()’:
Curle/Curle.C:219:34: error: ‘const class Foam::fvBoundaryMesh’ has no member named ‘findPatchID’
  label patchId = mesh.boundary().findPatchID(patchName);
                                  ^
Curle/Curle.C:270:34: error: ‘Foam::constant’ has not been declared
  scalar coeff1 = 1. / 4. / Foam::constant::mathematical::pi / c0_;
                                  ^
Curle/Curle.C: In member function ‘void Foam::Curle::calcDistances()’:
Curle/Curle.C:357:37: error: ‘const class Foam::fvBoundaryMesh’ has no member named ‘findPatchID’
     label patchId = mesh.boundary().findPatchID(patchNames_[0]);
                                     ^
Curle/Curle.C:364:54: error: no matching function for call to ‘Foam::List<Foam::word>::append(const Foam::word&)’
      patchNames.append(mesh.boundary()[iPatch].name());
                                                      ^
In file included from /home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/List.H:264:0,
                 from /home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/HashTable.C:30,
                 from /home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/Istream.H:181,
                 from /home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/ISstream.H:40,
                 from /home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/IOstreams.H:38,
                 from /home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/VectorSpace.C:27,
                 from /home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/VectorSpace.H:169,
                 from /home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/VectorTemplate.H:44,
                 from /home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/vector.H:39,
                 from /home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/coordinateSystem.H:131,
                 from Curle/Curle.H:43,
                 from Curle/Curle.C:26:
/home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/ListI.H:97:13: note: candidate: void Foam::List<T>::append(const Foam::UList<T>&) [with T = Foam::word]
 inline void Foam::List<T>::append(const UList<T>& lst)
             ^
/home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/ListI.H:97:13: note:   no known conversion for argument 1 from ‘const Foam::word’ to ‘const Foam::UList<Foam::word>&’
/home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/ListI.H:118:13: note: candidate: void Foam::List<T>::append(const Foam::UIndirectList<T>&) [with T = Foam::word]
 inline void Foam::List<T>::append(const UIndirectList<T>& lst)
             ^
/home/iitmech4/foam/foam-extend-3.2/src/foam/lnInclude/ListI.H:118:13: note:   no known conversion for argument 1 from ‘const Foam::word’ to ‘const Foam::UIndirectList<Foam::word>&’
Curle/Curle.dep:697: recipe for target 'Make/linux64GccDPOpt/Curle.o' failed
make: *** [Make/linux64GccDPOpt/Curle.o] Error 1
Am at dead end because I am hardly a programmer.

Please help anyone.
thegauravonline is offline   Reply With Quote

Old   April 2, 2017, 11:13
Default
  #4
Senior Member
 
Zeppo's Avatar
 
Sergei
Join Date: Dec 2009
Posts: 261
Rep Power: 21
Zeppo will become famous soon enough
Okay, as the error states there's no Foam::List<double>::append(Foam::scalar&) in foam-extend (you can find it in OpenFOAM though). If you want to add an element to a List your options are

1) Whenever you need to add a new element you "increase" the list size by 1 and set the element at the last position in the list. This strategy is very-very uneffective from the memory allocation point of view: every time you add a new element a new memory block needed to accomodate list values is allocated. It can hit the performance so bad.

Code:
scalarList list;
...
list.setSize(list.size()+1);
list.last() = scalar(1.0);
...
list.setSize(list.size()+1);
list.last() = scalar(2.0);
or you can create a temporary List consisting of a single element and append it to another one

Code:
scalarList list;
...
list.append(scalarList(1, 1.0));
...
list.append(scalarList(1, 2.0));
2) If you know the number of elements to append to the list you can "increase" the list size by the number of elements beforehands and add elements later on at their respective positions. This approach is much better and extensively used in foam source code.

Code:
List<scalar> list;
list.setSize(list.size()+2);
...
list[0] = scalar(1.0);
...
list[1] = scalar(2.0);
3) An alternative to 1) and 3) is using DynamicList which can perform memory management by itself and you don't need to care much about it

Code:
DynamicList<scalar> list;
...
list.append(1.0);
...
list.append(2.0);
gigili206 likes this.
Zeppo is offline   Reply With Quote

Old   April 3, 2017, 06:20
Default
  #5
Member
 
thegauravonline's Avatar
 
GS
Join Date: Mar 2016
Posts: 81
Rep Power: 10
thegauravonline is on a distinguished road
Very Thanks to you Sergel.

I am afraid, I think I need to be spoon-fed.

I understand, I need to look into List.c/List.h for the changes or do I?

But how and where to attach the DynamicList for scalar as you said?

I am sorry. I hardly understand the lists and append function of opeFoam background.

Please help.
thegauravonline is offline   Reply With Quote

Old   April 3, 2017, 16:35
Default
  #6
Senior Member
 
Zeppo's Avatar
 
Sergei
Join Date: Dec 2009
Posts: 261
Rep Power: 21
Zeppo will become famous soon enough
No, you must not make any modifications to any parts of OF (such as List.H, List.C), you have to alter the code you develop.
Zeppo is offline   Reply With Quote

Old   April 4, 2017, 05:31
Default
  #7
Member
 
thegauravonline's Avatar
 
GS
Join Date: Mar 2016
Posts: 81
Rep Power: 10
thegauravonline is on a distinguished road
Oh... I got it wrong way.
okay now I made changes in .h file while initialization of class which reads as:
Code:
class SoundObserver
{
    //-
    word name_;

    //-
    vector position_;
    
    //-
    scalar pref_;
    
    //-
    scalar apressure_;

    //-
    scalar atime_;

    //-original
    //List<scalar> p_;

    DynamicList<scalar> p_;
    p_.append(1.0);    
    
    //-original
    //List<scalar> time_; 
    DynamicList<scalar> time_;   
     time_.append(2.0); 

    //-
    label fftFreq_;

    bool checkOrder(scalar size) const;
this gave me following error:
Code:
In file included from Curle/SoundObserver.C:26:0:
Curle/SoundObserver.H:73:23: error: wrong number of template arguments (1, should be 4)
     DynamicList<scalar> p_;

this is the original .c file of the library.
How to define DynamicList in it?

Code:
#include "SoundObserver.H"
#include "mathematicalConstants.H"

#include "IFstream.H"
#include "DynamicList.H"
#include "fft.H"
#include "SubField.H"
#include "mathematicalConstants.H"

Foam::SoundObserver::SoundObserver()
:
    name_(Foam::word::null),
    position_(vector::zero),
    pref_(1.0e-5),
    apressure_(0.0),
    atime_(0.0),
    p_(0),
    time_(0),
    fftFreq_(1024)
{
}

Foam::SoundObserver::SoundObserver(word name, vector pos, scalar pref, label fftFreq)
:
    name_(name),
    position_(pos),
    pref_(pref),
    apressure_(0.0),
    atime_(0.0),
    p_(0),
    time_(0),
    fftFreq_(fftFreq)
{
}


Foam::SoundObserver::SoundObserver(const SoundObserver& so)
:
    name_(so.name_),
    position_(so.position_),
    pref_(so.pref_),
    apressure_(so.apressure_),
    atime_(so.atime_),
    p_(so.p_),
    time_(so.time_),
    fftFreq_(so.fftFreq_)
{
}

const Foam::word& Foam::SoundObserver::name() const
{
    return name_;
}

const Foam::vector& Foam::SoundObserver::position() const
{
    return position_;
}

const Foam::scalar& Foam::SoundObserver::apressure() const
{
    return apressure_;
}

const Foam::scalar& Foam::SoundObserver::atime() const
{
    return atime_;
}

const Foam::List<Foam::scalar>& Foam::SoundObserver::p() const
{
    return p_;
}

const Foam::List<Foam::scalar>& Foam::SoundObserver::time() const
{
    return time_;
}

const Foam::scalar& Foam::SoundObserver::pref() const
{
    return pref_;
}

void Foam::SoundObserver::name(word name)
{
    name_ = name;
}

void Foam::SoundObserver::position(vector position)
{
    position_ = position;
}

void Foam::SoundObserver::apressure(scalar apressure)
{
    apressure_ = apressure;
    p_.append(apressure);
}

void Foam::SoundObserver::atime(scalar atime)
{
    atime_ = atime;
    time_.append(atime);
}

bool Foam::SoundObserver::checkOrder(scalar size) const
{
  double reminder;
  reminder = log10(size)/log10(2.0);
  Info<<"Checking order rem="<<reminder<<endl;
  if (reminder > floor(reminder)){
    Info<<"False"<<endl;
    return false;
  }
  else{
    return true;
  };
}

Foam::autoPtr<Foam::List<Foam::List<Foam::scalar> > > Foam::SoundObserver::fft(scalar tau) const
{
    List<List<scalar> > fft_res(3);

    forAll (fft_res, i)
    {
	fft_res[i].resize(0);
    }
    
    if ( (p_.size() > 0) && (p_.size() % fftFreq_ == 0) && checkOrder(p_.size()) )
    {
        tmp<scalarField> tPn2
	(
	   mag
	   (
	    fft::reverseTransform
	    (
	     ReComplexField(p_),
	     labelList(1, p_.size())
	    )
	   )
	 );
   
	tmp<scalarField> tPn
	(
	 new scalarField
	 (
	  scalarField::subField(tPn2(), tPn2().size()/2)
	 )
	);
	
	scalarField& Pn = tPn();
	Pn *= 2.0/sqrt(scalar(tPn2().size()));
	Pn[0] /= 2.0;
	
	scalar N = p_.size();	
	scalarField f(N/2);
	scalar deltaf = 1.0/(N*tau);
	forAll(f, i)
	{
	  f[i] = i*deltaf;
	}

	 fft_res[0].resize(tPn().size());
	 fft_res[1].resize(tPn().size());
	 fft_res[2].resize(tPn().size());
	
	 forAll (tPn(), k)
	 {
	     fft_res[0][k] = f[k]; //Frequency, Hz
	     fft_res[1][k] = tPn()[k]; //pressure amplitude, Pa
	     fft_res[2][k] = 20*log10(fft_res[1][k] / pref_); //SLP, dB
	 }
    }    
    return autoPtr<List<List<scalar> > >
    (
	new List<List<scalar> >
	(
	 fft_res    
	)
    );
    
}

//
//END-OF-FILE
Corresponding original .H file
Code:

SourceFiles
    SoundObserver.C

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

#ifndef SoundObserver_H
#define SoundObserver_H

#include "OFstream.H"
#include "vector.H"
#include "Tuple2.H"

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

namespace Foam
{

/*---------------------------------------------------------------------------*\
                           Class SoundObserver Declaration
\*---------------------------------------------------------------------------*/

class SoundObserver
{
    //-
    word name_;

    //-
    vector position_;
    
    //-
    scalar pref_;
    
    //-
    scalar apressure_;

    //-
    scalar atime_;

    //-
    List<scalar> p_;
        
    //-
    List<scalar> time_; 
   
    //-
    label fftFreq_;

    bool checkOrder(scalar size) const;

public:

    /// Constructors
    
    //-
    SoundObserver();
    
    //-
    SoundObserver(word name, vector pos, scalar pref, label fftFreq);
    
    //-
    SoundObserver(const SoundObserver&);

    /// Access
    
    //-
    const word& name() const;
    
    //-
    const vector& position() const;
    
    //-
    const scalar& apressure() const;

//noiseFFT stuff
    const scalar& atime() const;
//-
    const scalar& pref() const; 
    
    //-
    void name(word name);
    
    //-
    void position(vector position);
    
    //-
    void apressure(scalar apressure);

//noiseFFT stuff
    void atime(scalar atime);
//
    const List<scalar>& p() const;
    
//-
    const List<scalar>& time() const;
    
    //-
    autoPtr<List<List<scalar> > > fft (scalar tau) const;
};

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

} // End namespace Foam

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

#endif

// ************************************************************************* //
How to proceed?

Thankyou Sergel.

Last edited by thegauravonline; April 4, 2017 at 07:32.
thegauravonline is offline   Reply With Quote

Old   April 7, 2017, 15:29
Default
  #8
Senior Member
 
Zeppo's Avatar
 
Sergei
Join Date: Dec 2009
Posts: 261
Rep Power: 21
Zeppo will become famous soon enough
If I were you I would go with the option #1 (inefficient one) which I suggested in my previous post. It would require less modifications to the code compared to what you try to do now replacing List with DynamicList. Find all yours
Code:
list.append(value);
and replace them with
Code:
list.setSize(list.size()+1);
list.last() = value;
Zeppo is offline   Reply With Quote

Old   April 10, 2017, 01:54
Default
  #9
Member
 
thegauravonline's Avatar
 
GS
Join Date: Mar 2016
Posts: 81
Rep Power: 10
thegauravonline is on a distinguished road
Many Thanks for your help Sergel.

It worked.

I ve narrowed my error log to much lesser now.

Code:
Curle/Curle.C: In member function ‘Foam::tmp<Foam::Field<double> > Foam::Curle::normalStress(const Foam::word&) const’:
Curle/Curle.C:51:37: error: ‘const class Foam::fvBoundaryMesh’ has no member named ‘findPatchID’
     label patchId = mesh.boundary().findPatchID(patchName);
                                     ^
Curle/Curle.C: In member function ‘void Foam::Curle::correct()’:
Curle/Curle.C:219:34: error: ‘const class Foam::fvBoundaryMesh’ has no member named ‘findPatchID’
  label patchId = mesh.boundary().findPatchID(patchName);
                                  ^                                 
Curle/Curle.C: In member function ‘void Foam::Curle::calcDistances()’:
Curle/Curle.C:357:37: error: ‘const class Foam::fvBoundaryMesh’ has no member named ‘findPatchID’
     label patchId = mesh.boundary().findPatchID(patchNames_[0]);
                                     ^
Curle/Curle.dep:696: recipe for target 'Make/linux64GccDPOpt/Curle.o' failed
make: *** [Make/linux64GccDPOpt/Curle.o] Error 1
Searching for the links of "findPatchID"

Last edited by thegauravonline; April 11, 2017 at 01:05.
thegauravonline is offline   Reply With Quote

Old   April 11, 2017, 01:11
Default
  #10
Member
 
thegauravonline's Avatar
 
GS
Join Date: Mar 2016
Posts: 81
Rep Power: 10
thegauravonline is on a distinguished road
Found out that fvboundarymesh file in foam-extend version does not have this initialization that exist in fvboundarymesh file of openfoam3.0.
Code:
            //- Find patch index given a name
            label findPatchID(const word& patchName) const;

            //- Find patch indices given a name
            labelList findIndices(const keyType&, const bool useGroups) const;
Should I make changes to foam files. Or is there any other way to specify patches in the code.
thegauravonline is offline   Reply With Quote

Old   April 14, 2017, 15:33
Default
  #11
Senior Member
 
Zeppo's Avatar
 
Sergei
Join Date: Dec 2009
Posts: 261
Rep Power: 21
Zeppo will become famous soon enough
Right, foam-extend version of fvBoundaryMesh doesn't have member-function findPatchID. Then just copy-paste the very body of openfoam's findPatchID to the point where the function itself is called
Code:
label patchId = mesh.boundary().findPatchID(patchName);
->
Code:
label patchId = -1;

const fvPatchList& patches = mesh.boundary();

forAll(patches, patchI)
{
    if (patches[patchI].name() == patchName)
    {
        patchId = patchI;
    }
}
Zeppo is offline   Reply With Quote

Old   April 15, 2017, 06:19
Default
  #12
Member
 
thegauravonline's Avatar
 
GS
Join Date: Mar 2016
Posts: 81
Rep Power: 10
thegauravonline is on a distinguished road
Very Thanks Sergel.

It worked smoothly.

The library compiled successfully.


Thanks again.
thegauravonline is offline   Reply With Quote

Old   April 20, 2017, 06:29
Default
  #13
Member
 
thegauravonline's Avatar
 
GS
Join Date: Mar 2016
Posts: 81
Rep Power: 10
thegauravonline is on a distinguished road
Every thing was in good shape. The library worked perfectly untill it had to calculate "fft".

Looks like the library had only links and initialization just enough to successfully compile. But it cannot recognize the definitions in foam-extend 3.2.
Code:
Executing fft for obs: CurleAnalogy1
Checking order rem=10
icoFsiElasticNonLinULSolidFoam:
  symbol lookup error: 
      /home/iitmech4/foam/iitmech4-3.2/lib/linux64GccDPOpt/libAcoustics.so: 
            undefined symbol:
                _ZN4Foam3fft16reverseTransformERKNS_3tmpINS_5FieldINS_7complexEEEEERKNS_4ListIiEE
I checked and compared fft.h/ fft.c of both OF-3.0 and FE-3.2 but found no relevant differences in them.

What could the problem be in FE-3.2 as the library calculates "fft" flawlessly when I run it in OF-3.0 ?


Thanks.
thegauravonline is offline   Reply With Quote

Reply


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
error with reactingFoam BakedAlmonds OpenFOAM Running, Solving & CFD 4 June 22, 2016 03:21
[blockMesh] error message with modeling a cube with a hold at the center hsingtzu OpenFOAM Meshing & Mesh Conversion 2 March 14, 2012 10:56
[blockMesh] BlockMesh FOAM warning gaottino OpenFOAM Meshing & Mesh Conversion 7 July 19, 2010 15:11
[blockMesh] Axisymmetrical mesh Rasmus Gjesing (Gjesing) OpenFOAM Meshing & Mesh Conversion 10 April 2, 2007 15:00
[Gmsh] Import gmsh msh to Foam adorean OpenFOAM Meshing & Mesh Conversion 24 April 27, 2005 09:19


All times are GMT -4. The time now is 07:34.