message: Add mixed mesh logic
diff: @@ -418,7 +418,8 @@ double TMOPNewtonSolver::ComputeScalingFactor(const Vector &x,
  // Check if the starting mesh (given by x) is inverted.
  // Note that x hasn't been modified by the Newton update yet.
  double min_detJ = infinity();
  - if (dim == 1)
  + const bool mixed_mesh = fes->GetMesh()->GetNumGeometries(dim) > 1;
  + if (dim == 1 || mixed_mesh)
  {
  for (int i = 0; i < NE; i++)
  {
  @@ -441,7 +442,6 @@ double TMOPNewtonSolver::ComputeScalingFactor(const Vector &x,
  }
  else
  {
  -#warning Not ready for mixed meshes
  min_detJ = dim == 2 ? MinDetJpr_2D(fes, x_out_loc) :
  dim == 3 ? MinDetJpr_3D(fes, x_out_loc) : 0.0;
  }
  @@ -486,7 +486,7 @@ double TMOPNewtonSolver::ComputeScalingFactor(const Vector &x,
  if (!untangling)
  {
  int jac_ok = 1;
  - if (dim == 1)
  + if (dim == 1 || mixed_mesh)
  {
  for (int i = 0; i < NE; i++)
  {
  @@ -510,7 +510,6 @@ double TMOPNewtonSolver::ComputeScalingFactor(const Vector &x,
  }
  else
  {
  -#warning Not ready for mixed meshes
  jac_ok = dim == 2 ? CheckDetJpr_2D(fes, x_out_loc) :
  dim == 3 ? CheckDetJpr_3D(fes, x_out_loc) : 0;
  }
  