OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
i24_save_sub.F File Reference
#include "implicit_f.inc"

Go to the source code of this file.

Functions/Subroutines

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)

Function/Subroutine Documentation

◆ i24_save_sub()

subroutine i24_save_sub ( integer numnod,
integer mvsiz,
integer nisub,
integer s_addsubm,
integer s_lisubm,
integer s_typsub,
integer nisubmax,
integer i_stok,
integer ie,
integer itypsub,
integer nin,
integer i,
integer nn,
integer nft,
integer, dimension(s_addsubm) addsubm,
integer, dimension(s_lisubm) lisubm,
integer, dimension(s_typsub) typsub,
intarean,
integer intcarea,
integer, dimension(nisubmax+1) isensint,
fxi,
fyi,
fzi,
fni,
dt12,
fsavsub1,
fsavparit,
integer, intent(in) nrtse,
integer, dimension(5,nrtse), intent(in) irtse,
integer, intent(in) nsne,
integer, dimension(2,nsne), intent(in) is2se,
integer, dimension(nsne), intent(in) is2pt,
integer, intent(in) nsnr )
Parameters
numnodNUMBER of nodes in Model
mvsizVector size
s_addsubmSize of ADDSUBM (computed in Starter)
s_lisubmSize of LISUBM (computed in Starter)
s_typsubSize of TYPSUB (computed in Starter)
nisubmaxSize of ISENSINT
nisubNumber of Sub interfaces
i_stokNumber of contact pair / Dimension for FSAVPARIT
iIterator over Impact : Main Surface/Sec Node from caller routine
nftCurrent pinter to FSAVSUB1

Definition at line 33 of file i24_save_sub.F.

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
#define my_real
Definition cppsort.cpp:32
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