# For loops in OpenFoam

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

 September 6, 2010, 07:44 For loops in OpenFoam #1 Senior Member   Balkrishna Patankar Join Date: Mar 2009 Location: Pune Posts: 123 Rep Power: 10 Sponsored Links I am generalising the twoPhase Euler Foam to handle n Phases . In the file pEqn.H I want to sum up the phase fraction of all the dispersed phases to get the dispersed phase . To do so I programmed the following : Code: ``` PtrListalphaf(nPhases); //just an initialization surfaceScalarField af ; surfaceScalarField betaf = scalar(1) - af; forAll(alphaf,aPh) { alphaf.set(aPh,fvc::interpolate(phases[aPh].alpha())); af= af + alphaf[aPh]; } betaf = scalar(1) - af ;``` On compilation I got the following error : Code: ```error: no matching function for call to ‘Foam::GeometricField::GeometricField()’ /home/ifmg/OpenFOAM/OpenFOAM-1.7.0/src/OpenFOAM/lnInclude/GeometricField.C:652: note: candidates are: Foam::GeometricField::GeometricField(const Foam::IOobject&, const Foam::GeometricField&, const Foam::wordList&) [with Type = double, PatchField = Foam::fvsPatchField, GeoMesh = Foam::surfaceMesh]```

 September 6, 2010, 16:46 #2 Senior Member   David Gaden Join Date: Apr 2009 Location: Winnipeg, Canada Posts: 436 Rep Power: 15 The problem isn't the for loop, it's your PtrList .set command: Code: `alphaf.set(aPh,fvc::interpolate(phases[aPh].alpha()));` You have to create a GeometricField on the freestore for this pointer list... and you have to use a proper GeometricField constructor. Code: ```alphaf.set ( aPh, new surfaceScalarField ( IOobject ( // IOobject constructor parameters - you decide ), mesh, fvc::interpolate(phases[aPh].alpha()) ) );``` Hope that helps!

 September 7, 2010, 00:37 #3 Senior Member   Balkrishna Patankar Join Date: Mar 2009 Location: Pune Posts: 123 Rep Power: 10 The error wasnt for the alphaf.set line . It was for the "surfaceScalarField alphaf ; " line

 September 7, 2010, 04:06 #4 Senior Member     Anton Kidess Join Date: May 2009 Location: Germany Posts: 1,251 Rep Power: 23

 September 7, 2010, 11:54 #5 Super Moderator     Niklas Nordin Join Date: Mar 2009 Location: Stockholm, Sweden Posts: 693 Rep Power: 22 there is no default constructor for the surfaceScalarField. it needs to know about its size, take any available surfaceScalarField available and use that. For instance phi and surfaceScalarField alphaf(phi.size());

 September 7, 2010, 12:01 #6 Senior Member   Balkrishna Patankar Join Date: Mar 2009 Location: Pune Posts: 123 Rep Power: 10 Thanks evry1 .... my problem was solved ... i initialized af in createFields.H and that solved the problem as suggested by alberto here ... Last edited by balkrishna; September 8, 2010 at 02:29. Reason: accurate reference

 Tags error, multiphase flow

 Thread Tools Display Modes Linear Mode

 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 OffTrackbacks are On Pingbacks are On Refbacks are On Forum Rules

 Similar Threads Thread Thread Starter Forum Replies Last Post msrinath80 OpenFOAM Running, Solving & CFD 18 March 3, 2015 06:36 pete Site News & Announcements 0 June 29, 2009 05:56 mirko OpenFOAM Installation 2 August 12, 2008 18:07 jussi OpenFOAM Installation 0 April 24, 2008 14:25 oseen OpenFOAM Installation 9 August 26, 2007 13:50