OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
i24_save_sub.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!|| i24_save_sub ../engine/source/interfaces/int24/i24_save_sub.F
25!||--- called by ------------------------------------------------------
26!|| i24for3 ../engine/source/interfaces/int24/i24for3.F
27!||--- calls -----------------------------------------------------
28!|| i24intarea_fic ../engine/source/interfaces/int24/i24intarea_fic.F90
29!||--- uses -----------------------------------------------------
30!|| i24intarea_fic_mod ../engine/source/interfaces/int24/i24intarea_fic.F90
31!|| tri7box ../engine/share/modules/tri7box.F
32!||====================================================================
33 SUBROUTINE i24_save_sub(NUMNOD,MVSIZ,NISUB,S_ADDSUBM,S_LISUBM,S_TYPSUB,NISUBMAX,I_STOK,
34 * IE,ITYPSUB,NIN,I,NN,NFT,
35 * ADDSUBM,LISUBM,TYPSUB,
36 * INTAREAN,INTCAREA,ISENSINT,
37 * FXI,FYI,FZI,FNI,DT12,
38 * FSAVSUB1,FSAVPARIT ,NRTSE,
39 * IRTSE,NSNE,IS2SE ,IS2PT,NSNR)
40!! \brief Routine to save values for type24 Sub interface for output
41!! \details moved from i24for3.F to secondary subroutine due to compiler issue.
42C-----------------------------------------------
43C M o d u l e s
44C-----------------------------------------------
45 USE tri7box
46 USE i24intarea_fic_mod , ONLY : i24intarea_fic
47C-----------------------------------------------
48C I m p l i c i t T y p e s
49C-----------------------------------------------
50#include "implicit_f.inc"
51C-----------------------------------------------
52C G l o b a l P a r a m e t e r s
53C-----------------------------------------------
54C-----------------------------------------------
55C C o m m o n B l o c k s
56C-----------------------------------------------
57C-----------------------------------------------
58C D u m m y A r g u m e n t s
59C-----------------------------------------------
60 INTEGER NUMNOD !< NUMBER of nodes in Model
61 INTEGER MVSIZ !< Vector size
62 INTEGER S_ADDSUBM !< Size of ADDSUBM (computed in Starter)
63 INTEGER S_LISUBM !< Size of LISUBM (computed in Starter)
64 INTEGER S_TYPSUB !< Size of TYPSUB (computed in Starter)
65 INTEGER NISUBMAX !< Size of ISENSINT
66 INTEGER NISUB !< Number of Sub interfaces
67 INTEGER I_STOK !< Number of contact pair / Dimension for FSAVPARIT
68 INTEGER IE
69 INTEGER ITYPSUB
70 INTEGER NIN
71 INTEGER NN
72 INTEGER I !< Iterator over Impact : Main Surface/Sec Node from caller routine
73 INTEGER NFT !< Current pinter to FSAVSUB1
74 INTEGER ADDSUBM(S_ADDSUBM)
75 INTEGER LISUBM(S_LISUBM)
76 INTEGER TYPSUB(S_TYPSUB)
77 INTEGER ISENSINT(NISUBMAX+1)
78 my_real fxi(mvsiz)
79 my_real fyi(mvsiz)
80 my_real fzi(mvsiz)
81 my_real fni(mvsiz)
82 my_real dt12
83 my_real intarean(numnod)
84 INTEGER INTCAREA
85 my_real fsavsub1(25,nisub)
86 my_real fsavparit(nisub+1,11,i_stok)
87 INTEGER, INTENT(IN) :: NSNE,NRTSE,NSNR
88 INTEGER, DIMENSION(5,NRTSE),INTENT(IN) :: IRTSE
89 INTEGER, DIMENSION(2,NSNE),INTENT(IN) :: IS2SE
90 INTEGER, DIMENSION(NSNE),INTENT(IN) :: IS2PT
91C-----------------------------------------------
92C L o c a l V a r i a b l e s
93C-----------------------------------------------
94 INTEGER KK,ISUB,IG
95 my_real impx,impy,impz,arean_fic
96C-----------------------------------------------
97 DO kk=addsubm(ie),addsubm(ie+1)-1
98 isub=lisubm(kk)
99 itypsub = typsub(isub)
100
101 IF(itypsub == 2 ) THEN ! Inter =0 : collecting forces from all inter with only 1 surface : main side
102
103 impx=-fxi(i)*dt12
104 impy=-fyi(i)*dt12
105 impz=-fzi(i)*dt12
106
107 fsavsub1(1,isub)=fsavsub1(1,isub)+impx
108 fsavsub1(2,isub)=fsavsub1(2,isub)+impy
109 fsavsub1(3,isub)=fsavsub1(3,isub)+impz
110
111 fsavsub1(8,isub) =fsavsub1(8,isub) +abs(impx)
112 fsavsub1(9,isub) =fsavsub1(9,isub) +abs(impy)
113 fsavsub1(10,isub)=fsavsub1(10,isub)+abs(impz)
114
115 fsavsub1(11,isub)=fsavsub1(11,isub)-fni(i)*dt12
116
117 IF(isensint(isub+1)/=0) THEN
118 fsavparit(isub+1,1,i+nft) = -fxi(i)
119 fsavparit(isub+1,2,i+nft) = -fyi(i)
120 fsavparit(isub+1,3,i+nft) = -fzi(i)
121 ENDIF
122
123 IF(intcarea > 0) THEN
124 IF(nn > 0) THEN
125 IF(nn <=numnod) THEN
126 fsavsub1(25,isub) = fsavsub1(25,isub) + intarean(nn)
127 ELSE
128 ig = nn - numnod
129 CALL i24intarea_fic(irtse ,nsne ,is2se ,is2pt ,ig ,
130 + nrtse , numnod ,intarean, arean_fic )
131 fsavsub1(25,isub) = fsavsub1(25,isub) + arean_fic
132 ENDIF
133 ELSE
134 IF(isedge_fi(nin)%P(nn)==1)THEN
135 CALL i24intarea_fic(irtse_fi(nin)%P ,nsnr ,is2se_fi(nin)%P ,is2pt_fi(nin)%P ,nn ,
136 + nsnr , nsnr , intareanfi(nin)%P, arean_fic)
137 fsavsub1(25,isub) = fsavsub1(25,isub) + arean_fic
138 ELSE ! cas noeud remote en SPMD non edge
139 fsavsub1(25,isub) = fsavsub1(25,isub) + intareanfi(nin)%P(nn)
140 ENDIF
141 ENDIF
142 ENDIF
143
144 ENDIF
145
146 ENDDO
147
148 END
149
#define my_real
Definition cppsort.cpp:32
subroutine i24_save_sub(numnod, mvsiz, nisub, s_addsubm, s_lisubm, s_typsub, nisubmax, i_stok, ie, itypsub, nin, i, nn, nft, addsubm, lisubm, typsub, intarean, intcarea, isensint, fxi, fyi, fzi, fni, dt12, fsavsub1, fsavparit, nrtse, irtse, nsne, is2se, is2pt, nsnr)
type(int_pointer), dimension(:), allocatable is2pt_fi
Definition tri7box.F:537
type(int_pointer2), dimension(:), allocatable is2se_fi
Definition tri7box.F:536
type(int_pointer2), dimension(:), allocatable irtse_fi
Definition tri7box.F:535
type(real_pointer), dimension(:), allocatable intareanfi
Definition tri7box.F:554
type(int_pointer), dimension(:), allocatable isedge_fi
Definition tri7box.F:540