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

Go to the source code of this file.

Functions/Subroutines

subroutine ige3daire (itel, n, xxi, yyi, zzi, wwi, idx, idy, idz, aire, nctrl, gaussx, gaussy, gaussz, kx, ky, kz, px, py, pz)

Function/Subroutine Documentation

◆ ige3daire()

subroutine ige3daire ( integer itel,
integer n,
dimension(*) xxi,
dimension(*) yyi,
dimension(*) zzi,
dimension(*) wwi,
integer idx,
integer idy,
integer idz,
dimension(*) aire,
integer nctrl,
gaussx,
gaussy,
gaussz,
dimension(*) kx,
dimension(*) ky,
dimension(*) kz,
integer px,
integer py,
integer pz )

Definition at line 32 of file ig3daire.F.

36C-----------------------------------------------
37C M o d u l e s
38C-----------------------------------------------
39 USE message_mod
40C--------------------------------------------------------------------------------------------------------
41C Implicite Types
42C--------------------------------------------------------------------------------------------------------
43#include "implicit_f.inc"
44C--------------------------------------------------------------------------------------------------------
45C Dummy Arguments
46C--------------------------------------------------------------------------------------------------------
47 INTEGER IDX, IDY, IDZ, NCTRL, PX, PY, PZ, ITEL, N
49 . gaussx, gaussy, gaussz
50 my_real,
51 . DIMENSION(*) :: aire
52 my_real,
53 . DIMENSION(*) :: xxi,yyi,zzi,wwi
54 my_real,
55 . DIMENSION(*) :: kx, ky, kz
56C--------------------------------------------------------------------------------------------------------
57C Local Variables
58C--------------------------------------------------------------------------------------------------------
59 INTEGER NUMLOC, I, J, K, NA, NB, NC
60 my_real,
61 . DIMENSION(NCTRL) :: r
62 my_real,
63 . DIMENSION(NCTRL,3) :: drdxi
65 . sumtot
66 my_real,
67 . DIMENSION(PX+1) :: fn, dndxi
68 my_real,
69 . DIMENSION(PY+1) :: fm, dmdxi
70 my_real,
71 . DIMENSION(PZ+1) :: fl, dldxi
72 my_real,
73 . DIMENSION(3) :: xi, sumxi
74 my_real,
75 . DIMENSION(3,3) :: dxdxi, ajmat, dxidtildexi
76C--------------------------------------------------------------------------------------------------------
77
78C INITIALISATION DES DIFFERENTES MATRICES LOCALES
79
80
81 dxdxi(:,:)=zero
82 dxidtildexi(:,:)=zero
83 ajmat(:,:)=zero
84
85
86 xi(1) = ((kx(idx+1)-kx(idx))*gaussx + (kx(idx+1)+(kx(idx))))/two
87 xi(2) = ((ky(idy+1)-ky(idy))*gaussy + (ky(idy+1)+(ky(idy))))/two
88 xi(3) = ((kz(idz+1)-kz(idz))*gaussz + (kz(idz+1)+(kz(idz))))/two
89
90C CALCULATE UNIVARIATE B-SPLINE FUNCTION AT XI POINT
91
92 CALL dersbasisfuns(idx, px, xi(1), kx, fn, dndxi)
93 CALL dersbasisfuns(idy, py, xi(2), ky, fm, dmdxi)
94 CALL dersbasisfuns(idz, pz, xi(3), kz, fl, dldxi)
95
96C BUILD NUMERATORS AND DENOMINATORS
97
98 numloc=0
99 sumtot=zero
100 sumxi(1)=zero
101 sumxi(2)=zero
102 sumxi(3)=zero
103
104C BOUCLE SUR TOUT LES POINTS DE CONTROLE
105
106 DO k = 0,pz
107 DO j = 0,py
108 DO i = 0,px
109 numloc = numloc+1
110 r(numloc)=fn(px+1-i)*fm(py+1-j)*fl(pz+1-k)*wwi(numloc)
111 sumtot=sumtot+r(numloc)
112 drdxi(numloc,1)=dndxi(px+1-i)*fm(py+1-j)*fl(pz+1-k)*
113 . wwi(numloc)
114 sumxi(1)=sumxi(1)+drdxi(numloc,1)
115 drdxi(numloc,2)=fn(px+1-i)*dmdxi(py+1-j)*fl(pz+1-k)*
116 . wwi(numloc)
117 sumxi(2)=sumxi(2)+drdxi(numloc,2)
118 drdxi(numloc,3)=fn(px+1-i)*fm(py+1-j)*dldxi(pz+1-k)*
119 . wwi(numloc)
120 sumxi(3)=sumxi(3)+drdxi(numloc,3)
121 ENDDO
122 ENDDO
123 ENDDO
124
125C DIVIDE BY DENOMINATOR TO COMPLETE DEFINITION OF FUNCTION AND DERIVATIVES
126
127 DO numloc=1,nctrl
128 r(numloc)=r(numloc)/sumtot
129 ENDDO
130
131 DO i=1,3
132 DO numloc=1,nctrl
133 drdxi(numloc,i)=(drdxi(numloc,i)-r(numloc)*sumxi(i))/sumtot
134 ENDDO
135 ENDDO
136
137C GRADIENT OF MAPPING FROM PARAMETER SPACE TO PHYSICAL SPACE
138
139 DO numloc=1,nctrl
140 DO nb=1,3
141 dxdxi(1,nb)=dxdxi(1,nb)+xxi(numloc)*drdxi(numloc,nb)
142 dxdxi(2,nb)=dxdxi(2,nb)+yyi(numloc)*drdxi(numloc,nb)
143 dxdxi(3,nb)=dxdxi(3,nb)+zzi(numloc)*drdxi(numloc,nb)
144 ENDDO
145 ENDDO
146
147C GRADIENT OF MAPPING FROM PARENT ELEMENT TO PARAMETER SPACE
148
149 dxidtildexi(1,1)=(kx(idx+1)-kx(idx))/two
150 dxidtildexi(2,2)=(ky(idy+1)-ky(idy))/two
151 dxidtildexi(3,3)=(kz(idz+1)-kz(idz))/two
152
153 DO na=1,3
154 DO nb=1,3
155 DO nc=1,3
156 ajmat(na,nb)=ajmat(na,nb)+dxdxi(na,nc)*dxidtildexi(nc,nb)
157 ENDDO
158 ENDDO
159 ENDDO
160
161 aire(1) = sqrt(ajmat(1,1)*ajmat(1,1)+ajmat(2,1)*ajmat(2,1)
162 . +ajmat(3,1)*ajmat(3,1))
163 . *sqrt(ajmat(1,2)*ajmat(1,2)+ajmat(2,2)*ajmat(2,2)
164 . +ajmat(3,2)*ajmat(3,2))
165 aire(2) = sqrt(ajmat(1,1)*ajmat(1,1)+ajmat(2,1)*ajmat(2,1)
166 . +ajmat(3,1)*ajmat(3,1))
167 . *sqrt(ajmat(1,3)*ajmat(1,3)+ajmat(2,3)*ajmat(2,3)
168 . +ajmat(3,3)*ajmat(3,3))
169 aire(3) = sqrt(ajmat(1,2)*ajmat(1,2)+ajmat(2,2)*ajmat(2,2)
170 . +ajmat(3,2)*ajmat(3,2))
171 . *sqrt(ajmat(1,3)*ajmat(1,3)+ajmat(2,3)*ajmat(2,3)
172 . +ajmat(3,3)*ajmat(3,3))
173
174 RETURN
#define my_real
Definition cppsort.cpp:32
subroutine dersbasisfuns(idxi, pxi, xi, kxi, ders1, ders2)