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