예제 #1
0
Real
SolidMechX::computeQpResidual()
  {
    if (!_constant_properties)
      recomputeConstants();

    _strain(0,0) = _grad_u[_qp](0);
    _strain(1,1) = _grad_y[_qp](1);
    _strain(0,1) = _grad_u[_qp](1)+_grad_y[_qp](0);

    _stress(0) = _c1*_strain(0,0)+_c1*_c2*_strain(1,1);
    _stress(1) = _c1*_c3*_strain(0,1);

    if ( 3 == _mesh_dimension){
      _strain(2,2) = _grad_z[_qp](2);
      _strain(0,2) = _grad_u[_qp](2)+_grad_z[_qp](0);

      _stress(0) += _c1*_c2*_strain(2,2);
      _stress(2) = _c1*_c3*_strain(0,2);
    }

    Real value = (_stress*_grad_test[_i][_qp]);

    return value;
  }
예제 #2
0
Real
SolidMechZ::computeQpJacobian()
  {
    if (!_constant_properties)
      recomputeConstants();

    Real value = _c1*(_grad_test[_i][_qp]*(_B33*_grad_phi[_j][_qp]));

    return value;
  }
예제 #3
0
void
SolidMechTempCouple::recomputeCouplingConstants()
{
  recomputeConstants();

  _c4 = _E/(1.-_nu);

  if (_mesh_dimension == 3)
    _c4 = _E/(1.-2.*_nu);
}
예제 #4
0
Real
SolidMechZ::computeQpOffDiagJacobian(unsigned int jvar)
  {
    if (!_constant_properties)
      recomputeConstants();

    RealGradient value = 0;

    if (jvar == _x_var)
      value += _B31*_grad_phi[_j][_qp];
    else if (jvar == _y_var)
      value += _B32*_grad_phi[_j][_qp];

    return _c1*(_grad_test[_i][_qp]*value);
  }
예제 #5
0
Real
SolidMechZ::computeQpResidual()
  {
    if (!_constant_properties)
      recomputeConstants();

    _strain(0,0) = _grad_x[_qp](0);
    _strain(1,1) = _grad_y[_qp](1);
    _strain(2,2) = _grad_u[_qp](2);
    _strain(1,2) = _grad_u[_qp](1)+_grad_y[_qp](2);
    _strain(0,2) = _grad_x[_qp](2)+_grad_u[_qp](0);

    _stress(0) = _c1*_c3*_strain(0,2);
    _stress(1) = _c1*_c3*_strain(1,2);
    _stress(2) = _c1*_c2*_strain(0,0)+_c1*_c2*_strain(1,1)+_c1*_strain(2,2);

    return (_stress*_grad_test[_i][_qp]);

  }