| 71 | /////////////////////////////// PUBLIC /////////////////////////////////////// |
| 72 | |
| 73 | CIBStaggeredStokesSolver::CIBStaggeredStokesSolver(const std::string& object_name, |
| 74 | Pointer<Database> input_db, |
| 75 | Pointer<INSStaggeredHierarchyIntegrator> navier_stokes_integrator, |
| 76 | Pointer<CIBStrategy> cib_strategy, |
| 77 | const std::string& default_options_prefix) |
| 78 | : StaggeredStokesSolver(), |
| 79 | d_cib_strategy(cib_strategy, false), |
| 80 | d_num_rigid_parts(d_cib_strategy->getNumberOfRigidStructures()) |
| 81 | { |
| 82 | GeneralSolver::init(object_name, /*homogeneous bcs*/ false); |
| 83 | |
| 84 | // Create the saddle-point solver for solving constraint problem. |
| 85 | d_sp_solver = new CIBSaddlePointSolver( |
| 86 | object_name, input_db, navier_stokes_integrator, d_cib_strategy, default_options_prefix); |
| 87 | |
| 88 | // Create widened variables for IB operations. |
| 89 | Pointer<IBStrategy> ib_method_ops = d_cib_strategy; |
| 90 | const IntVector<NDIM> ghost_width = ib_method_ops->getMinimumGhostCellWidth(); |
| 91 | VariableDatabase<NDIM>* var_db = VariableDatabase<NDIM>::getDatabase(); |
| 92 | d_wide_u_var = new SideVariable<NDIM, double>(d_object_name + "::wide_u_var", 1); |
| 93 | d_wide_f_var = new SideVariable<NDIM, double>(d_object_name + "::wide_f_var", 1); |
| 94 | d_wide_ctx = var_db->getContext(object_name + "::wide_ctx"); |
| 95 | d_wide_u_idx = var_db->registerVariableAndContext(d_wide_u_var, d_wide_ctx, ghost_width); |
| 96 | d_wide_f_idx = var_db->registerVariableAndContext(d_wide_f_var, d_wide_ctx, ghost_width); |
| 97 | |
| 98 | return; |
| 99 | } // CIBStaggeredStokesSolver |
| 100 | |
| 101 | CIBStaggeredStokesSolver::~CIBStaggeredStokesSolver() |
| 102 | { |
nothing calls this directly
no test coverage detected