Example #1
0
int main(int argc, char **argv)
{
    /* start timer */
    double clock;
    clock = timer();

    real **A, *x, *b;
    int n = 1000;

    A = allocMatrix(n, n);
    x = allocVector(n);
    b = allocVector(n);
    initializeA(A, n);
    initializeB(b, n);

    //showMatrix (n, A);
    //printf ("\n");

    solve(n, A, x, b);
    /* stop timer */
    clock = timer() - clock;

    showVector(n, x);

    freeMatrix(A);
    freeVector(x);
    freeVector(b);

    printf ("wallclock: %lf seconds\n", clock);

    return EXIT_SUCCESS;
}
void
TensorMechanicsPlasticDruckerPrager::onlyB(Real intnl, int fd, Real & bbb) const
{
  if (_zero_phi_hardening && (fd == friction))
  {
    bbb = _bbb;
    return;
  }
  if (_zero_psi_hardening && (fd == dilation))
  {
    bbb = _bbb_flow;
    return;
  }
  initializeB(intnl, fd, bbb);
}
TensorMechanicsPlasticDruckerPrager::TensorMechanicsPlasticDruckerPrager(
    const InputParameters & parameters)
  : TensorMechanicsPlasticModel(parameters),
    _mc_cohesion(getUserObject<TensorMechanicsHardeningModel>("mc_cohesion")),
    _mc_phi(getUserObject<TensorMechanicsHardeningModel>("mc_friction_angle")),
    _mc_psi(getUserObject<TensorMechanicsHardeningModel>("mc_dilation_angle")),
    _mc_interpolation_scheme(getParam<MooseEnum>("mc_interpolation_scheme")),
    _zero_cohesion_hardening(_mc_cohesion.modelName().compare("Constant") == 0),
    _zero_phi_hardening(_mc_phi.modelName().compare("Constant") == 0),
    _zero_psi_hardening(_mc_psi.modelName().compare("Constant") == 0)
{
  if (_mc_phi.value(0.0) < 0.0 || _mc_psi.value(0.0) < 0.0 ||
      _mc_phi.value(0.0) > libMesh::pi / 2.0 || _mc_psi.value(0.0) > libMesh::pi / 2.0)
    mooseError("TensorMechanicsPlasticDruckerPrager: MC friction and dilation angles must lie in "
               "[0, Pi/2]");
  if (_mc_phi.value(0) < _mc_psi.value(0.0))
    mooseError("TensorMechanicsPlasticDruckerPrager: MC friction angle must not be less than MC "
               "dilation angle");
  if (_mc_cohesion.value(0.0) < 0)
    mooseError("TensorMechanicsPlasticDruckerPrager: MC cohesion should not be negative");

  initializeAandB(0.0, _aaa, _bbb);
  initializeB(0.0, dilation, _bbb_flow);
}