Dear All,
In Section 5.6 of Programmer Manual, it mentions "All history variables are associated with the allocation name H which has a pointer value 49. Users are not permitted direct access to the data stored as H (of course, it is possible to access from hr(np(49)) but this should not normally be attempted!). Before calling the element routine for each element, FEAP transfers the required history variable to a local storage for each type. Users may then access the history data for each element and if necessary update values and return them FEAP. Only for specific actions will the local history data be transferred back to the appropriate H locations. ~~~"
So, in each user element, there are arrays located at hr(nh1), hr(nh2) for tn, tn+1, respectively; and the arrays at hr(nh2) are updated if necessary. I assume that, when the 'TIME' command works, the values of arrays at hr(nh2) will move to arrays at hr(nh1). However, will the values of arrays at hr(nh2) directly move to arrays at hr(nh1); or maybe the values of arrays at hr(nh2) will transferred back to the appropriate H locations, and it looks like: hr(nh2) -> H(nh2) -> H(nh1) -> hr(nh1).
Moreover, if I want to access the history variables stored as H in a Macro command, I noticed for element n, I may also get them with the following codes:
ht1 = np(49) + ix(nen+1,n) + ie(nie-3,ma)
ht2 = np(49) + ix(nen+2,n) + ie(nie-3,ma)
do i = 0,ie(nie,ma)-1
hr(nh1+i) = hr(ht1+i)
hr(nh2+i) = hr(ht2+i)
end do ! i
Then, I will update the arrays at hr(nh2), but how do I move these values to the H locations, and at next time step, the updated history variables can be transfered to the arrays at hr(nh1)?
In other words, there are two parts of history variables which are associated with the last converged solution time tn and the current solution time tn+1, respectively. if I update the second parts in a Macro command, how do I make sure the first part have the updated data for the next time step?
Thank you!
Best regards!
Shilmin