#include <iostream>
#include "small_matrix.hpp"
#include "SAssemble.hpp"
#include "WTSScheme.hpp"
Include dependency graph for GenLinVcFV.hpp:

Classes | |
| class | GenLinVcFV< T, Flux > |
| Template class for the general vertex-centered finite-volume discretizations of linear PDEs. More... | |
The implementation should accept arbitrary dimensions.
The class template depends on two parameters:
void PrintParam() should print the name and the parameters of the object.void PreProcess(SparseMatrix<T> & A) should prepare the class for assembling the matrix 'A'.void AssembleInnerFaceFlux(T factor, int face, MultiIndex & I, SparseMatrix<T> & A) should update the matrix 'A' by assembling the flux through one inner face, so that this flux is multiplied by 'factor'; this is the 'left' face of the control volume of the vertex with the index 'I' orthogonal to the direction of the dimension axis 'face'; the flux should be related to the unit face area w.r.t. the scaled index, because the grid steps are taken into account in 'factor'; NOTE that the function should update the entries in two matrix rows: those corresponding to both the control volumes intersecting over this face.void AssembleBndFaceFlux(T factor, int face, MultiIndex & I, SparseMatrix<T> & A) should update the matrix 'A' by assembling the flux through a control volume boundary face, so that this flux is multiplied by 'factor'; this is the face orthogonal to the direction of the dimension axis 'face'; the user should distinguish between the two faces by the index 'I' the flux should be related to the unit face area w.r.t. the scaled index, because the grid steps are taken into account in 'factor'.T det_J(MultiIndex & I, Array<int> & grid_sizes) - should return the determinant of the Jacobian of the transformation of the unit square to the problem domain; the value should correspond to the vertex with the index 'I'; 'grid_sizes' references the sizes of the grid.void PostProcess(SparseMatrix<T> & A) should postprocess the matrix 'A' after assembling the control volume faces and the mass matrix; in particular, this function should assemble the matrix at the vertices where the Dirichlet boundary conditions are assumed (merely set the identity matrix at these vertices).void AssembleDirichlet(MultiArray<T> & u) should assemble the Dirichlet values in the given vector 'u'. For better performance, these functions should be inline.
USAGE INSTRUCTIONS:
1.5.2