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,
                                                 RobinBcCoefStrategy<NDIM>* const bc_coef,
                                                 const bool homogeneous_bc)
    : RobinPhysBdryPatchStrategy()
{
    setPatchDataIndices(patch_data_indices);
    setPhysicalBcCoef(bc_coef);
    setHomogeneousBc(homogeneous_bc);
    return;
} // CartCellRobinPhysBdryOp
CartCellRobinPhysBdryOp::CartCellRobinPhysBdryOp(const int patch_data_index,
                                                 RobinBcCoefStrategy<NDIM>* const bc_coef,
                                                 const bool homogeneous_bc)
    : RobinPhysBdryPatchStrategy()
{
    setPatchDataIndex(patch_data_index);
    setPhysicalBcCoef(bc_coef);
    setHomogeneousBc(homogeneous_bc);
    return;
} // CartCellRobinPhysBdryOp
CartCellRobinPhysBdryOp::CartCellRobinPhysBdryOp(
    const std::set<int>& 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
Esempio n. 5
0
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