OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
boltst.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!|| boltst ../engine/source/elements/solid/solide/boltst.F
25!||--- called by ------------------------------------------------------
26!|| s10forc3 ../engine/source/elements/solid/solide10/s10forc3.F
27!|| s4forc3 ../engine/source/elements/solid/solide4/s4forc3.F
28!|| s8cforc3 ../engine/source/elements/thickshell/solide8c/s8cforc3.F
29!|| s8eforc3 ../engine/source/elements/solid/solide8e/s8eforc3.F
30!|| s8zforc3 ../engine/source/elements/solid/solide8z/s8zforc3.F
31!|| sforc3 ../engine/source/elements/solid/solide/sforc3.F
32!|| szforc3 ../engine/source/elements/solid/solidez/szforc3.F
33!||--- uses -----------------------------------------------------
34!|| sensor_mod ../common_source/modules/sensor_mod.F90
35!||====================================================================
36 SUBROUTINE boltst(IP ,BPRELD ,SIG ,TT ,
37 . NEL ,NPT ,NSENSOR ,SENSOR_TAB)
38C-----------------------------------------------
39C M o d u l e s
40C-----------------------------------------------
41 USE sensor_mod
42C-----------------------------------------------
43C I m p l i c i t T y p e s
44C-----------------------------------------------
45#include "implicit_f.inc"
46C-----------------------------------------------
47C C o m m o n B l o c k s
48C-----------------------------------------------
49#include "com01_c.inc"
50C-----------------------------------------------
51C D u m m y A r g u m e n t s
52C-----------------------------------------------
53 INTEGER, INTENT(IN) :: NPT,NSENSOR,NEL,IP
55 . tt, dt1
57 . bpreld(nel,*),sig(nel,6)
58 TYPE (SENSOR_STR_) ,DIMENSION(NSENSOR) ,INTENT(IN) :: SENSOR_TAB
59C-----------------------------------------------
60C L o c a l V a r i a b l e s
61C-----------------------------------------------
62 INTEGER I,K,ISENS
64 . ts,te
65C-----------------------------------------------
66C
67! Retrieve sysid of the sensors at cycle=0
68 IF (ncycle == 0 .AND. ip == 1) THEN
69 DO i=1,nel
70 isens = int(bpreld(i,10))
71 IF (isens > 0)THEN
72 DO k=1,nsensor
73 IF(isens==sensor_tab(k)%SENS_ID) GOTO 100 ! do it in staerter !!!
74 ENDDO
75100 bpreld(i,10)=k
76 ENDIF
77 ENDDO
78 ENDIF
79
80 DO i=1,nel
81 ts = bpreld(i,1)
82 te = bpreld(i,2)
83 IF(bpreld(i,3) == zero)THEN
84 isens = int(bpreld(i,10))
85
86 IF (isens > 0) THEN
87 ts = ts+sensor_tab(isens)%TSTART
88 te = te+sensor_tab(isens)%TSTART
89 ENDIF
90 ENDIF
91
92 IF(bpreld(i,3) < one)THEN
93 IF(tt >= ts )THEN
94 sig(i,1) = bpreld(i,4) !SIG(I,1)+BPRELD(I,4)
95 sig(i,2) = bpreld(i,5) !SIG(I,2)+BPRELD(I,5)
96 sig(i,3) = bpreld(i,6) !SIG(I,3)+BPRELD(I,6)
97 sig(i,4) = bpreld(i,7) !SIG(I,4)+BPRELD(I,7)
98 sig(i,5) = bpreld(i,8) !SIG(I,5)+BPRELD(I,8)
99 sig(i,6) = bpreld(i,9) !SIG(I,6)+BPRELD(I,9)
100 bpreld(i,3) = real(ip)/real(npt)
101
102! Added to shift all the preloading duration in case of sensor use
103 bpreld(i,1) = ts
104 bpreld(i,2) = te
105 ENDIF
106 ENDIF
107 ENDDO
108
109! Added to compensate loss of stress when filling the gap
110 IF(bpreld(1,3) == one)THEN
111 ts = bpreld(1,1)
112 te = bpreld(1,2)
113! IF (TT <= (TE+EM01*(TE-TS))) THEN ! sb : seems to be an error
114 IF (tt <= (ts+em01*(te-ts))) THEN
115 DO i=1,nel
116 sig(i,1) = bpreld(i,4)
117 sig(i,2) = bpreld(i,5)
118 sig(i,3) = bpreld(i,6)
119 sig(i,4) = bpreld(i,7)
120 sig(i,5) = bpreld(i,8)
121 sig(i,6) = bpreld(i,9)
122 ENDDO
123 ELSE IF (tt >= te) THEN
124 DO i=1,nel
125 bpreld(i,3) = two
126 ENDDO
127 ENDIF
128 ENDIF
129
130
131 RETURN
132 END
133
subroutine boltst(ip, bpreld, sig, tt, nel, npt, nsensor, sensor_tab)
Definition boltst.F:38
#define my_real
Definition cppsort.cpp:32