OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
multi_i18_force_poff.F
Go to the documentation of this file.
1Copyright> OpenRadioss
2Copyright> Copyright (C) 1986-2025 Altair Engineering Inc.
3Copyright>
4Copyright> This program is free software: you can redistribute it and/or modify
5Copyright> it under the terms of the GNU Affero General Public License as published by
6Copyright> the Free Software Foundation, either version 3 of the License, or
7Copyright> (at your option) any later version.
8Copyright>
9Copyright> This program is distributed in the hope that it will be useful,
10Copyright> but WITHOUT ANY WARRANTY; without even the implied warranty of
11Copyright> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12Copyright> GNU Affero General Public License for more details.
13Copyright>
14Copyright> You should have received a copy of the GNU Affero General Public License
15Copyright> along with this program. If not, see <https://www.gnu.org/licenses/>.
16Copyright>
17Copyright>
18Copyright> Commercial Alternative: Altair Radioss Software
19Copyright>
20Copyright> As an alternative to this open-source version, Altair also offers Altair Radioss
21Copyright> software under a commercial license. Contact Altair to discuss further if the
22Copyright> commercial version may interest you: https://www.altair.com/radioss/.
23!||====================================================================
24!|| multi_i18_force_poff ../engine/source/interfaces/int18/multi_i18_force_poff.F
25!||--- called by ------------------------------------------------------
26!|| i18for3 ../engine/source/interfaces/int18/i18for3.F
27!||--- uses -----------------------------------------------------
28!|| elbufdef_mod ../common_source/modules/mat_elem/elbufdef_mod.F90
29!|| element_mod ../common_source/modules/elements/element_mod.F90
30!|| multi_fvm_mod ../common_source/modules/ale/multi_fvm_mod.F90
31!|| tri7box ../engine/share/modules/tri7box.F
32!||====================================================================
33 SUBROUTINE multi_i18_force_poff(DT, JLT ,IX1 ,IX2 ,IX3 ,IX4 ,
34 . NSVG ,H1 ,H2 ,H3 ,H4 ,STIF ,
35 . FX1 ,FY1 ,FZ1 ,FX2 ,FY2 ,FZ2 ,
36 . FX3 ,FY3 ,FZ3 ,FX4 ,FY4 ,FZ4 ,
37 . FXI ,FYI ,FZI ,A ,STIFN ,NIN,
38 . JTASK, MULTI_FVM ,X ,IXS ,V ,
39 . ELBUF_TAB,IGROUPS,IPARG ,MSI)
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
80 my_real
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
151 END SUBROUTINE multi_i18_force_poff
152
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)
type(real_pointer2), dimension(:), allocatable afi
Definition tri7box.F:459
integer, dimension(:), allocatable nlskyfi
Definition tri7box.F:512