OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
i3sti2.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/.
23C
24!||====================================================================
25!|| i3sti2 ../starter/source/interfaces/inter2d1/i3sti2.F
26!||--- called by ------------------------------------------------------
27!|| inint2 ../starter/source/interfaces/inter2d1/inint2.f
28!||--- calls -----------------------------------------------------
29!|| ancmsg ../starter/source/output/message/message.F
30!|| inare2 ../starter/source/interfaces/inter2d1/inare2.F
31!|| inori2 ../starter/source/interfaces/inter2d1/inori2.F
32!|| inrch2 ../starter/source/interfaces/inter2d1/inrch2.F
33!|| local_index ../starter/source/interfaces/interf1/local_index.F
34!||--- uses -----------------------------------------------------
35!|| message_mod ../starter/share/message_module/message_mod.F
36!||====================================================================
37 SUBROUTINE i3sti2(
38 1 X ,IRECT ,STF ,IXQ ,PM ,
39 2 NRT ,STFN ,NSEG ,LNSV ,NINT ,
40 3 NSN ,NSV ,SLSFAC ,NOINT ,IPM ,
41 4 ID ,TITR ,AREAS ,KNOD2ELQ,NOD2ELQ,
42 5 NTY ,NSNS ,NSVS ,SEGQUADFR)
43C-----------------------------------------------
44C M o d u l e s
45C-----------------------------------------------
46 USE message_mod
48C-----------------------------------------------
49C I m p l i c i t T y p e s
50C-----------------------------------------------
51#include "implicit_f.inc"
52C-----------------------------------------------
53C C o m m o n B l o c k s
54C-----------------------------------------------
55#include "com01_c.inc"
56#include "com04_c.inc"
57#include "param_c.inc"
58C-----------------------------------------------
59C D u m m y A r g u m e n t s
60C-----------------------------------------------
61 INTEGER NRT, NINT, NSN, NOINT, NTY, NSNS, IPM(NPROPMI,*)
62 my_real
63 . SLSFAC
64 INTEGER IRECT(4,*), IXQ(7,*), NSEG(*), LNSV(*), NSV(*),
65 . KNOD2ELQ(*),NOD2ELQ(*), NSVS(*), SEGQUADFR(2,*)
66 my_real
67 . x(3,*), stf(*), pm(npropm,*), stfn(*),areas(*)
68 INTEGER ID
69 CHARACTER(LEN=NCHARTITLE) :: TITR
70C-----------------------------------------------
71C L o c a l V a r i a b l e s
72C-----------------------------------------------
73 INTEGER I, II, NEL, MT, J, NUM, NPT, JJ, LL, IG, IL, IE, INRT,
74 . n1 ,n2 ,stat, iline, lin, l, n, k
75 INTEGER LINES(2,4)
76 INTEGER, DIMENSION(:),ALLOCATABLE ::INRTIE
77C REAL
78 my_real
79 . area, xl2, ym1, ym2, zm1, zm2,ye(4) ,ze(4),
80 . y1 ,y2 ,z1 ,z2
81 DATA lines/1,2,
82 . 2,3,
83 . 3,4,
84 . 4,1/
85C-----------------------------------------------
86C E x t e r n a l F u n c t i o n s
87C-----------------------------------------------
88C
89 ALLOCATE(inrtie(numelq),stat=stat)
90 IF (stat /= 0) CALL ancmsg(msgid=268,anmode=aninfo,
91 . msgtype=msgerror,
92 . c1='INRTIE')
93 inrtie(1:numelq)=0
94C
95 DO i=1,nrt
96 ii=i
97 CALL inrch2(x , irect,ixq, ii , nel,
98 . nint, ym1 ,ym2, zm1,
99 . zm2 , ye ,ze , id , titr)
100 IF(nel/=0) THEN
101 inrtie(nel) = ii
102 CALL inare2(area,ye ,ze)
103 xl2=(ym2-ym1)**2+(zm2-zm1)**2
104 mt=ixq(1,nel)
105 IF(mt>0)THEN
106 stf(i)=slsfac*xl2*pm(32,mt)/area
107 ELSE
108 stf(i)=zero
109 CALL ancmsg(msgid=347,
110 . msgtype=msgwarning,
111 . anmode=aninfo_blind_2,
112 . i1=id,
113 . c1=titr,
114 . i2=ipm(1,mt),
115 . i3=nel,
116 . i4=i)
117C
118 ENDIF
119 ELSE
120 stf(i)=zero
121 ENDIF
122C
123 CALL inori2(irect,ii,nel,nint,
124 . noint, ym1, ym2, zm1,zm2 ,
125 . ye ,ze)
126 ENDDO
127C---------------------------------------------
128C CALCUL DES RIGIDITES NODALES
129C---------------------------------------------
130 DO j=1,nsn
131 num=nseg(j+1)-nseg(j)
132 npt=nseg(j)-1
133 DO jj=1,num
134 ll=lnsv(npt+jj)
135 stfn(j)=stfn(j) + half*stf(ll)
136 ENDDO
137 ENDDO
138
139C---------------------------------------------
140C SECND NODAL SURFACE COMPUTATION
141C---------------------------------------------
142C
143 IF(nty == 3) THEN
144 DO i = 1,nsn
145 areas(i) = zero
146 DO j= knod2elq(nsv(i))+1,knod2elq(nsv(i)+1)
147 ie = nod2elq(j)
148 inrt = inrtie(ie)
149 IF(inrt/=0)THEN
150 n1=irect(1,inrt)
151 n2=irect(2,inrt)
152 y1=x(2,n1)
153 z1=x(3,n1)
154 y2=x(2,n2)
155 z2=x(3,n2)
156c
157 area = sqrt((y2-y1)*(y2-y1)+(z2-z1)*(z2-z1))
158 area = area*half
159c
160 areas(i) = areas(i) + area
161 ENDIF
162 ENDDO
163 ENDDO
164 ELSEIF(nty == 5) THEN
165 DO i = 1,nsns
166 areas(i) = zero
167 DO j= knod2elq(nsvs(i))+1,knod2elq(nsvs(i)+1)
168 ie = nod2elq(j)
169 lin = -huge(lin)
170 DO l=1,4
171 IF(ixq(lines(1,l)+1,ie) ==nsvs(i)) THEN
172 lin = l
173 EXIT
174 ENDIF
175 ENDDO
176
177 DO k=1,nsegquadfr
178 n =segquadfr(1,k)
179 iline=segquadfr(2,k)
180
181 IF(n==ie.AND.iline==lin) THEN
182
183 n1=ixq(lines(1,iline)+1,n)
184 n2=ixq(lines(2,iline)+1,n)
185
186 y1=x(2,n1)
187 z1=x(3,n1)
188 y2=x(2,n2)
189 z2=x(3,n2)
190
191 area = sqrt((y2-y1)*(y2-y1)+(z2-z1)*(z2-z1))
192 area = area*half
193
194 areas(i) = areas(i) + area
195 ENDIF
196 ENDDO
197 ENDDO
198 ENDDO
199 ENDIF
200 DEALLOCATE(inrtie)
201
202C-----------------------------------------------------
203C MISE DANS IRECT DU NUMERO LOCAL DU NOEUD
204C-----------------------------------------------------
205 DO i=1,nrt
206 ig=irect(1,i)
207 CALL local_index(il,ig,nsv,nsn)
208 irect(1,i)=il
209 ig=irect(2,i)
210 CALL local_index(il,ig,nsv,nsn)
211 irect(2,i)=il
212 ENDDO
213C
214 RETURN
215 END
subroutine area(d1, x, x2, y, y2, eint, stif0)
subroutine i3sti2(x, irect, stf, ixq, pm, nrt, stfn, nseg, lnsv, nint, nsn, nsv, slsfac, noint, ipm, id, titr, areas, knod2elq, nod2elq, nty, nsns, nsvs, segquadfr)
Definition i3sti2.F:43
subroutine inare2(area, ye, ze)
Definition inare2.F:31
subroutine inint2(intbuf_tab, inscr, x, ixq, sinscr, pm, geo, ipari, nint, itab, itabm1, numnod, ikine, mwa, ipm, id, titr, knod2elq, nod2elq, segquadfr, nummat, ninter, sitab, sitabm1, sicode, icode)
Definition inint2.F:48
subroutine inori2(irect, isg, nel, nint, noint, ym1, ym2, zm1, zm2, ye, ze)
Definition inori2.F:34
subroutine inrch2(x, irect, ico, isg, nel, nint, ym1, ym2, zm1, zm2, ye, ze, id, titr)
Definition inrch2.F:37
subroutine local_index(il, ig, nodes, n)
Definition local_index.F:37
integer, parameter nchartitle
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)
Definition message.F:889
program starter
Definition starter.F:39