// this is now obsolete
void
SymmAnisotropicElasticityTensor::initialize_anisotropic_material_dt_matrix()
{
  // This function initializes the 6 x 6 material Dt matrix for an anisotropic material

  int k = 0;
  for (int i = 0; i < 6; i++)
  {
    for (int j = i; j < 6; j++)
    {
      _dt(i, j) = _dt(j, i) = _val[k++];
    }
  }
}
void
SymmAnisotropicElasticityTensor::calculateEntries(unsigned int /*qp*/)
{

  // The following four lines of code force the calculateEntries function to be useful
  // only for CUBIC ANISOTROPIC materials.
  zero();
  setMaterialConstantc11(_c11);
  setMaterialConstantc12(_c12);
  setMaterialConstantc44(_c44);

  form_r_matrix();
  // initialize_material_anisotropic_dt_matrix();
  form_rotational_q_matrix();
  // form_transformation_t_matrix();
  form_transformed_material_dmat_matrix();
  form_rotated_material_qdmat_matrix();
  form_transformed_material_dt_matrix();

  unsigned count(0);

  for (int j(0); j < 6; ++j)
  {
    for (int i(j); i < 6; ++i)
    {
      _val[count++] = _dt(i, j);
    }
  }
}
void
SymmAnisotropicElasticityTensor::rotate(const Real a1, const Real a2, const Real a3)
{
  setFirstEulerAngle(a1);
  setSecondEulerAngle(a2);
  setThirdEulerAngle(a3);

  // pulled from calculateEntries to sub in the initialize_anisotropic_material_dt_matrix() call
  //  calculateEntries(0);

  form_r_matrix();
  form_rotational_q_matrix();
  form_transformed_material_dmat_matrix();
  form_rotated_material_qdmat_matrix();
  form_transformed_material_dt_matrix();

  unsigned count(0);

  for (int j(0); j < 6; ++j)
  {
    for (int i(j); i < 6; ++i)
    {
      _val[count++] = _dt(i, j);
    }
  }
}
void
SymmAnisotropicElasticityTensor::show_dt_matrix()
{
  printf("\nSymmAnisotropicElasticityTensor::show_dt_matrix()\n");

  for (int j = 0; j < 6; ++j)
  {
    printf("  ");
    for (int i = 0; i < 6; ++i)
    {
      printf("%12.4f  ", _dt(i, j));
    }
    printf("\n");
  }
}
void
SymmAnisotropicElasticityTensor::form_transformed_material_dt_matrix()
{
  // The function makes use of TransD6toD9 matrix to transfrom
  // QDmat[9][9] to Dt[6][6]
  // Dt = TT * QDmat * T

  //   DenseMatrix<Real> outputMatrix(6,9);

  //   outputMatrix = _trans_d9_to_d6;
  //   outputMatrix.right_multiply(_qdmat);
  //   _dt = outputMatrix;
  //   _dt.right_multiply(_transpose_trans_d9_to_d6);

  // The transformation below is general and should work whether or not the
  //   incoming tensor has been rotated.

  ColumnMajorMatrix tmp(9, 9);
  for (unsigned j(0); j < 9; ++j)
  {
    for (unsigned i(0); i < 9; ++i)
    {
      tmp(i, j) = _qdmat(i, j);
    }
  }

  SymmElasticityTensor fred;
  fred.convertFrom9x9(tmp);
  ColumnMajorMatrix wilma = fred.columnMajorMatrix6x6();
  for (unsigned j(0); j < 6; ++j)
  {
    for (unsigned i(0); i < 6; ++i)
    {
      _dt(i, j) = wilma(i, j);
    }
  }
}
Пример #6
0
void KStarsDateTime::setTime( const QTime &_t ) {
    KStarsDateTime _dt( date(), _t );
    setDJD( _dt.djd() );
}
// this is now obsolete
void
SymmAnisotropicElasticityTensor::initialize_material_dt_matrix()
{
  // This function initializes the 6 x 6 material Dt matrix for a cubic material

  _dt(0, 0) = _dt(1, 1) = _dt(2, 2) = _c11;
  _dt(0, 1) = _dt(0, 2) = _dt(1, 0) = _dt(2, 0) = _dt(1, 2) = _dt(2, 1) = _c12;
  // beware the factor of two here
  _dt(3, 3) = _dt(4, 4) = _dt(5, 5) = 2 * _c44;
}