OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
multi_i18_force_poff.F File Reference
#include "implicit_f.inc"
#include "mvsiz_p.inc"
#include "param_c.inc"
#include "com04_c.inc"
#include "com01_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine multi_i18_force_poff (dt, jlt, ix1, ix2, ix3, ix4, nsvg, h1, h2, h3, h4, stif, fx1, fy1, fz1, fx2, fy2, fz2, fx3, fy3, fz3, fx4, fy4, fz4, fxi, fyi, fzi, a, stifn, nin, jtask, multi_fvm, x, ixs, v, elbuf_tab, igroups, iparg, msi)

Function/Subroutine Documentation

◆ multi_i18_force_poff()

subroutine multi_i18_force_poff ( dt,
integer jlt,
integer, dimension(mvsiz) ix1,
integer, dimension(mvsiz) ix2,
integer, dimension(mvsiz) ix3,
integer, dimension(mvsiz) ix4,
integer, dimension(mvsiz) nsvg,
h1,
h2,
h3,
h4,
stif,
fx1,
fy1,
fz1,
fx2,
fy2,
fz2,
fx3,
fy3,
fz3,
fx4,
fy4,
fz4,
fxi,
fyi,
fzi,
a,
stifn,
integer nin,
integer jtask,
type(multi_fvm_struct), intent(inout) multi_fvm,
x,
integer, dimension(nixs,*) ixs,
v,
type (elbuf_struct_), dimension(ngroup) elbuf_tab,
integer, dimension(numels) igroups,
integer, dimension(nparg,*) iparg,
intent(in) msi )

Definition at line 32 of file multi_i18_force_poff.F.

39!$COMMENT
40! MULTI_I18_FORCE_POFF description
41! accumulation of force for local and remote nodes
42!
43! MULTI_I18_FORCE_POFF organization :
44! - secondary nodes:
45! * if NSV > 0 --> local node (phantom node id = NSV - NUMNOD)
46! accumulation in forc_int array
47! * if NSV < 0 --> remote node
48! accumulation in AFI array
49!$ENDCOMMENT
50
51C-----------------------------------------------
52C M o d u l e s
53C-----------------------------------------------
54 USE multi_fvm_mod
55 USE tri7box
56 USE elbufdef_mod
57C-----------------------------------------------
58C I m p l i c i t T y p e s
59C-----------------------------------------------
60#include "implicit_f.inc"
61C-----------------------------------------------
62C G l o b a l P a r a m e t e r s
63C-----------------------------------------------
64#include "mvsiz_p.inc"
65C-----------------------------------------------
66C C o m m o n B l o c k s
67C-----------------------------------------------
68#include "param_c.inc"
69#include "com04_c.inc"
70#include "com01_c.inc"
71C-----------------------------------------------
72C D u m m y A r g u m e n t s
73C-----------------------------------------------
74 TYPE (ELBUF_STRUCT_), DIMENSION(NGROUP) :: ELBUF_TAB
75 INTEGER JLT, NIN,INTTH,JTASK,IGROUPS(NUMELS),IPARG(NPARG,*),
76 . IX1(MVSIZ),IX2(MVSIZ),IX3(MVSIZ),IX4(MVSIZ),NSVG(MVSIZ),IXS(NIXS,*)
77 my_real, DIMENSION(2*MVSIZ), INTENT(in) :: msi
79 . dt, h1(mvsiz),h2(mvsiz),h3(mvsiz),h4(mvsiz),stif(mvsiz),
80 . fx1(mvsiz),fy1(mvsiz),fz1(mvsiz),
81 . fx2(mvsiz),fy2(mvsiz),fz2(mvsiz),
82 . fx3(mvsiz),fy3(mvsiz),fz3(mvsiz),
83 . fx4(mvsiz),fy4(mvsiz),fz4(mvsiz),
84 . fxi(mvsiz),fyi(mvsiz),fzi(mvsiz),
85 . a(3,*), x(3,*), stifn(*), v(3,*)
86 TYPE(MULTI_FVM_STRUCT), INTENT(INOUT) :: MULTI_FVM
87C-----------------------------------------------
88C L o c a l V a r i a b l e s
89C-----------------------------------------------
90 INTEGER I, J1, IG, ISHIFT, NODFI, NG, ILOC, NEL, NFT
91 INTEGER :: SHIFT_FORCE_INT
92 my_real mass
93C-----------------------------------------------
94C S o u r c e L i n e s
95C-----------------------------------------------
96c Nodal forces on the interface
97 DO i=1,jlt
98 j1=ix1(i)
99 a(1,j1)=a(1,j1)+fx1(i)
100 a(2,j1)=a(2,j1)+fy1(i)
101 a(3,j1)=a(3,j1)+fz1(i)
102 stifn(j1) = stifn(j1) + stif(i)*abs(h1(i))
103C
104 j1=ix2(i)
105 a(1,j1)=a(1,j1)+fx2(i)
106 a(2,j1)=a(2,j1)+fy2(i)
107 a(3,j1)=a(3,j1)+fz2(i)
108 stifn(j1) = stifn(j1) + stif(i)*abs(h2(i))
109C
110 j1=ix3(i)
111 a(1,j1)=a(1,j1)+fx3(i)
112 a(2,j1)=a(2,j1)+fy3(i)
113 a(3,j1)=a(3,j1)+fz3(i)
114 stifn(j1) = stifn(j1) + stif(i)*abs(h3(i))
115C
116 j1=ix4(i)
117 a(1,j1)=a(1,j1)+fx4(i)
118 a(2,j1)=a(2,j1)+fy4(i)
119 a(3,j1)=a(3,j1)+fz4(i)
120 stifn(j1) = stifn(j1) + stif(i)*abs(h4(i))
121 ENDDO
122C
123 nodfi = nlskyfi(nin)
124 ishift = nodfi*(jtask-1)
125 DO i=1,jlt
126 ig=nsvg(i)
127 ! --------------------
128 ! local node
129 IF (ig > 0) THEN
130 ig = ig - numnod
131 ng = igroups(ig)
132 nft=iparg(3,ng)
133 nel=iparg(2,ng)
134 iloc=ig-nft
135
136 shift_force_int = (jtask-1)*numels
137 multi_fvm%FORCE_INT(1,ig+shift_force_int) = multi_fvm%FORCE_INT(1,ig+shift_force_int) - dt*fxi(i)
138 multi_fvm%FORCE_INT(2,ig+shift_force_int) = multi_fvm%FORCE_INT(2,ig+shift_force_int) - dt*fyi(i)
139 multi_fvm%FORCE_INT(3,ig+shift_force_int) = multi_fvm%FORCE_INT(3,ig+shift_force_int) - dt*fzi(i)
140 ! --------------------
141 ! remote node
142 ELSE
143 ig = - ig
144 afi(nin)%P(1,ig+ishift) = afi(nin)%P(1,ig+ishift) - dt * fxi(i)
145 afi(nin)%P(2,ig+ishift) = afi(nin)%P(2,ig+ishift) - dt * fyi(i)
146 afi(nin)%P(3,ig+ishift) = afi(nin)%P(3,ig+ishift) - dt * fzi(i)
147 ENDIF
148 ! --------------------
149 ENDDO
#define my_real
Definition cppsort.cpp:32
type(real_pointer2), dimension(:), allocatable afi
Definition tri7box.F:459
integer, dimension(:), allocatable nlskyfi
Definition tri7box.F:512