|
cuIBM
A GPU-based Immersed Boundary Method code
|
Second-order fully-discrete direct forcing method. More...
#include <DFImprovedSolver.h>


Public Member Functions | |
| DFImprovedSolver (parameterDB *pDB=NULL, domain *dInfo=NULL) | |
| Constructor – get simulation parameters and grid. More... | |
| virtual std::string | name () |
| Return the name of solver. More... | |
Public Member Functions inherited from DirectForcingSolver< memoryType > | |
| DirectForcingSolver (parameterDB *pDB=NULL, domain *dInfo=NULL) | |
| Constructor. Initializes the simulation parameters and the domain info. More... | |
| virtual void | initialise () |
| Initialize the vectors used in the simulation. More... | |
| virtual void | writeData () |
| Writes the velocity, pressure, force and mass flux data at every save point. More... | |
Public Member Functions inherited from NSWithBody< memoryType > | |
| virtual void | writeCommon () |
| Writes flow variables and position of body points into files. More... | |
| virtual void | shutDown () |
| Closes iteration file and force file. More... | |
Public Member Functions inherited from NavierStokesSolver< memoryType > | |
| NavierStokesSolver (parameterDB *pDB=NULL, domain *dInfo=NULL) | |
| Constructor. Copies the database and information about the computational grid. More... | |
| void | stepTime () |
| Calculates the variables at the next time step. More... | |
| bool | finished () |
| Evaluates the condition required to stop the simulation. More... | |
Private Member Functions | |
| virtual void | generateQT () |
| Compute the modified divergence operator. More... | |
Additional Inherited Members | |
Protected Member Functions inherited from DirectForcingSolver< memoryType > | |
| void | tagPoints () |
| void | tagPoints (real *bx, real *by, real *uB, real *vB) |
| Tags all the forcing nodes required for the type of linear interpolation explained in the paper by Fadlun et al. (2000). More... | |
| virtual void | generateA (real alpha) |
| virtual void | generateL () |
| void | generateQT (int *QTRows, int *QTCols, real *QTVals) |
| void | updateQ () |
| virtual void | generateC () |
| Generates the right-hand side matrix in the Poisson step. More... | |
| virtual void | assembleRHS1 () |
| Assembles the matrix rhs1 for DirectForcingSolver. More... | |
| void | updateRHS1 () |
| virtual void | updateSolverState () |
| Updates the matrices every time the body is moved. More... | |
| virtual void | projectionStep () |
| Projects the pressure gradient on to the intermediate velocity field to obtain the divergence-free velocity field at the next time step. More... | |
| void | writeMassFluxInfo () |
| Prints the min, max and sum of the divergences of the velocity field in every cell of the domain. More... | |
| template<> | |
| void | generateA (real alpha) |
| Generates the matrix A on the device. More... | |
| template<> | |
| void | generateL () |
| Sets up the Laplacian matrix for the implicit diffusion term. Uses second order central differences on the non-uniform grid. More... | |
| template<> | |
| void | updateQ () |
| Update the gradient operator (device). More... | |
| template<> | |
| void | tagPoints () |
| Tags the forcing nodes among the velocity nodes, i.e. the nodes at which the velocity interpolation is performed. More... | |
| template<> | |
| void | updateRHS1 () |
| Update the RHS of the velocity system. More... | |
Protected Member Functions inherited from NSWithBody< memoryType > | |
| virtual void | calculateForce () |
| void | initialiseBodies () |
| Stores the parameters of the simulation and initializes the location and motion of each immersed bodies. More... | |
| void | updateBodies () |
| Updates location and motion of each immersed body at current time. More... | |
| template<> | |
| void | calculateForce () |
| Calculates forces acting on an immersed body. More... | |
Protected Member Functions inherited from NavierStokesSolver< memoryType > | |
| void | initialiseCommon () |
| Initializes parameters common to all Navier-Stokes solvers. More... | |
| void | initialiseArrays (int numQ, int numLambda) |
| Initializes all arrays required to solve the Navier-Stokes equations. More... | |
| virtual void | initialiseFluxes () |
| virtual void | initialiseFluxes (real *q) |
| Initializes velocity flux vectors. More... | |
| void | initialiseBoundaryArrays () |
| Initializes boundary velocity arrays with values stored in the database. More... | |
| void | assembleMatrices () |
| Assembles matrices of the intermediate flux solver and the Poisson solver. More... | |
| void | generateM () |
| void | generateBN () |
| Generates approximate inverse of the matrix resulting from implicit velocity terms. More... | |
| void | updateQ (real gamma) |
| Doing nothing. More... | |
| void | generateRN () |
| Generates explicit terms of the momentum equation. More... | |
| void | calculateExplicitQTerms () |
| virtual void | calculateExplicitLambdaTerms () |
| Doing nothing. Used in methods that use the explicit pressure term in the intermediate velocity solve step, such as FadlunEtAlSolver and DFModifiedSolver. More... | |
| virtual void | generateBC1 () |
| virtual void | generateBC2 () |
| void | assembleRHS2 () |
| Assembles the right hand-side of the Poisson system. More... | |
| virtual void | solveIntermediateVelocity () |
| Solves for the intermediate flux velocity. More... | |
| virtual void | solvePoisson () |
| Solves the Poisson system. More... | |
| void | updateBoundaryConditions () |
| Doing nothing. More... | |
| template<> | |
| void | generateA (real alpha) |
| Assembles the matrix from implicit terms of momentum equation. More... | |
| template<> | |
| void | generateBC1 () |
| Generates inhomogeneous boundary conditions from the discrete Laplacian operator. More... | |
| template<> | |
| void | generateBC2 () |
| Generates inhomogeneous boundary conditions from the discrete continuity equation. More... | |
| template<> | |
| void | generateL () |
| Generates the discrete Laplacian matrix. More... | |
| template<> | |
| void | generateM () |
| Generates the mass matrix and its inverse. More... | |
| template<> | |
| void | generateQT () |
| Generates the discrete divergence matrix. More... | |
| template<> | |
| void | calculateExplicitQTerms () |
| Generates explicit terms that arise from the velocity fluxes. More... | |
| template<> | |
| void | initialiseFluxes () |
| Initializes velocity flux vectors (on the device). More... | |
| template<> | |
| void | generateC () |
| Generates the matrix of the Poisson solver. More... | |
Protected Attributes inherited from DirectForcingSolver< memoryType > | |
| cusp::array1d< int, host_memory > | tags |
| vector used to differentiate forcing points from regular ones (host) More... | |
| cusp::array1d< int, host_memory > | tags2 |
| vector used to differentiate forcing points from regular ones (host) More... | |
| cusp::array1d< int, device_memory > | tagsD |
| vector used to differentiate forcing points from regular ones (device) More... | |
| cusp::array1d< int, device_memory > | tags2D |
| vector used to differentiate forcing points from regular ones (device) More... | |
| vecH | coeffs |
| coefficients of interpolation (host) More... | |
| vecH | coeffs2 |
| other coefficients of interpolation; quadratic interpolation (host) More... | |
| vecD | coeffsD |
| coefficients of interpolation (device) More... | |
| vecD | coeffs2D |
| other coefficients of interpolation; quadratic interpolation (device) More... | |
| vecH | uv |
| velocity field (host) More... | |
| vecD | uvD |
| velocity field (device) More... | |
| cusp::array1d< real, memoryType > | pressure |
| pressure field More... | |
Protected Attributes inherited from NSWithBody< memoryType > | |
| bodies< memoryType > | B |
| bodies in the flow More... | |
| real | forceX |
| force acting on each body in the x-direction More... | |
| real | forceY |
| force acting on each body in the y-direction More... | |
| std::ofstream | forceFile |
| file to write the forces More... | |
Protected Attributes inherited from NavierStokesSolver< memoryType > | |
| parameterDB * | paramDB |
| database that contains all the simulation parameters More... | |
| domain * | domInfo |
| computational grid information More... | |
| integrationScheme | intgSchm |
instance of the class integrationScheme More... | |
| real | QCoeff |
| cusp::coo_matrix< int, real, memoryType > | M |
| diagonal mass matrix More... | |
| cusp::coo_matrix< int, real, memoryType > | Minv |
| inverse of the mass matrix More... | |
| cusp::coo_matrix< int, real, memoryType > | L |
| discrete Laplacian matrix More... | |
| cusp::coo_matrix< int, real, memoryType > | A |
| combination of mass and Laplacian matrices More... | |
| cusp::coo_matrix< int, real, memoryType > | Q |
| gradient matrix (and regularization matrix if immersed body) More... | |
| cusp::coo_matrix< int, real, memoryType > | QT |
| transposed gradient matrix (and interpolation matrix if immersed body) More... | |
| cusp::coo_matrix< int, real, memoryType > | BN |
N-th order Taylor series expansion of the inverse of A. More... | |
| cusp::coo_matrix< int, real, memoryType > | C |
| matrix of the Poisson system More... | |
| cusp::array1d< real, memoryType > | q |
| velocity flux vector More... | |
| cusp::array1d< real, memoryType > | qStar |
| intermediate velocity flux vector More... | |
| cusp::array1d< real, memoryType > | qOld |
| velocity flux vector at the previous time-step More... | |
| cusp::array1d< real, memoryType > | lambda |
| pressure vector (and body forces if immersed body) More... | |
| cusp::array1d< real, memoryType > | rn |
| explicit terms of the momentum equation More... | |
| cusp::array1d< real, memoryType > | bc1 |
| inhomogeneous boundary conditions from the discrete Laplacian operator More... | |
| cusp::array1d< real, memoryType > | bc2 |
| inhomogeneous boundary conditions from the discrete continuity equation More... | |
| cusp::array1d< real, memoryType > | rhs1 |
| right hand-side of the system for the intermediate velocity flux vector More... | |
| cusp::array1d< real, memoryType > | rhs2 |
| right hand-side of the Poisson system More... | |
| cusp::array1d< real, memoryType > | H |
| hold convective terms from previous time step More... | |
| cusp::array1d< real, memoryType > | temp1 |
| temporary 1D Cusp array More... | |
| cusp::array1d< real, memoryType > | temp2 |
| temporary 1D Cusp array More... | |
| cusp::array1d< real, memoryType > | bc [4] |
| array that contains the boundary conditions of the rectangular domain More... | |
| preconditioner< cusp::coo_matrix< int, real, memoryType > > * | PC1 |
| preconditioner for the intermediate flux solver More... | |
| preconditioner< cusp::coo_matrix< int, real, memoryType > > * | PC2 |
| preconditioner for the Poisson solver More... | |
| size_t | timeStep |
| iteration number More... | |
| size_t | subStep |
| number of sub-iterations More... | |
| size_t | iterationCount1 |
| number of iteration to solve the intermediate fluxes More... | |
| size_t | iterationCount2 |
| number of iteration to solve the Poisson equation More... | |
| Logger | logger |
instance of the class Logger to track time of different tasks More... | |
| std::ofstream | iterationsFile |
| file that contains the number of iterations More... | |
Second-order fully-discrete direct forcing method.
Definition at line 17 of file DFImprovedSolver.h.
| DFImprovedSolver< memoryType >::DFImprovedSolver | ( | parameterDB * | pDB = NULL, |
| domain * | dInfo = NULL |
||
| ) |
Constructor – get simulation parameters and grid.
Definition at line 18 of file DFImprovedSolver.cu.
|
privatevirtual |
Compute the modified divergence operator.
Reimplemented from DirectForcingSolver< memoryType >.
Definition at line 29 of file DFImprovedSolver.cu.
References NavierStokesSolver< memoryType >::generateQT(), and DirectForcingSolver< memoryType >::updateQ().
|
inlinevirtual |
Return the name of solver.
Reimplemented from DirectForcingSolver< memoryType >.
Definition at line 30 of file DFImprovedSolver.h.
Referenced by createSolver().
1.8.11