the documentation for this advanced stuff is very much not written yet...
Yes, fortunately there is an alternative method for constructing more generic
spde models that you can use instead, and which should be much easier
to deal with, and which doesn't need to know anything about your mesh:
inla.spde2.generic
This functions constructs inla model objects with a specific precision matrix structure, where one can specify the different building blocks. This is used by the inla.spde2.matern function to create Matern models on ordinary triangulation meshes, and what you need is a corresponding wrapper function for your 3D meshes.
When you have your computed C and G matrices, the following code should produce an SPDE model with alpha=2, i.e.
(kappa^2 - Laplacian ) (tau x(s)) = W(s)
spde = inla.spde2.generic(
M0 = C,
M1 = G,
M2 = G %*% inla.qsolve(C, G),
B0 = cbind(0, 1, 0), ## Make theta1 control log(tau)
B1 = cbind(0, 0, 2), ## Make theta2 control log(kappa)
B2 = cbind(1, 0, 0), transform="identity"), ## Unused part of the generic model; don't change
theta.mu = c(0, 0), theta.Q = diag(2) )
Then you'll likely need some more details to use this in an inla model, but hopefully this can get you started.
For example, you can check if the models seems sensible by simulating a sample:
sample = inla.spde.sample(spde, theta=log(c(some.tau, some.kappa)))
The interpretation of kappa should in your 3D case roughly be sqrt(8*0.5) / spatial.range