OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
desacti.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!|| desacti ../engine/source/elements/desacti.F
25!||--- called by ------------------------------------------------------
26!|| resol ../engine/source/engine/resol.F
27!||--- calls -----------------------------------------------------
28!|| convecoff ../engine/source/constraints/thermic/convecoff.F
29!|| eloff ../engine/source/elements/eloff.F
30!|| radiatoff ../engine/source/constraints/thermic/radiatoff.F
31!||--- uses -----------------------------------------------------
32!|| elbufdef_mod ../common_source/modules/mat_elem/elbufdef_mod.F90
33!|| element_mod ../common_source/modules/elements/element_mod.F90
34!|| glob_therm_mod ../common_source/modules/mat_elem/glob_therm_mod.F90
35!|| groupdef_mod ../common_source/modules/groupdef_mod.F
36!|| sensor_mod ../common_source/modules/sensor_mod.F90
37!||====================================================================
38 SUBROUTINE desacti(IXS ,IXQ ,IXC ,IXP ,IXT ,
39 . IXR ,IXTG ,IPARG ,IACTIV ,
40 . NSENSOR ,SENSOR_TAB,FSKY ,X ,ELBUF_TAB,
41 . IBCV ,FCONV ,IBCR ,FRADIA ,IGROUPS ,
42 . FACTIV ,TEMP ,MCP ,PM ,MCP_OFF ,
43 . IGRBRIC ,IGRQUAD ,IGRSH4N ,IGRSH3N ,IGRTRUSS ,
44 . IGRBEAM ,IGRSPRING,GLOB_THERM)
45C-----------------------------------------------
46C M o d u l e s
47C-----------------------------------------------
48 USE elbufdef_mod
49 USE groupdef_mod
50 USE sensor_mod
51 use glob_therm_mod
52 use element_mod , only : nixs,nixq,nixc,nixt,nixr,nixp,nixtg
53C-----------------------------------------------
54C I m p l i c i t T y p e s
55C-----------------------------------------------
56#include "implicit_f.inc"
57C-----------------------------------------------
58C C o m m o n B l o c k s
59C-----------------------------------------------
60#include "param_c.inc"
61#include "com01_c.inc"
62#include "com04_c.inc"
63#include "com08_c.inc"
64#include "parit_c.inc"
65C-----------------------------------------------
66C D u m m y A r g u m e n t s
67C-----------------------------------------------
68 INTEGER ,INTENT(IN) :: NSENSOR
69 INTEGER IACTIV(LACTIV,*),IPARG(NPARG,*),
70 . IXS(NIXS,*), IXQ(NIXQ,*), IXC(NIXC,*),
71 . IXT(NIXT,*),IXP(NIXP,*), IXR(NIXR,*), IXTG(NIXTG,*)
72 INTEGER IBCV(*), IBCR(*), IGROUPS(*)
73 my_real FSKY(*), FCONV(*), FRADIA(*)
74 my_real x(3,*), factiv(lractiv,*), temp(*), mcp(*), pm(npropm,*)
75 my_real mcp_off(*)
76 TYPE(elbuf_struct_), DIMENSION(NGROUP), TARGET :: ELBUF_TAB
77 TYPE (SENSOR_STR_) ,DIMENSION(NSENSOR) ,INTENT(IN) :: SENSOR_TAB
78 type (glob_therm_) ,intent(inout) :: glob_therm
79C-----------------------------------------------
80 TYPE (GROUP_) , DIMENSION(NGRBRIC) :: IGRBRIC
81 TYPE (GROUP_) , DIMENSION(NGRQUAD) :: IGRQUAD
82 TYPE (GROUP_) , DIMENSION(NGRSHEL) :: IGRSH4N
83 TYPE (GROUP_) , DIMENSION(NGRSH3N) :: IGRSH3N
84 TYPE (GROUP_) , DIMENSION(NGRTRUS) :: IGRTRUSS
85 TYPE (GROUP_) , DIMENSION(NGRBEAM) :: IGRBEAM
86 TYPE (GROUP_) , DIMENSION(NGRSPRI) :: IGRSPRING
87C-----------------------------------------------
88C L o c a l V a r i a b l e s
89C-----------------------------------------------
90 INTEGER I,N,IFLAG,ISENS,OFFCHANGE
91 INTEGER ITHERM_FE
92 my_real startt, stopt
93C======================================================================|
94 offchange = 0
95 itherm_fe = glob_therm%ITHERM_FE
96!
97 DO n = 1,nactiv
98 isens = iactiv(2,n)
99 iflag = iactiv(1,n)
100 IF (iactiv(10,n) == 1) THEN
101 IF (isens > 0) THEN
102C----------------------------------------------------------------------
103C ELEMENT DEACTIVATION
104C----------------------------------------------------------------------
105 IF (iflag == 1 .AND. tt > sensor_tab(isens)%TSTART) THEN
106 CALL eloff(ixs ,ixq ,ixc ,ixp ,ixt ,
107 . ixr ,ixtg ,iparg ,
108 . iactiv ,tt ,iflag ,n ,elbuf_tab,
109 . x ,temp ,mcp ,pm ,igroups ,
110 . mcp_off ,igrbric ,igrquad ,igrsh4n ,igrsh3n ,
111 . igrtruss,igrbeam ,igrspring,itherm_fe)
112
113 iactiv(1,n) = 0
114 offchange=1
115 IF (iparit /= 0) THEN
116 DO i=1,8*lsky
117 fsky(i)=zero
118 ENDDO
119 ENDIF
120C----------------------------------------------------------------------
121C ELEMENT ACTIVATION
122C----------------------------------------------------------------------
123 ELSEIF (iflag == 0 .AND. tt <= sensor_tab(isens)%TSTART) THEN
124 CALL eloff(ixs ,ixq ,ixc ,ixp ,ixt ,
125 . ixr ,ixtg ,iparg ,
126 . iactiv ,tt ,iflag ,n ,elbuf_tab,
127 . x ,temp ,mcp ,pm ,igroups ,
128 . mcp_off ,igrbric ,igrquad ,igrsh4n ,igrsh3n ,
129 . igrtruss,igrbeam ,igrspring,itherm_fe)
130
131 iactiv(1,n) = 1
132 offchange=1
133 ENDIF
134 ENDIF
135
136 ELSEIF(iactiv(10,n) == 2) THEN
137C----------------------------------------------------------------------
138C DESACTIVATION DES ELEMENTS AT TIME ZERO
139C----------------------------------------------------------------------
140 IF(tt == zero) THEN
141 CALL eloff(ixs ,ixq ,ixc ,ixp ,ixt ,
142 . ixr ,ixtg ,iparg ,
143 . iactiv ,tt ,1 ,n ,elbuf_tab,
144 . x ,temp ,mcp ,pm ,igroups ,
145 . mcp_off ,igrbric ,igrquad ,igrsh4n ,igrsh3n ,
146 . igrtruss,igrbeam ,igrspring,itherm_fe)
147
148 iactiv(1,n) = 0
149 offchange=1
150 ENDIF
151C----------------------------------------------------------------------
152C ELEMENT ACTIVATION
153C----------------------------------------------------------------------
154 startt = factiv(1,n)
155 stopt = factiv(2,n)
156 iflag = iactiv(1,n)
157 IF(itherm_fe > 0) THEN
158 startt = startt / glob_therm%THEACCFACT
159 stopt = stopt / glob_therm%THEACCFACT
160 ENDIF
161 IF(iflag == 0 .AND. tt >= startt .AND. tt < stopt) THEN
162 CALL eloff(ixs ,ixq ,ixc ,ixp ,ixt ,
163 . ixr ,ixtg ,iparg ,
164 . iactiv ,tt ,iflag ,n ,elbuf_tab,
165 . x ,temp ,mcp ,pm ,igroups ,
166 . mcp_off ,igrbric ,igrquad ,igrsh4n ,igrsh3n ,
167 . igrtruss,igrbeam ,igrspring,itherm_fe)
168 iactiv(1,n) = 1
169 offchange=1
170 ENDIF
171C----------------------------------------------------------------------
172C ELEMENT DEACTIVATION
173C----------------------------------------------------------------------
174 IF(iflag == 1 .AND. tt > stopt) THEN
175 CALL eloff(ixs ,ixq ,ixc ,ixp ,ixt ,
176 . ixr ,ixtg ,iparg ,
177 . iactiv ,tt ,1 ,n ,elbuf_tab,
178 . x ,temp ,mcp ,pm ,igroups ,
179 . mcp_off ,igrbric ,igrquad ,igrsh4n ,igrsh3n ,
180 . igrtruss,igrbeam ,igrspring,itherm_fe)
181 iactiv(1,n) = 0
182 offchange=1
183 ENDIF
184 ENDIF
185 ENDDO ! N=1,NACTIV
186C
187 IF(itherm_fe > 0 .AND. offchange == 1) THEN
188 IF(glob_therm%NUMCONV > 0) CALL convecoff(ibcv, fconv, iparg, igroups, elbuf_tab,glob_therm)
189 IF(glob_therm%NUMRADIA > 0) CALL radiatoff(ibcr, fradia,iparg, igroups, ixs, elbuf_tab,glob_therm)
190 ENDIF
191
192 IF(itherm_fe > 0 .AND. tt == zero) THEN
193C Final call to set MCP_OFF(i) = 0 if all nodes
194 iflag=-1
195 CALL eloff(ixs ,ixq ,ixc ,ixp ,ixt ,
196 . ixr ,ixtg ,iparg ,
197 . iactiv ,tt ,iflag ,n ,elbuf_tab,
198 . x ,temp ,mcp ,pm ,igroups ,
199 . mcp_off ,igrbric ,igrquad ,igrsh4n ,igrsh3n ,
200 . igrtruss,igrbeam ,igrspring,itherm_fe)
201 ENDIF
202
203
204C
205 RETURN
206 END
207
subroutine convecoff(ibcv, fconv, iparg, igroups, elbuf_tab, glob_therm)
Definition convecoff.F:32
subroutine desacti(ixs, ixq, ixc, ixp, ixt, ixr, ixtg, iparg, iactiv, nsensor, sensor_tab, fsky, x, elbuf_tab, ibcv, fconv, ibcr, fradia, igroups, factiv, temp, mcp, pm, mcp_off, igrbric, igrquad, igrsh4n, igrsh3n, igrtruss, igrbeam, igrspring, glob_therm)
Definition desacti.F:45
subroutine eloff(ixs, ixq, ixc, ixp, ixt, ixr, ixtg, iparg, iactiv, time, iflag, nn, elbuf_tab, x, temp, mcp, pm, igroups, mcp_off, igrbric, igrquad, igrsh4n, igrsh3n, igrtruss, igrbeam, igrspring, itherm_fe)
Definition eloff.F:43
subroutine radiatoff(ibcr, fradia, iparg, igroups, ixs, elbuf_tab, glob_therm)
Definition radiatoff.F:33