29
30
31
32
33
34
35
36
37#include "implicit_f.inc"
38
39
40
41#include "com04_c.inc"
42#include "param_c.inc"
43
44
45
46 INTEGER,INTENT(IN) :: NODE_ID
47 INTEGER,INTENT(INOUT) :: ISKEW(*),ICODT(*),NALE(NUMNOD)
48 my_real,
INTENT(INOUT) :: skew(lskew,*),vec(3)
49
50
51
52 INTEGER N, ISK, LCOD1,LCOD2, NINDX
54 LOGICAL TAG(3)
55
56
57
58 lcod1 = 0
59 lcod2 = 0
60
61
62
63
64
65
66
67
68
69
70
71
72 tag(1:3)=.false.
73 nindx = 0
74 n = node_id
75 IF(nale(n) /= 0)THEN
76 isk=iskew(n)
77 lcod1=icodt(n+numnod)
78 IF(lcod1 /= 0) THEN
79 nindx = n
80 ENDIF
81 lcod2=icodt(n+numnod+numnod) !ale/bcs
82 IF(lcod2 /= 0) THEN
83 nindx = n
84 ENDIF
85 ENDIF
86
87
88
89 IF(btest(lcod1,0).OR.btest(lcod2,0))tag(3)=.true.
90 IF(btest(lcod1,1).OR.btest(lcod2,1))tag(2)=.true.
91 IF(btest(lcod1,2).OR.btest(lcod2,2))tag(1)=.true.
92
93
94
95 IF (nindx /= 0 )THEN
96 isk = iskew(n)
97 IF(isk == 1) THEN
98
99 IF(tag(1))vec(1)=zero
100 IF(tag(2))vec(2)=zero
101 IF(tag(3))vec(3)=zero
102 ELSE
103
104 IF(tag(1))THEN
105 aa =skew(1,isk)*vec(1)+skew(2,isk)*vec(2)+skew(3,isk)*vec(3)
106 vec(1)=vec(1)-skew(1,isk)*aa
107 vec(2)=vec(2)-skew(2,isk)*aa
108 vec(3)=vec(3)-skew(3,isk)*aa
109 ENDIF
110 IF(tag(2))THEN
111 aa =skew(4,isk)*vec(1)+skew(5,isk)*vec(2)+skew(6,isk)*vec(3)
112
113 vec(2)=vec(2)-skew(5,isk)*aa
114 vec(3)=vec(3)-skew(6,isk)*aa
115 ENDIF
116 IF(tag(3))THEN
117 aa =skew(7,isk)*vec(1)+skew(8,isk)*vec(2)+skew(9,isk)*vec(3)
118 vec(1)=vec(1)-skew(7,isk)*aa
119 vec(2)=vec(2)-skew(8,isk)*aa
120 vec(3)=vec(3)-skew(9,isk)*aa
121 ENDIF
122 ENDIF
123 ENDIF
124
125 RETURN