StaggeredStokesSolver::StaggeredStokesSolver() : d_U_problem_coefs("U_problem_coefs"), d_default_U_bc_coef(new LocationIndexRobinBcCoefs<NDIM>("default_U_bc_coef", Pointer<Database>(NULL))), d_U_bc_coefs(std::vector<RobinBcCoefStrategy<NDIM>*>(NDIM, d_default_U_bc_coef)), d_default_P_bc_coef(new LocationIndexRobinBcCoefs<NDIM>("default_P_bc_coef", Pointer<Database>(NULL))), d_P_bc_coef(d_default_P_bc_coef) { // Set some default values. d_has_velocity_nullspace = false; d_has_pressure_nullspace = false; // Setup a default boundary condition object that specifies homogeneous // Dirichlet boundary conditions for the velocity and homogeneous Neumann // boundary conditions for the pressure. for (unsigned int d = 0; d < NDIM; ++d) { LocationIndexRobinBcCoefs<NDIM>* p_default_U_bc_coef = dynamic_cast<LocationIndexRobinBcCoefs<NDIM>*>(d_default_U_bc_coef); p_default_U_bc_coef->setBoundaryValue(2 * d, 0.0); p_default_U_bc_coef->setBoundaryValue(2 * d + 1, 0.0); LocationIndexRobinBcCoefs<NDIM>* p_default_P_bc_coef = dynamic_cast<LocationIndexRobinBcCoefs<NDIM>*>(d_default_P_bc_coef); p_default_P_bc_coef->setBoundarySlope(2 * d, 0.0); p_default_P_bc_coef->setBoundarySlope(2 * d + 1, 0.0); } // Initialize the boundary conditions objects. setPhysicalBcCoefs(std::vector<RobinBcCoefStrategy<NDIM>*>(NDIM, d_default_U_bc_coef), d_default_P_bc_coef); return; } // StaggeredStokesSolver()
void IBImplicitModHelmholtzPETScLevelSolver::setPhysicalBcCoef( RobinBcCoefStrategy<NDIM>* const bc_coef) { setPhysicalBcCoefs(blitz::TinyVector<RobinBcCoefStrategy<NDIM>*,NDIM>(bc_coef)); return; }// setPhysicalBcCoef
INSIntermediateVelocityBcCoef::INSIntermediateVelocityBcCoef(const int comp_idx, const std::vector<RobinBcCoefStrategy<NDIM>*>& bc_coefs, const bool homogeneous_bc) : d_comp_idx(comp_idx), d_bc_coefs(NDIM, static_cast<RobinBcCoefStrategy<NDIM>*>(NULL)) { setPhysicalBcCoefs(bc_coefs); setHomogeneousBc(homogeneous_bc); return; } // INSIntermediateVelocityBcCoef
CartCellRobinPhysBdryOp::CartCellRobinPhysBdryOp( const ComponentSelector& patch_data_indices, const std::vector<RobinBcCoefStrategy<NDIM>*>& bc_coefs, const bool homogeneous_bc) : RobinPhysBdryPatchStrategy() { setPatchDataIndices(patch_data_indices); setPhysicalBcCoefs(bc_coefs); setHomogeneousBc(homogeneous_bc); return; } // CartCellRobinPhysBdryOp
CCLaplaceOperator::CCLaplaceOperator( const std::string& object_name, const PoissonSpecifications& poisson_spec, const std::vector<RobinBcCoefStrategy<NDIM>*>& bc_coefs, const bool homogeneous_bc) : LinearOperator(true), d_object_name(object_name), d_is_initialized(false), d_ncomp(0), d_apply_time(0.0), d_fill_pattern(NULL), d_transaction_comps(), d_hier_bdry_fill(NULL), d_no_fill(NULL), d_x(NULL), d_b(NULL), d_poisson_spec(d_object_name+"::Poisson spec"), d_default_bc_coef(new LocationIndexRobinBcCoefs<NDIM>( d_object_name+"::default_bc_coef", Pointer<Database>(NULL))), d_bc_coefs(), d_homogeneous_bc(false), d_correcting_rhs(false), d_hier_cc_data_ops(), d_hier_math_ops(), d_hier_math_ops_external(false), d_hierarchy(), d_coarsest_ln(-1), d_finest_ln(-1) { // Initialize the Poisson specifications. setPoissonSpecifications(poisson_spec); // Setup a default boundary condition object that specifies homogeneous // Dirichlet boundary conditions. for (unsigned int d = 0; d < NDIM; ++d) { d_default_bc_coef->setBoundaryValue(2*d ,0.0); d_default_bc_coef->setBoundaryValue(2*d+1,0.0); } // Initialize the boundary conditions objects. setHomogeneousBc(homogeneous_bc); setPhysicalBcCoefs(bc_coefs); // Setup Timers. IBTK_DO_ONCE( t_apply = TimerManager::getManager()->getTimer("IBTK::CCLaplaceOperator::apply()"); t_initialize_operator_state = TimerManager::getManager()->getTimer("IBTK::CCLaplaceOperator::initializeOperatorState()"); t_deallocate_operator_state = TimerManager::getManager()->getTimer("IBTK::CCLaplaceOperator::deallocateOperatorState()"); );
INSStaggeredPressureBcCoef::INSStaggeredPressureBcCoef( const INSStaggeredHierarchyIntegrator* fluid_solver, const std::vector<RobinBcCoefStrategy<NDIM>*>& bc_coefs, const TractionBcType traction_bc_type, const bool homogeneous_bc) : d_fluid_solver(fluid_solver), d_bc_coefs(NDIM, static_cast<RobinBcCoefStrategy<NDIM>*>(NULL)) { setStokesSpecifications(d_fluid_solver->getStokesSpecifications()); setPhysicalBcCoefs(bc_coefs); setTractionBcType(traction_bc_type); setHomogeneousBc(homogeneous_bc); return; } // INSStaggeredPressureBcCoef
INSCollocatedVelocityBcCoef::INSCollocatedVelocityBcCoef(const unsigned int comp_idx, const INSCollocatedHierarchyIntegrator* fluid_solver, const std::vector<RobinBcCoefStrategy<NDIM>*>& bc_coefs, const TractionBcType traction_bc_type, const bool homogeneous_bc) : d_comp_idx(comp_idx), d_fluid_solver(fluid_solver), d_bc_coefs(NDIM, static_cast<RobinBcCoefStrategy<NDIM>*>(NULL)) { setStokesSpecifications(d_fluid_solver->getStokesSpecifications()); setPhysicalBcCoefs(bc_coefs); setTractionBcType(traction_bc_type); setHomogeneousBc(homogeneous_bc); return; } // INSCollocatedVelocityBcCoef
void LaplaceOperator::setPhysicalBcCoef(RobinBcCoefStrategy<NDIM>* const bc_coef) { setPhysicalBcCoefs(std::vector<RobinBcCoefStrategy<NDIM>*>(1, bc_coef)); return; } // setPhysicalBcCoef
void PoissonSolver::setPhysicalBcCoef(RobinBcCoefStrategy<NDIM>* const bc_coef) { setPhysicalBcCoefs(std::vector<RobinBcCoefStrategy<NDIM>*>(1, bc_coef)); return; } // setPhysicalBcCoef
void RobinPhysBdryPatchStrategy::setPhysicalBcCoef(RobinBcCoefStrategy<NDIM>* const bc_coef) { setPhysicalBcCoefs(std::vector<RobinBcCoefStrategy<NDIM>*>(1, bc_coef)); return; } // setPhysicalBcCoef