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!|| multi_fvm_mod ../common_source/modules/ale/multi_fvm_mod.f90
30!|| tri7box ../engine/share/modules/tri7box.f
31!||====================================================================
32 SUBROUTINE multi_i18_force_poff(DT, JLT ,IX1 ,IX2 ,IX3 ,IX4 ,
33 . NSVG ,H1 ,H2 ,H3 ,H4 ,STIF ,
34 . FX1 ,FY1 ,FZ1 ,FX2 ,FY2 ,FZ2 ,
35 . FX3 ,FY3 ,FZ3 ,FX4 ,FY4 ,FZ4 ,
36 . FXI ,FYI ,FZI ,A ,STIFN ,NIN,
37 . JTASK, MULTI_FVM ,X ,IXS ,V ,
38 . ELBUF_TAB,IGROUPS,IPARG ,MSI)
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
78 my_real
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
150 END SUBROUTINE multi_i18_force_poff
151
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