41
42
43
45 USE pblast_mod
48
49
50
51#include "implicit_f.inc"
52#include "comlock.inc"
53#include "param_c.inc"
54
55
56
57#include "com04_c.inc"
58#include "com06_c.inc"
59#include "com08_c.inc"
60#include "mvsiz_p.inc"
61#include "tabsiz_c.inc"
62
63
64
65 TYPE(PBLAST_),INTENT(INOUT) :: PBLAST
66 INTEGER,INTENT(IN) :: LLOADP(SLLOADP)
67 INTEGER,INTENT(INOUT) :: ILOADP(SIZLOADP,NLOADP)
68 INTEGER,INTENT(IN) :: IADC(*)
69 INTEGER, INTENT(IN) :: ITAB(NUMNOD)
70 my_real,
INTENT(INOUT) :: fac(lfacload,nloadp)
71 my_real,
INTENT(IN) :: v(3,numnod),x(3,numnod)
72 my_real,
INTENT(INOUT) :: a(3,numnod),fsky(8,sfsky/8), fext(3,numnod)
73 my_real,
INTENT(INOUT) :: noda_surf(numnod)
74 my_real,
INTENT(INOUT) :: noda_pext(numnod)
75 TYPE(H3D_DATABASE),INTENT(IN) :: H3D_DATA
76 TYPE (TH_SURF_) , INTENT(INOUT) :: TH_SURF
77 DOUBLE PRECISION,INTENT(INOUT) :: WFEXT
78
79
80
81 INTEGER :: NL, ABAC_ID, ID, II, IJK, NN(4), NNOD, IAD , IL, NSEGPL
82 my_real :: dtmin_loc, t_stop, ta_first
83 DOUBLE PRECISION :: WFEXT_LOC
84 LOGICAL :: IS_RESET
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99 pblast%PBLAST_DT%DT = ep20
100 pblast%PBLAST_DT%IDT = 0
101
102 IF(pblast%NLOADP_B==0)THEN
103 RETURN
104 ENDIF
105 nsegpl = th_surf%NSEGLOADPF
106
107
108
109
110
111
112
113
114
115
116
117 DO nl=nloadp_f+1, nloadp_f+pblast%NLOADP_B
118
119 abac_id = iloadp(07,
nl)
121 ta_first = fac(07,
nl)
124 is_reset = pblast%PBLAST_TAB(il)%IS_RESET
125 wfext_loc = zero
126 dtmin_loc = ep20
127
128 IF(tt <= t_stop)THEN
129 SELECT CASE(abac_id)
130 CASE(1)
131
133 1 iloadp ,fac ,a ,v ,x ,
134 2 iadc ,fsky ,lloadp ,fext ,noda_surf, noda_pext,
135 3 itab ,h3d_data ,
nl ,dtmin_loc ,wfext_loc,
136 4 th_surf ,nsegpl )
137
138 CASE(2)
139
141 1 iloadp ,fac ,a ,v ,x ,
142 2 iadc ,fsky ,lloadp ,fext ,noda_surf, noda_pext
143 3 itab ,h3d_data ,
nl ,dtmin_loc ,wfext_loc,
144 4 th_surf ,nsegpl )
145 CASE(3)
146
148 1 iloadp ,fac ,a ,v ,x ,
149 2 iadc ,fsky ,lloadp ,fext ,noda_surf, noda_pext,
150 3 itab ,h3d_data ,
nl ,dtmin_loc ,wfext_loc,
151 4 th_surf ,nsegpl )
152
153 END SELECT
154
155 ELSEIF(tt > t_stop)THEN
156 dtmin_loc = ep20
157 IF(.NOT. is_reset)THEN
158
159
160 DO ii = 1,iloadp(1,
nl)/4
161
162 nn(1)=lloadp(iloadp(4,
nl)+4*(ii-1))
163 nn(2)=lloadp(iloadp(4,
nl)+4*(ii-1)+1)
164 nn(3)=lloadp(iloadp(4,
nl)+4*(ii-1)+2)
165 nn(4)=lloadp(iloadp(4,
nl)+4*(ii-1)+3)
166 IF(nn(4) /= 0 .AND.nn(1) /= nn(2) .AND. nn(1) /= nn(3) .AND. nn(1) /= nn(4) .AND.
167 . nn(2) /= nn(3) .AND. nn(2) /= nn(4) .AND. nn(3) /= nn(4) )THEN
168 nnod=4
169 ELSE
170 nnod=3
171 ENDIF
172 DO ijk=1,nnod
173 iad = iadc(iloadp(4,
nl)+4*(ii-1)+(ijk-1))
174 fsky(1:3,iad) = zero
175 ENDDO
176 pblast%PBLAST_TAB(il)%IS_RESET = .true.
177 enddo
178
179 endif
180
181 ENDIF
182
183#include "lockon.inc"
184 wfext = wfext + wfext_loc
185
186
187
188
189 IF(dtmin_loc < pblast%PBLAST_DT%DT)THEN
190 pblast%PBLAST_DT%IDT =
id
191 pblast%PBLAST_DT%DT = dtmin_loc
192 ENDIF
193
194#include "lockoff.inc"
195
197
198 ENDDO
199
200
201
202
OPTION /TH/SURF outputs of Pressure and Area needed Tabs.
subroutine pblast_1(pblast, iloadp, fac, a, v, x, iadc, fsky, lloadp, fext, noda_surf, noda_pext, itab, h3d_data, nl, dtmin_loc, wfext_loc, th_surf, nsegpl)
subroutine pblast_2(pblast, iloadp, fac, a, v, x, iadc, fsky, lloadp, fext, noda_surf, noda_pext, itab, h3d_data, nl, dtmin_loc, wfext_loc, th_surf, nsegpl)
subroutine pblast_3(pblast, iloadp, fac, a, v, x, iadc, fsky, lloadp, fext, noda_surf, noda_pext, itab, h3d_data, nl, dtmin_loc, wfext_loc, th_surf, nsegpl)
character *2 function nl()