Constructing Surface Interpolation Scheme from Divergence Scheme Information

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

 December 5, 2013, 04:20 Constructing Surface Interpolation Scheme from Divergence Scheme Information #1 Senior Member   Niels Gjoel Jacobsen Join Date: Mar 2009 Location: Deltares, Delft, The Netherlands Posts: 1,713 Rep Power: 27 Good morning, I have a small problem, which I have not been able to solve so far. Background: I am going to perform different operations on a small grid (say 1400 cells): 1. Evaluating the divergence of some field, i.e fvc::div(phi,T) 2. Building the fvScalarMatrix for the same, i.e. fvm::div(phi,T) The thing is that I am going to perform these two operations approximately 90,000 times per time step/iteration, so there is room for thinking in optimising and utilising prior knowledge of the system. The prior knowledge is that half of the faces (fixed in time and identical for all grids) have a zero flux, why the construction of fvm::div and fvc::div can probably be reduced by a factor of 2. This reduction approximately corresponds to 15% of the execution time, so it is worthwhile to spend some time on it. Problem: I would still like to utilise the numerical scheme selection in fvSchemes, i.e. the user should merely give e.g. Code: `div(phi,T) Gauss upwind phi;` From this I need to extract the information on the surface interpolation scheme and construct it, such that I can obtain the weights. So far I have managed to get the divergence scheme information from the fvSchemes by using Code: `ITstream& ss = mesh.divScheme("div(phi,T)");` This is were I am stranded, because I have not been able to transform this information into anything useful for the surfaceInterpolationScheme, which must be constructed as Code: `tmp > surfaceInterpolationScheme::New(const fvMesh& mesh, Istream& schemeData);` The problem is specifically to transform the Code: `ITstream ss` into the correctly formatted Code: `Istream schemeData` Any help is greatly appreaciated. Kind regards, Niels __________________ Please note that I do not use the Friend-feature, so do not be offended, if I do not accept a request.

 December 9, 2013, 12:19 #2 Senior Member   Niels Gjoel Jacobsen Join Date: Mar 2009 Location: Deltares, Delft, The Netherlands Posts: 1,713 Rep Power: 27 Good evening all, I have found the solution, and it is rather simple: Code: ```Istream& is = mesh.divSchemes("div(phi,T)"); word ss(is); tmp > sis(Foam::surfaceInterpolationScheme::New(mesh, is));``` The important part is to construct the word 'ss', because this makes Istream go one word forward in the stream, i.e. once I am constructing the surface interpolation scheme, it is not aware of the existence of the 'Gauss' part in front. Kind regards Niels __________________ Please note that I do not use the Friend-feature, so do not be offended, if I do not accept a request.

 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 EVBUCF OpenFOAM Native Meshers: snappyHexMesh and Others 14 August 20, 2012 04:31 tobijingles OpenFOAM Native Meshers: snappyHexMesh and Others 1 October 26, 2011 10:45 francesco OpenFOAM Bugs 4 May 8, 2009 05:49 rr123 FLUENT 7 March 25, 2009 17:20 Adam FLUENT 0 May 17, 2004 21:17

All times are GMT -4. The time now is 03:16.