- 23 Nov, 2016 40 commits
-
-
-
-
Timo Koch authored
-
Timo Koch authored
-
-
-
-
the storing of the FVElementGeometry can be disabled which requires their on-the-fly calculation. This is done by binding the FVGeometry to an element by calling the bindElement() function. The bind() function precomputes all the geometries within the stencil.
-
The volume variables caching can now be disabled in order for the simulation to use less memory. The FVGeometry can be bound to an element which then creates the geometries necessary for operations on the element or the complete stencil. Several classes now need to be friend with the model, otherwise the FVGeometry can not be bound to the element. Maybe the bind function could return a geometry instead of a reference, then access rights can be limited better. It would decrease the efficiency though.
-
the advective volume fluxes are now simply called advective fluxes as they are no volume fluxes regarding their unit.
-
In order to reduce the computational cost the pointers are no longer checked for their validity. The user has to make sure that the flux variables objects are properly initialized, otherwise a segmentation fault will follow.
-
The flux var cache classes are specific to the different methods now in order to customize the stored variables and types. For tpfa models the transmissivity can thus be stored as a scalar instead of a vector. This reduces the memory usage and increases the computational speed.
-
The flux variables base class now has the init() routine which takes care of setting the pointers and eventually the stencil. The actual implementation of the flux vars calls this method in its method initAndComputeFluxes(). This eventually precomputes the advective fluxes. Wherever only the stencil is desired (localjacobian, stencilvector), only the init() method from the base class is called in order to save computational time.
-
When complex boundary handling is inactive, we only use the boundary volume variables on pure Dirichlet boundaries. Thus, updating becomes obsolete.
-
The local residuals need to be able to update the boundary volume variables, thus they need to be friend classes in order to have access to the protected non constant return function for the volvarsvector.
-
-
-
-
-
-
-
-
-
Previous commit making it public is not necessary since protected members can be acesses from the child class
-
we need this function to be public because the different specializations of the flux vars will now inherit from each other, so access needs to be guaranteed.
-
-
-
In case flux variable caching is enabled we need a delete statement for the previously allocated memory in the setBoundaryVolumeVariables_() routine.
-
-
-
-
-
The flux variables do not exist as a global vector in the model anymore. Instead, a cache class can be saved per scv face in order to store data that should be recycled. This can be switched on via the property EnableFluxVariablesCache and leads to a better performance on small grids. On large grids memory usage becomes an issue and it should be switched off. If the property ConstantBoundaryConditions is switched on, the volume variables at the boundary, used by cc models, will be stored in the cache and recomputation does not occur.
-
-
-
-
-
-
-
-