Пример #1
0
PenetrationLocator &
GeometricSearchData::getPenetrationLocator(const BoundaryName & master,
                                           const BoundaryName & slave,
                                           Order order)
{
  unsigned int master_id = _mesh.getBoundaryID(master);
  unsigned int slave_id = _mesh.getBoundaryID(slave);

  _subproblem.addGhostedBoundary(master_id);
  _subproblem.addGhostedBoundary(slave_id);

  PenetrationLocator * pl =
      _penetration_locators[std::pair<unsigned int, unsigned int>(master_id, slave_id)];

  if (!pl)
  {
    pl = new PenetrationLocator(_subproblem,
                                *this,
                                _mesh,
                                master_id,
                                slave_id,
                                order,
                                getNearestNodeLocator(master_id, slave_id));
    _penetration_locators[std::pair<unsigned int, unsigned int>(master_id, slave_id)] = pl;
  }

  return *pl;
}
Пример #2
0
NearestNodeValueAux::NearestNodeValueAux(const InputParameters & parameters)
  : AuxKernel(parameters),
    _nearest_node(
        getNearestNodeLocator(parameters.get<BoundaryName>("paired_boundary"), boundaryNames()[0])),
    _serialized_solution(_nl_sys.currentSolution()),
    _paired_variable(coupled("paired_variable"))
{
  if (boundaryNames().size() > 1)
    mooseError("NearestNodeValueAux can only be used with one boundary at a time!");
}
Пример #3
0
NearestNodeLocator &
GeometricSearchData::getNearestNodeLocator(const BoundaryName & master, const BoundaryName & slave)
{
  unsigned int master_id = _mesh.getBoundaryID(master);
  unsigned int slave_id = _mesh.getBoundaryID(slave);

  _subproblem.addGhostedBoundary(master_id);
  _subproblem.addGhostedBoundary(slave_id);

  return getNearestNodeLocator(master_id, slave_id);
}
Пример #4
0
NearestNodeLocator &
GeometricSearchData::getQuadratureNearestNodeLocator(const unsigned int master_id,
                                                     const unsigned int slave_id)
{
  // TODO: Make this better!
  unsigned int base_id = 1e6;
  unsigned int qslave_id = slave_id + base_id;

  _slave_to_qslave[slave_id] = qslave_id;

  return getNearestNodeLocator(master_id, qslave_id);
}