OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
fail_energy_b.F File Reference
#include "implicit_f.inc"
#include "comlock.inc"
#include "lockon.inc"
#include "lockoff.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine fail_energy_b (nel, ngl, nuparam, uparam, time, epsd, off, dfmax, tdel, iout, istdo, ifunc, area, f1, f2, f3, m1, m2, m3, snpc, npf, stf, tf, epsxx, epsxy, epsxz, kxx, kyy, kzz, nvar, uvar, dmgscl)

Function/Subroutine Documentation

◆ fail_energy_b()

subroutine fail_energy_b ( integer, intent(in) nel,
integer, dimension(nel), intent(in) ngl,
integer, intent(in) nuparam,
intent(in) uparam,
intent(in) time,
intent(in) epsd,
intent(inout) off,
intent(inout) dfmax,
intent(inout) tdel,
integer, intent(in) iout,
integer, intent(in) istdo,
integer, dimension(100), intent(in) ifunc,
intent(in) area,
intent(in) f1,
intent(in) f2,
intent(in) f3,
intent(in) m1,
intent(in) m2,
intent(in) m3,
integer, intent(in) snpc,
integer, dimension(snpc), intent(in) npf,
integer, intent(in) stf,
intent(in) tf,
intent(in) epsxx,
intent(in) epsxy,
intent(in) epsxz,
intent(in) kxx,
intent(in) kyy,
intent(in) kzz,
integer, intent(in) nvar,
intent(inout) uvar,
intent(inout) dmgscl )

Definition at line 30 of file fail_energy_b.F.

40C-----------------------------------------------
41c energy failure model for standard beams (TYPE 3)
42C-----------------------------------------------
43C I m p l i c i t T y p e s
44C-----------------------------------------------
45#include "implicit_f.inc"
46C-----------------------------------------------
47C G l o b a l P a r a m e t e r s
48C-----------------------------------------------
49#include "comlock.inc"
50C-----------------------------------------------
51C D u m m y A r g u m e n t s
52C-----------------------------------------------
53 INTEGER ,INTENT(IN) :: NEL ! size of element group
54 INTEGER ,INTENT(IN) :: NUPARAM ! size of parameter array
55 INTEGER ,INTENT(IN) :: IOUT ! output file unit
56 INTEGER ,INTENT(IN) :: ISTDO ! output file unit
57 INTEGER ,INTENT(IN) :: SNPC
58 INTEGER ,INTENT(IN) :: STF
59 INTEGER ,DIMENSION(NEL) ,INTENT(IN) :: NGL ! table of element identifiers
60 INTEGER ,DIMENSION(100) ,INTENT(IN) :: IFUNC ! table of functions identifiers
61 INTEGER ,DIMENSION(SNPC) ,INTENT(IN) :: NPF
62 INTEGER ,INTENT(IN) :: NVAR
63 my_real ,INTENT(IN) :: time ! current time
64 my_real ,INTENT(IN) :: area
65 my_real ,DIMENSION(NUPARAM) ,INTENT(IN) :: uparam ! failure model parameter array
66 my_real ,DIMENSION(NEL) ,INTENT(IN) :: epsd ! strain rate
67 my_real ,DIMENSION(STF) ,INTENT(IN) :: tf
68 my_real ,DIMENSION(NEL) ,INTENT(INOUT) :: off ! element deactivation flag
69 my_real ,DIMENSION(NEL) ,INTENT(INOUT) :: dfmax ! maximum damage
70 my_real ,DIMENSION(NEL) ,INTENT(INOUT) :: tdel ! deactivation time
71 my_real ,DIMENSION(NEL) ,INTENT(IN) :: f1,f2,f3
72 my_real ,DIMENSION(NEL) ,INTENT(IN) :: m1,m2,m3
73 my_real ,DIMENSION(NEL) ,INTENT(IN) :: epsxx,epsxy,epsxz
74 my_real ,DIMENSION(NEL) ,INTENT(IN) :: kxx,kyy,kzz
75 my_real ,DIMENSION(NEL,NVAR),INTENT(INOUT) :: uvar ! User variable
76 my_real, DIMENSION(NEL) ,INTENT(INOUT) :: dmgscl
77C-----------------------------------------------
78C L o c a l V a r i a b l e s
79C-----------------------------------------------
80 INTEGER :: I,J,NINDX
81 INTEGER ,DIMENSION(NEL) :: INDX
82 my_real :: rfac,r1,r2,ie_sp,dydx,rief1,rief2,xfac,finter,fact
83 EXTERNAL finter
84 my_real ,DIMENSION(NEL) :: damage
85C=======================================================================
86 nindx = 0
87 rief1 = uparam(1)
88 rief2 = uparam(2)
89 xfac = uparam(4)
90 DO i=1,nel
91 damage(i) = zero
92 uvar(i,1) = uvar(i,1) + (
93 . f1(i)*epsxx(i) + f2(i)*epsxy(i) + f3(i)*epsxz(i) +
94 . m1(i)*kxx(i) + m2(i)*kyy(i) + m3(i)*kzz(i))
95 ENDDO
96c-----------------------------
97 DO i=1,nel
98 IF (off(i) == one ) THEN
99 IF (ifunc(1) /= 0) THEN
100 rfac = finter(ifunc(1),epsd(i)*xfac,npf,tf,dydx)
101 rfac = max(rfac,em20)
102 ELSE
103 rfac = one
104 ENDIF
105 r1 = rief1*rfac
106 r2 = rief2*rfac
107 ie_sp = uvar(i,1)/area
108
109 IF (ie_sp > r1) THEN
110 damage(i) = (ie_sp-r1)/(r2-r1)
111 damage(i) = min(one,damage(i))
112 dfmax(i) = max(dfmax(i) ,damage(i))
113 ENDIF
114
115 IF (ie_sp > r2) THEN
116 nindx = nindx + 1
117 indx(nindx) = i
118 tdel(i) = time
119 dfmax(i) = one
120 off(i) = four_over_5
121 ENDIF
122 ENDIF
123 dmgscl(i) = one - dfmax(i)
124 ENDDO
125c------------------------
126 IF (nindx > 0) THEN
127 DO j=1,nindx
128 i = indx(j)
129#include "lockon.inc"
130 WRITE(iout, 1000) ngl(i),time
131 WRITE(istdo,1000) ngl(i),time
132#include "lockoff.inc"
133 END DO
134 END IF ! NINDX
135c------------------
136 1000 FORMAT(5x,'FAILURE (ENERGY) OF BEAM ELEMENT ',i10,1x,'AT TIME :',1pe12.4)
137c------------------
138 RETURN
#define my_real
Definition cppsort.cpp:32
subroutine area(d1, x, x2, y, y2, eint, stif0)
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21