Dear Professor,
I read the program for a long time, but I still have the following questions, could you help me understand them, because I think it would help me write the explicit contact subprogram.
1.what's the purpose of the codes near 545 lines of pmacr1.f, I don't know what's the meaning of 'Do an update', I just see dt = dtold, it means updating the quantity last time?
c Do an update if necesasry
if(niter.le.1) then
dtsav = dt
dt = dtold
hflgu = .true.
h3flgu = .true.
call formfe(np(40),np(26),np(26),np(26),
& .false.,.false.,.false.,.false.,6,1,numel,1)
dt = dtsav
endif
2.I can't understand why is the acceleration calculated by M*delta_a=delta_R (delta_R is stored in hr(np(26)))which is coded in piacel.f. Because I have read the program in resid3d.f, found that delta_R = F_ext - P_inter - M*a and then assemble them into the hr(np(26)), so what's the meaning of the residual in explicit solution?