498                                                {
  500 
  501  const int num_nodes = gaussPts.size2();
  502 
  503  
  504 
  505  switch (numeredEntFiniteElementPtr->getEntType()) {
  506  case MBTRI:
  509                                &gaussPts(0, 0), &gaussPts(1, 0), num_nodes);
  510    break;
  511  case MBQUAD: {
  513    for (int gg = 0; gg != num_nodes; gg++) {
  514      double ksi = gaussPts(0, gg);
  515      double eta = gaussPts(1, gg);
 
  520    }
  521  } break;
  522  case MBTET: {
  525                                &gaussPts(0, 0), &gaussPts(1, 0),
  526                                &gaussPts(2, 0), num_nodes);
  527  } break;
  528  case MBHEX: {
  530    for (int gg = 0; gg != num_nodes; gg++) {
  531      double ksi = gaussPts(0, gg);
  532      double eta = gaussPts(1, gg);
 
  533      double zeta = gaussPts(2, gg);
 
  542    }
  543  } break;
  544  default:
  546            "Not implemented element type");
  547  }
  548 
  549  
  550 
  551  
  552  ReadUtilIface *iface;
  553  CHKERR getPostProcMesh().query_interface(iface);
 
  554 
  555  std::vector<double *> arrays; 
  556
  558  
  559  
  560  CHKERR iface->get_node_coords(3, num_nodes, 0, startv, arrays);
 
  561 
  562  mapGaussPts.resize(gaussPts.size2());
  563  for (int gg = 0; gg != num_nodes; ++gg)
  564    mapGaussPts[gg] = startv + gg;
  565 
  567  int def_in_the_loop = -1;
  568  CHKERR getPostProcMesh().tag_get_handle(
"NB_IN_THE_LOOP", 1, MB_TYPE_INTEGER,
 
  569                                          th, MB_TAG_CREAT | MB_TAG_SPARSE,
 
  570                                          &def_in_the_loop);
  571 
  572  
  573 
  575  const int num_nodes_on_ele = 
refEleMap.size2();
 
  576 
  579 
  580  
  582    CHKERR iface->get_element_connect(num_el, num_nodes_on_ele, MBTRI, 0,
 
  583                                      starte, conn);
  585    CHKERR iface->get_element_connect(num_el, num_nodes_on_ele, MBTET, 0,
 
  586                                      starte, conn);
  587  else
  589            "Dimension not implemented");
  590 
  591  
  592  
  593  for (
unsigned int tt = 0; tt != 
refEleMap.size1(); ++tt) {
 
  594    for (int nn = 0; nn != num_nodes_on_ele; ++nn)
  595      conn[num_nodes_on_ele * tt + nn] = mapGaussPts[
refEleMap(tt, nn)];
 
  596  }
  597 
  598  
  599  
  600  CHKERR iface->update_adjacencies(starte, num_el, num_nodes_on_ele, conn);
 
  601 
  602  auto physical_elements = 
Range(starte, starte + num_el - 1);
 
  603  CHKERR getPostProcMesh().tag_clear_data(
th, physical_elements, &(nInTheLoop));
 
  604 
  605  EntityHandle fe_ent = numeredEntFiniteElementPtr->getEnt();
 
  606  int fe_num_nodes;
  607  {
  609    mField.get_moab().get_connectivity(fe_ent, conn, fe_num_nodes, true);
  610    coords.resize(3 * fe_num_nodes, false);
  611    CHKERR mField.get_moab().get_coords(conn, fe_num_nodes, &coords[0]);
 
  612  }
  613 
  614  
  618 
  620      arrays[0], arrays[1], arrays[2]);
  621  const double *t_coords_ele_x = &coords[0];
  622  const double *t_coords_ele_y = &coords[1];
  623  const double *t_coords_ele_z = &coords[2];
  624  for (int gg = 0; gg != num_nodes; ++gg) {
  626        t_coords_ele_x, t_coords_ele_y, t_coords_ele_z);
  628    for (int nn = 0; nn != fe_num_nodes; ++nn) {
  629      t_coords(
i) += t_n * t_ele_coords(
i);
 
  630      for (auto ii : {0, 1, 2})
  631        if (std::abs(t_coords(ii)) < std::numeric_limits<float>::epsilon())
  632          t_coords(ii) = 0;
  633      ++t_ele_coords;
  634      ++t_n;
  635    }
  636    ++t_coords;
  637  }
  638 
  640}
FTensor::Index< 'i', SPACE_DIM > i
double zeta
Viscous hardening.
MatrixDouble shapeFunctions