CalculiX  2.13
A Free Software Three-Dimensional Structural Finite Element Program
resultsforc_se.f File Reference

Go to the source code of this file.

Functions/Subroutines

subroutine resultsforc_se (nk, dfn, nactdofinv, ipompc, nodempc, coefmpc, nmpc, mi, fmpc, calcul_fn, calcul_f, idesvar, df, jqs, irows, distmin)
 

Function/Subroutine Documentation

◆ resultsforc_se()

subroutine resultsforc_se ( integer  nk,
real*8, dimension(0:mi(2),*)  dfn,
integer, dimension(*)  nactdofinv,
integer, dimension(*)  ipompc,
integer, dimension(3,*)  nodempc,
real*8, dimension(*)  coefmpc,
integer  nmpc,
integer, dimension(*)  mi,
real*8, dimension(*)  fmpc,
integer  calcul_fn,
integer  calcul_f,
integer  idesvar,
real*8, dimension(*)  df,
integer, dimension(*)  jqs,
integer, dimension(*)  irows,
real*8  distmin 
)
22 !
23 ! calculating the equation system internal force vector
24 ! (one entry for each active degree of freedom)
25 !
26  implicit none
27 !
28  integer mi(*),nactdofinv(*),ipompc(*),nodempc(3,*),nk,i,j,
29  & nmpc,ist,ndir,node,index,calcul_fn,calcul_f,idesvar,jqs(*),
30  & irows(*),idir,inode,idof,mt
31 !
32  real*8 dfn(0:mi(2),*),coefmpc(*),fmpc(*),forcempc,distmin,
33  & df(*),val
34 !
35  mt=mi(2)+1
36 !
37 ! subtracting the mpc force (for each linear mpc there is one
38 ! force; the actual force in a node belonging to the mpc is
39 ! obtained by multiplying this force with the nodal coefficient.
40 ! The force has to be subtracted from f, since it does not
41 ! appear on the rhs of the equation system
42 !
43  if(calcul_fn.eq.1)then
44  do i=1,nmpc
45  ist=ipompc(i)
46  node=nodempc(1,ist)
47  ndir=nodempc(2,ist)
48  if(ndir.gt.3) cycle
49  forcempc=dfn(ndir,node)/coefmpc(ist)
50  fmpc(i)=forcempc
51  dfn(ndir,node)=0.d0
52  index=nodempc(3,ist)
53  if(index.eq.0) cycle
54  do
55  node=nodempc(1,index)
56  ndir=nodempc(2,index)
57  dfn(ndir,node)=dfn(ndir,node)-
58  &coefmpc(index)*forcempc
59  index=nodempc(3,index)
60  if(index.eq.0) exit
61  enddo
62  enddo
63  endif
64 !
65 ! calculating the system force vector
66 !
67  if(calcul_f.eq.1) then
68  do j=jqs(idesvar),jqs(idesvar+1)-1
69  idof=irows(j)
70  inode=nactdofinv(idof)
71  node=inode/mt+1
72  idir=inode-mt*(inode/mt)
73  val=-dfn(idir,node)/distmin
74  call add_bo_st(df,jqs,irows,irows(j),
75  & idesvar,val)
76  enddo
77  endif
78 !
79  return
subroutine df(x, u, uprime, rpar, nev)
Definition: subspace.f:133
subroutine add_bo_st(au, jq, irow, i, j, value)
Definition: add_bo_st.f:20
Hosted by OpenAircraft.com, (Michigan UAV, LLC)