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,
38 . FUN_ID ,SENS_ID )
39C-----------------------------------------------
40C M o d u l e s
41C-----------------------------------------------
42 USE sensor_mod
43C-----------------------------------------------
44C I m p l i c i t T y p e s
45C-----------------------------------------------
46#include "implicit_f.inc"
47C-----------------------------------------------
48C C o m m o n B l o c k s
49C-----------------------------------------------
50#include "com01_c.inc"
51C-----------------------------------------------
52C D u m m y A r g u m e n t s
53C-----------------------------------------------
54 INTEGER, INTENT(IN) :: NPT,NSENSOR,NEL,IP,FUN_ID,SENS_ID
55 my_real
56 . tt
57 my_real
58 . bpreld(nel,*),sig(nel,6)
59 TYPE (SENSOR_STR_) ,DIMENSION(NSENSOR) ,INTENT(IN) :: SENSOR_TAB
60C-----------------------------------------------
61C L o c a l V a r i a b l e s
62C-----------------------------------------------
63 INTEGER I,ISENS
64 my_real
65 . ts,te,sfac
66C-----------------------------------------------
67!!! see preload_solid_ini.F90
68
69 DO i=1,nel
70 ts = bpreld(i,1)
71 te = bpreld(i,2)
72 IF(bpreld(i,3) == zero)THEN
73 isens = sens_id
74
75 IF (isens > 0) THEN
76 ts = ts+sensor_tab(isens)%TSTART
77 te = te+sensor_tab(isens)%TSTART
78 ENDIF
79 ENDIF
80
81 IF(bpreld(i,3) < one)THEN
82 IF(tt >= ts )THEN
83 sfac = bpreld(i,10)
84 sig(i,1) = sfac*bpreld(i,4) !SIG(I,1)+BPRELD(I,4)
85 sig(i,2) = sfac*bpreld(i,5) !SIG(I,2)+BPRELD(I,5)
86 sig(i,3) = sfac*bpreld(i,6) !SIG(I,3)+BPRELD(I,6)
87 sig(i,4) = sfac*bpreld(i,7) !SIG(I,4)+BPRELD(I,7)
88 sig(i,5) = sfac*bpreld(i,8) !SIG(I,5)+BPRELD(I,8)
89 sig(i,6) = sfac*bpreld(i,9) !SIG(I,6)+BPRELD(I,9)
90 bpreld(i,3) = real(ip)/real(npt)
91
92! Added to shift all the preloading duration in case of sensor use
93 bpreld(i,1) = ts
94 bpreld(i,2) = te
95 ENDIF
96 ENDIF
97 ENDDO
98
99! Added to compensate loss of stress when filling the gap
100 IF(bpreld(1,3) == one)THEN
101 ts = bpreld(1,1)
102 te = bpreld(1,2)
103 IF(fun_id == 0)THEN
104 IF (tt <= (ts+em01*(te-ts))) THEN
105 DO i=1,nel
106 sig(i,1) = bpreld(i,4)
107 sig(i,2) = bpreld(i,5)
108 sig(i,3) = bpreld(i,6)
109 sig(i,4) = bpreld(i,7)
110 sig(i,5) = bpreld(i,8)
111 sig(i,6) = bpreld(i,9)
112 ENDDO
113 ELSE IF (tt >= te) THEN
114 DO i=1,nel
115 bpreld(i,3) = two
116 ENDDO
117 ENDIF
118 ELSE ! ramping inital stress need more time to reach the pick
119 IF (tt < te) THEN
120 sfac = bpreld(1,10)
121 sig(1:nel,1:6) = sfac*bpreld(1:nel,4:9)
122 ELSE
123 bpreld(1:nel,3) = two
124 ENDIF
125 ENDIF
126 END IF !(BPRELD(1,3) == ONE)THEN
127
128
129 RETURN
130 END
131
subroutine boltst(ip, bpreld, sig, tt, nel, npt, nsensor, sensor_tab, fun_id, sens_id)
Definition boltst.F:39