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 33 of file multi_i18_force_poff.F.

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