>
>
> coord_mat[i,j]:=verts[el_nodes[i]][j],
>
If you use ":=" to define a matrix, you are creating what is known as a
hash-array, which caches previously calculated values. Moreover, even if
you make coord_mat local to the block, that won't change anything, because
Maxima treats it as a function, and functions cannot be bound locally.
You might want to try a lambda-function with genmatrix, e.g.
genmatrix ( lambda([i,j], verts[elnodes[i]][j] ), ...)
-s