The "nh1" values of history variables belong to a previously converged solution at, say, t_n
The "nh2" values are associated with the current solution time, say, t_n+1
If you are solving a problem you should have an algorithm that includes
LOOP,,nt (where nt is a number of time steps you want to do -- when debugging a new element this is 1 or 2 probably)
TIME (this command say to start a new time step
LOOP,newton,nits (where nits is the number of Newton iterations maximum you expect)
TANG,,1 (or UTAN,,1 if unsymmetric tangent)
NEXT newton
NEXT time
Generally this sequence is given interactively so one can monitor what is happening.
In your element you seemingly never input material properties (these would be in ISW.eq.1). This seems strange and means no values are set in the "d(*)" array. Also, if you want to initialize any of the history variable to non-zero values you need to do it in ISW.eq.14 (you can set both the nh1 and nh2 values and feap will get the correct starting values -- if zero you do not need to do this)
To debug, I would always start with 2 elements and to a simple tension test (membrane state on your solid shell) to first make sure nothing is singular and the element converges. This is adequate to make sure each element gets values. There is one danger that both stresses get the same values, you could give different thicknesses maybe. But get it to work. Then do bending for the same.
Finally do something that adds variable stresses.