|
[Sponsors] |
Constructing Surface Interpolation Scheme from Divergence Scheme Information |
|
LinkBack | Thread Tools | Search this Thread | Display Modes |
December 5, 2013, 04:20 |
Constructing Surface Interpolation Scheme from Divergence Scheme Information
|
#1 |
Senior Member
Niels Gjoel Jacobsen
Join Date: Mar 2009
Location: Copenhagen, Denmark
Posts: 1,903
Rep Power: 37 |
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; So far I have managed to get the divergence scheme information from the fvSchemes by using Code:
ITstream& ss = mesh.divScheme("div(phi,T)"); Code:
tmp<surfaceInterpolationScheme<scalar> > surfaceInterpolationScheme::New(const fvMesh& mesh, Istream& schemeData); Code:
ITstream ss Code:
Istream schemeData 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: Copenhagen, Denmark
Posts: 1,903
Rep Power: 37 |
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<surfaceInterpolationScheme<scalar> > sis(Foam::surfaceInterpolationScheme<scalar>::New(mesh, is)); 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. |
|
June 17, 2022, 10:12 |
|
#3 |
New Member
Jun Liu
Join Date: Jan 2020
Posts: 3
Rep Power: 6 |
Hi Niels,
I have the same problem to construct limitedSurfaceInterpolationScheme class and have already been stuck to it for two three days. The Gauss token in the itstream drives me nuts. Your solution works finally! Many thanks!!!! best regards Jun |
|
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
[snappyHexMesh] Layers don't fully surround surface | EVBUCF | OpenFOAM Meshing & Mesh Conversion | 14 | August 20, 2012 05:31 |
[snappyHexMesh] Add additional boundary layers to complex stl surface | tobijingles | OpenFOAM Meshing & Mesh Conversion | 1 | October 26, 2011 11:45 |
reconstructParMesh not working with an axisymetric case | francesco | OpenFOAM Bugs | 4 | May 8, 2009 06:49 |
information from a surface, not made from GAMBIT | rr123 | FLUENT | 7 | March 25, 2009 17:20 |
output surface grid information | Adam | FLUENT | 0 | May 17, 2004 22:17 |