Пример #1
0
Real
GapConductance::h_conduction()
{
  _gap_thermal_conductivity[_qp] = gapK();
  return _gap_thermal_conductivity[_qp] /
         gapLength(_gap_geometry_type, _radius, _r1, _r2, _min_gap, _max_gap);
}
Пример #2
0
Real
GapHeatTransfer::computeQpOffDiagJacobian(unsigned jvar)
{
  computeGapValues();

  if (!_has_info)
    return 0.0;

  unsigned int coupled_component;
  bool active = false;
  for (coupled_component = 0; coupled_component < _disp_vars.size(); ++coupled_component)
    if (jvar == _disp_vars[coupled_component])
    {
      active = true;
      break;
    }

  Real dRdx = 0.0;
  if (active)
  {
    // Compute dR/du_[xyz]
    // Residual is based on
    //   h_gap = h_conduction() + h_contact() + h_radiation();
    //   grad_t = (_u[_qp] - _gap_temp) * h_gap;
    // So we need
    //   (_u[_qp] - _gap_temp) * (dh_gap/du_[xyz]);
    // Assuming dh_contact/du_[xyz] = dh_radiation/du_[xyz] = 0,
    //   we need dh_conduction/du_[xyz]
    // Given
    //   h_conduction = gapK / gapLength, then
    //   dh_conduction/du_[xyz] = -gapK/gapLength^2 * dgapLength/du_[xyz]
    // Given
    //   gapLength = ((u_x-m_x)^2+(u_y-m_y)^2+(u_z-m_z)^2)^1/2
    // where m_[xyz] is the master coordinate, then
    //   dGapLength/du_[xyz] = 1/2*((u_x-m_x)^2+(u_y-m_y)^2+(u_z-m_z)^2)^(-1/2)*2*(u_[xyz]-m_[xyz])
    //                       = (u_[xyz]-m_[xyz])/gapLength
    // This is the normal vector.

    const Real gapL = gapLength();

    // THIS IS NOT THE NORMAL WE NEED.
    // WE NEED THE NORMAL FROM THE CONSTRAINT, THE NORMAL FROM THE
    // MASTER SURFACE.  HOWEVER, THIS IS TRICKY SINCE THE NORMAL
    // FROM THE MASTER SURFACE WAS COMPUTED FOR A POINT ASSOCIATED
    // WITH A SLAVE NODE.  NOW WE ARE AT A SLAVE INTEGRATION POINT.
    //
    // HOW DO WE GET THE NORMAL WE NEED?
    //
    // Until we have the normal we need,
    //   we'll hope that the one we have is close to the negative of the one we need.
    const Point & normal(_normals[_qp]);

    const Real dgap = dgapLength(-normal(coupled_component));
    dRdx = -(_u[_qp] - _gap_temp) * _edge_multiplier * _gap_conductance[_qp] / gapL * dgap;
  }
  return _test[_i][_qp] * dRdx * _phi[_j][_qp];
}
Пример #3
0
Real
GapHeatTransfer::dgapLength(Real normalComponent) const
{
  const Real gap_L = gapLength();
  Real dgap = 0.0;

  if (_min_gap <= gap_L && gap_L <= _max_gap)
    dgap = normalComponent;

  return dgap;
}
Пример #4
0
Real
GapConductance::h_conduction()
{
  return gapK() / gapLength(_gap_geometry_type, _radius, _r1, _r2, _min_gap, _max_gap);
}
Пример #5
0
Real
GapConductance::h_conduction()
{
  return gapK()/gapLength(-(_gap_distance), _min_gap, _max_gap);
}