OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
corthini.F File Reference
#include "implicit_f.inc"
#include "mvsiz_p.inc"
#include "param_c.inc"
#include "com01_c.inc"
#include "scr17_c.inc"
#include "drape_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine corthini (jft, jlt, nft, nlay, numel, nsigsh, nix, ix, igeo, geo, skew, sigsh, ptsh, phi1, phi2, vx, vy, vz, coor1, coor2, coor3, coor4, iorthloc, isubstack, stack, irep, elbuf_str, drape, angle, x, geo_stack, e3x, e3y, e3z, betaorth, x1, x2, y1, y2, z1, z2, nel, g_add_node, add_node, npt_all, idrape, indx)

Function/Subroutine Documentation

◆ corthini()

subroutine corthini ( integer jft,
integer jlt,
integer nft,
integer nlay,
integer numel,
integer nsigsh,
integer nix,
integer, dimension(nix,*) ix,
integer, dimension(npropgi,*) igeo,
geo,
skew,
sigsh,
integer, dimension(*) ptsh,
phi1,
phi2,
vx,
vy,
vz,
coor1,
coor2,
coor3,
coor4,
integer, dimension(*) iorthloc,
integer isubstack,
type (stack_ply) stack,
integer irep,
type(elbuf_struct_), target elbuf_str,
type (drape_), dimension(*), target drape,
angle,
x,
geo_stack,
intent(in) e3x,
intent(in) e3y,
intent(in) e3z,
betaorth,
intent(in) x1,
intent(in) x2,
intent(in) y1,
intent(in) y2,
intent(in) z1,
intent(in) z2,
integer, intent(in) nel,
integer, intent(in) g_add_node,
integer, dimension(g_add_node*nel), intent(in) add_node,
integer npt_all,
integer idrape,
integer, dimension(*) indx )

Definition at line 37 of file corthini.F.

48c---
49C-----------------------------------------------
50C M o d u l e s
51C-----------------------------------------------
52 USE elbufdef_mod
53 USE message_mod
54 USE stack_mod
55 USE drape_mod
57 use element_mod , only : nixtg
58C-----------------------------------------------
59C I m p l i c i t T y p e s
60C-----------------------------------------------
61#include "implicit_f.inc"
62C-----------------------------------------------
63C G l o b a l P a r a m e t e r s
64C-----------------------------------------------
65#include "mvsiz_p.inc"
66C-----------------------------------------------
67C C o m m o n B l o c k s
68C-----------------------------------------------
69#include "param_c.inc"
70#include "com01_c.inc"
71#include "scr17_c.inc"
72#include "drape_c.inc"
73C-----------------------------------------------
74C D u m m y A r g u m e n t s
75C-----------------------------------------------
76 INTEGER JFT,JLT,NFT,NLAY,IPT,ID,NIX,NUMEL,NSIGSH,
77 . ISUBSTACK,IREP,NPT_ALL,IDRAPE
78 INTEGER IX(NIX,*),IGEO(NPROPGI,*),PTSH(*),IORTHLOC(*)
79 INTEGER, INTENT(IN) :: NEL,G_ADD_NODE,ADD_NODE(G_ADD_NODE*NEL)
80 INTEGER, DIMENSION(*) :: INDX
82 . geo(npropg,*),skew(lskew,*),sigsh(nsigsh,*),vx(*),vy(*),vz(*),
83 . phi1(npt_all,*),phi2(npt_all,*),coor1(npt_all,mvsiz),coor2(npt_all,mvsiz),
84 . coor3(npt_all,mvsiz),coor4(npt_all,mvsiz),
85 . angle(*),geo_stack(npropg,*),x(3,*),betaorth(*)
86 my_real, DIMENSION(MVSIZ), INTENT(IN) :: e3x,e3y,e3z,x1,x2,y1,y2,z1,z2
87C------------------------------------------------------
88 TYPE(ELBUF_STRUCT_), TARGET :: ELBUF_STR
89 TYPE (STACK_PLY):: STACK
90 TYPE (DRAPE_) , DIMENSION(*), TARGET :: DRAPE
91C------------------------------------------------------
92C L o c a l V a r i a b l e s
93C-----------------------------------------------
94 INTEGER I,II,J,JJ,N,NPT,NPTI,IGTYP,IPID,PID,ISK,IPANG,IPPHI,
95 . IPTHK,IPPOS,IPDIR,ILAW_LY,
96 . DEF_ORTH(MVSIZ),N1,N2,IRP,NOD,IL,IT,NSLICE,IPT_ALL,NPTT,
97 . IE, IP,IPID_PLY,N3,N4
98 my_real v(mvsiz),e11,e12,e13,ne1,vx0,vy0,vz0,
99 . xc(mvsiz),yc(mvsiz),zc(mvsiz)
100 CHARACTER(LEN=NCHARTITLE)::TITR1
101
102 TYPE (DRAPE_PLY_) , POINTER :: DRAPE_PLY
103C=======================================================================
104 pid = ix(nix-1,1)
105 igtyp = igeo(11,pid)
106 irp = igeo(14,pid)
107 def_orth(1:mvsiz) = nlay
108 ipdir = 0
109C
110 IF (igtyp == 1) THEN
111C non orthotropic property
112 RETURN
113 ELSE
114 ipang = 200
115 ipphi = 500
116 IF (igtyp == 17 .OR. igtyp == 51 .OR. igtyp == 52 ) THEN
117 ipang = 1
118 ipthk = ipang + nlay
119 ippos = ipthk + nlay
120 ipdir = ippos + nlay
121 ENDIF
122 SELECT CASE (irp)
123 CASE (0) !
124 isk = igeo(2,pid)
125 DO i=jft,jlt
126 IF (isk == 0) THEN
127 vx(i) = geo(7,pid)
128 vy(i) = geo(8,pid)
129 vz(i) = geo(9,pid)
130 ELSE
131 vx(i) = skew(1,isk)
132 vy(i) = skew(2,isk)
133 vz(i) = skew(3,isk)
134 ENDIF
135 ENDDO
136 CASE (20) ! N1---> N2 (nodes)
137 DO i=jft,jlt
138 n1=ix(2,i)
139 n2=ix(3,i)
140 vx(i) = x(1,n2)-x(1,n1)
141 vy(i) = x(2,n2)-x(2,n1)
142 vz(i) = x(3,n2)-x(3,n1)
143 ENDDO
144 CASE (22) ! Iskew
145 isk = igeo(2,pid) !
146 DO i=jft,jlt
147 vx(i) = skew(1,isk)
148 vy(i) = skew(2,isk)
149 vz(i) = skew(3,isk)
150 ENDDO
151 CASE (23) ! Proj on the element V x normal_eleemt
152 vx0 = geo(7,pid)
153 vy0 = geo(8,pid)
154 vz0 = geo(9,pid)
155 DO i=jft,jlt
156 vx(i) = e3y(i)*vz0 - e3z(i)*vy0
157 vy(i) = e3z(i)*vx0 - e3x(i)*vz0
158 vz(i) = e3x(i)*vy0 - e3y(i)*vx0
159 ENDDO
160 CASE (24)
161C-- seatbelt elements - dir1 defined by N1 and ADD_NODE (can be either N2 or N4)
162 DO i=jft,jlt
163 n1=ix(2,i)
164 nod=add_node(i)
165 vx(i) = x(1,nod)-x(1,n1)
166 vy(i) = x(2,nod)-x(2,n1)
167 vz(i) = x(3,nod)-x(3,n1)
168 ENDDO
169 CASE (25)
170C-- y' of cylintrical sys (using xc,yc,zc)
171 isk = igeo(2,pid)
172 IF (nix > nixtg) THEN
173 DO i=jft,jlt
174 n1=ix(2,i)
175 n2=ix(3,i)
176 n3=ix(4,i)
177 n4=ix(5,i)
178 xc(i) = fourth*(x(1,n1)+x(1,n2)+x(1,n3)+x(1,n4))
179 yc(i) = fourth*(x(2,n1)+x(2,n2)+x(2,n3)+x(2,n4))
180 zc(i) = fourth*(x(3,n1)+x(3,n2)+x(3,n3)+x(3,n4))
181 ENDDO
182 ELSE
183 DO i=jft,jlt
184 n1=ix(2,i)
185 n2=ix(3,i)
186 n3=ix(4,i)
187 xc(i) = third*(x(1,n1)+x(1,n2)+x(1,n3))
188 yc(i) = third*(x(2,n1)+x(2,n2)+x(2,n3))
189 zc(i) = third*(x(3,n1)+x(3,n2)+x(3,n3))
190 ENDDO
191 END IF
192 DO i=jft,jlt
193 e11 = xc(i)-skew(10,isk)
194 e12 = yc(i)-skew(11,isk)
195 e13 = zc(i)-skew(12,isk)
196 vx(i) = skew(8,isk)*e13 - skew(9,isk)*e12
197 vy(i) = skew(9,isk)*e11 - skew(7,isk)*e13
198 vz(i) = skew(7,isk)*e12 - skew(8,isk)*e11
199 ENDDO
200 END SELECT
201C--- read property data
202 IF (igtyp == 9) THEN
203 DO i=jft,jlt
204 phi1(1,i)= geo(10,pid)
205 ENDDO
206 ELSEIF (igtyp == 10) THEN
207 DO i=jft,jlt
208 DO j=1,nlay
209 phi1(j,i)= geo(ipang+j,pid)
210 ENDDO
211 ENDDO
212 ELSEIF (igtyp == 11) THEN
213 DO i=jft,jlt
214 DO j=1,nlay
215 phi1(j,i)= geo(ipang+j,pid)
216 ENDDO
217 ENDDO
218 ELSEIF (igtyp == 17 .AND. irp /= 24) THEN !
219 IF(idrape > 0) THEN
220 DO i=jft,jlt
221 ipang = 1
222 ie = indx(nft + i)
223 IF(ie == 0) THEN
224 DO j=1,nlay
225 ipid_ply = stack%IGEO(2 + j,isubstack)
226 IF(ipid_ply > 0) THEN
227 phi1(j,i) = angle(i) + geo(2,ipid_ply) + stack%GEO(ipang+j,isubstack) ! + stack_angle
228 IF (irep >= 2) phi2(j,i)= stack%GEO(ipdir+j,isubstack)
229 def_orth(i) = def_orth(i) - 1
230 ENDIF
231 ENDDO
232 ELSE ! ie > 0
233 DO j=1,nlay
234 ipid_ply = stack%IGEO(2+j,isubstack)
235 IF(ipid_ply > 0) THEN
236 phi1(j,i) = angle(i) + geo(2,ipid_ply) + stack%GEO(ipang+j,isubstack) ! + stack_angle
237 IF (irep >= 2) phi2(j,i)= stack%GEO(ipdir+j,isubstack)
238 def_orth(i) = def_orth(i) - 1
239 ip = drape(ie)%INDX_PLY(j)
240 IF(ip > 0) THEN
241 drape_ply => drape(ie)%DRAPE_PLY(ip)
242 phi1(j,i) = phi1(j,i) + drape_ply%RDRAPE(1,2)
243 ENDIF
244 ENDIF
245 ENDDO
246 ENDIF
247 ENDDO
248 ELSE ! idrape== 0
249 DO i=jft,jlt
250 ipang = 1
251 DO j=1,nlay
252 ipid_ply = stack%IGEO(2+j,isubstack)
253 IF(ipid_ply > 0) THEN
254 phi1(j,i) = angle(i) + geo(2,ipid_ply) + stack%GEO(ipang+j,isubstack)
255 def_orth(i) = def_orth(i) - 1
256 IF (irep >= 2) phi2(j,i)= stack%GEO(ipdir+j,isubstack)
257 ENDIF
258 ENDDO
259 ENDDO
260 ENDIF ! idrape
261 ELSEIF(igtyp == 51 .AND. irp /= 24 ) THEN !
262 IF(idrape > 0) THEN
263 DO i=jft,jlt
264 ipang = 1
265 ipt_all = 0
266 ie = indx(nft + i)
267 IF(ie > 0) THEN
268 DO il=1,nlay
269 nptt = elbuf_str%BUFLY(il)%NPTT
270 ip = drape(ie)%INDX_PLY(il)
271 ipid_ply = stack%IGEO(2 + il,isubstack)
272 IF(ipid_ply > 0) THEN
273 IF(ip > 0) THEN
274 drape_ply => drape(ie)%DRAPE_PLY(ip)
275 nslice = drape_ply%NSLICE ! NPTT
276 def_orth(i) = def_orth(i) - 1 !
277 IF(irep >= 2) THEN
278 DO it = 1,nptt
279 ipt = ipt_all + it
280 phi1(ipt,i) = angle(i) + geo(2,ipid_ply) + stack%GEO(ipang+il,isubstack)
281 . + drape_ply%RDRAPE(it,2)
282 phi2(ipt,i) = stack%GEO(ipdir + il,isubstack)
283 ENDDO ! NPTT
284 ELSE
285 DO it = 1,nptt
286 ipt = ipt_all + it
287 phi1(ipt,i) = angle(i) + geo(2,ipid_ply) + stack%GEO(ipang+il,isubstack)
288 . + drape_ply%RDRAPE(it,2)
289 ENDDO ! NPTT
290 ENDIF ! IREP
291 ELSE !IP == 0
292 def_orth(i) = def_orth(i) - 1
293 IF(irep >= 2) THEN
294 DO it = 1,nptt
295 ipt = ipt_all + it
296 phi1(ipt,i) = angle(i) + geo(2,ipid_ply) + stack%GEO(ipang + il,isubstack)
297 phi2(ipt,i) = stack%GEO(ipdir+il,isubstack)
298 ENDDO ! NPTT
299 ELSE
300 DO it = 1,nptt
301 ipt = ipt_all + it
302 phi1(ipt,i) = angle(i) + geo(2,ipid_ply) + stack%GEO(ipang + il,isubstack)
303 ENDDO ! NPTT
304 ENDIF
305 ENDIF ! IP
306 ENDIF ! IPID_PLY > 0
307 ipt_all = ipt_all + nptt
308 ENDDO ! NLAY
309 ELSE !IE == 0
310 DO il=1,nlay
311 nptt = elbuf_str%BUFLY(il)%NPTT
312 ipid_ply = stack%IGEO(2 + il,isubstack)
313 IF(ipid_ply > 0) THEN
314 def_orth(i) = def_orth(i) - 1
315 IF(irep >= 2) THEN
316 DO it = 1,nptt
317 ipt = ipt_all + it
318 phi1(ipt,i) = angle(i) + geo(2,ipid_ply) + stack%GEO(ipang + il,isubstack)
319 phi2(ipt,i) = stack%GEO(ipdir+il,isubstack)
320 ENDDO ! NPTT
321 ELSE
322 DO it = 1,nptt
323 ipt = ipt_all + it
324 phi1(ipt,i) = angle(i) + geo(2,ipid_ply) + stack%GEO(ipang + il,isubstack)
325 ENDDO ! NPTT
326 ENDIF
327 ENDIF
328 ipt_all = ipt_all + nptt
329 ENDDO ! NLAY
330 ENDIF !IE
331 ENDDO ! JFT:JLT
332 ELSE ! IDRAPE = 0
333 DO i=jft,jlt
334 ipang = 1
335 DO il=1,nlay
336 ipid_ply = stack%IGEO(2 + il,isubstack)
337 IF(ipid_ply > 0 ) THEN
338 phi1(il,i) = angle(i) + geo(2,ipid_ply) + stack%GEO(ipang + il,isubstack)
339 def_orth(i) = def_orth(i) - 1
340 ENDIF
341 IF (irep >= 2) phi2(il,i)= stack%GEO(ipdir + il,isubstack)
342 ENDDO
343 ENDDO
344 ENDIF ! idrape
345 ELSEIF(igtyp == 52 .AND. irp /= 24 ) THEN
346 IF(idrape > 0) THEN
347 DO i=jft,jlt
348 ipang = 1
349 ipt_all = 0
350 ie = indx(nft + i)
351 IF(ie > 0) THEN
352 DO il=1,nlay
353 nptt = elbuf_str%BUFLY(il)%NPTT
354 ip = drape(ie)%INDX_PLY(il)
355 ipid_ply = stack%IGEO(2+il,isubstack)
356 IF( ipid_ply > 0) THEN
357 IF(ip > 0) THEN !
358 drape_ply => drape(ie)%DRAPE_PLY(ip)
359 nslice = drape_ply%NSLICE ! NPTT
360 def_orth(i) = def_orth(i) - 1
361 IF(irep >= 2) THEN
362 DO it = 1,nptt
363 ipt = ipt_all + it
364 phi1(ipt,i) = angle(i) + geo_stack(2,ipid_ply)
365 . + stack%GEO(ipang + il,isubstack) + drape_ply%RDRAPE(it,2)
366 phi2(ipt,i)= stack%GEO(ipdir+il,isubstack)
367 ENDDO ! NPTT
368 ELSE
369 DO it = 1,nptt
370 ipt = ipt_all + it
371 phi1(ipt,i) = angle(i) + geo_stack(2,ipid_ply)
372 . + stack%GEO(ipang + il,isubstack) + drape_ply%RDRAPE(it,2)
373 ENDDO ! NPTT
374 ENDIF
375 ELSE !IP == 0
376 def_orth(i) = def_orth(i) - 1
377 IF(irep >= 2) THEN
378 DO it = 1,nptt
379 ipt = ipt_all + it
380 phi1(ipt,i) = angle(i) + geo_stack(2,ipid_ply) + stack%GEO(ipang + il,isubstack)
381 phi2(ipt,i) = stack%GEO(ipdir+il,isubstack)
382 ENDDO ! NPTT
383 ELSE
384 DO it = 1,nptt
385 ipt = ipt_all + it
386 phi1(ipt,i) = angle(i) + geo_stack(2,ipid_ply) + stack%GEO(ipang + il,isubstack)
387 ENDDO ! NPTT
388 ENDIF ! IREP
389 ENDIF !IP
390 ENDIF ! IPID_PLY
391 ipt_all = ipt_all + nptt
392 ENDDO ! NLAY
393 ELSE !IE == 0
394 DO il=1,nlay
395 nptt = elbuf_str%BUFLY(il)%NPTT
396 ipid_ply = stack%IGEO(2+il,isubstack)
397 IF(ipid_ply > 0) THEN
398 def_orth(i) = def_orth(i) - 1
399 IF(irep >= 2)THEN
400 DO it = 1,nptt
401 ipt = ipt_all + it
402 phi1(ipt,i) = angle(i) + geo_stack(2,ipid_ply) + stack%GEO(ipang + il,isubstack)
403 phi2(ipt,i)= stack%GEO(ipdir+il,isubstack)
404 ENDDO ! NPTT
405 ELSE
406 DO it = 1,nptt
407 ipt = ipt_all + it
408 phi1(ipt,i) = angle(i) + geo_stack(2,ipid_ply) + stack%GEO(ipang + il,isubstack)
409 ENDDO ! NPT
410 ENDIF ! IREP
411 ENDIF
412 ipt_all = ipt_all + nptt
413 ENDDO ! NLAY
414 ENDIF !IE
415 ENDDO ! JFT:JLT
416 ELSE ! IDRAPE = 0
417 DO i=jft,jlt
418 ipang = 1
419 DO il=1,nlay
420 ipid_ply = stack%IGEO(2+il,isubstack)
421 IF(ipid_ply > 0) THEN
422 def_orth(i) = def_orth(i) - 1
423 phi1(il,i) = angle(i) + geo_stack(2,ipid_ply) + stack%GEO(ipang + il,isubstack)
424 IF(irep >= 2) phi2(il,i)= stack%GEO(ipdir+il,isubstack)
425 ENDIF ! IPID_PLY
426 ENDDO
427 ENDDO
428 ENDIF ! idrape
429 ELSEIF (igtyp == 16) THEN
430 DO i=jft,jlt
431 DO j=1,nlay
432 phi1(j,i)= geo(ipang+j,pid)
433 phi2(j,i)= geo(ipphi+j,pid)
434 ENDDO
435 ENDDO
436 ENDIF
437C--- Overwrite with optional element data
438 IF (iortshel == 1) THEN
439 DO i=jft,jlt
440 IF (abs(isigi) /= 3 .AND. abs(isigi)/=4 .AND. abs(isigi)/=5) THEN
441 !!II = I + NFT
442 id = ix(nix,i)
443 ii = ptsh(i + nft)
444 IF(ii == 0) GOTO 100
445 n = nint(sigsh(1,ii))
446 IF (n == id) THEN
447 CONTINUE
448 ELSE
449 DO j = 1,numel
450 ii = j
451 n = nint(sigsh(1,ii))
452 IF (n == id) GOTO 60
453 IF (n == 0) GOTO 100
454 ENDDO
455 GOTO 100
456 60 CONTINUE
457 ENDIF
458 ELSE
459 jj=nft+i
460 n =ix(nix,i)
461 ii=ptsh(jj)
462 IF (ii == 0) GOTO 100
463 END IF
464 IF(sigsh(nvshell + nushell + 5,ii) == zero) cycle
465C
466 npti = nint(sigsh(nvshell + nushell + 4,ii))
467 IF(igtyp == 9) npti = 1
468 IF (nlay /= npti) THEN
469 ipid = ix(nix-1,i)
470 pid = igeo(1,ipid)
471 CALL fretitl2(titr1,igeo(npropgi-ltitr+1,ipid),ltitr)
472 IF (npti == 0) THEN
473 CALL ancmsg(msgid=355,
474 . msgtype=msgwarning,
475 . anmode=aninfo_blind_1,
476 . i1=n,
477 . i2=pid,
478 . c1=titr1)
479 ELSE
480 CALL ancmsg(msgid=26,
481 . anmode=aninfo,
482 . msgtype=msgerror,
483 . i2=n,
484 . i1=pid,
485 . c1=titr1)
486 ENDIF
487 ENDIF
488C
489 ipt = nvshell + nushell
490 vx(i) = sigsh(ipt+1,ii)
491 vy(i) = sigsh(ipt+2,ii)
492 vz(i) = sigsh(ipt+3,ii)
493 ipt = ipt + 5
494 IF ( igtyp == 9) THEN
495 phi1(1,i) = sigsh(ipt+1,ii)
496 phi2(1,i) = sigsh(ipt+2,ii)
497 ipt = ipt + 2
498 ELSE
499 DO j=1,npti
500 phi1(j,i) = sigsh(ipt+1,ii)
501 phi2(j,i) = sigsh(ipt+2,ii)
502 ipt = ipt + 2
503 ENDDO
504 ENDIF
505 100 CONTINUE
506 ENDDO
507 ENDIF
508C
509C--- Overwrite with optional element data__ ORTH_LOC
510 IF (iortshel == 2) THEN
511 DO i=jft,jlt
512 ie = i + nft
513 IF (abs(isigi) /= 3 .AND. abs(isigi) /= 4 .AND. abs(isigi) /= 5) THEN
514 id = ix(nix,i)
515 ii = ptsh(ie)
516 IF(ii == 0) GOTO 110
517 n = nint(sigsh(1,ii))
518 IF (n == id) THEN
519 CONTINUE
520 ELSE
521 DO j = 1,numel
522 ii = j
523 n = nint(sigsh(1,ii))
524 IF (n == id) GOTO 70
525 IF (n == 0) GOTO 110
526 ENDDO
527 GOTO 110
528 70 CONTINUE
529 ENDIF
530 ELSE
531 jj=nft+i
532 n =ix(nix,i)
533 ii=ptsh(jj)
534 IF (ii == 0) GOTO 110
535 END IF
536 IF(sigsh(nvshell + nushell + 5,ii) == zero) cycle
537 npti = nint(sigsh(nvshell + nushell + 4,ii))
538C
539 npt = nint(geo(6,ix(nix-1,i)))
540 IF(idrape > 0 .AND. (igtyp == 51 .OR. igtyp==52)) THEN
541 npt = npt_all
542 ELSEIF (igtyp == 16 .OR. igtyp == 17 .OR. igtyp == 51 .OR. igtyp == 52) THEN
543 npt = nlay
544 ENDIF
545 IF (npt /= npti) THEN
546 ipid = ix(nix-1,i)
547 pid = igeo(1,ipid)
548 CALL fretitl2(titr1,igeo(npropgi-ltitr+1,ipid),ltitr)
549 IF (npti == 0) THEN
550 CALL ancmsg(msgid=355,
551 . msgtype=msgwarning,
552 . anmode=aninfo_blind_1,
553 . i1=n,
554 . i2=pid,
555 . c1=titr1)
556 ELSE
557 CALL ancmsg(msgid=26,
558 . anmode=aninfo,
559 . msgtype=msgerror,
560 . i2=n,
561 . i1=pid,
562 . c1=titr1)
563 ENDIF
564 ENDIF
565C
566 ipt = nvshell + nushell + 5
567 IF (igtyp == 9) THEN
568 coor1(1,i) = sigsh(ipt+1,ii)
569 coor2(1,i) = sigsh(ipt+2,ii)
570 ipt = ipt + 2
571 iorthloc(i) = 1
572 ELSEIF (igtyp == 10 .OR. igtyp == 11 .OR. igtyp == 16 .OR.
573 . igtyp == 17 .OR. igtyp == 51 .OR. igtyp == 52) THEN
574 DO j=1,npti
575 ilaw_ly = elbuf_str%BUFLY(j)%ILAW
576 IF (igtyp == 16 .OR.(igtyp == 51 .AND. ilaw_ly == 58)
577 . .OR.(igtyp == 52 .AND. ilaw_ly == 58) ) THEN
578 coor1(j,i) = sigsh(ipt+1,ii)
579 coor2(j,i) = sigsh(ipt+2,ii)
580 coor3(j,i) = sigsh(ipt+3,ii)
581 coor4(j,i) = sigsh(ipt+4,ii)
582 ipt = ipt + 4
583 ELSE
584 coor1(j,i) = sigsh(ipt+1,ii)
585 coor2(j,i) = sigsh(ipt+2,ii)
586 ipt = ipt + 2
587 ENDIF
588 ENDDO
589 iorthloc(i) = 1
590 ENDIF
591 110 CONTINUE
592 ENDDO
593 ENDIF
594C
595C--- Check projection
596 IF(irp /= 26 ) THEN
597 DO i=jft,jlt
598 v(i) =vx(i)*e3x(i)+vy(i)*e3y(i)+vz(i)*e3z(i)
599 vx(i)=vx(i)-v(i)*e3x(i)
600 vy(i)=vy(i)-v(i)*e3y(i)
601 vz(i)=vz(i)-v(i)*e3z(i)
602 v(i) =sqrt(vx(i)*vx(i)+vy(i)*vy(i)+vz(i)*vz(i))
603 ENDDO
604C
605 DO i=jft,jlt
606 IF (v(i) < em3 .AND. iorthloc(i) == 0 .AND.
607 . def_orth(i) /= 0)THEN
608 pid = ix(nix-1,i)
609 v(i)= max(v(i),em20)
610 CALL fretitl2(titr1,igeo(npropgi-ltitr+1,pid),ltitr)
611 CALL ancmsg(msgid=197,
612 . msgtype=msgerror,
613 . anmode=aninfo,
614 . i1=igeo(1,pid),
615 . c1=titr1,
616 . i2=ix(nix,i))
617 ENDIF
618 vx(i)=vx(i)/v(i)
619 vy(i)=vy(i)/v(i)
620 vz(i)=vz(i)/v(i)
621 ENDDO
622 ENDIF ! IRP
623C
624C----Beta angle computation(dyna input format)
625C
626 DO i=jft,jlt
627
628 e11= x2(i)-x1(i)
629 e12= y2(i)-y1(i)
630 e13= z2(i)-z1(i)
631 ne1 = sqrt(e11*e11+e12*e12+e13*e13)
632
633 betaorth(i) = (vx(i)*e11 + vy(i)*e12 +vz(i)*e13 )/max(ne1,em20)
634 ENDDO
635C----
636 ENDIF
637C-----------
638 RETURN
subroutine add_node(n, ancestor, parent, j, i)
Definition ana_AMDMF.F:827
#define my_real
Definition cppsort.cpp:32
#define max(a, b)
Definition macros.h:21
initmumps id
integer, parameter nchartitle
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:895
subroutine fretitl2(titr, iasc, l)
Definition freform.F:799