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

Go to the source code of this file.

Functions/Subroutines

subroutine cutcnt (output, icut, xcut, ixs, xyz0, d, len)

Function/Subroutine Documentation

◆ cutcnt()

subroutine cutcnt ( type(output_), intent(inout) output,
integer, dimension(44,*) icut,
xcut,
integer, dimension(nixs,*) ixs,
xyz0,
d,
integer len )

Definition at line 31 of file cutcnt.F.

32C-----------------------------------------------
33C M o d u l e s
34C-----------------------------------------------
35 USE output_mod
36 use element_mod , only : nixs
37C------------------------------------------
38C NUMBERING CUT ELEMS
39C-----------------------------------------------
40C I m p l i c i t T y p e s
41C-----------------------------------------------
42#include "implicit_f.inc"
43C-----------------------------------------------
44C C o m m o n B l o c k s
45C-----------------------------------------------
46#include "com04_c.inc"
47#include "scrcut_c.inc"
48C-----------------------------------------------
49C D u m m y A r g u m e n t s
50C-----------------------------------------------
51 type(output_), intent(inout) :: output
52 my_real xcut(7,*),xyz0(3,*),d(3,*)
53 INTEGER ICUT(44,*),IXS(NIXS,*),LEN
54C-----------------------------------------------
55C L o c a l V a r i a b l e s
56C-----------------------------------------------
57 INTEGER IC,I,J,K,ITYP
58 my_real dist,dist0,distmin,distmax,dd,dx1,dy1,dz1,dx2,dy2,dz2,vnx,vny,vnz,x,y,z
59C-----------------------------------------------
60C S o u r c e L i n e s
61C-----------------------------------------------
62 len=0
63 DO ic=1,ncuts
64 ityp=icut(1,ic)
65 IF(ityp==1)THEN
66 dd=output%DTANIM*xcut(7,ic)
67 xcut(1,ic)=xcut(1,ic)+dd*xcut(4,ic)
68 xcut(2,ic)=xcut(2,ic)+dd*xcut(5,ic)
69 xcut(3,ic)=xcut(3,ic)+dd*xcut(6,ic)
70 ELSEIF(ityp==3)THEN
71 xcut(1,ic)=xyz0(1,icut(2,ic))
72 xcut(2,ic)=xyz0(2,icut(2,ic))
73 xcut(3,ic)=xyz0(3,icut(2,ic))
74 dx1=xyz0(1,icut(3,ic))-xcut(1,ic)
75 dy1=xyz0(2,icut(3,ic))-xcut(2,ic)
76 dz1=xyz0(3,icut(3,ic))-xcut(3,ic)
77 dx2=xyz0(1,icut(4,ic))-xcut(1,ic)
78 dy2=xyz0(2,icut(4,ic))-xcut(2,ic)
79 dz2=xyz0(3,icut(4,ic))-xcut(3,ic)
80 vnx=dy1*dz2-dy2*dz1
81 vny=dz1*dx2-dz2*dx1
82 vnz=dx1*dy2-dx2*dy1
83 dd=sqrt(vnx**2+vny**2+vnz**2)
84 IF(dd>em10)THEN
85 xcut(4,ic)=vnx/dd
86 xcut(5,ic)=vny/dd
87 xcut(6,ic)=vnz/dd
88 ENDIF
89 ENDIF
90C
91 dist0=xcut(4,ic)*xcut(1,ic)+xcut(5,ic)*xcut(2,ic)+xcut(6,ic)*xcut(3,ic)
92 DO i=1,numels
93 distmin= ep30
94 distmax=-ep30
95 DO j=1,8
96 k=ixs(j+1,i)
97 x=xyz0(1,k)
98 y=xyz0(2,k)
99 z=xyz0(3,k)
100 IF(ityp==2)THEN
101 x=x-d(1,k)
102 y=y-d(2,k)
103 z=z-d(3,k)
104 ENDIF
105 dist=x*xcut(4,ic)+y*xcut(5,ic)+z*xcut(6,ic)-dist0
106 distmin=min(dist,distmin)
107 distmax=max(dist,distmax)
108 enddo!next J
109 IF(distmin*distmax<= zero)len=len+1
110 enddo!next I
111C
112 enddo!next IC
113 RETURN
#define my_real
Definition cppsort.cpp:32
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21