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

Go to the source code of this file.

Functions/Subroutines

subroutine func_slope (idn, fac, npc, pld, stiffmin, stiffmax, stiffini, stiffavg)
subroutine unify_x (idn1, idn2, npc, pld, npoint, len1, len2, xuni, nptnew)

Function/Subroutine Documentation

◆ func_slope()

subroutine func_slope ( integer, intent(in) idn,
fac,
integer, dimension(*), intent(in) npc,
intent(in) pld,
stiffmin,
intent(out) stiffmax,
intent(out) stiffini,
intent(out) stiffavg )

Definition at line 35 of file func_slope.F.

36C-----------------------------------------------
37C M o d u l e s
38C-----------------------------------------------
39 USE message_mod
40 USE table_mod
41C-----------------------------------------------
42C I m p l i c i t T y p e s
43C-----------------------------------------------
44#include "implicit_f.inc"
45C-----------------------------------------------
46C D u m m y A r g u m e n t s
47C-----------------------------------------------
48 INTEGER IDN,NPC(*)
49 my_real pld(*),fac,stiffmin,stiffmax,stiffini,stiffavg
50C-----------------------------------------------
51 INTENT(IN) :: npc,pld,idn
52 INTENT(OUT) :: stiffmax,stiffini,stiffavg
53C-----------------------------------------------
54C L o c a l V a r i a b l e s
55C-----------------------------------------------
56 INTEGER J,PN1,PN2,COUNT
57 my_real dydx,dx,dy
58C=======================================================================
59 ! COMPUTE MAXIMUM SLOPE AND INITIAL SLOPE OF FUNCTION
60C=======================================================================
61 pn1 = npc(idn)
62 pn2 = npc(idn+1)
63 stiffini = zero
64 stiffavg = zero
65 stiffmax = zero
66 stiffmin = ep20
67 count = 0
68 DO j = pn1,pn2-4,2
69 count = count + 1
70 dx = pld(j+2) - pld(j)
71 dy = pld(j+3) - pld(j+1)
72 dydx = fac*dy/dx
73 stiffmax = max(stiffmax,dydx)
74 stiffmin = min(stiffmin,dydx)
75 stiffavg = stiffavg + dydx
76 IF(pld(j+2)== zero )THEN
77 dx = pld(j+2) - pld(j)
78 dy = pld(j+3) - pld(j+1)
79 stiffini = max(stiffini, fac*dy/dx)
80 ELSEIF(pld(j) == zero) THEN
81 dx = pld(j+2) - pld(j)
82 dy = pld(j+3) - pld(j+1)
83 stiffini = max(stiffini, fac*dy/dx)
84 ELSEIF(pld(pn1) >= zero) THEN
85 dx = pld(pn1+2) - pld(pn1 )
86 dy = pld(pn1+3) - pld(pn1 + 1)
87 stiffini = max(stiffini, fac*dy/dx)
88 ENDIF
89 ENDDO
90 stiffavg = stiffavg / count
91c-----------
92 RETURN
#define my_real
Definition cppsort.cpp:32
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21

◆ unify_x()

subroutine unify_x ( integer idn1,
integer idn2,
integer, dimension(*), intent(in) npc,
intent(in) pld,
integer npoint,
integer len1,
integer len2,
xuni,
integer nptnew )

Definition at line 101 of file func_slope.F.

102C-----------------------------------------------
103C M o d u l e s
104C-----------------------------------------------
105 USE message_mod
106 USE table_mod
107C-----------------------------------------------
108C I m p l i c i t T y p e s
109C-----------------------------------------------
110#include "implicit_f.inc"
111C-----------------------------------------------
112C D u m m y A r g u m e n t s
113C-----------------------------------------------
114 INTEGER IDN1,IDN2,NPOINT,LEN1,LEN2,
115 . NPTNEW,NPC(*)
116 my_real
117 . pld(*),xuni(npoint)
118C-----------------------------------------------
119 INTENT(IN) :: npc,pld
120C-----------------------------------------------
121C L o c a l V a r i a b l e s
122C-----------------------------------------------
123 INTEGER I,J,K
124 my_real
125 . ec , et
126c=======================================================================
127 !IDN1 = IFUNC(1) ! uni C
128 !IDN2 = IFUNC(2) ! uni T
129 i = 0
130 j = 0
131 ec = pld(npc(idn1) )
132 et = pld(npc(idn2) )
133 DO k = 1,npoint
134 IF(i == 2*len1 .AND. j == 2*len2 )THEN
135 EXIT
136 ELSE
137 IF ((ec < et.AND.i<2*len1) .OR. j >= 2*len2)THEN
138 xuni(k) = ec
139 i = i + 2
140 ec = pld(npc(idn1)+ i )
141 ELSEIF ((ec > et.AND.j<2*len2) .OR. i >= 2*len1)THEN
142 xuni(k) = et
143 j = j + 2
144 et = pld(npc(idn2)+ j )
145 ELSEIF (ec == et)THEN
146 xuni(k) = et
147 i = i + 2
148 j = j + 2
149 ec = pld(npc(idn1)+ i )
150 et = pld(npc(idn2)+ j )
151 ENDIF
152 ENDIF
153 ENDDO
154 nptnew = k
155c-----------
156 RETURN