cuIBM
A GPU-based Immersed Boundary Method code
TairaColoniusSolver.h
Go to the documentation of this file.
1 
7 #pragma once
8 
9 #include "NSWithBody.h"
10 
11 
23 template <typename memoryType>
24 class TairaColoniusSolver : public NSWithBody<memoryType>
25 {
26 private:
27  cusp::coo_matrix<int, real, memoryType>
28  E,
29  ET;
30 
31  // generate the transposed gradient matrix and the interpolation matrix
32  virtual void generateQT();
33 
34  // update the interpolation matrix with current location of body points
35  void updateQT();
36 
37  // generate the right hand-side of the Poisson system
38  virtual void generateBC2();
39 
40  // update the location of the bodies and re-generate appropriate matrices
41  virtual void updateSolverState();
42 
43  // calculate forces acting on each immersed body
44  virtual void calculateForce();
45 
46 public:
47  // constructor -- copy the database and information about the computational grid
48  TairaColoniusSolver(parameterDB *pDB=NULL, domain *dInfo=NULL);
49 
50  // initiliaze the solvers
51  virtual void initialise();
52 
53  // calculate and write forces acting on each immersed body at current time
54  virtual void writeData();
55 
59  virtual std::string name()
60  {
61  return "Taira & Colonius";
62  }
63 }; // TairaColoniusSolver
Declaration of the class NSWithBody.
virtual void updateSolverState()
Updates the location of the bodies and re-generates appropriate matrices.
virtual void writeData()
Calculates and writes forces acting on each immersed body at current time.
std::map< std::string, componentParameter > parameterDB
Map from a string to a componentParameter.
Definition: parameterDB.h:64
cusp::coo_matrix< int, real, memoryType > ET
Regularization matrix form the Lagrangian points to the Eulerian grid.
TairaColoniusSolver(parameterDB *pDB=NULL, domain *dInfo=NULL)
Constructor. Copies the database and information about the computational grid.
virtual std::string name()
Returns the name of the solver.
Stores information about the computational grid.
Definition: domain.h:16
virtual void initialise()
Initializes the solvers.
virtual void generateBC2()
Solves the Navier-Stokes equations using the Immersed boundary method from Taira and Colonius (2007)...
virtual void calculateForce()
Calculates forces acting on each immersed body.
Generic Navier-Stokes solver in the presence of immersed boundaries.
Definition: NSWithBody.h:21
cusp::coo_matrix< int, real, memoryType > E
Interpolation matrix from the Eulerian grid to the Lagrangian points.
virtual void generateQT()