Implementation issues of fvSchemes / laplacianScheme, in particular gaussLaplacianSch
I am quite new to OpenFOAM and have a few questions concerning the implementation fo fvSchemes like the gaussLaplacianScheme for example.
First how it works in my opinion (please correct me if I am wrong):
- within the controlDict the user specifies what type of fvScheme should be used like Gauss.
- the static function laplacianScheme::New within the abstract base class is invoked in order to create the right laplacian scheme and creates the gaussLaplacianScheme.
- next the function fvmLaplacian is called to do real work. And here I have a couple of questions:
-> 3 files exists: gaussLaplacianScheme.H, gaussLaplacianScheme.C and gaussLaplacianSchemes.C
-> Within the files gaussLaplacianScheme.H, gaussLaplacianScheme.C I see the definition and implementation of the fvmLaplacian method. But this function does not get called! Instead within the file gaussLaplacianSchemes.C macros are used to define (redefine? what happens here???) the same fvmLaplacian method which gets called!!! What is the meaning of the file gaussLaplacianSchemes.C? Why are there macros for redefining/reimplementing the fvmLaplacian function? Why is this necessary? Why the implementation not within the gaussLaplacianScheme.C fvmLaplacian function? What is the clue of this implementation detail and why?
Any help and hints on the implementation of gaussLaplacianScheme and why these "strange" macros within gaussLaplacianSchemes.C are necessary are appreciated!!!!
Thanks in advance,
|All times are GMT -4. The time now is 11:16.|