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