40
41
42
44
45
46
47#include "implicit_f.inc"
48
49
50
51#include "mvsiz_p.inc"
52
53
54
55 INTEGER IRECT(4,*), NSV(*), CAND_E(*), CAND_N(*),
56 . JLT,IDT, NOINT, NSN , NRTM,ITYP, IGAP, MSEGTYP(*), ICODE(*), ISKEW(*)
57 INTEGER IX1(MVSIZ), IX2(MVSIZ), IX3(MVSIZ), IX4(),
58 . ETYP(MVSIZ), IBC(MVSIZ)
59 INTEGER , INTENT(IN) :: NRTMT
60
62 . x(3,*), gapv(*), gap_s(*), gap_m(*),
63 . gap_s_l(*), gap_m_l(*), edge_l2(*)
65 . marge
66 my_real ,
INTENT(IN) :: drad, dgapload
67
69 . x1(mvsiz), x2(mvsiz), x3(mvsiz), x4(mvsiz),
70 . y1(mvsiz), y2(mvsiz), y3(mvsiz), y4(mvsiz),
71 . z1(mvsiz), z2(mvsiz), z3(mvsiz), z4(mvsiz),
72 . xi(mvsiz), yi(mvsiz), zi(mvsiz), stif(mvsiz)
73
74
75
76 INTEGER I ,J ,IL, L, NN, IG,,IADD,
77 . IBCS, ISKS, IBCM(4), ISKM(4)
78
79
80 IF(igap /= 3)THEN
81 DO i=1,jlt
82 j = cand_n(i)
83 l = cand_e(i)
84 gapv(i)=gap_s(j) + gap_m(l)
85 IF(msegtyp(l)==0.OR.msegtyp(l)>nrtmt)THEN
86 gapv(i)=
max(gapv(i)+marge,gapv(i)+edge_l2(j))
87 ELSE
88 gapv(i)=gapv(i)+marge
89 END IF
90 gapv(i)=
max(gapv(i)+dgapload,drad)
91 END DO
92 ELSE
93 DO i=1,jlt
94 j = cand_n(i)
95 l = cand_e(i)
96 gapv(i)=gap_s(j) + gap_m(l)
97 gapv(i)=
min(gap_s_l(j)+gap_m_l(l),gapv(i))
98 IF(msegtyp(l)==0.OR.msegtyp(l)>nrtmt)THEN
99 gapv(i)=
max(gapv(i)+marge,gapv(i)+edge_l2(j))
100 ELSE
101 gapv(i)=gapv(i)+marge
102 END IF
103 gapv(i)=
max(gapv(i)+dgapload,drad)
104 END DO
105 END IF
106 DO i=1,jlt
107 j = cand_n(i)
108 ig = nsv(j)
109 xi(i) = x(1,ig)
110 yi(i) = x(2,ig)
111 zi(i) = x(3,ig)
112
113 l = cand_e(i)
114 etyp(i) =msegtyp(l)
115
116 ix1(i)=irect(1,l)
117 x1(i)=x(1,ix1(i))
118 y1(i)=x(2,ix1(i))
119 z1(i)=x(3,ix1(i))
120
121 ix2(i)=irect(2,l)
122 x2(i)=x(1,ix2(i))
123 y2(i)=x(2,ix2(i))
124 z2(i)=x(3,ix2(i))
125
126 ix3(i)=irect(3,l)
127 x3(i)=x(1,ix3(i))
128 y3(i)=x(2,ix3(i))
129 z3(i)=x(3,ix3(i))
130
131 ix4(i)=irect(4,l)
132 x4(i)=x(1,ix4(i))
133 y4(i)=x(2,ix4(i))
134 z4(i)=x(3,ix4(i))
135
136 ENDDO
137
138 ibc(1:jlt)=0
139 DO i=1,jlt
140
141 j=cand_n(i)
142 ibcs =icode(nsv(j))/512
143 ibcm(1)=icode(ix1(i))/512
144 ibcm(2)=icode(ix2(i))/512
145 ibcm(3)=icode(ix3(i))/512
146 ibcm(4)=icode(ix4(i))/512
147
148 IF((ibcs ==1.OR.ibcs ==3.OR.ibcs ==5.OR.ibcs ==7).AND.
149 . (ibcm(1)==1.OR.ibcm(1)==3.OR.ibcm(1)==5.OR.ibcm(1)==7).AND.
150 . (ibcm(2)==1.OR.ibcm(2)==3.OR.ibcm(2)==5.OR.ibcm(2)==7).AND.
151 . (ibcm(3)==1.OR.ibcm(3)==3.OR.ibcm(3)==5.OR.ibcm(3)==7).AND.
152 . (ibcm(4)==1.OR.ibcm(4)==3.OR.ibcm(4)==5.OR.ibcm(4)==7))THEN
153 ibc(i)=ibc(i)+1
154 END IF
155 IF((ibcs ==2.OR.ibcs ==3.OR.ibcs ==6.OR.ibcs ==7).AND.
156 . (ibcm(1)==2.OR.ibcm(1)==3.OR.ibcm(1)==6.OR.ibcm(1)==7).AND.
157 . (ibcm(2)==2.OR.ibcm(2)==3.OR.ibcm(2)==6.OR.ibcm(2)==7).AND.
158 . (ibcm(3)==2.OR.ibcm(3)==3.OR.ibcm(3)==6.OR.ibcm(3)==7).AND.
159 . (ibcm(4)==2.OR.ibcm(4)==3.OR.ibcm(4)==6.OR.ibcm(4)==7))THEN
160 ibc(i)=ibc(i)+2
161 END IF
162 IF((ibcs ==4.OR.ibcs ==5.OR.ibcs ==6.OR.ibcs ==7).AND.
163 . (ibcm(1)==4.OR.ibcm(1)==5.OR.ibcm(1)==6.OR.ibcm(1)==7).AND.
164 . (ibcm(2)==4.OR.ibcm(2)==5.OR.ibcm(2)==6.OR.ibcm(2)==7).AND.
165 . (ibcm(3)==4.OR.ibcm(3)==5.OR.ibcm(3)==6.OR.ibcm(3)==7).AND.
166 . (ibcm(4)==4.OR.ibcm(4)==5.OR.ibcm(4)==6.OR.ibcm(4)==7))THEN
167 ibc(i)=ibc(i)+4
168 END IF
169 END DO
170
171 RETURN