OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
tinit3.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!|| tinit3 ../starter/source/elements/truss/tinit3.F
25!||--- called by ------------------------------------------------------
26!|| initia ../starter/source/elements/initia/initia.F
27!||--- calls -----------------------------------------------------
28!|| ancmsg ../starter/source/output/message/message.F
29!|| dt1lawt ../starter/source/elements/truss/dt1lawt.F
30!|| fretitl2 ../starter/source/starter/freform.F
31!|| tcoori ../starter/source/elements/truss/tcoori.F
32!|| tibuf3 ../starter/source/elements/truss/tibuf3.F
33!|| tmass ../starter/source/elements/truss/tmass.F
34!|| tsigini ../starter/source/elements/truss/tsigini.F
35!||--- uses -----------------------------------------------------
36!|| bpreload_mod ../starter/share/modules1/bpreload_mod.F
37!|| message_mod ../starter/share/message_module/message_mod.F
38!||====================================================================
39 SUBROUTINE tinit3(ELBUF_STR,
40 1 IC ,PM ,X ,GEO ,XMAS ,
41 2 DTELEM ,NFT ,NEL ,STIFN ,PARTSAV,
42 3 V ,IPART ,MST ,STIFINT,STT ,
43 4 IGEO ,NSIGTRUSS ,SIGTRUSS ,PTTRUSS,
44 5 PRELOAD_A,IPRELD ,NPRELOAD_A)
45C-----------------------------------------------
46C M o d u l e s
47C-----------------------------------------------
48 USE elbufdef_mod
49 USE message_mod
50 USE bpreload_mod
52C-----------------------------------------------
53C I m p l i c i t T y p e s
54C-----------------------------------------------
55#include "implicit_f.inc"
56C-----------------------------------------------
57C G l o b a l P a r a m e t e r s
58C-----------------------------------------------
59#include "mvsiz_p.inc"
60C-----------------------------------------------
61C C o m m o n B l o c k s
62C-----------------------------------------------
63#include "param_c.inc"
64#include "com01_c.inc"
65#include "com04_c.inc"
66#include "scr03_c.inc"
67#include "scr17_c.inc"
68C-----------------------------------------------
69C D u m m y A r g u m e n t s
70C-----------------------------------------------
71 INTEGER IC(NIXT,*),IPART(*),IGEO(NPROPGI,*),PTTRUSS(*)
72 INTEGER NFT,NEL,NSIGTRUSS
73 INTEGER , INTENT (IN ) :: IPRELD,NPRELOAD_A
74 my_real
75 . PM(*),X(*), GEO(NPROPG,*),XMAS(*),DTELEM(*),
76 . stifn(*),partsav(20,*),v(*),mst(*),stifint(*),stt(*),
77 . sigtruss(nsigtruss,*)
78C
79 TYPE(elbuf_struct_), TARGET :: ELBUF_STR
80 TYPE(PREL1D_) , DIMENSION(NPRELOAD_A), TARGET :: PRELOAD_A
81C-----------------------------------------------
82C L o c a l V a r i a b l e s
83C-----------------------------------------------
84 INTEGER I,IGTYP,NDEPAR,IPID1
85 INTEGER MAT(MVSIZ), MXG(MVSIZ), NC1(MVSIZ), NC2(MVSIZ)
86 my_real
87 . X1(MVSIZ), X2(MVSIZ),
88 . Y1(MVSIZ), Y2(MVSIZ),
89 . z1(mvsiz), z2(mvsiz)
90 my_real
91 . deltax(mvsiz),xx,yy,zz, dtx(mvsiz)
92 INTEGER IDMIN,IDMAX
93 INTEGER ID
94 CHARACTER(LEN=NCHARTITLE)::TITR
95 DATA idmin /-1/, idmax /-1/
96 my_real
97 . lgthmin, lgthmax,xnor,undamp,cc1
98 DATA lgthmin /-1/, lgthmax /-1/
99C
100 TYPE(g_bufel_),POINTER :: GBUF
101C=======================================================================
102 gbuf => elbuf_str%GBUF
103C
104 ipid1=ic(nixt-1,nft+1)
105 id=igeo(1,ipid1)
106 CALL fretitl2(titr,igeo(npropgi-ltitr+1,ipid1),ltitr)
107C
108 CALL tcoori(x,ic(1,nft+1),mat, mxg, nc1, nc2,
109 . x1, x2, y1, y2, z1, z2)
110C-----------------------------
111C Check here (change TCOORI for called by /MAT/VOID)
112C-----------------------------
113 CALL tibuf3(gbuf%OFF,gbuf%AREA,geo, mxg)
114 DO i=1,nel
115 xnor=(x1(i)-x2(i))**2+(y1(i)-y2(i))**2+(z1(i)-z2(i))**2
116 IF (xnor <= 1.e-20) THEN
117 CALL ancmsg(msgid=269, msgtype=msgerror, anmode=aninfo, i1=id, c1=titr, i2=ic(5,i+nft))
118 ENDIF
119 gbuf%LENGTH(i) = sqrt(xnor)
120 END DO
121!------------------------------------------
122! Truss initialization
123!------------------------------------------
124 IF (isigi /= 0)
125 . CALL tsigini(nsigtruss ,sigtruss ,pttruss , gbuf%EINT ,gbuf%FOR,
126 . gbuf%G_PLA ,gbuf%PLA ,gbuf%AREA )
127 CALL tmass(x ,ic ,geo ,pm ,xmas ,
128 . stifn ,partsav ,v ,ipart(nft+1),mst(nft+1),
129 . stifint,stt(nft+1) ,gbuf%AREA, mat, nc1, nc2,
130 . x1, x2, y1, y2, z1, z2)
131!------------------------------------------
132C------------------------------------------
133C Compute truss time step 22/4/90
134C------------------------------------------
135 DO i=1,nel
136 igtyp=geo(12,ic(4,i+nft))
137 IF (igtyp /= 2 .AND. invers > 14) THEN
138 CALL ancmsg(msgid=270, msgtype=msgerror, anmode=aninfo_blind_1, i1=id, c1=titr, i2=ic(nixt,i),i3=igtyp)
139 ENDIF
140 xx = (x1(i) - x2(i))*(x1(i) - x2(i))
141 yy = (y1(i) - y2(i))*(y1(i) - y2(i))
142 zz = (z1(i) - z2(i))*(z1(i) - z2(i))
143 deltax(i)=sqrt(xx+yy+zz)
144 IF (lgthmin == -1 .OR. deltax(i) < lgthmin) THEN
145 lgthmin = deltax(i)
146 idmin = ic(5,i+nft)
147 ENDIF
148 IF (lgthmax == -1 .OR. deltax(i) > lgthmax) THEN
149 lgthmax = deltax(i)
150 idmax = ic(5,i+nft)
151 ENDIF
152 ENDDO ! I=1,NEL
153C
154 CALL dt1lawt(pm, deltax, mat, mxg, dtx)
155 ndepar=numels+numelc+nft
156 DO i=1,nel
157 dtelem(ndepar + i) = dtx(i)
158 ENDDO
159!--- /PRELOAD/AXIAL
160 IF (ipreld>0) THEN
161 cc1 =two*sqrt(two)
162 DO i=1,nel
163 undamp = cc1*mst(nft+i)*gbuf%LENGTH(i)/dtx(i)
164 gbuf%BPRELD(i) = preload_a(ipreld)%preload
165 gbuf%BPRELD(i+nel) = undamp*preload_a(ipreld)%damp
166 ENDDO
167 END IF
168C---
169 RETURN
170 END
subroutine dt1lawt(pm, deltax, mat, mxg, dtx)
Definition dt1lawt.F:29
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
subroutine fretitl2(titr, iasc, l)
Definition freform.F:804
subroutine tcoori(x, ncp, mxt, mxg, nc1, nc2, x1, x2, y1, y2, z1, z2)
Definition tcoori.F:32
subroutine tibuf3(off, area, geo, mxg)
Definition tibuf3.F:29
subroutine tinit3(elbuf_str, ic, pm, x, geo, xmas, dtelem, nft, nel, stifn, partsav, v, ipart, mst, stifint, stt, igeo, nsigtruss, sigtruss, pttruss, preload_a, ipreld, npreload_a)
Definition tinit3.F:45
subroutine tmass(x, nc, geo, pm, ms, stifn, partsav, v, ipart, mst, stifint, stt, area, mxt, nc1, nc2, x1, x2, y1, y2, z1, z2)
Definition tmass.F:33
subroutine tsigini(nsigtruss, sigtruss, pttruss, eint, for, g_pla, pla, area)
Definition tsigini.F:30