The short answer to your initial question is that there's basically no general method, unless you count "Solve the Schrödinger equation", which is more the problem than a solution.
Now if you restricted yourself to a particular class of solids, e.g. metals, you could possibly come up with some way, since it's a completely homogeneous material consisting of identical bonds. (Not being a solid-state person I don't know offhand what's available, but I know enough to know it's surely possible) But in general there's isn't a practical way to calculate this or almost any bulk property ab initio. Either you just measure it at the macroscopic scale, or you theoretically predict it from some empirical/semi-empirical model of the microscopic scale, because working from pure theory means quantum mechanics, which effectively limits you to either a homogeneous material, or a scale of only a few hundred atoms at the most.