OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
dtnodamp.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!|| dtnodamp ../engine/source/time_step/dtnodamp.F
25!||--- called by ------------------------------------------------------
26!|| resol ../engine/source/engine/resol.F
27!||--- uses -----------------------------------------------------
28!|| element_mod ../common_source/modules/elements/element_mod.F90
29!|| groupdef_mod ../common_source/modules/groupdef_mod.F
30!||====================================================================
31 SUBROUTINE dtnodamp(ITAB ,MS ,IN ,STIFN ,STIFR ,DT2T,
32 1 WEIGHT ,IGRNOD ,DAMPR ,ISTOP ,
33 2 I_DAMP_RDOF_TAB,ICONTACT ,IXC ,X )
34C-----------------------------------------------
35C M o d u l e s
36C-----------------------------------------------
37 USE groupdef_mod
38 use element_mod , only : nixc
39C-----------------------------------------------
40C I m p l i c i t T y p e s
41C-----------------------------------------------
42#include "implicit_f.inc"
43#include "comlock.inc"
44C-----------------------------------------------
45C C o m m o n B l o c k s
46C-----------------------------------------------
47#include "com01_c.inc"
48#include "com04_c.inc"
49#include "scr18_c.inc"
50#include "com08_c.inc"
51#include "param_c.inc"
52C-----------------------------------------------------------------
53C D u m m y A r g u m e n t s
54C-----------------------------------------------
55 INTEGER ITAB(*),WEIGHT(*),ISTOP,
56 . I_DAMP_RDOF_TAB(*),ICONTACT(*),IXC(NIXC,*)
57C REAL
58 my_real dt2t, stifn(*), stifr(*),
59 . ms(*) ,in(*) ,dampr(nrdamp,*),x(3,*)
60C-----------------------------------------------
61 TYPE (GROUP_) , DIMENSION(NGRNOD) :: IGRNOD
62C-----------------------------------------------
63C L o c a l V a r i a b l e s
64C-----------------------------------------------
65 INTEGER N,I,J,ISK,IGR,ND,K,L,LL
66 my_real FACTB,DAMPBR,DAMPAR,D_TSTART,D_TSTOP,DAMPT,
67 . dt2n(numnod),bb,coeff,dt_cible,eta,beta,
68 . alpha,dampa0
69C----------------------------------------------------------
70
71C--------> TAG of elements
72 DO nd=1,ndamp
73 IF (dampr(20,nd)>0) THEN
74 DO i=1,numelc
75 DO j=1,4
76 k=ixc(j+1,i)
77 IF (icontact(k)==1) THEN
78 DO l=1,4
79 ll = ixc(l+1,i)
80 IF (ll/=k) THEN
81 i_damp_rdof_tab(ll) = dampr(19,nd)
82 ENDIF
83 END DO
84 ENDIF
85 ENDDO
86 ENDDO
87 ENDIF
88 ENDDO
89
90 DO nd=1,ndamp
91C-------->
92 IF (ncycle==0) THEN
93 alpha = dtmin1(11)/dtfac1(11)
94 IF (alpha>0) THEN
95 dampa0=max(dampr(9,nd),dampr(11,nd),dampr(13,nd))
96 dampr(9,nd)=min(dampr(9,nd),1/alpha)
97 dampr(11,nd)=min(dampr(11,nd),1/alpha)
98 dampr(13,nd)=min(dampr(13,nd),1/alpha)
99 dampar=max(dampr(9,nd),dampr(11,nd),dampr(13,nd))
100 IF (dampa0/=dampar) THEN
101 print *,"WARNING ALPHA reduced to",1/alpha
102 ENDIF
103 ENDIF
104 ENDIF
105C-------->
106 igr = nint(dampr(2,nd))
107 isk = nint(dampr(15,nd))
108 factb = one
109 d_tstart = dampr(17,nd)
110 d_tstop = dampr(18,nd)
111 IF (tt>=d_tstart .AND. tt<=d_tstop) THEN
112 dampar = max(dampr(9,nd),dampr(11,nd),dampr(13,nd))
113 dampbr = max(dampr(10,nd),dampr(12,nd),dampr(14,nd))
114C-------->
115 DO i=1,igrnod(igr)%NENTITY
116 n=igrnod(igr)%ENTITY(i)
117 IF(stifr(n)<=zero)THEN
118 istop=-itab(n)
119 ELSEIF(in(n)>zero)THEN
120 dt2n(n)=dtfac1(11)*sqrt(two*in(n)/stifr(n))
121 ENDIF
122 ENDDO
123C-------->
124 DO i=1,igrnod(igr)%NENTITY
125 n=igrnod(igr)%ENTITY(i)
126 dampt = min(dt1,dt2n(n))*factb
127 beta = min(dampbr,dampt)
128 alpha = dampar
129 bb = beta+half*half*alpha*dt2n(n)*dt2n(n)
130 eta = sqrt(bb*bb + dt2n(n)*dt2n(n)) - bb
131 IF (idtmin(11)==3) THEN
132 dt_cible = eta+0*max(eta,dtmin1(11))
133 ELSE
134 dt_cible = eta
135 ENDIF
136 coeff = (one+(2*beta/dt_cible))/((1-half*alpha*dt_cible))
137 IF (dampr(19,nd)/=0) THEN
138 IF ((i_damp_rdof_tab(n)+icontact(n))/=0) THEN
139 stifr(n) = stifr(n)*coeff
140 ENDIF
141 ENDIF
142 ENDDO
143C-------->
144 ENDIF
145
146 END DO
147
148C
149 RETURN
150 END
#define my_real
Definition cppsort.cpp:32
subroutine dtnodamp(itab, ms, in, stifn, stifr, dt2t, weight, igrnod, dampr, istop, i_damp_rdof_tab, icontact, ixc, x)
Definition dtnodamp.F:34
#define alpha
Definition eval.h:35
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21