Unstructured Hex meshes aren’t supported in FEniCS, but as I understand the support for these has improved in dolfinx. Your mesh-to-be-imported in FEniCS has to be linear. You can then use a higher order function space over the linear mesh – since these two are decoupled in FEniCS.
As for using SNES, you can either use it through the NonlinearVariationalSolver
interface via
snes_solver_parameters = {
"nonlinear_solver": "snes",
"snes_solver": {
"linear_solver": "mumps",
"line_search": "bt", # stands for backtracking line search
"maximum_iterations": 50,
"report": True
}
}
solver.parameters.update(snes_solver_parameters)
or for a finer control use PETSc.SNES
directly as demonstrated here and in several other posts on the group.