Daniele,
Most of the codes should support Hex. You have to be careful only what approximation base you using, i.e. hex has all energetic spaces only for DEMKOWICZ_JACOBI_BASE. For example look at how is modified contact tutorial is, i.e. adv-0.
Depending on how code is implemented, sometimes is necessary to push operators for integration weights, when faces of hex are not parallel. That is also done in adv-0 example, look at functions, for volume
auto jac_ptr = boost::make_shared<MatrixDouble>();
auto inv_jac_ptr = boost::make_shared<MatrixDouble>();
auto det_ptr = boost::make_shared<VectorDouble>();
pipeline.push_back(new OpCalculateHOJacVolume(jac_ptr));
pipeline.push_back(
new OpInvertMatrix<3>(jac_ptr, det_ptr, inv_jac_ptr));
pipeline.push_back(
new OpSetHOContravariantPiolaTransform(HDIV, det_ptr, jac_ptr));
pipeline.push_back(new OpSetHOInvJacVectorBase(HDIV, inv_jac_ptr));
pipeline.push_back(new OpSetHOInvJacToScalarBases(H1, inv_jac_ptr));
pipeline.push_back(new OpSetHOWeights(det_ptr))
and for boundary,
pipeline.push_back(new OpSetHOWeigthsOnFace())