- 23 Nov, 2016 40 commits
-
-
The assemble_() method in the ImplicitAssembler now calls the assemble routine in the localjacobian directly. The global matrix and the residual are passed to that routine where the residua and derivatives are directly set in the global containers. That makes a specialized assembleElement_() method obsolete as the local matrix is no longer stored.
-
-
-
-
This commit introduces the necessary changes and new classes for a cctpfa elastic model. Checking the results suggest, that a simple tpfa scheme is not suitable for linear elasticity, not even on structured grids. It is thus questionable wether or not this implementation will be deleted in the future. Note that it only works in 2d so far.
-
-
Each discretization method (Box, CCTpfa, Mpfa etc) now has a corresponding flag which is set as a property. This allows a specialization of the used constitutive laws for the different methods. For a model it is thus no longer necessary to define additional typetags for the different discretization methods. On the problem level one can simply derive from the discretization method's typetag and the model type tag. Additional method-dependend classes are automatically set via the DiscretizationMethod property in the form of template specializations
-
The base class for the flux variables is moved to the folder /dumux/implicit, as the flux vars implementations for free flow and/or geomechanical models will also inherit from this base class.
-
The flux vars and the flux vars cache are moved to the folder porousmediumflow/implicit and are renamed to be more specific to porous medium. This is done because the freeflow models will have flux vars related to free flow, thus will appear in the corresponding folder in the new structure. By default, the flux vars are set to the ones for porous media (see propertydefaults).
-
-
-
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.
-
-
-
-