OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
agrad2.F File Reference
#include "implicit_f.inc"
#include "mvsiz_p.inc"
#include "com01_c.inc"
#include "vect01_c.inc"
#include "tabsiz_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine agrad2 (ixq, x, ale_connect, grad)

Function/Subroutine Documentation

◆ agrad2()

subroutine agrad2 ( integer, dimension(7,sixq/nixq), intent(in) ixq,
dimension(3,sx/3), intent(in) x,
type(t_ale_connectivity), intent(in) ale_connect,
dimension(4,*), intent(inout) grad )

Definition at line 31 of file agrad2.F.

32C-----------------------------------------------
33C M o d u l e s
34C-----------------------------------------------
36 use element_mod , only : nixq
37C-----------------------------------------------
38C I m p l i c i t T y p e s
39C-----------------------------------------------
40#include "implicit_f.inc"
41C-----------------------------------------------
42C G l o b a l P a r a m e t e r s
43C-----------------------------------------------
44#include "mvsiz_p.inc"
45C-----------------------------------------------
46C C o m m o n B l o c k s
47C-----------------------------------------------
48#include "com01_c.inc"
49#include "vect01_c.inc"
50#include "tabsiz_c.inc"
51C-----------------------------------------------
52C D u m m y A r g u m e n t s
53C-----------------------------------------------
54! SPMD CASE : SIXQ >= NIXQ*NUMELQ (SIXQ = NIXQ*NUMELQ_L+NIXQ*NQVOIS_L)
55! IXQ(1:NIXQ, 1:NUMELQ) local elems
56! (1:NIXQ, NUMELQ+1:) additional elems (also on adjacent domains but connected to the boundary of the current domain)
57!
58! SPMD CASE : SX >= 3*NUMNOD (SX = 3*(NUMNOD_L+NRCVVOIS_L))
59! X(1:3,1:NUMNOD) : local nodes
60! (1:3, NUMNOD+1:) additional nodes (also on adjacent domains but connected to the boundary of the current domain)
61C-----------------------------------------------
62 INTEGER,INTENT(IN) :: IXQ(7,SIXQ/NIXQ)
63 my_real,INTENT(IN) :: x(3,sx/3)
64 my_real,INTENT(INOUT) :: grad(4,*)
65 TYPE(t_ale_connectivity), INTENT(IN) :: ALE_CONNECT
66C-----------------------------------------------
67C L o c a l V a r i a b l e s
68C-----------------------------------------------
69 INTEGER I, II, IE, IV1, IV2, IV3, IV4, IAD2
71 . y1(mvsiz) , y2(mvsiz) , y3(mvsiz) , y4(mvsiz) ,
72 . z1(mvsiz) , z2(mvsiz) , z3(mvsiz) , z4(mvsiz) ,
73 . yc(mvsiz) , zc(mvsiz) , n1y(mvsiz),
74 . n2y(mvsiz), n3y(mvsiz), n4y(mvsiz), n1z(mvsiz),
75 . n2z(mvsiz), n3z(mvsiz), n4z(mvsiz),
76 . dd1(mvsiz), dd2(mvsiz), dd3(mvsiz), dd4(mvsiz),
77 . d1y(mvsiz), d2y(mvsiz), d3y(mvsiz), d4y(mvsiz),
78 . d1z(mvsiz), d2z(mvsiz), d3z(mvsiz), d4z(mvsiz)
79C-----------------------------------------------
80C S o u r c e L i n e s
81C-----------------------------------------------
82 DO i=lft,llt
83 ii=i+nft
84 y1(i) = x(2,ixq(2,ii))
85 z1(i) = x(3,ixq(2,ii))
86 y2(i) = x(2,ixq(3,ii))
87 z2(i) = x(3,ixq(3,ii))
88 y3(i) = x(2,ixq(4,ii))
89 z3(i) = x(3,ixq(4,ii))
90 y4(i) = x(2,ixq(5,ii))
91 z4(i) = x(3,ixq(5,ii))
92 ENDDO
93C------------------------------------------
94C CALCULATION OF THE NORMAL AT EACH FACE
95C------------------------------------------
96 DO i=lft,llt
97 n1y(i) = (z2(i)-z1(i))
98 n1z(i) = -(y2(i)-y1(i))
99 n2y(i) = (z3(i)-z2(i))
100 n2z(i) = -(y3(i)-y2(i))
101 n3y(i) = (z4(i)-z3(i))
102 n3z(i) = -(y4(i)-y3(i))
103 n4y(i) = (z1(i)-z4(i))
104 n4z(i) = -(y1(i)-y4(i))
105 yc(i) = (y1(i)+y2(i)+y3(i)+y4(i))
106 zc(i) = (z1(i)+z2(i)+z3(i)+z4(i))
107 ENDDO
108
109 IF(n2d == 1)THEN
110 DO i=lft,llt
111 n1y(i) = n1y(i)*(y1(i)+y2(i))*half
112 n1z(i) = n1z(i)*(y1(i)+y2(i))*half
113 n2y(i) = n2y(i)*(y2(i)+y3(i))*half
114 n2z(i) = n2z(i)*(y2(i)+y3(i))*half
115 n3y(i) = n3y(i)*(y3(i)+y4(i))*half
116 n3z(i) = n3z(i)*(y3(i)+y4(i))*half
117 n4y(i) = n4y(i)*(y1(i)+y4(i))*half
118 n4z(i) = n4z(i)*(y1(i)+y4(i))*half
119 ENDDO
120 ENDIF
121C------------------------------------------
122C DISTANCE BETWEEN ELEMS ( * 4. )
123C------------------------------------------
124 DO i=lft,llt
125 ie =nft+i
126 iad2 = ale_connect%ee_connect%iad_connect(ie)
127 iv1 = ale_connect%ee_connect%connected(iad2 + 1 - 1)
128 iv2 = ale_connect%ee_connect%connected(iad2 + 2 - 1)
129 iv3 = ale_connect%ee_connect%connected(iad2 + 3 - 1)
130 iv4 = ale_connect%ee_connect%connected(iad2 + 4 - 1)
131 IF(iv1 <= 0) iv1=ie
132 IF(iv2 <= 0) iv2=ie
133 IF(iv3 <= 0) iv3=ie
134 IF(iv4 <= 0) iv4=ie
135 d1y(i) = - yc(i) + x(2,ixq(2,iv1)) + x(2,ixq(3,iv1)) + x(2,ixq(4,iv1)) + x(2,ixq(5,iv1))
136 d1z(i) = - zc(i) + x(3,ixq(2,iv1)) + x(3,ixq(3,iv1)) + x(3,ixq(4,iv1)) + x(3,ixq(5,iv1))
137 d2y(i) = - yc(i) + x(2,ixq(2,iv2)) + x(2,ixq(3,iv2)) + x(2,ixq(4,iv2)) + x(2,ixq(5,iv2))
138 d2z(i) = - zc(i) + x(3,ixq(2,iv2)) + x(3,ixq(3,iv2)) + x(3,ixq(4,iv2)) + x(3,ixq(5,iv2))
139 d3y(i) = - yc(i) + x(2,ixq(2,iv3)) + x(2,ixq(3,iv3)) + x(2,ixq(4,iv3)) + x(2,ixq(5,iv3))
140 d3z(i) = - zc(i) + x(3,ixq(2,iv3)) + x(3,ixq(3,iv3)) + x(3,ixq(4,iv3)) + x(3,ixq(5,iv3))
141 d4y(i) = - yc(i) + x(2,ixq(2,iv4)) + x(2,ixq(3,iv4)) + x(2,ixq(4,iv4)) + x(2,ixq(5,iv4))
142 d4z(i) = - zc(i) + x(3,ixq(2,iv4)) + x(3,ixq(3,iv4)) + x(3,ixq(4,iv4)) + x(3,ixq(5,iv4))
143 ENDDO
144
145 DO i=lft,llt
146 dd1(i) = d1y(i)**2+d1z(i)**2
147 dd2(i) = d2y(i)**2+d2z(i)**2
148 dd3(i) = d3y(i)**2+d3z(i)**2
149 dd4(i) = d4y(i)**2+d4z(i)**2
150 ENDDO
151C---------------------------------
152C GRADIENT * SURFACE
153C---------------------------------
154 DO i=lft,llt
155 grad(1,i) = four * (d1y(i)*n1y(i)+d1z(i)*n1z(i)) / max(em15,dd1(i))
156 grad(2,i) = four * (d2y(i)*n2y(i)+d2z(i)*n2z(i)) / max(em15,dd2(i))
157 grad(3,i) = four * (d3y(i)*n3y(i)+d3z(i)*n3z(i)) / max(em15,dd3(i))
158 grad(4,i) = four * (d4y(i)*n4y(i)+d4z(i)*n4z(i)) / max(em15,dd4(i))
159 ENDDO
160C-----------------------------------------------
161 RETURN
#define my_real
Definition cppsort.cpp:32
#define max(a, b)
Definition macros.h:21