Author Topic: usermacro for reaction forces out of hr(*)  (Read 4093 times)

blackbird

  • Full Member
  • ***
  • Posts: 100
usermacro for reaction forces out of hr(*)
« on: September 09, 2014, 03:00:25 AM »
Dear FEAP-Admin.

I created a usermacro in linux version of feap 8.3. There I need to access reaction forces of nodes with time dependent displacement boundary conditions. I retrieve them with

reaction in x = hr(np(26)+(i-1)*ndf+0)
reaction in y = hr(np(26)+(i-1)*ndf+1)
reaction in z = hr(np(26)+(i-1)*ndf+2)

where i is the number of the node of interest.

While these nodes are bounded, they are eliminated before setting up the system matrices. This also means that there are no reaction forces in hr(...) for the bounded nodes.

Anyway I found a way to extend system matrices to full size: stating REAC, ALL in the Solution part of my input file before calling my usermacro. After the call of REAC,ALL there are the correct reaction forces stored in hr(np(26)+(i-1)*ndf+...).

Now, the use of REAC,ALL is very costly in computational time, not least because all the reactions are also written into the O-file.

As this may be a way to get the information I need I am looking for a more efficient way to do so.

A first guess was to state

call formfe(np(40),np(26),np(26),np(26),.false.,.true.,.false.,.true.,6,1,numel,1)

inside the usermacros before accessing hr-array. But this did not work. Calling formfe in combination with REAC,ALL actually doubled all reaction forces stored in hr-array.

Is there a way of retrieving the reaction forces of constraint nodes without the costly call of REAC,ALL ?

I would appreciate any help, thanks in advance!

Prof. R.L. Taylor

  • Administrator
  • FEAP Guru
  • *****
  • Posts: 2649
Re: usermacro for reaction forces out of hr(*)
« Reply #1 on: September 09, 2014, 07:57:56 AM »
You could allocate a new array to store your reactions and then call the formfe.  Be sure to zero before calling also the flags for hflgu and h2flgu should be set to false -- look at top of the file pmacr1.f and follow to where reactions are computed -- you do need to recompute them to get consistent answers.  The flags are to prevent the data for history variable from changing.