OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
i10lagm.F File Reference
#include "implicit_f.inc"
#include "mvsiz_p.inc"
#include "task_c.inc"
#include "com04_c.inc"
#include "com08_c.inc"
#include "comlock.inc"
#include "lockon.inc"
#include "lockoff.inc"
#include "constant.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine i10lagm (x, v, lll, jll, sll, xll, candn, cande, i_stok, ixs, ixs10, iadll, eminx, nsv, nelem, n_mul_mx, itask, a, itied, nint, nkmax, comntag)
subroutine i10lll (llt, lll, jll, sll, xll, v, xx, yy, zz, iii, iadll, n_mul_mx, a, x, itied, nint, nkmax, comntag)
subroutine i10rst (llt, r, s, t, ni, nx, ny, nz, xx, yy, zz)
subroutine i10ni (llt, rr, ss, tt, ni)
subroutine i10rstn (llt, rr, ss, tt, ni, conv, drdx, drdy, drdz, dsdx, dsdy, dsdz, dtdx, dtdy, dtdz, xx, yy, zz, r, s, t)
subroutine i10deri (llt, rr, ss, tt, ni, drdx, drdy, drdz, dsdx, dsdy, dsdz, dtdx, dtdy, dtdz, dxdr, dydr, dzdr, dxdt, dydt, dzdt, xx, yy, zz)

Function/Subroutine Documentation

◆ i10deri()

subroutine i10deri ( integer llt,
rr,
ss,
tt,
ni,
drdx,
drdy,
drdz,
dsdx,
dsdy,
dsdz,
dtdx,
dtdy,
dtdz,
dxdr,
dydr,
dzdr,
dxdt,
dydt,
dzdt,
xx,
yy,
zz )

Definition at line 786 of file i10lagm.F.

790C-----------------------------------------------
791C I m p l i c i t T y p e s
792C-----------------------------------------------
793#include "implicit_f.inc"
794C-----------------------------------------------
795C G l o b a l P a r a m e t e r s
796C-----------------------------------------------
797#include "mvsiz_p.inc"
798C-----------------------------------------------
799C D u m m y A r g u m e n t s
800C-----------------------------------------------
801 INTEGER LLT
802 my_real
803 . dxdr(mvsiz), dydr(mvsiz), dzdr(mvsiz),
804 . dxdt(mvsiz), dydt(mvsiz), dzdt(mvsiz),
805 . drdx(mvsiz), dsdx(mvsiz), dtdx(mvsiz),
806 . drdy(mvsiz), dsdy(mvsiz), dtdy(mvsiz),
807 . drdz(mvsiz), dsdz(mvsiz), dtdz(mvsiz),
808 . xx(mvsiz,7) ,yy(mvsiz,7),zz(mvsiz,7),
809 . ni(mvsiz,7) ,rr(mvsiz) ,ss(mvsiz) ,tt(mvsiz)
810C-----------------------------------------------
811C L o c a l V a r i a b l e s
812C-----------------------------------------------
813 INTEGER I,N
814 my_real
815 . dxds(mvsiz), dyds(mvsiz), dzds(mvsiz),
816 . dnidr(10),dnids(10),dnidt(10),
817 . d, aa, bb, det(mvsiz),r9 ,r13 ,s9 ,s10 ,s11 ,s12 ,t10 ,t14
818 my_real
819 . u_m_r,u_p_r,u_m_s,u_p_s,u_m_t,u_p_t,
820 . ums_umt,ums_upt,ups_umt,ups_upt,
821 . umr_ums,umr_ups,upr_ums,upr_ups,
822 . umt_umr,umt_upr,upt_umr,upt_upr,
823 . a,r05,s05,t05
824C-----------------------------------------------
825C/*
826C
827C
828C*/
829C-----------------------------------------------
830C
831C-----------------------------------------------
832C _
833C \
834C x(r,s,t) = /_ (xi * Ni(r,s,t))
835C _
836C \
837C y(r,s,t) = /_ (yi * Ni(r,s,t))
838C _
839C \
840C z(r,s,t) = /_ zi * Ni(r,s,t))
841C
842C _
843C \
844C dx/dr = /_ (xi * dNi/dr)
845C ...
846C
847C [dx/dr dy/dr dz/dr]
848C [J] = |dx/ds dy/ds dz/ds|
849C [dx/dt dy/dt dz/dt]
850C
851C |r| |r| -1 |xs-x|
852C {s} = {s} + [J] {ys-y}
853C |t| |t| |zs-z|
854C
855C-----------------------------------------------------------------------
856C Ni; dNi/dr; dNi/ds; dNi/dt
857C-----------------------------------------------------------------------
858 DO i=1,llt
859 r05 = half*rr(i)
860 s05 = half*ss(i)
861 t05 = half*tt(i)
862C
863 u_m_r = half - r05
864 u_p_r = half + r05
865C
866 u_m_s = half - s05
867 u_p_s = half + s05
868C
869 u_m_t = half - t05
870 u_p_t = half + t05
871C
872 ums_umt = u_m_s * u_m_t
873 ums_upt = u_m_s * u_p_t
874 ups_umt = u_p_s * u_m_t
875 ups_upt = u_p_s * u_p_t
876C
877 umr_ums = u_m_r * u_m_s
878 umr_ups = u_m_r * u_p_s
879 upr_ums = u_p_r * u_m_s
880 upr_ups = u_p_r * u_p_s
881C
882 umt_umr = u_m_t * u_m_r
883 umt_upr = u_m_t * u_p_r
884 upt_umr = u_p_t * u_m_r
885 upt_upr = u_p_t * u_p_r
886C
887 a = -rr(i)-tt(i)-one
888 ni(i,1) = u_m_r * ums_umt * a
889 ni(i,2) = u_m_r * ums_upt * a
890 ni(i,3) = u_p_r * ums_upt * a
891 ni(i,4) = u_p_r * ums_umt * a
892 ni(i,5) = u_m_r * ups_umt * a
893 ni(i,6) = u_m_r * ups_upt * a
894C
895 a = -t05 - rr(i)
896 dnidr(1) = -ums_umt * a
897 dnidr(5) = -ups_umt * a
898 dnidr(2) = -ums_upt * a
899 dnidr(6) = -ups_upt * a
900 dnidr(3) = ums_upt * a
901 dnidr(4) = ums_umt * a
902C
903 dnids(1) = -umt_umr * a
904 dnids(5) = umt_umr * a
905 dnids(2) = -upt_umr * a
906 dnids(6) = upt_umr * a
907 dnids(3) = -upt_upr * a
908 dnids(4) = -umt_upr * a
909C
910 dnidt(1) = -umr_ums * a
911 dnidt(5) = -umr_ups * a
912 dnidt(2) = umr_ums * a
913 dnidt(6) = umr_ups * a
914 dnidt(3) = upr_ums * a
915 dnidt(4) = -upr_ums * a
916C------------------------------------
917 ni(i,7) = -1.
918C-----------------------------------------------------------------------
919C dx/dr; dx/ds; dx/dt
920C-----------------------------------------------------------------------
921 dxdr(i) = dnidr(1)*xx(i,1) + dnidr(2)*xx(i,2) + dnidr(3)*xx(i,3)
922 + + dnidr(4)*xx(i,4) + dnidr(5)*xx(i,5) + dnidr(6)*xx(i,6)
923C
924 dxds(i) = dnids(1)*xx(i,1) + dnids(2)*xx(i,2) + dnids(3)*xx(i,3)
925 + + dnids(4)*xx(i,4) + dnids(5)*xx(i,5) + dnids(6)*xx(i,6)
926C
927 dxdt(i) = dnidt(1)*xx(i,1) + dnidt(2)*xx(i,2) + dnidt(3)*xx(i,3)
928 + + dnidt(4)*xx(i,4) + dnidt(5)*xx(i,5) + dnidt(6)*xx(i,6)
929C-----------------------------------------------------------------------
930C dy/dr; dy/ds; dy/dt
931C-----------------------------------------------------------------------
932 dydr(i) = dnidr(1)*yy(i,1) + dnidr(2)*yy(i,2) + dnidr(3)*yy(i,3)
933 + + dnidr(4)*yy(i,4) + dnidr(5)*yy(i,5) + dnidr(6)*yy(i,6)
934C
935 dyds(i) = dnids(1)*yy(i,1) + dnids(2)*yy(i,2) + dnids(3)*yy(i,3)
936 + + dnids(4)*yy(i,4) + dnids(5)*yy(i,5) + dnids(6)*yy(i,6)
937C
938 dydt(i) = dnidt(1)*yy(i,1) + dnidt(2)*yy(i,2) + dnidt(3)*yy(i,3)
939 + + dnidt(4)*yy(i,4) + dnidt(5)*yy(i,5) + dnidt(6)*yy(i,6)
940C-----------------------------------------------------------------------
941C dz/dr; dz/ds; dz/dt
942C-----------------------------------------------------------------------
943 dzdr(i) = dnidr(1)*zz(i,1) + dnidr(2)*zz(i,2) + dnidr(3)*zz(i,3)
944 + + dnidr(4)*zz(i,4) + dnidr(5)*zz(i,5) + dnidr(6)*zz(i,6)
945C
946 dzds(i) = dnids(1)*zz(i,1) + dnids(2)*zz(i,2) + dnids(3)*zz(i,3)
947 + + dnids(4)*zz(i,4) + dnids(5)*zz(i,5) + dnids(6)*zz(i,6)
948C
949 dzdt(i) = dnidt(1)*zz(i,1) + dnidt(2)*zz(i,2) + dnidt(3)*zz(i,3)
950 + + dnidt(4)*zz(i,4) + dnidt(5)*zz(i,5) + dnidt(6)*zz(i,6)
951C-----------------------------------------------------------------------
952C -1
953C [J] Inversion du jacobien
954C-----------------------------------------------------------------------
955 drdx(i)=dyds(i)*dzdt(i)-dzds(i)*dydt(i)
956 drdy(i)=dzds(i)*dxdt(i)-dxds(i)*dzdt(i)
957 drdz(i)=dxds(i)*dydt(i)-dyds(i)*dxdt(i)
958C
959 dsdz(i)=dxdt(i)*dydr(i)-dydt(i)*dxdr(i)
960 dsdy(i)=dzdt(i)*dxdr(i)-dxdt(i)*dzdr(i)
961 dsdx(i)=dydt(i)*dzdr(i)-dzdt(i)*dydr(i)
962C
963 dtdx(i)=dydr(i)*dzds(i)-dzdr(i)*dyds(i)
964 dtdy(i)=dzdr(i)*dxds(i)-dxdr(i)*dzds(i)
965 dtdz(i)=dxdr(i)*dyds(i)-dydr(i)*dxds(i)
966C
967 det(i) = dxdr(i) * drdx(i)
968 . + dydr(i) * drdy(i)
969 . + dzdr(i) * drdz(i)
970C
971c
972c
973 ENDDO
974C
975 DO i=1,llt
976C-----------------------------------------------------------------------
977C -1
978C [J] Inversion du jacobien suite
979C-----------------------------------------------------------------------
980 d = one/det(i)
981 drdx(i)=d*drdx(i)
982 dsdx(i)=d*dsdx(i)
983 dtdx(i)=d*dtdx(i)
984C
985 drdy(i)=d*drdy(i)
986 dsdy(i)=d*dsdy(i)
987 dtdy(i)=d*dtdy(i)
988C
989 drdz(i)=d*drdz(i)
990 dsdz(i)=d*dsdz(i)
991 dtdz(i)=d*dtdz(i)
992C
993c
994c print *, "DRDX(I),DRDY(I),DRDZ(I)",DRDX(I),DRDY(I),DRDZ(I)
995c print *, "DSDX(I),DSDY(I),DSDZ(I)",DSDX(I),DSDY(I),DSDZ(I)
996c print *, "DTDX(I),DTDY(I),DTDZ(I)",DTDX(I),DTDY(I),DTDZ(I)
997c
998 ENDDO
999C-----------------------------------------------------------------------
1000 RETURN
#define my_real
Definition cppsort.cpp:32

◆ i10lagm()

subroutine i10lagm ( x,
v,
integer, dimension(*) lll,
integer, dimension(*) jll,
integer, dimension(*) sll,
xll,
integer, dimension(*) candn,
integer, dimension(*) cande,
integer i_stok,
integer, dimension(nixs,*) ixs,
integer, dimension(6,*) ixs10,
integer, dimension(*) iadll,
eminx,
integer, dimension(*) nsv,
integer, dimension(*) nelem,
integer n_mul_mx,
integer itask,
a,
integer itied,
integer nint,
integer nkmax,
integer, dimension(*) comntag )

Definition at line 30 of file i10lagm.F.

35C-----------------------------------------------
36C I m p l i c i t T y p e s
37C-----------------------------------------------
38#include "implicit_f.inc"
39C-----------------------------------------------
40C G l o b a l P a r a m e t e r s
41C-----------------------------------------------
42#include "mvsiz_p.inc"
43C-----------------------------------------------
44C C o m m o n B l o c k s
45C-----------------------------------------------
46#include "task_c.inc"
47#include "com04_c.inc"
48#include "com08_c.inc"
49C-----------------------------------------------
50C D u m m y A r g u m e n t s
51C-----------------------------------------------
52 INTEGER I_STOK,N_MUL_MX,ITASK,ITIED,NINT,NKMAX ,
53 . LLL(*),JLL(*),SLL(*),CANDN(*),CANDE(*),COMNTAG(*),
54 . IXS(NIXS,*),IXS10(6,*),IADLL(*),NSV(*) ,NELEM(*)
55C REAL
57 . x(3,*),v(3,*),xll(*),
58 . eminx(6,*),a(3,*)
59C-----------------------------------------------
60C L o c a l V a r i a b l e s
61C-----------------------------------------------
62 INTEGER I,J,K,IK,IE,IS,IC,NK,III(MVSIZ,7),LLT,NFT,LE,FIRST,LAST,
63 . I10
65 . xx(mvsiz,7),yy(mvsiz,7),zz(mvsiz,7),
66 . aa,xmin,ymin,zmin,xmax,ymax,zmax,dist
67C-----------------------------------------------
68C
69C
70C | M | Lt| | a | M ao
71C |---+---| | = |
72C | L | 0 | | la | bo
73C
74C [M] a + [L]t la = [M] ao
75C [L] a = bo
76C
77C a = -[M]-1[L]t la + ao
78C [L][M]-1[L]t la = [L] ao - bo
79C
80C on pose:
81C [H] = [L][M]-1[L]t
82C b = [L] ao - bo
83C
84C [H] la = b
85C
86C a = ao - [M]-1[L]t la
87C-----------------------------------------------
88C
89C la : LAMBDA(NC)
90C ao : A(NUMNOD)
91C L : XLL(NK,NC)
92C M : MAS(NUMNOD)
93C [L][M]-1[L]t la : HLA(NC)
94C [L] ao - b : B(NC)
95C [M]-1[L]t la : LTLA(NUMNOD)
96C
97C NC : nombre de contact
98C NK : nombre de noeud pour un contact (8+1,16+1,8+8,16+16)
99C
100C IC : numero du contact (1,NC)
101C IK : numero de noeud local a un contact (1,NK)
102C I : numero global du noeud (1,NUMNOD)
103C
104C IADLL(NC) : IAD = IADLL(IC)
105C LLL(NC*(7,21)) : I = LLL(IAD+1,2...IADNEXT-1)
106C-----------------------------------------------
107C evaluation de b:
108C
109C Vs = Somme(Ni Vi)
110C Vs_ + dt As = Somme(Ni Vi_) + Somme(dt Ni Ai)
111C Somme(dt Ni Ai) - dt As = Vs_ -Somme(Ni Vi_)
112C [L] = dt {N1,N2,..,N15,-1}
113C bo = [L] a = -[L]/dt v_
114C b = [L] ao - bo
115C b = [L] ao + [L]/dt v_ = [L] (v_ + ao dt)/dt
116C-----------------------------------------------
117C b = [L] vo+/dt + vout
118C-----------------------------------------------
119C-----------------------------------------------------------------------
120C boucle sur les candidats au contact
121C-----------------------------------------------------------------------
122 first = 1 + i_stok * itask / nthread
123 last = i_stok*(itask+1) / nthread
124 llt = 0
125 nft=llt+1
126 DO ic=first,last
127 le = cande(ic)
128 ie = nelem(le)
129 i10 = ie - numels8
130C-----------------------------------------------------------------------
131C test si shell 16
132C-----------------------------------------------------------------------
133 IF(i10.ge .1.AND.i10.le .numels10)THEN
134 is = nsv(candn(ic))
135 dist = -1.e30
136 dist = max(eminx(1,le)-x(1,is)-dt2*(v(1,is)+dt12*a(1,is)),
137 . x(1,is)+dt2*(v(1,is)+dt12*a(1,is))-eminx(4,le),dist)
138 dist = max(eminx(2,le)-x(2,is)-dt2*(v(2,is)+dt12*a(2,is)),
139 . x(2,is)+dt2*(v(2,is)+dt12*a(2,is))-eminx(5,le),dist)
140 dist = max(eminx(3,le)-x(3,is)-dt2*(v(3,is)+dt12*a(3,is)),
141 . x(3,is)+dt2*(v(3,is)+dt12*a(3,is))-eminx(6,le),dist)
142c IF (DIST<0.) CANDN(I) = -CANDN(I)
143C-----------------------------------------------------------------------
144C test si dans la boite
145C-----------------------------------------------------------------------
146 IF(dist.le .zero)THEN
147c
148c print *, "dans la boite",XMIN,XMAX,YMIN,YMAX,ZMIN,ZMAX
149c
150 llt = llt+1
151 iii(llt,7)=is
152 xx(llt,7)=x(1,is)
153 yy(llt,7)=x(2,is)
154 zz(llt,7)=x(3,is)
155 iii(llt,1)=ixs(2,ie)
156 iii(llt,2)=ixs(4,ie)
157 iii(llt,3)=ixs(6,ie)
158 iii(llt,4)=ixs(7,ie)
159 DO k=1,6
160 iii(llt,k+8)=ixs10(k,i10)
161 ENDDO
162 DO k=1,7
163 i = iii(llt,k)
164 xx(llt,k)=x(1,i)
165 yy(llt,k)=x(2,i)
166 zz(llt,k)=x(3,i)
167 ENDDO
168c
169C-----------------------------------------------------------------------
170C calcul de [L] par paquet de mvsiz
171C-----------------------------------------------------------------------
172 IF(llt==mvsiz-1)THEN
173 CALL i10lll(
174 1 llt ,lll ,jll ,sll ,xll ,v ,
175 2 xx ,yy ,zz ,iii ,iadll ,
176 3 n_mul_mx ,a ,x ,itied ,nint ,nkmax ,
177 4 comntag )
178 nft=llt+1
179 llt = 0
180 ENDIF
181 ELSE
182c debug
183 k=0
184 ENDIF
185 ENDIF
186 ENDDO
187C-----------------------------------------------------------------------
188C calcul de [L] pour dernier paquet
189C-----------------------------------------------------------------------
190 IF(llt/=0) CALL i10lll(
191 1 llt ,lll ,jll ,sll ,xll ,v ,
192 2 xx ,yy ,zz ,iii ,iadll ,
193 3 n_mul_mx ,a ,x ,itied ,nint ,nkmax ,
194 4 comntag )
195C
196C-----------------------------------------------
197 RETURN
subroutine i10lll(llt, lll, jll, sll, xll, v, xx, yy, zz, iii, iadll, n_mul_mx, a, x, itied, nint, nkmax, comntag)
Definition i10lagm.F:214
subroutine ymax(idn, fac, npc, pld, stiffmin, stiffmax, stiffini, stiffavg)
Definition law100_upd.F:272
#define max(a, b)
Definition macros.h:21

◆ i10lll()

subroutine i10lll ( integer llt,
integer, dimension(*) lll,
integer, dimension(*) jll,
integer, dimension(*) sll,
xll,
v,
xx,
yy,
zz,
integer, dimension(mvsiz,7) iii,
integer, dimension(*) iadll,
integer n_mul_mx,
a,
x,
integer itied,
integer nint,
integer nkmax,
integer, dimension(*) comntag )

Definition at line 210 of file i10lagm.F.

214C-----------------------------------------------
215C M o d u l e s
216C-----------------------------------------------
217 USE message_mod
218C-----------------------------------------------
219C I m p l i c i t T y p e s
220C-----------------------------------------------
221#include "implicit_f.inc"
222#include "comlock.inc"
223C-----------------------------------------------
224C G l o b a l P a r a m e t e r s
225C-----------------------------------------------
226#include "mvsiz_p.inc"
227C-----------------------------------------------
228C C o m m o n B l o c k s
229C-----------------------------------------------
230#include "com08_c.inc"
231 COMMON /lagglob/n_mult
232 INTEGER N_MULT
233C-----------------------------------------------
234C D u m m y A r g u m e n t s
235C-----------------------------------------------
236 INTEGER LLT,N_MUL_MX,ITIED,NINT ,NKMAX
237 INTEGER LLL(*),JLL(*),SLL(*),COMNTAG(*),
238 . III(MVSIZ,7),IADLL(*)
239C REAL
240 my_real
241 . xll(*),v(3,*),a(3,*)
242 my_real
243 . xx(mvsiz,7),yy(mvsiz,7),zz(mvsiz,7),x(3,*)
244C-----------------------------------------------
245C L o c a l V a r i a b l e s
246C-----------------------------------------------
247 INTEGER I,J,IK,NK,I1,I2,I3,I4,IAD,NN
248 my_real
249 . vx,vy,vz,vn,aa
250 my_real
251 . r(mvsiz),s(mvsiz),t(mvsiz),
252 . nx(mvsiz), ny(mvsiz), nz(mvsiz),
253 . ni(mvsiz,7)
254C-----------------------------------------------
255C calcul de r,s,t
256C-----------------------------------------------
257c
258c print *, "XX(1,1),XX(1,9)",XX(1,1),XX(1,9)
259c
260 CALL i10rst(llt ,r ,s ,t ,ni ,
261 2 nx ,ny ,nz ,xx ,yy ,zz )
262C-----------------------------------------------
263C calcul de [L]
264C-----------------------------------------------
265 IF(itied==0)THEN
266 DO i=1,llt
267C-----------------------------------------------
268C test si contact
269C-----------------------------------------------
270 IF(r(i)>=-one.AND.s(i)>=-one.AND.t(i)>=-one.AND.
271 . r(i)<= one.AND.s(i)<= one.AND.t(i)<= one)THEN
272C
273 nk = 7
274 vx = zero
275 vy = zero
276 vz = zero
277 DO ik=1,nk
278 vx = vx - (v(1,iii(i,ik))+dt12*a(1,iii(i,ik)))*ni(i,ik)
279 vy = vy - (v(2,iii(i,ik))+dt12*a(2,iii(i,ik)))*ni(i,ik)
280 vz = vz - (v(3,iii(i,ik))+dt12*a(3,iii(i,ik)))*ni(i,ik)
281 ENDDO
282c
283c
284 vn = nx(i)*vx + ny(i)*vy + nz(i)*vz
285C-----------------------------------------------
286C test si vitesse entrante en s
287C-----------------------------------------------
288 IF(s(i)*vn<=zero)THEN
289c
290c print *, "vitesse entrante",vn
291c print *, "s = ",S(I)
292c
293 aa = one/sqrt(nx(i)*nx(i)+ny(i)*ny(i)+nz(i)*nz(i))
294 nx(i) = nx(i)*aa
295 ny(i) = ny(i)*aa
296 nz(i) = nz(i)*aa
297#include "lockon.inc"
298 n_mult=n_mult+1
299 IF(n_mult>n_mul_mx)THEN
300#include "lockoff.inc"
301 CALL ancmsg(msgid=84,anmode=aninfo)
302 CALL arret(2)
303 ENDIF
304 iadll(n_mult+1)=iadll(n_mult) + 21
305 IF(iadll(n_mult+1)-1>nkmax)THEN
306#include "lockoff.inc"
307 CALL ancmsg(msgid=84,anmode=aninfo)
308 CALL arret(2)
309 ENDIF
310 iad = iadll(n_mult) - 1
311 DO ik=1,7
312 lll(iad+ik) = iii(i,ik)
313 jll(iad+ik) = 1
314 sll(iad+ik) = 0
315 xll(iad+ik) = nx(i)*ni(i,ik)
316 lll(iad+ik+7) = iii(i,ik)
317 jll(iad+ik+7) = 2
318 sll(iad+ik+7) = 0
319 xll(iad+ik+7) = ny(i)*ni(i,ik)
320 lll(iad+ik+14) = iii(i,ik)
321 jll(iad+ik+14) = 3
322 sll(iad+ik+14) = 0
323 xll(iad+ik+14) = nz(i)*ni(i,ik)
324 nn = lll(iad+ik)
325 comntag(nn) = comntag(nn) + 1
326 ENDDO
327 sll(iad+7) = nint
328 sll(iad+14) = nint
329 sll(iad+21) = nint
330#include "lockoff.inc"
331 ENDIF
332 ENDIF
333 ENDDO
334 ELSEIF(itied==1)THEN
335C-----------------------------------------------
336C ITIED = 1
337C-----------------------------------------------
338 DO i=1,llt
339C-----------------------------------------------
340C test si contact
341C-----------------------------------------------
342 IF(r(i)>=-one.AND.s(i)>=-one.AND.t(i)>=-one.AND.
343 . r(i)<= one.AND.s(i)<= one.AND.t(i)<= one)THEN
344C
345 nk = 7
346 vx = zero
347 vy = zero
348 vz = zero
349 DO ik=1,nk
350 vx = vx - (v(1,iii(i,ik))+dt12*a(1,iii(i,ik)))*ni(i,ik)
351 vy = vy - (v(2,iii(i,ik))+dt12*a(2,iii(i,ik)))*ni(i,ik)
352 vz = vz - (v(3,iii(i,ik))+dt12*a(3,iii(i,ik)))*ni(i,ik)
353 ENDDO
354c
355c print *, "vx,vy,vz s-m",vx,vy,vz
356c print *, "nx,ny,nz ", NX(I),NY(I),NZ(I)
357c
358 vn = nx(i)*vx + ny(i)*vy + nz(i)*vz
359C-----------------------------------------------
360C test si vitesse entrante en s
361C-----------------------------------------------
362 IF(s(i)*vn<=zero)THEN
363c
364c print *, "vitesse entrante",vn
365c print *, "s = ",S(I)
366c
367#include "lockon.inc"
368 IF(n_mult+3>n_mul_mx)THEN
369#include "lockoff.inc"
370 CALL ancmsg(msgid=84,anmode=aninfo)
371 CALL arret(2)
372 ENDIF
373 IF(iadll(n_mult+1)-1+7*3>nkmax)THEN
374#include "lockoff.inc"
375 CALL ancmsg(msgid=84,anmode=aninfo)
376 CALL arret(2)
377 ENDIF
378C
379 n_mult=n_mult+1
380 iadll(n_mult+1)=iadll(n_mult) + 7
381 iad = iadll(n_mult) - 1
382 DO ik=1,7
383 lll(iad+ik) = iii(i,ik)
384 jll(iad+ik) = 1
385 sll(iad+ik) = 0
386 xll(iad+ik) = ni(i,ik)
387 nn = lll(iad+ik)
388 comntag(nn) = comntag(nn) + 1
389 ENDDO
390 sll(iad+7) = nint
391C
392 n_mult=n_mult+1
393 iadll(n_mult+1)=iadll(n_mult) + 7
394 iad = iadll(n_mult) - 1
395 DO ik=1,7
396 lll(iad+ik) = iii(i,ik)
397 jll(iad+ik) = 2
398 sll(iad+ik) = 0
399 xll(iad+ik) = ni(i,ik)
400 nn = lll(iad+ik)
401 comntag(nn) = comntag(nn) + 1
402 ENDDO
403 sll(iad+7) = nint
404C
405 n_mult=n_mult+1
406 iadll(n_mult+1)=iadll(n_mult) + 7
407 iad = iadll(n_mult) - 1
408 DO ik=1,7
409 lll(iad+ik) = iii(i,ik)
410 jll(iad+ik) = 3
411 sll(iad+ik) = 0
412 xll(iad+ik) = ni(i,ik)
413 nn = lll(iad+ik)
414 comntag(nn) = comntag(nn) + 1
415 ENDDO
416 sll(iad+7) = nint
417#include "lockoff.inc"
418 ENDIF
419 ENDIF
420 ENDDO
421 ELSE
422C-----------------------------------------------
423C ITIED = 2
424C-----------------------------------------------
425 DO i=1,llt
426C-----------------------------------------------
427C test si contact
428C-----------------------------------------------
429 IF(r(i)>=-one.AND.s(i)>=-one.AND.t(i)>=-one.AND.
430 . r(i)<= one.AND.s(i)<= one.AND.t(i)<= one)THEN
431C
432 nk = 7
433C-----------------------------------------------
434c print *, "s = ",S(I)
435c
436#include "lockon.inc"
437 IF(n_mult+3>n_mul_mx)THEN
438#include "lockoff.inc"
439 CALL ancmsg(msgid=84,anmode=aninfo)
440 CALL arret(2)
441 ENDIF
442 IF(iadll(n_mult+1)-1+7*3>nkmax)THEN
443#include "lockoff.inc"
444 CALL ancmsg(msgid=84,anmode=aninfo)
445 CALL arret(2)
446 ENDIF
447 n_mult=n_mult+1
448 iadll(n_mult+1)=iadll(n_mult) + 7
449 iad = iadll(n_mult) - 1
450 DO ik=1,7
451 lll(iad+ik) = iii(i,ik)
452 jll(iad+ik) = 1
453 sll(iad+ik) = 0
454 xll(iad+ik) = ni(i,ik)
455 nn = lll(iad+ik)
456 comntag(nn) = comntag(nn) + 1
457 ENDDO
458 sll(iad+7) = nint
459C
460 n_mult=n_mult+1
461 iadll(n_mult+1)=iadll(n_mult) + 7
462 iad = iadll(n_mult) - 1
463 DO ik=1,7
464 lll(iad+ik) = iii(i,ik)
465 jll(iad+ik) = 2
466 sll(iad+ik) = 0
467 xll(iad+ik) = ni(i,ik)
468 nn = lll(iad+ik)
469 comntag(nn) = comntag(nn) + 1
470 ENDDO
471 sll(iad+7) = nint
472C
473 n_mult=n_mult+1
474 iadll(n_mult+1)=iadll(n_mult) + 7
475 iad = iadll(n_mult) - 1
476 DO ik=1,7
477 lll(iad+ik) = iii(i,ik)
478 jll(iad+ik) = 3
479 sll(iad+ik) = 0
480 xll(iad+ik) = ni(i,ik)
481 nn = lll(iad+ik)
482 comntag(nn) = comntag(nn) + 1
483 ENDDO
484 sll(iad+7) = nint
485C
486#include "lockoff.inc"
487 ENDIF
488 ENDDO
489 ENDIF
490c
491c print *, "r,s,t",r(1),s(1),t(1)
492C
493 RETURN
subroutine i10rst(llt, r, s, t, ni, nx, ny, nz, xx, yy, zz)
Definition i10lagm.F:507
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)
Definition message.F:889
subroutine arret(nn)
Definition arret.F:87

◆ i10ni()

subroutine i10ni ( integer llt,
rr,
ss,
tt,
ni )

Definition at line 630 of file i10lagm.F.

631C-----------------------------------------------
632C I m p l i c i t T y p e s
633C-----------------------------------------------
634#include "implicit_f.inc"
635C-----------------------------------------------
636C G l o b a l P a r a m e t e r s
637C-----------------------------------------------
638#include "mvsiz_p.inc"
639C-----------------------------------------------
640C D u m m y A r g u m e n t s
641C-----------------------------------------------
642 INTEGER LLT
643 my_real
644 . rr(mvsiz),ss(mvsiz),tt(mvsiz),ni(mvsiz,7)
645C-----------------------------------------------
646C L o c a l V a r i a b l e s
647C-----------------------------------------------
648 INTEGER I
649 my_real
650 . u_m_r,u_p_r,u_m_s,u_p_s,u_m_t,u_p_t,
651 . ums_umt,ums_upt,ups_umt,ups_upt,
652 . umr_ums,umr_ups,upr_ums,upr_ups,
653 . umt_umr,umt_upr,upt_umr,upt_upr,
654 . a,r05,s05,t05
655C-----------------------------------------------------------------------
656C calcul de Ni
657C-----------------------------------------------------------------------
658 DO i=1,llt
659C
660 r05 = half*rr(i)
661 s05 = half*ss(i)
662 t05 = half*tt(i)
663C
664 u_m_r = half - r05
665 u_p_r = half + r05
666C
667 u_m_s = half - s05
668 u_p_s = half + s05
669C
670 u_m_t = half - t05
671 u_p_t = half + t05
672C
673 ums_umt = u_m_s * u_m_t
674 ums_upt = u_m_s * u_p_t
675 ups_umt = u_p_s * u_m_t
676 ups_upt = u_p_s * u_p_t
677C
678 umr_ums = u_m_r * u_m_s
679 umr_ups = u_m_r * u_p_s
680 upr_ums = u_p_r * u_m_s
681 upr_ups = u_p_r * u_p_s
682C
683 umt_umr = u_m_t * u_m_r
684 umt_upr = u_m_t * u_p_r
685 upt_umr = u_p_t * u_m_r
686 upt_upr = u_p_t * u_p_r
687C
688 a = -rr(i)-tt(i)-one
689 ni(i,1) = u_m_r * ums_umt * a
690 ni(i,2) = u_m_r * ums_upt * a
691 ni(i,3) = u_p_r * ums_upt * a
692 ni(i,4) = u_p_r * ums_umt * a
693 ni(i,5) = u_m_r * ups_umt * a
694 ni(i,6) = u_m_r * ups_upt * a
695C------------------------------------
696 ni(i,7) = -1.
697C------------------------------------
698 ENDDO
699C-----------------------------------------------
700 RETURN

◆ i10rst()

subroutine i10rst ( integer llt,
r,
s,
t,
ni,
nx,
ny,
nz,
xx,
yy,
zz )

Definition at line 505 of file i10lagm.F.

507C-----------------------------------------------
508C I m p l i c i t T y p e s
509C-----------------------------------------------
510#include "implicit_f.inc"
511C-----------------------------------------------
512C G l o b a l P a r a m e t e r s
513C-----------------------------------------------
514#include "mvsiz_p.inc"
515C-----------------------------------------------
516C D u m m y A r g u m e n t s
517C-----------------------------------------------
518 INTEGER LLT
519C REAL
520 my_real
521 . xx(mvsiz,7),yy(mvsiz,7),zz(mvsiz,7)
522 my_real
523 . r(mvsiz),s(mvsiz),t(mvsiz),ni(mvsiz,7) ,
524 . nx(mvsiz),ny(mvsiz),nz(mvsiz)
525C-----------------------------------------------
526C L o c a l V a r i a b l e s
527C-----------------------------------------------
528 INTEGER I,J,IK,NK,ITER,NITERMAX,JTER,NJTERMAX,CONV
529 my_real
530 . vx,vy,vz,vn
531 my_real
532 . drdx(mvsiz),drdy(mvsiz),drdz(mvsiz),
533 . dsdx(mvsiz),dsdy(mvsiz),dsdz(mvsiz),
534 . dtdx(mvsiz),dtdy(mvsiz),dtdz(mvsiz),
535 . dxdr(mvsiz),dydr(mvsiz),dzdr(mvsiz),
536 . dxdt(mvsiz),dydt(mvsiz),dzdt(mvsiz),
537 . rr(mvsiz),ss(mvsiz),tt(mvsiz)
538C-----------------------------------------------
539C
540C r=s=t=0
541C
542C +---> iter
543C |
544C | Ni(r,s,t) =
545C | dNi/dr =
546C | ... _
547C | \
548C | dx/dr = /_ (xi * dNi/dr)
549C | ...
550C |
551C | [dx/dr dy/dr dz/dr]
552C | [J] = |dx/ds dy/ds dz/ds|
553C | [dx/dt dy/dt dz/dt]
554C |
555C | +--> jter
556C | | _
557C | | \
558C | | x(r,s,t) = /_ (xi * Ni(r,s,t))
559C | | ...
560C | |
561C | | |r| |r| -1 |xs-x(r,s,t)|
562C | | {s} = {s} + [J] {ys-y(r,s,t)}
563C | | |t| |t| |zs-z(r,s,t)|
564C | |
565C | | Ni(r,s,t) =
566C +-+---
567C-----------------------------------------------
568 nitermax = 3
569 njtermax = 3
570 conv = 0
571C
572 DO i=1,llt
573 rr(i) = zero
574 ss(i) = zero
575 tt(i) = zero
576 ENDDO
577C-----------------------------------------------
578C calcul de r,s,t et Ni(r,s,t)
579C-----------------------------------------------
580 DO iter=1,nitermax
581c
582c print *, "iter",iter
583c
584C-----------------------------------------------
585C calcul de Ni(r,s,t); [J]; [J]-1
586C-----------------------------------------------
587 CALL i10deri(llt,rr ,ss ,tt ,ni ,
588 2 drdx ,drdy ,drdz ,dsdx ,dsdy ,dsdz ,
589 3 dtdx ,dtdy ,dtdz ,dxdr ,dydr ,dzdr ,
590 4 dxdt ,dydt ,dzdt ,xx ,yy ,zz )
591C
592 DO jter=1,njtermax
593c
594c print *, "jter",jter
595c
596C-----------------------------------------------
597C calcul de r,s,t new
598C-----------------------------------------------
599 CALL i10rstn(llt,rr,ss ,tt ,ni ,conv ,
600 2 drdx ,drdy ,drdz ,dsdx ,dsdy ,dsdz ,
601 3 dtdx ,dtdy ,dtdz ,xx ,yy ,zz ,
602 4 r ,s ,t )
603c
604c print *, "r,s,t",r(1),s(1),t(1)
605c print *, "rr,ss,tt",rr(1),ss(1),tt(1)
606c
607C-----------------------------------------------
608C calcul de Ni(-1<r<1 , -1<s<1 , -1<t<1)
609C-----------------------------------------------
610 CALL i10ni(llt,rr ,ss ,tt ,ni )
611C pb de parith on si conv fonction de mvsiz !!!!!!!
612C IF(CONV/=0)RETURN
613C
614 ENDDO
615 ENDDO
616C
617 DO i=1,llt
618 nx(i) = dydt(i)*dzdr(i) - dzdt(i)*dydr(i)
619 ny(i) = dzdt(i)*dxdr(i) - dxdt(i)*dzdr(i)
620 nz(i) = dxdt(i)*dydr(i) - dydt(i)*dxdr(i)
621 ENDDO
622C
623 RETURN
subroutine i10rstn(llt, rr, ss, tt, ni, conv, drdx, drdy, drdz, dsdx, dsdy, dsdz, dtdx, dtdy, dtdz, xx, yy, zz, r, s, t)
Definition i10lagm.F:711
subroutine i10deri(llt, rr, ss, tt, ni, drdx, drdy, drdz, dsdx, dsdy, dsdz, dtdx, dtdy, dtdz, dxdr, dydr, dzdr, dxdt, dydt, dzdt, xx, yy, zz)
Definition i10lagm.F:790
subroutine i10ni(llt, rr, ss, tt, ni)
Definition i10lagm.F:631

◆ i10rstn()

subroutine i10rstn ( integer llt,
rr,
ss,
tt,
ni,
integer conv,
drdx,
drdy,
drdz,
dsdx,
dsdy,
dsdz,
dtdx,
dtdy,
dtdz,
xx,
yy,
zz,
r,
s,
t )

Definition at line 707 of file i10lagm.F.

711C-----------------------------------------------
712C I m p l i c i t T y p e s
713C-----------------------------------------------
714c#include "implicit_f.inc"
715 implicit none
716C-----------------------------------------------
717C G l o b a l P a r a m e t e r s
718C-----------------------------------------------
719#include "mvsiz_p.inc"
720#include "constant.inc"
721C-----------------------------------------------
722C D u m m y A r g u m e n t s
723C-----------------------------------------------
724 INTEGER LLT,CONV
725 my_real
726 . r(mvsiz),s(mvsiz),t(mvsiz),ni(mvsiz,7) ,
727 . rr(mvsiz),ss(mvsiz),tt(mvsiz),
728 . xx(mvsiz,7) ,yy(mvsiz,7) ,zz(mvsiz,7) ,
729 . drdx(mvsiz),drdy(mvsiz),drdz(mvsiz),
730 . dsdx(mvsiz),dsdy(mvsiz),dsdz(mvsiz),
731 . dtdx(mvsiz),dtdy(mvsiz),dtdz(mvsiz)
732C-----------------------------------------------
733C L o c a l V a r i a b l e s
734C-----------------------------------------------
735 INTEGER I
736 my_real
737 . dx ,dy,dz,dr ,ds,dt,err
738C
739 err=zero
740C-----------------------------------------------
741 DO i=1,llt
742C
743 dx = xx(i,7)
744 + - ni(i, 1)*xx(i, 1) - ni(i, 2)*xx(i, 2) - ni(i, 3)*xx(i, 3)
745 + - ni(i, 4)*xx(i, 4) - ni(i, 5)*xx(i, 5) - ni(i, 6)*xx(i, 6)
746 dy = yy(i,7)
747 + - ni(i, 1)*yy(i, 1) - ni(i, 2)*yy(i, 2) - ni(i, 3)*yy(i, 3)
748 + - ni(i, 4)*yy(i, 4) - ni(i, 5)*yy(i, 5) - ni(i, 6)*yy(i, 6)
749 dz = zz(i,7)
750 + - ni(i, 1)*zz(i, 1) - ni(i, 2)*zz(i, 2) - ni(i, 3)*zz(i, 3)
751 + - ni(i, 4)*zz(i, 4) - ni(i, 5)*zz(i, 5) - ni(i, 6)*zz(i, 6)
752C
753 dr = drdx(i)*dx + drdy(i)*dy + drdz(i)*dz
754 ds = dsdx(i)*dx + dsdy(i)*dy + dsdz(i)*dz
755 dt = dtdx(i)*dx + dtdy(i)*dy + dtdz(i)*dz
756C
757 rr(i) = rr(i) + dr
758 ss(i) = ss(i) + ds
759 tt(i) = tt(i) + dt
760C
761 r(i) = rr(i)
762 s(i) = ss(i)
763 t(i) = tt(i)
764C
765 IF(r(i)>=-one.AND.s(i)>=-one.AND.t(i)>=-one.AND.
766 . r(i)<= one.AND.s(i)<= one.AND.t(i)<= one)THEN
767 err = max(err,abs(dr),abs(ds),abs(dt))
768 ELSE
769 rr(i) = max(min(rr(i),one),-one)
770 ss(i) = max(min(ss(i),one),-one)
771 tt(i) = max(min(tt(i),one),-one)
772 ENDIF
773c
774C
775 ENDDO
776C
777 IF(err<em4) conv = 1
778C-----------------------------------------------
779 RETURN
#define min(a, b)
Definition macros.h:20