- 23 Nov, 2016 40 commits
-
-
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.
-
-
-
-
-
-
-
-
Fick's law has no more private variables, which reduces the memory consumption of the program substantially. The member functions are now static.
-
The darcys law class has no private variables any longer. This substantially reduces the memory used by the program. Member functions are now static and transmissibilities are computed fresh at every call.
-
The stencil type is now std::vector. The flux stencil is now stored in the fluxvariables class and no longer in darcy's law etc.
-
-
-
The new type of the stencils requires a different way of finding the flux vars required to compute the derivative w.r.t. a neighbor.
-
volvar update only once per dof: * the derivative calculation was performed by updating neighboring vol vars and computing the derivative of the inside local residual w.r.t. the neighbor dof * the new implementation computes the derivatives of the neighbor local residual w.r.t. to inside dof * assembler and local jacobian classes have been introduced for the box and the cellcentered scheme
-
Timo Koch authored
-
Timo Koch authored
TODO * Box local residual * Darcy and Fickean flux vars
-