36
37
38
39#include "implicit_f.inc"
40#include "comlock.inc"
41
42
43
44#include "com04_c.inc"
45#include "task_c.inc"
46
47
48
49 INTEGER NRTM,IRECT(4,*),
50 . MSR(*),NMN,MSEGTYP(*),ITASK
51
53 . gap_nm(4,*),gap_m(*), gapmsav(*), thknod(numnod),
54 . gapn_m(*),gapmax_m, gapscale, maxdgap_g
55
56
57
58 INTEGER I,J,K,IW,I1,I2,I3,MG,M,IP,IGTYP,
59 . NMNF,NMNL,NRTMF,NRTML,IERROR
61 . DIMENSION(:), ALLOCATABLE :: wa
63 SAVE wa
64
65
66
67 ALLOCATE(wa(numnod),stat=ierror)
68 nmnf = 1 + itask*nmn / nthread
69 nmnl = (itask+1)*nmn / nthread
70 nrtmf = 1 + itask * nrtm / nthread
71 nrtml = (itask+1) * nrtm / nthread
72 maxdgap_l = -ep30
73
74
75
76
77
78
79#include "vectorize.inc"
80 DO i=nmnf,nmnl
81 m = msr(i)
82 wa(m)=half*gapscale*thknod(m)
83 END DO
84
86
87
88#include "vectorize.inc"
89 DO i=1,nrtm
90 IF (msegtyp(i)==0) THEN
91 DO j=1,4
92 m=irect(j,i)
93 wa(m) = zero
94 END DO
95 END IF
96 END DO
97
98
99#include "vectorize.inc"
100 DO i=nmnf,nmnl
101 m = msr(i)
102 wa(m) =
min(wa(m),gapmax_m)
103 gapn_m(i) = wa(m)
104 END DO
105
107
108#include "vectorize.inc"
109 DO i=nrtmf,nrtml
110 gap_m(i) = zero
111 DO j=1,4
112 m=irect(j,i)
113 gap_nm(j,i)=wa(m)
114 gap_m(i) =
max(gap_m(i),wa(m))
115 END DO
116 END DO
117
118#include "vectorize.inc"
119
120 DO i=nrtmf,nrtml
121 maxdgap_l =
max(maxdgap_l,gap_m(i)-gapmsav(i))
122 END DO
123
125
126#include "lockon.inc"
127
128 maxdgap_g =
max(maxdgap_l,maxdgap_g)
129#include "lockoff.inc"
130
131 RETURN