OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
fr.F File Reference
#include "implicit_f.inc"
#include "vectorize.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine frv (s1, s2, s3, s4, s5, s6, sm, vk0, vk, rob, fc, rt, rc, rct1, rct2, aa, ac, bc, bt, rok, tol, fa, nindex, index, ibug, nel, seq, icrit_outp)

Function/Subroutine Documentation

◆ frv()

subroutine frv ( dimension(nel) s1,
dimension(nel) s2,
dimension(nel) s3,
dimension(nel) s4,
dimension(nel) s5,
dimension(nel) s6,
dimension(nel) sm,
dimension(nel) vk0,
intent(out) vk,
dimension(nel) rob,
fc,
rt,
rc,
rct1,
rct2,
aa,
ac,
bc,
bt,
dimension(nel) rok,
tol,
dimension(nel) fa,
integer nindex,
integer, dimension(nel) index,
integer ibug,
integer nel,
dimension(nel) seq,
integer icrit_outp )

Definition at line 28 of file fr.F.

33C-----------------------------------------------
34C I m p l i c i t T y p e s
35C-----------------------------------------------
36#include "implicit_f.inc"
37C-----------------------------------------------
38C D u m m y A r g u m e n t s
39C-----------------------------------------------
40 INTEGER NINDEX, INDEX(NEL),ICRIT_OUTP
41 my_real :: fc,rt,rc,rct1,rct2,aa,ac,bc,bt,tol
42 my_real, DIMENSION(NEL) :: s1,s2,s3,s4,s5,s6,sm,vk0,rob,rok,fa,seq
43 my_real, DIMENSION(NEL),INTENT(OUT):: vk
44C-----------------------------------------------
45C L o c a l V a r i a b l e s
46C-----------------------------------------------
47 INTEGER I, N, NEL, IBUG
48 my_real bb, df, rf, r2, aj3, cs3t
49C=======================================================================
50#include "vectorize.inc"
51 DO n = 1,nindex
52 i = index(n)
53 IF (i > 0) THEN
54 IF (sm(i) >= rt-tol ) THEN
55 vk(i) = one
56 ELSEIF( sm(i) > rc ) THEN
57 vk(i) = one+(one-vk0(i))*(rct1-two*rc*sm(i)+sm(i)**2)/rct2
58 ELSEIF(sm(i) > rok(i))THEN
59 vk(i) = vk0(i)
60 ELSE
61 vk(i) = vk0(i)*(one - ((sm(i)-rok(i))/(rob(i)-rok(i)))**2)
62 ENDIF
63C
64 IF (sm(i) > ac/aa) THEN
65 fa(i) = half*(sm(i)-ac/aa) / min(bc,bt)/fc
66 ELSEIF (sm(i) <= rob(i)) THEN
67 bb = max(bc,bt)
68 df = sqrt(bb*bb-aa*rob(i)+ac)
69 rf = (-bb+df)/aa
70 fa(i) = two*rf*(sm(i)-rob(i))/(rob(i)-rok(i))/fc
71 ELSE
72 r2 = (s1(i)**2+s2(i)**2+s3(i)**2)+ two*s4(i)**2+two*s5(i)**2
73 . + two*s6(i)**2
74 IF (ibug == 0) THEN
75 aj3 = s1(i)*s2(i)*s3(i)-s1(i)*s5(i)*s5(i)-s2(i)*s6(i)*s6(i)
76 . - s3(i)*s4(i)*s4(i) + two*s4(i)*s5(i)*s6(i)
77 ELSE ! old version
78 aj3 = s1(i)*s2(i)*s3(i)-s1(i)*s5(i)*s5(i)-s2(i)*s6(i)*s6(i)
79 . - s3(i)*s4(i)*s4(i)
80 ENDIF
81c
82 cs3t = half * aj3*(three/(half*max(r2,em20)))**three_half
83 cs3t = min(one,cs3t)
84 cs3t = max(-one,cs3t)
85 bb = half*((one -cs3t)*bc+(one +cs3t)*bt)
86 df = sqrt(max(zero,bb*bb-aa*sm(i)+ac,zero))
87 rf = (-bb+df)/aa
88 fa(i)=(sqrt(r2)-vk(i)*rf)/fc
89c
90!! IF (ICRIT_OUTP == 0) THEN ! (EQUIVALENT STRESS)/CTITERION FOR OUTPUT
91!! SEQ(I) = FA(I)
92!! ICRIT_OUTP = 1
93!! ENDIF ! IF (ICRIT_OUTP == 0)
94 ENDIF
95c
96 ENDIF
97 ENDDO
98c-----------
99 RETURN
#define my_real
Definition cppsort.cpp:32
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21