OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
imp_buck.F File Reference
#include "implicit_f.inc"
#include "com01_c.inc"
#include "com04_c.inc"
#include "com06_c.inc"
#include "com08_c.inc"
#include "com09_c.inc"
#include "com_xfem1.inc"
#include "sphcom.inc"
#include "scr05_c.inc"
#include "scr14_c.inc"
#include "scr17_c.inc"
#include "scr23_c.inc"
#include "param_c.inc"
#include "units_c.inc"
#include "chara_c.inc"
#include "task_c.inc"
#include "spmd_c.inc"
#include "impl1_c.inc"
#include "buckcom.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine imp_buck (pm, geo, ipm, igeo, elbuf, ixs, ixq, ixc, ixt, ixp, ixr, ixtg, ixtg1, iparg, tf, npc, fr_wave, w16, bufmat, thke, bufgeo, nsensor, sensor_tab, rby, skew, wa, icodt, icodr, iskew, ibfv, vel, lpby, npby, itab, weight, ms, in, ipari, intbuf_tab, x, itask, cont, icut, xcut, fint, fext, fopt, anin, nstrf, rwbuf, nprw, tani, dd_iad, eani, ipart, nom_opt, igrsurf, bufsf, idata, rdata, kxx, ixx, kxsp, ixsp, nod2sp, spbuf, ixs10, ixs20, ixs16, vr, monvol, volmon, nodglob, iad_elem, fr_elem, fr_sec, fr_rby2, iad_rby2, fr_wall, v, a, graphe, partsav, xframe, dirul, fncont, ftcont, temp, sh4tree, sh3tree, err_thk_sh4, err_thk_sh3, iframe, lprw, elbuf_tab, fsav, fsavd, rwsav, ar, irbe3, lrbe3, frbe3, fr_i2m, iad_i2m, fr_rbe3m, iad_rbe3m, frwl6, ibcl, forc, irbe2, lrbe2, iad_rbe2, fr_rbe2, weight_md, cluster, fcluster, mcluster, xfem_tab, ale_connect, w, nv46, nercvois, nesdvois, lercvois, lesdvois, crkedge, stack, dimfb, fbsav6, stabsen, tabsensor, indx_crk, xedge4n, xedge3n, sph2sol, stifn, stifr, drape_sh4n, drape_sh3n, h3d_data, subset, igrnod, fcont_max, fncontp2, ftcontp2, nddl0, nnzk0, impbuf_tab, drapeg, matparam_tab, glob_therm, output)
subroutine stobuck (diag_k, lt_k, diag_kg, lt_kg, iadk, jdik, rowind, colptr, value_op, value_k, value_kg, n, sigma)

Function/Subroutine Documentation

◆ imp_buck()

subroutine imp_buck ( pm,
geo,
integer, dimension(npropmi,*) ipm,
integer, dimension(npropgi,*) igeo,
elbuf,
integer, dimension(*) ixs,
integer, dimension(nixq,*) ixq,
integer, dimension(nixc,*) ixc,
integer, dimension(nixt,*) ixt,
integer, dimension(nixp,*) ixp,
integer, dimension(nixr,*) ixr,
integer, dimension(nixtg,*) ixtg,
integer, dimension(4,*) ixtg1,
integer, dimension(nparg,*) iparg,
tf,
integer, dimension(*) npc,
fr_wave,
w16,
bufmat,
thke,
bufgeo,
integer, intent(in) nsensor,
type (sensor_str_), dimension(nsensor) sensor_tab,
rby,
skew,
wa,
integer, dimension(*) icodt,
integer, dimension(*) icodr,
integer, dimension(*) iskew,
integer, dimension(nifv,*) ibfv,
vel,
integer, dimension(*) lpby,
integer, dimension(nnpby,*) npby,
integer, dimension(*) itab,
integer, dimension(*) weight,
ms,
in,
integer, dimension(npari,*) ipari,
type(intbuf_struct_), dimension(*) intbuf_tab,
x,
integer itask,
cont,
integer, dimension(*) icut,
xcut,
fint,
fext,
fopt,
anin,
integer, dimension(*) nstrf,
rwbuf,
integer, dimension(*) nprw,
tani,
integer, dimension(nspmd+1,*) dd_iad,
eani,
integer, dimension(*) ipart,
integer, dimension(lnopt1,*) nom_opt,
type (surf_), dimension(nsurf) igrsurf,
bufsf,
integer, dimension(*) idata,
rdata,
integer, dimension(nixx,*) kxx,
integer, dimension(*) ixx,
integer, dimension(nisp,*) kxsp,
integer, dimension(kvoisph,*) ixsp,
integer, dimension(*) nod2sp,
spbuf,
integer, dimension(6,*) ixs10,
integer, dimension(12,*) ixs20,
integer, dimension(8,*) ixs16,
vr,
integer, dimension(*) monvol,
volmon,
integer, dimension(*) nodglob,
integer, dimension(2,*) iad_elem,
integer, dimension(*) fr_elem,
integer, dimension(nspmd+1,*) fr_sec,
integer, dimension(3,*) fr_rby2,
integer, dimension(4,*) iad_rby2,
integer, dimension(*) fr_wall,
v,
a,
type(prgraph), dimension(*) graphe,
partsav,
xframe,
integer, dimension(*) dirul,
fncont,
ftcont,
temp,
integer, dimension(*) sh4tree,
integer, dimension(*) sh3tree,
err_thk_sh4,
err_thk_sh3,
integer, dimension(liskn,*) iframe,
integer, dimension(*) lprw,
type (elbuf_struct_), dimension(ngroup), target elbuf_tab,
fsav,
fsavd,
rwsav,
ar,
integer, dimension(*) irbe3,
integer, dimension(*) lrbe3,
frbe3,
integer, dimension(*) fr_i2m,
integer, dimension(*) iad_i2m,
integer, dimension(*) fr_rbe3m,
integer, dimension(*) iad_rbe3m,
double precision, dimension(*) frwl6,
integer, dimension(*) ibcl,
forc,
integer, dimension(*) irbe2,
integer, dimension(*) lrbe2,
integer, dimension(*) iad_rbe2,
integer, dimension(*) fr_rbe2,
integer, dimension(*) weight_md,
type (cluster_), dimension(ncluster) cluster,
fcluster,
mcluster,
type (elbuf_struct_), dimension(ngroup,nxel) xfem_tab,
type(t_ale_connectivity), intent(in) ale_connect,
w,
integer nv46,
integer, dimension(*) nercvois,
integer, dimension(*) nesdvois,
integer, dimension(*) lercvois,
integer, dimension(*) lesdvois,
type (xfem_edge_), dimension(*) crkedge,
type (stack_ply) stack,
integer dimfb,
double precision, dimension(12,6,dimfb) fbsav6,
integer stabsen,
integer, dimension(*) tabsensor,
integer, dimension(*) indx_crk,
integer, dimension(4,*) xedge4n,
integer, dimension(3,*) xedge3n,
integer, dimension(*) sph2sol,
stifn,
stifr,
type(drape_), dimension(numelc_drape) drape_sh4n,
type(drape_), dimension(numeltg_drape) drape_sh3n,
type(h3d_database) h3d_data,
type (subset_), dimension(nsubs) subset,
type (group_), dimension(ngrnod) igrnod,
fcont_max,
fncontp2,
ftcontp2,
integer nddl0,
integer nnzk0,
type (impbuf_struct_), target impbuf_tab,
type(drapeg_) drapeg,
type (matparam_struct_), dimension(nummat), intent(in) matparam_tab,
type (glob_therm_), intent(inout) glob_therm,
type(output_), intent(inout) output )

Definition at line 72 of file imp_buck.F.

106C-----------------------------------------------
107C M o d u l e s
108C-----------------------------------------------
109 USE dsgraph_mod
110 USE imp_workg
111 USE message_mod
112 USE elbufdef_mod
113 USE cluster_mod
114 USE intbufdef_mod
115 USE crackxfem_mod
116 USE stack_mod
117 USE h3d_mod
118 USE groupdef_mod
119 USE multi_fvm_mod
120 USE drape_mod
122 USE impbufdef_mod
123 USE sensor_mod
124 USE anim_mod
125 USE matparam_def_mod
126 use glob_therm_mod
127 USE output_mod , ONLY : output_
128C-----------------------------------------------
129C I m p l i c i t T y p e s
130C-----------------------------------------------
131#include "implicit_f.inc"
132C-----------------------------------------------
133C C o m m o n B l o c k s
134C-----------------------------------------------
135#include "com01_c.inc"
136#include "com04_c.inc"
137#include "com06_c.inc"
138#include "com08_c.inc"
139#include "com09_c.inc"
140#include "com_xfem1.inc"
141#include "sphcom.inc"
142#include "scr05_c.inc"
143#include "scr14_c.inc"
144#include "scr17_c.inc"
145#include "scr23_c.inc"
146#include "param_c.inc"
147#include "units_c.inc"
148#include "chara_c.inc"
149#include "task_c.inc"
150#include "spmd_c.inc"
151#include "impl1_c.inc"
152#include "buckcom.inc"
153#if defined(MUMPS5)
154#include "dmumps_struc.h"
155#endif
156C-----------------------------------------------
157C D u m m y A r g u m e n t s
158C-----------------------------------------------
159 INTEGER ,INTENT(IN) :: NSENSOR
160 INTEGER NDDL0, NNZK0, IPM(NPROPMI,*),IGEO(NPROPGI,*),
161 . IXS(*), IXQ(NIXQ,*), IXC(NIXC,*), IXT(NIXT,*),
162 . IXP(NIXP,*),IXR(NIXR,*),IXTG(NIXTG,*),INDX_CRK(*),
163 . IXTG1(4,*), IPARG(NPARG,*),
164 . NPC(*), ICODT(*), ICODR(*), ISKEW(*), IBFV(NIFV,*),
165 . LPBY(*), NPBY(NNPBY,*), ITAB(*),
166 . WEIGHT(*),IPARI(NPARI,*),ITASK, ICUT(*), NSTRF(*), NPRW(*),
167 . DD_IAD(NSPMD+1,*), IPART(*),
168 . NOM_OPT(LNOPT1,*), IDATA(*),KXX(NIXX,*),
169 . IXX(*), KXSP(NISP,*), IXSP(KVOISPH,*), NOD2SP(*),
170 . IXS10(6,*), IXS20(12,*), IXS16(8,*), MONVOL(*),
171 . NODGLOB(*), IAD_ELEM(2,*), FR_ELEM(*),
172 . FR_SEC(NSPMD+1,*), FR_RBY2(3,*), IAD_RBY2(4,*),
173 . FR_WALL(*),DIRUL(*),SH4TREE(*),SH3TREE(*),
174 . WEIGHT_MD(*),NV46,NERCVOIS(*),NESDVOIS(*),LERCVOIS(*),
175 . LESDVOIS(*),XEDGE4N(4,*),XEDGE3N(3,*),SPH2SOL(*)
176 INTEGER IFRAME(LISKN,*),LPRW(*), IRBE3(*),LRBE3(*),
177 . FR_I2M(*),IAD_I2M(*),FR_RBE3M(*),IAD_RBE3M(*),IBCL(*),
178 . IRBE2(*),LRBE2(*),IAD_RBE2(*),FR_RBE2(*),
179 . DIMFB,STABSEN,TABSENSOR(*)
180 my_real
181 . pm(npropm,*), geo(npropg,*),
182 . elbuf(*), tf(*), w16(*), bufmat(*),
183 . thke(*), bufgeo(*),rby(*),
184 . skew(lskew,*), wa(*), vel(lfxvelr,*), ms(*),
185 . in(*),fr_wave(*), cont(3,*),
186 . xcut(*), fint(*), fext(3,*), fopt(6,*), anin(*), rwbuf(*),
187 . tani(*), eani(*), bufsf(*), rdata(*), spbuf(*), vr(3,*),
188 . volmon(*), x(3,*), v(3,*), a(3,*), partsav(npsav,*),
189 . xframe(nxframe,*),
190 . fncont(3,*),ftcont(3,*),temp(*), err_thk_sh4(*),
191 . err_thk_sh3(*),frbe3(*),forc(*),fcluster(*),mcluster(*),
192 . fncontp2(3,*) ,ftcontp2(3,*)
193 my_real
194 . fsav(nthvki,*) ,fsavd(nthvki,*), rwsav(*),ar(3,*),w(*),
195 . stifn(*),stifr(*),fcont_max(*)
196 TYPE(PRGRAPH) :: GRAPHE(*)
197 double precision
198 . frwl6(*)
199 double precision
200 . fbsav6(12,6,dimfb)
201 TYPE (ELBUF_STRUCT_), DIMENSION(NGROUP), TARGET :: ELBUF_TAB
202 TYPE (ELBUF_STRUCT_), DIMENSION(NGROUP,NXEL) :: XFEM_TAB
203 TYPE (CLUSTER_) ,DIMENSION(NCLUSTER) :: CLUSTER
204 TYPE(INTBUF_STRUCT_) INTBUF_TAB(*)
205 TYPE (XFEM_EDGE_) , DIMENSION(*) :: CRKEDGE
206 TYPE (STACK_PLY) :: STACK
207 TYPE(H3D_DATABASE) :: H3D_DATA
208 TYPE (SUBSET_) , DIMENSION(NSUBS) :: SUBSET
209 TYPE (GROUP_) , DIMENSION(NGRNOD) :: IGRNOD
210 TYPE (SURF_) , DIMENSION(NSURF) :: IGRSURF
211 TYPE(DRAPE_) :: DRAPE_SH4N(NUMELC_DRAPE), DRAPE_SH3N(NUMELTG_DRAPE)
212 TYPE(t_ale_connectivity), INTENT(IN) :: ALE_CONNECT
213 TYPE (IMPBUF_STRUCT_) ,TARGET :: IMPBUF_TAB
214 TYPE (SENSOR_STR_) ,DIMENSION(NSENSOR) :: SENSOR_TAB
215 TYPE(DRAPEG_) :: DRAPEG
216 TYPE (MATPARAM_STRUCT_) ,DIMENSION(NUMMAT) ,INTENT(IN) :: MATPARAM_TAB
217 type (glob_therm_) ,intent(inout) :: glob_therm
218 TYPE(OUTPUT_),INTENT(INOUT) :: OUTPUT
219#if defined(MUMPS5) && defined(DNC)
220C-----------------------------------------------
221C L o c a l V a r i a b l e s
222C-----------------------------------------------
223 TYPE(DMUMPS_STRUC) MUMPS_PAR
224 INTEGER I, NM, NMMAX, MAXITR, N, MAXNCV, NEV, NCV, MAXN,
225 . MAXNEV, LDV, ISHFTS, MODE, INFO, PRSP,
226 . NEL3D, NEL2D, NEL1D, NEL, N1, N2, N3, N4, N5, N6, N7, N8,
227 . N9, N10, K1, K2, K3, K4, K5, K6, K7, K8, K9, K10, K11, L1,
228 . L2, L3, LI1, LI2, LI3, LI4, LI5, LI6, LI7, LI8, LI9, LI10,
229 . LI11, LI12,LI13,LI14,LI15, NT_RW, IPRI, NDDL_INI0,K12,
230 . SN1,SN2,SN3,SN4,SN5,SN6,SN7,SN8,SN9,NELG,
231 . SKUIX, SKXUSR ,SKFACPTX,SKXEDGE,SKXFACET,SKXSOLID,SKNUMX1,
232 . SKNUMX2,SKNUMX3,SKOFFX1,SKOFFX2,SKOFFX3,SKMASS1,SKMASS2,
233 . SKMASS3,SKFUNC1,SKFUNC2,SKFUNC3,SKFIN,
234 . IBID, IBID1, IBID2, INFO_FAC, J, NNZL, NTMP,
235 . NNMAX, NKMAX, IWKLI, IPMESS, IOPT, IRQTAG, MSGOFF, NDDLC,
236 . INO, II, NBLF, LTITR1, LENG, NDDLI7, MULTN(NUMNOD),
237 . MULTD(NDDL0), IACTI(NDDL0), CDDLP(NDDL0), JJ, ND, ID, NKC,
238 . NDDLG0, NNZKG0, NDDLG, NNZKG, NNMAXG, NDDL0P(NSPMD),
239 . NNZK0P(NSPMD), NDDLP(NSPMD), NNZKP(NSPMD), NKLOC,NNDL,
240 . NKFRONT, NKFLOC, NZLOC, NNZ, NNMAXP(NSPMD), NN,RIBID(1),IBID_(1)
241 my_real
242 . shift, tol, cmax, x0(3,numnod), d(3,numnod), dr(3,numnod),
243 . dmax, scale, rbid, bbid(nddl0), cmaxp, dmaxp, mass(nddl0),
244 . tol0, rrbid(1)
245 CHARACTER*2 WHICH, TITRE*80
246 INTEGER, DIMENSION(:), ALLOCATABLE :: ROWIND, COLPTR
247 INTEGER, DIMENSION(:,:), ALLOCATABLE :: ITK
248 my_real
249 . , DIMENSION(:), ALLOCATABLE :: value_op,
250 . value_k, value_kg,
251 . diag_op, lt_op, rtk
252 my_real
253 . , DIMENSION(:,:), ALLOCATABLE :: vect, eig, vectd
254 INTEGER, POINTER :: NDDL,NNZK,NRBYAC,NINT2,NMC,NMC2,NMONV
255 INTEGER, DIMENSION(:) ,POINTER :: IADK,JDIK
256 INTEGER, DIMENSION(:) ,POINTER :: IDDL,NDOF,INLOC,LSIZE,IKC,
257 . IRBYAC,NSC,IINT2,NKUD,IMONV,
258 . IKINW,IKUD
259 my_real, DIMENSION(:) ,POINTER :: diag_k,lt_k,bkud,elbuf_c,bufmat_c
260 my_real, DIMENSION(:) ,POINTER :: d_imp,dr_imp, lb
261 TYPE(MULTI_FVM_STRUCT) :: MULTI_FVM
262 DATA msgoff /100000/
263C-----------------------------------------------
264 nddl => impbuf_tab%NDDL
265 nnzk => impbuf_tab%NNZK
266 nrbyac => impbuf_tab%NRBYAC
267 nint2 => impbuf_tab%NINT2
268 nmc => impbuf_tab%NMC
269 nmc2 => impbuf_tab%NMC2
270 nmonv => impbuf_tab%NMONV
271 iadk => impbuf_tab%IADK
272 jdik => impbuf_tab%JDIK
273 iddl => impbuf_tab%IDDL
274 ndof => impbuf_tab%NDOF
275 inloc => impbuf_tab%INLOC
276 lsize => impbuf_tab%LSIZE
277 irbyac => impbuf_tab%IRBYAC
278 nsc => impbuf_tab%NSC
279 iint2 => impbuf_tab%IINT2
280 nkud => impbuf_tab%NKUD
281 imonv => impbuf_tab%IMONV
282 ikinw => impbuf_tab%IKINW
283 ikc => impbuf_tab%IKC
284 ikud => impbuf_tab%IKUD
285C
286 diag_k =>impbuf_tab%DIAG_K
287 lt_k =>impbuf_tab%LT_K
288 bkud =>impbuf_tab%BKUD
289 d_imp =>impbuf_tab%D_IMP
290 dr_imp =>impbuf_tab%DR_IMP
291 elbuf_c =>impbuf_tab%ELBUF_C
292 bufmat_c=>impbuf_tab%BUFMAT_C
293 lb =>impbuf_tab%LB
294C------------------------------------------------------------
295 l1 = 1+nixs*numels
296 l2 = l1+6*numels10
297 l3 = l2+12*numels20
298citask0 IF (ITASK == 0) THEN
299
300 IF (ispmd==0) THEN
301 WRITE(iout,*)
302 WRITE(iout,*)' ** BUCKLING MODES COMPUTATION **'
303 WRITE(istdo,*)
304 WRITE(istdo,*)' ** BUCKLING MODES COMPUTATION **'
305 WRITE(iout,*)
306 WRITE(istdo,*)
307 ENDIF
308 nddli7=0
309 ibid=0
310 ribid(1) = 0
311 rrbid(1) = zero
312C
313 IF (ibuckl==0) THEN
314 IF (nrwall>0) THEN
315 CALL ancmsg(msgid=75,anmode=aninfo,
316 . c1='RIGID WALLS')
317 CALL arret(2)
318 ENDIF
319 nt_rw=0
320 DO i=1,numnod
321 n1 = 3*(i-1)+1
322 n2 = 3*(i-1)+2
323 n3 = 3*(i-1)+3
324 x(1,i)=x(1,i)-d_imp(n1)
325 x(2,i)=x(2,i)-d_imp(n2)
326 x(3,i)=x(3,i)-d_imp(n3)
327 ENDDO
328 CALL zeror(v,numnod)
329 CALL zeror(a,numnod)
330 ENDIF
331C Calcul de la matrice de rigidite geometrique
332 ALLOCATE(diag_kg(nddl0), lt_kg(nnzk0))
333 diag_kg=zero
334 lt_kg =zero
335 nddl=nddl0
336 nnzk=nnzk0
337 nddl_l = nddl
338 nnmax=lsize(9)
339 nkmax=lsize(10)
340 nmc2=lsize(11)
341C
342 li1 =1
343 li2 = li1+lsize(4)
344 li3 = li2+lsize(5)
345 li4 = li3+lsize(1)
346 li5 = li4+lsize(3)
347 li6 = li5+lsize(7)
348 li7 = li6+lsize(2)
349 li8 = li7+lsize(6)
350 li9 = li8+nint2
351 li10 = li9+lsize(8)
352 li11 = li10+(lsize(8)-lcokm)*lsize(9)
353 li12 = li11+lcokm*lsize(10)
354 li13 = li12+4*lsize(11)
355 li14 = li13+lsize(14)
356 li15 = li14+lsize(15)
357C
358 ntmp=0
359
360citask0citask0 END IF !(ITASK == 0) THEN
361
362 IF (ibuckl>0) THEN
363
364citask0 IF (ITASK == 0) THEN
365
366 IF(nfxvel/=0) THEN
367 CALL fv_imp(ibfv ,npc ,tf ,vel ,sensor_tab,
368 1 d_imp ,dr_imp ,ikc ,iddl ,nsensor ,
369 2 skew ,iframe ,xframe ,v ,vr ,
370 3 x ,dirul ,ndof ,a ,ar )
371 ENDIF
372C-------------
373 nt_rw=0
374 imconv = 1
375 IF (nrwall>0) THEN
376 CALL rgwal0_imp(
377 1 x ,d_imp ,v ,rwbuf ,lprw ,
378 2 nprw ,ms ,fsav(1,ninter+1),fr_wall ,
379 3 fopt ,rwsav ,weight ,
380 4 fsavd(1,ninter+1),
381 5 nt_rw ,iddl ,ikc ,imconv,ndof,frwl6,
382 6 weight_md ,dimfb , fbsav6,stabsen,tabsensor, output%TH%WFEXT, output%TH%WFEXT_MD)
383 IF(nt_rw>0) THEN
384 CALL fv_rw(iddl ,ikc ,ndof ,d_imp ,v )
385 ENDIF
386 ENDIF
387
388citask0 END IF !(ITASK == 0) THEN
389C
390 ngdone = 1
391 ikg=0
392C /---------------/
393c CALL MY_BARRIER
394C /---------------/
395 CALL imp_glob_khp(
396 1 pm ,geo ,ipm ,igeo ,elbuf ,
397 2 ixs ,ixq ,ixc ,ixt ,ixp ,
398 3 ixr ,ixtg ,ixtg1 ,ixs(l1) ,
399 4 ixs(l2) ,ixs(l3) ,iparg ,tf ,npc ,
400 5 fr_wave ,w16 ,bufmat ,thke ,bufgeo ,
401 6 rby ,skew ,x ,
402 7 wa ,iddl ,ndof ,diag_k ,lt_k ,
403 8 iadk ,jdik ,ikg ,ibid ,itask ,
404 9 elbuf_tab ,stack ,drape_sh4n, drape_sh3n ,drapeg )
405C /---------------/
406c CALL MY_BARRIER
407C /---------------/
408
409citask0 IF (ITASK == 0) THEN
410
411 CALL upd_glob_k(
412 1 icodt ,icodr ,iskew ,ibfv ,npc ,
413 2 tf ,vel ,xframe ,
414 3 rby ,x ,skew ,lpby ,npby ,
415 4 itab ,weight ,ms ,in ,nrbyac ,
416 5 irbyac ,nsc ,ikinw(li1),nmc ,ikinw(li2),
417 6 ikinw(li3),ikinw(li4),nint2 ,iint2 ,ikinw(li8),
418 7 ikinw(li5),ikinw(li6),ikinw(li7),ipari ,intbuf_tab,
419 8 nddl ,nnzk ,iadk ,jdik ,
420 9 diag_k ,lt_k ,ndof ,iddl ,ikc ,
421 a d_imp ,lb ,nkud ,ikud ,bkud ,
422 b nmc2 ,ikinw(li12),nt_rw ,dr_imp ,dirul ,
423 c irbe3 ,lrbe3 ,frbe3 ,ikinw(li13),irbe2 ,
424 d lrbe2 ,ikinw(li14),ikinw(li15))
425C
426 IF (nspmd>1) THEN
427 CALL upd_fr_k(
428 1 iadk ,jdik ,ndof ,ikc ,iddl ,
429 2 inloc ,fr_elem ,iad_elem ,nddl )
430 ENDIF
431 nddl=nddl0
432 nnzk=nnzk0
433
434citask0 END IF !(ITASK == 0) THEN
435
436 ENDIF !IF (IBUCKL>0) THEN
437citask0 IF (ITASK == 0) THEN
438 CALL ind_glob_k(npby ,lpby ,
439 1 itab ,nrbyac ,irbyac ,nsc ,ikinw(li1),
440 2 nmc ,ikinw(li2),ikinw(li3),ikinw(li4),nint2 ,
441 3 iint2 ,ipari ,intbuf_tab ,ikinw(li8),ikinw(li5),
442 4 ikinw(li6),ikinw(li7),iparg ,elbuf ,elbuf_tab ,
443 5 ixs ,ixq ,ixc ,ixt ,ixp ,
444 6 ixr ,ixtg ,ixtg1 ,ixs(l1) ,ixs(l2) ,
445 7 ixs(l3) ,iddl ,ndof ,iadk ,
446 8 jdik ,nddl ,nnzk ,nnmax ,lsize(8) ,
447 9 inloc ,nkmax ,ikinw(li9),ikinw(li10),ikinw(li11),
448 a nmc2 ,ikinw(li12),ntmp ,lsize(12) ,lsize(13) ,
449 b fr_elem ,iad_elem ,ipm ,igeo ,irbe3 ,
450 c lrbe3 ,ikinw(li13),fr_i2m ,iad_i2m ,fr_rbe3m ,
451 d iad_rbe3m ,irbe2 ,lrbe2 ,ikinw(li14),ikinw(li15))
452citask0 END IF !(ITASK == 0) THEN
453C
454 ngdone = 1
455 ikg=1
456C /---------------/
457c CALL MY_BARRIER
458C /---------------/
459 CALL imp_glob_khp(
460 1 pm ,geo ,ipm ,igeo ,elbuf ,
461 2 ixs ,ixq ,ixc ,ixt ,ixp ,
462 3 ixr ,ixtg ,ixtg1 ,ixs(l1) ,
463 4 ixs(l2) ,ixs(l3) ,iparg ,tf ,npc ,
464 5 fr_wave ,w16 ,bufmat ,thke ,bufgeo ,
465 6 rby ,skew ,x ,
466 7 wa ,iddl ,ndof ,diag_kg ,lt_kg ,
467 8 iadk ,jdik ,ikg ,ibid ,itask ,
468 9 elbuf_tab ,stack ,drape_sh4n, drape_sh3n ,drapeg )
469C /---------------/
470c CALL MY_BARRIER
471C /---------------/
472
473citask0 IF (ITASK == 0) THEN
474
475C--------include load-stiffness matrix-in Kg---------
476 IF (ikpres>0) THEN
477 CALL imp_kpres(ibcl ,forc ,npc ,tf ,x ,
478 2 skew ,nsensor,sensor_tab,weight,ibid ,
479 3 iddl ,ndof ,iadk ,jdik ,diag_kg,
480 4 lt_kg )
481 END IF
482 CALL upd_glob_k(
483 1 icodt ,icodr ,iskew ,ibfv ,npc ,
484 2 tf ,vel ,xframe ,
485 3 rby ,x ,skew ,lpby ,npby ,
486 4 itab ,weight ,ms ,in ,nrbyac ,
487 5 irbyac ,nsc ,ikinw(li1),nmc ,ikinw(li2),
488 6 ikinw(li3),ikinw(li4),nint2 ,iint2 ,ikinw(li8),
489 7 ikinw(li5),ikinw(li6),ikinw(li7),ipari ,intbuf_tab,
490 8 nddl ,nnzk ,iadk ,jdik ,
491 9 diag_kg ,lt_kg ,ndof ,iddl ,ikc ,
492 a d_imp ,lb ,nkud ,ikud ,bkud ,
493 b nmc2 ,ikinw(li12),nt_rw ,dr_imp ,dirul ,
494 c irbe3 ,lrbe3 ,frbe3 ,ikinw(li13),irbe2 ,
495 d lrbe2 ,ikinw(li14),ikinw(li15))
496C
497 IF (nspmd>1) THEN
498 CALL upd_fr_k(
499 1 iadk ,jdik ,ndof ,ikc ,iddl ,
500 2 inloc ,fr_elem ,iad_elem ,nddl )
501 ENDIF
502C
503 DO i=1,nddl
504 diag_kg(i)=-(diag_kg(i)-diag_k(i))
505 ENDDO
506 DO i=1,nnzk
507 lt_kg(i)=-(lt_kg(i)-lt_k(i))
508 ENDDO
509C
510 IF (bisolv>=2) THEN
511 WRITE(6,*) "/IMPL/GRAPH is deprecated"
512 CALL arret(5)
513 ENDIF
514C Calcul des charges critiques et des modes de flambement
515 nm=bincv
516 nmmax=bmaxncv
517 maxitr=bniter
518 n=nddl
519 maxncv=nmmax*nbuck
520 shift=shftbuck
521 nev=nbuck
522 ncv=nm*nev
523C
524 IF (nspmd==1) ncv=min(ncv,n)
525 maxn=n
526 maxnev=nev
527 ldv=maxn
528 which='LM'
529 ishfts=1
530 mode=4
531 info=0
532 tol=zero
533 ipri=bipri
534C
535 ALLOCATE(vect(ldv,maxncv), eig(maxncv,2))
536C
537c IF (BISOLV==1.AND.NSPMD==1) THEN
538cC Resolution BCS (mono)
539c WRITE(6,*) "BCS Solver not available"
540c CALL FLUSH(6)
541c CALL ARRET(5)
542C
543 IF (bisolv==1) THEN
544C Resolution MUMPS (SPMD)
545 ALLOCATE(diag_op(nddl), lt_op(nnzk))
546 DO i=1,nddl
547 diag_op(i)=diag_k(i)-shift*diag_kg(i)
548 ENDDO
549 DO i=1,nnzk
550 lt_op(i)=lt_k(i)-shift*lt_kg(i)
551 ENDDO
552C
553 DO i=1,numnod
554 multn(i)=1
555 ENDDO
556 DO i=1,nspmd
557 IF (i==ispmd+1) cycle
558 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
559 jj=fr_elem(j)
560 multn(jj)=multn(jj)+1
561 ENDDO
562 ENDDO
563 nkc=0
564 DO nn=1,numnod
565 i=inloc(nn)
566 DO j=1,ndof(i)
567 nd=iddl(i)+j
568 id=nd-nkc
569 IF (ikc(nd)<1) THEN
570 multd(id)=multn(i)
571 ELSE
572 nkc=nkc+1
573 ENDIF
574 ENDDO
575 ENDDO
576C
577 CALL spmd_mumps_ini(mumps_par, 2)
578C
579 mumps_par%ICNTL(3)=iout
580 mumps_par%ICNTL(4)=1
581 IF (nspmd>1) THEN
582 mumps_par%ICNTL(18)=3
583C
584 nddlg0 = nddl0
585 nnzkg0 = 0
586 nddlg = nddl
587 nnzkg = nnzk
588 nnmaxg = 0
589 CALL spmd_inf_g(
590 1 nddlg0 ,nnzkg0 ,nddlg ,nnzkg ,nnmaxg ,
591 2 nddl0p ,nnzk0p ,nddlp ,nnzkp ,nnmaxp )
592C
593 CALL spmd_cddl(nddl, nodglob, iddl, ndof, cddlp,
594 . inloc, ikc, nddlg, nddlp)
595C
596 ALLOCATE(itk(2,nddl+nnzk), rtk(nddl+nnzk))
597C
598 DO i=1,nddl
599 iacti(i)=i
600 ENDDO
601C
602 CALL ini_kic
603 CALL mumps_set2(
604 . iadk, jdik, diag_op, lt_op, cddlp,
605 . nkloc, nkfront, itk, rtk, iddl,
606 . inloc, iad_elem, fr_elem, ndof, ikc,
607 . nddl, nnzk, iacti , nddli7,nddli7,
608 . ibid , ibid , ibid , rbid, rbid )
609C
610c CALL SPMD_MUMPS_FRONT(
611c . ITK, RTK, NKFRONT, NKFLOC, NKLOC,
612c . NDDLG, 1 )
613C
614 nkfloc = 0
615 nzloc=nkloc+nkfloc
616 ALLOCATE(mumps_par%A_LOC(nzloc),
617 . mumps_par%IRN_LOC(nzloc),
618 . mumps_par%JCN_LOC(nzloc))
619 IF (ispmd==0) THEN
620 ALLOCATE(mumps_par%RHS(nddlg))
621 ELSE
622 ALLOCATE(mumps_par%RHS(0))
623 ENDIF
624 mumps_par%N=nddlg
625 mumps_par%NZ_LOC=nzloc
626C
627 DO i=1,nzloc
628 mumps_par%IRN_LOC(i)=itk(1,i)
629 mumps_par%JCN_LOC(i)=itk(2,i)
630 mumps_par%A_LOC(i)=rtk(i)
631 ENDDO
632 DEALLOCATE(itk, rtk)
633 ELSE
634 mumps_par%ICNTL(18)=0
635C
636 DO i=1,nddl
637 cddlp(i)=i
638 ENDDO
639C
640 ALLOCATE(mumps_par%A(nddl+nnzk),
641 . mumps_par%IRN(nddl+nnzk),
642 . mumps_par%JCN(nddl+nnzk),
643 . mumps_par%RHS(nddl))
644C
645 nnz=0
646 DO i=1,nddl
647 nnz=nnz+1
648 mumps_par%IRN(nnz)=i
649 mumps_par%JCN(nnz)=i
650 mumps_par%A(nnz)=diag_op(i)
651 DO j=iadk(i),iadk(i+1)-1
652 jj=jdik(j)
653 nnz=nnz+1
654 mumps_par%IRN(nnz)=i
655 mumps_par%JCN(nnz)=jj
656 mumps_par%A(nnz)=lt_op(j)
657 ENDDO
658 ENDDO
659C
660 IF (ispmd==0) THEN
661 WRITE(istdo,*)
662 WRITE(istdo,'(A21,I8,A8,I8)')
663 . ' MUMPS DIM : NNZ =',nnz,' NNZFR =',0
664 ENDIF
665C
666 mumps_par%N=nddl
667 mumps_par%NZ=nnz
668 nddlg=nddl
669 ENDIF
670C
671#ifdef DNC
672 CALL eigbuckp(n, nev, ncv, which, info,
673 . maxn, maxnev, maxncv, ldv, ishfts,
674 . maxitr, mode, tol, iadk, jdik,
675 . diag_k, lt_k, diag_kg, lt_kg, eig,
676 . vect, ipri, shift, mumps_par, cddlp,
677 . nddl, multd )
678#endif
679C
680 DEALLOCATE(diag_op, lt_op)
681 ELSEIF (bisolv==2) THEN
682 WRITE(6,*) "/IMPL/GRAPH is deprecated"
683 CALL arret(5)
684 ENDIF
685C Sortie des charges critiques dans le listing pour les solveur 1 et 2
686 IF ((nspmd==1.OR.ispmd==0).AND.bisolv==1) THEN
687 WRITE(iout,'(A6,1PG11.4,A35,I10)')
688 . 'SHIFT ',shift,' NUMBER OF BUCKLING CRITICAL LOADS ',nbuck
689 WRITE(iout,'(A)') ' CRITICAL LOADS:'
690 WRITE(iout,'(A)') ' NUMBER CRITICAL LOAD'
691 DO i=1,nbuck
692 WRITE(iout,'(5X,I10,4X,1PG11.4)') i,eig(i,1)
693 ENDDO
694 WRITE(iout,*)
695 ENDIF
696C Sortie des modes de flambement sur l'ANIM et/ou sur OUTP
697 cmax=zero
698 DO i=1,numnod
699 x0(1,i)=x(1,i)
700 x0(2,i)=x(2,i)
701 x0(3,i)=x(3,i)
702 cmax=max(cmax,abs(x(1,i)))
703 cmax=max(cmax,abs(x(2,i)))
704 cmax=max(cmax,abs(x(3,i)))
705 ENDDO
706C
707 IF (nspmd>1) THEN
708 IF (ispmd==0) THEN
709 DO i=1,nspmd-1
710 irqtag=msgoff + i
711 CALL spmd_ds_rrecv(cmaxp, 1, irqtag, i+1)
712 cmax=max(cmax,cmaxp)
713 ENDDO
714 ELSE
715 irqtag=msgoff + ispmd
716 CALL spmd_ds_rsend(cmax, 1, irqtag, 1)
717 ENDIF
718 CALL spmd_rbcast(cmax, cmax, 1, 1, 0, 2)
719 ENDIF
720C
721 nel3d = numels + numsph + 3*numels16
722 nel2d = numelc + numeltg + numelq
723 nel1d = numelt + numelp + 2*numelr + nanim1d
724 nel = max(nel1d,nel2d,nel3d)
725 nelg = max( numelsg+3*numels16g+numsphg,
726 . numelcg+numeltgg+numelqg,
727 . numeltg + numelpg + 2*numelrg)
728C
729 sn1 = max(3*numnod,6*nel3d,3*nel2d,9*nel1d,numsph)
730 sn2 = nel+3*numels16+numsph
731 sn3 = 3 * numnod + 2*numels16
732 sn4 = npart + 1
733 sn5 = nel2d
734 sn6 = npart
735 sn7 = nelg+1
736C
737 n1 = 1
738 n2 = n1 + max(3*numnod,6*nel3d,3*nel2d,9*nel1d)
739 n3 = n2 + nel
740 n4 = n3 + 3 * numnod
741 n5 = n4 + npart + 1
742 n6 = n5 + nel2d
743 n7 = n6 + npart
744 n8 = n7 + nel + 1
745 IF (numelx>0) THEN
746 skuix = 2*maxnx
747 skxusr = 3*maxnx
748 skfacptx = npart
749 skxedge = 2*nanim1d
750 skxfacet = 4*nanim2d
751 skxsolid = 8*nanim3d
752 sknumx1 = nanim1d
753 sknumx2 = nanim2d
754 sknumx3 = nanim3d
755 skoffx1 = nanim1d
756 skoffx2 = nanim2d
757 skoffx3 = nanim3d
758 skmass1 = nanim1d
759 skmass2 = nanim2d
760 skmass3 = nanim3d
761 skfunc1 = 10*nanim1d
762 skfunc2 = 10*nanim2d
763 skfunc3 = 10*nanim3d
764 ELSE
765 skuix = 1
766 skxusr = 1
767 skfacptx = 1
768 skxedge = 1
769 skxfacet = 1
770 skxsolid = 1
771 sknumx1 = 1
772 sknumx2 = 1
773 sknumx3 = 1
774 skoffx1 = 1
775 skoffx2 = 1
776 skoffx3 = 1
777 skmass1 = 1
778 skmass2 = 1
779 skmass3 = 1
780 skfunc1 = 1
781 skfunc2 = 1
782 skfunc3 = 1
783 ENDIF
784 sn9 = npart
785C
786 k1=1+lipart1*(npart+nthpart)+2*9*(npart+nthpart)
787 k2=k1+numels
788 k3=k2+numelq
789 k4=k3+numelc
790 k5=k4+numelt
791 k6=k5+numelp
792 k7=k6+numelr
793 k8=k7
794 k9=k8+numeltg
795 k10=k9+numelx
796 k11=k10+numsph
797 k12=k11+numelig3d
798 l1=1+6*(numelc+numeltg)*iepsdot
799C------------D,DR peut utiliser D_IMP,DR_IMP---
800 DO i=1,numnod
801 d(1,i)=zero
802 d(2,i)=zero
803 d(3,i)=zero
804 dr(1,i)=zero
805 dr(2,i)=zero
806 dr(3,i)=zero
807 ENDDO
808C
809 DO i=1,nbuck
810 CALL recudis(nddl, iddl, ndof, ikc, vect(1,i),
811 . d, dr, inloc)
812C
813 CALL recukin(rby, lpby, npby, skew, iskew,
814 . itab, weight, ms, in,
815 . ibfv, vel, icodt , icodr,
816 . nrbyac, irbyac, nint2, iint2, ipari,
817 . intbuf_tab , ndof, d, dr,
818 . x , xframe , dirul, ixr ,ixc ,
819 . ixtg ,sh4tree ,sh3tree, irbe3 ,lrbe3,
820 7 frbe3 , irbe2 ,lrbe2 )
821C
822 dmax=zero
823 DO j=1,numnod
824 dmax=max(dmax,abs(d(1,j)))
825 dmax=max(dmax,abs(d(2,j)))
826 dmax=max(dmax,abs(d(3,j)))
827 ENDDO
828C
829 IF (nspmd>1) THEN
830 IF (ispmd==0) THEN
831 DO j=1,nspmd-1
832 irqtag=msgoff + nspmd + j
833 CALL spmd_ds_rrecv(dmaxp, 1, irqtag, j+1)
834 dmax=max(dmax,dmaxp)
835 ENDDO
836 scale=zero
837 IF (dmax>zero) scale=one/dmax
838 ELSE
839 irqtag=msgoff + nspmd + ispmd
840 CALL spmd_ds_rsend(dmax, 1, irqtag, 1)
841 ENDIF
842 CALL spmd_rbcast(scale, scale, 1, 1, 0, 2)
843 ELSE
844 scale=zero
845 IF (dmax>zero) scale=one/dmax
846 ENDIF
847C
848 DO j=1,numnod
849 x(1,j)=x0(1,j)+scale*d(1,j)
850 x(2,j)=x0(2,j)+scale*d(2,j)
851 x(3,j)=x0(3,j)+scale*d(3,j)
852 ENDDO
853C
854 IF (dtanim>zero) THEN
855 ianim=ianim+1
856 tt=eig(i,1)
857 CALL genani(
858 1 x ,d ,v ,a ,elbuf ,
859 2 ixs ,ixq ,ixc ,ixt ,ixp ,
860 3 ixr ,ixtg ,sn1 ,sn2 ,sn3 ,
861 4 sn4 ,iparg ,pm ,geo ,ms ,
862 5 sn5 ,cont ,sn6 ,icut ,skew ,
863 6 xcut ,fint ,itab ,sn7 ,fext ,
864 7 fopt ,anin ,lpby ,npby ,nstrf ,
865 8 rwbuf ,nprw ,tani ,elbuf_tab ,matparam_tab,
866 a dd_iad ,weight ,eani ,ipart ,cluster ,
867 b ipart(k1) ,ipart(k2) ,ipart(k3) ,ipart(k4) ,ipart(k5) ,
868 c ipart(k6) ,ipart(k7) ,ipart(k8) ,
869 d rby ,sn3 ,tani(l1) ,nom_opt ,igrsurf ,
870 e bufsf ,idata ,rdata ,sn9 ,bufmat ,
871 f bufgeo ,kxx ,ixx ,ipart(k9) ,skuix ,
872 g skxusr ,skfacptx ,skxedge ,skxfacet ,skxsolid ,
873 h sknumx1 ,sknumx2 ,sknumx3 ,skoffx1 ,skoffx2 ,
874 i skoffx3 ,skmass1 ,skmass2 ,skmass3 ,skfunc1 ,
875 j skfunc2 ,skfunc3 ,kxsp ,ixsp ,nod2sp ,
876 k ipart(k10) ,spbuf ,ixs10 ,ixs20 ,ixs16 ,
877 l vr ,monvol ,volmon ,ipm ,igeo ,nodglob,
878 m iad_elem ,fr_elem ,fr_sec ,fr_rby2 ,iad_rby2 ,
879 n fr_wall ,ribid ,rrbid ,fncont ,ftcont ,
880 o temp ,thke ,err_thk_sh4,err_thk_sh3 ,rrbid ,
881 p ipari ,rrbid ,rrbid ,ale_connect ,
882 q irbe2 ,irbe3 ,lrbe2 ,lrbe3 ,fr_rbe2,
883 r fr_rbe3m ,iad_rbe2 ,rrbid ,ribid ,ribid ,
884 s rrbid ,rrbid ,rrbid ,rrbid ,rrbid ,
885 s rrbid ,ribid ,ribid ,ribid ,ribid ,
886 u rrbid ,rrbid ,weight_md ,ribid ,ribid ,
887 v fcluster ,mcluster ,xfem_tab ,w ,
888 w nv46 ,ipart(k11),ribid ,ribid ,ibid ,
889 x rrbid ,rrbid ,nercvois ,nesdvois ,lercvois ,
890 y lesdvois ,crkedge ,indx_crk ,xedge4n ,xedge3n ,
891 z stack ,sph2sol ,stifn ,stifr ,igrnod ,
892 1 h3d_data ,subset ,multi_fvm ,rrbid ,rrbid ,
893 2 fcont_max ,fncontp2 ,ftcontp2 ,glob_therm ,
894 . drape_sh4n ,drape_sh3n,drapeg ,output)
895 ENDIF
896C
897 IF (dtoutp>zero) THEN
898 IF (ispmd==0) THEN
899 leng = numnodg
900 ELSE
901 leng = 0
902 ENDIF
903 ioutp=ioutp+1
904 tt=eig(i,1)
905 CALL genoutp(
906 1 x ,d ,v ,a ,
907 2 ixs ,ixq ,ixc ,ixt ,ixp ,
908 3 ixr ,ixtg ,iparg ,pm ,igeo ,
909 4 ms ,cont ,itab ,partsav,fint ,
910 5 fext ,tani ,eani ,anin ,ipart ,
911 6 vr ,elbuf_tab ,dd_iad,weight,
912 7 ipm ,kxsp ,spbuf ,nodglob,leng ,
913 8 fopt ,nom_opt ,npby ,fncont ,ftcont ,
914 9 geo ,thke ,stack ,drape_sh4n, drape_sh3n ,drapeg,output )
915 ENDIF
916 ENDDO
917c
918 DEALLOCATE(diag_kg, lt_kg, vect, eig)
919
920 DO i=1,numnod
921 x(1,i)=x0(1,i)
922 x(2,i)=x0(2,i)
923 x(3,i)=x0(3,i)
924 ENDDO
925C
926citask0 END IF !(ITASK == 0) THEN
927
928C
929 RETURN
930#endif
#define my_real
Definition cppsort.cpp:32
subroutine eig(k_diag, k_lt, iadk, jdik, ms, in, nddl, ndof, nnzl, x, d, v, a, bufel, ixs, ixq, ixc, ixt, ixp, ixr, ixtg, pm, geo, cont, icut, skew, xcut, fint, itab, fext, fopt, anin, lpby, npby, nstrf, rwbuf, nprw, tani, elbuf_tab, matparam_tab, dd_iad, fr_iad, dd_front, cluster, weight, eani, ipart, rby, nom_opt, igrsurf, bufsf, idata, rdata, bufmat, bufgeo, kxx, ixx, kxsp, ixsp, nod2sp, spbuf, ixs10, ixs20, ixs16, vr, monvol, volmon, ipm, igeo, iparg, eigipm, eigibuf, eigrpm, ldiag, ljdik, ljdik2, ikc, maxncv, thke, nms, nint2, iint2, ipari, intbuf_tab, nodglob, iad_elem, fr_elem, fr_sec, fr_rby2, iad_rby2, fr_wall, inloc, iddl, partsav, fncont, ftcont, temp, err_thk_sh4, err_thk_sh3, irbe2, irbe3, lrbe2, lrbe3, fr_rbe2, fr_rbe3m, iad_rbe2, weight_md, fcluster, mcluster, xfem_tab, w, nv46, nercvois, nesdvois, lercvois, lesdvois, crkedge, indx_crk, xedge4n, xedge3n, stack, sph2sol, stifn, stifr, drape_q4, drape_t3, h3d_data, subset, igrnod, fcont_max, fncontp2, ftcontp2, ale_connectivity, glob_therm)
Definition eig.F:73
subroutine fv_rw(iddl, ikc, ndof, ud, v)
Definition fv_imp0.F:503
subroutine fv_imp(ibfv, npc, tf, vel, sensor_tab, ud, rd, ifix, iddl, nsensor, skew, iframe, xframe, v, vr, x, lj, ndof, a, ar)
Definition fv_imp0.F:213
subroutine genani(x, d, v, a, bufel, ixs, ixq, ixc, ixt, ixp, ixr, ixtg, swaft, smas, sxnorm, siad, iparg, pm, geo, ms, sinvert, cont, smater, icut, skew, xcut, fint, itab, sel2fa, fext, fopt, anin, lpby, npby, nstrf, rwbuf, nprw, tani, elbuf_tab, mat_param, dd_iad, weight, eani, ipart, cluster, iparts, ipartq, ipartc, ipartt, ipartp, ipartr, ipartur, iparttg, rby, swa4, tors, nom_opt, igrsurf, bufsf, idata, rdata, siadg, bufmat, bufgeo, kxx, ixx, ipartx, suix, sxusr, snfacptx, sixedge, sixfacet, sixsolid, snumx1, snumx2, snumx3, soffx1, soffx2, soffx3, smass1, smass2, smass3, sfunc1, sfunc2, sfunc3, kxsp, ixsp, nod2sp, ipartsp, spbuf, ixs10, ixs20, ixs16, vr, monvol, volmon, ipm, igeo, nodglob, iad_elem, fr_elem, fr_sec, fr_rby2, iad_rby2, fr_wall, iflow, rflow, fncont, ftcont, temp, thke, err_thk_sh4, err_thk_sh3, diag_sms, ipari, fncont2, dr, ale_connectivity, irbe2, irbe3, lrbe2, lrbe3, fr_rbe2, fr_rbe3m, iad_rbe2, dxancg, nod_pxfem, iel_pxfem, zi_ply, vgaz, fcontg, fncontg, ftcontg, fanreac, inod_crk, iel_crk, elcutc, iadc_crk, pdama2, res_sms, weight_md, nodglobxfe, nodedge, fcluster, mcluster, xfem_tab, w, nv46, ipartig3d, kxig3d, ixig3d, sig3dsolid, knot, wige, nercvois, nesdvois, lercvois, lesdvois, crkedge, indx_crk, xedge4n, xedge3n, stack, sph2sol, stifn, stifr, igrnod, h3d_data, subset, multi_fvm, knotlocpc, knotlocel, fcont_max, fncontp2, ftcontp2, glob_therm, drape_sh4n, drape_sh3n, drapeg, output)
Definition genani.F:239
subroutine genoutp(x, d, v, a, ixs, ixq, ixc, ixt, ixp, ixr, ixtg, iparg, pm, igeo, ms, cont, itab, partsav, fint, fext, tani, eani, anin, ipart, vr, elbuf_tab, dd_iad, weight, ipm, kxsp, spbuf, nodglob, leng, fopt, nom_opt, npby, fncont, ftcont, geo, thke, stack, drape_sh4n, drape_sh3n, drapeg, output)
Definition genoutp.F:82
subroutine upd_fr_k(iadk, jdik, ndof, ikc, iddl, inloc, fr_elem, iad_elem, nddl)
Definition imp_fri.F:4091
subroutine imp_glob_khp(pm, geo, ipm, igeo, elbuf, ixs, ixq, ixc, ixt, ixp, ixr, ixtg, ixtg1, ixs10, ixs20, ixs16, iparg, tf, npc, fr_wave, w16, bufmat, thke, bufgeo, rby, skew, x, wa, iddl, ndof, k_diag, k_lt, iadk, jdik, ikgeo, etag, itask0, elbuf_tab, stack, drape_sh4n, drape_sh3n, drapeg)
subroutine imp_kpres(ib, fac, npc, tf, x, skew, nsensor, sensor_tab, weight, iadc, iddl, ndof, iadk, jdik, k_diag, k_lt)
subroutine mumps_set2(iadk, jdik, diag_k, lt_k, cddlp, nkloc, nkfront, itk, rtk, iddl, inloc, iad_elem, fr_elem, ndof, ikc, nddl, nnzk, iacti, nddli, nnzi, iadi, jdii, itok, diag_i, lt_i)
Definition imp_mumps.F:881
subroutine ini_kic
Definition imp_solv.F:4834
subroutine spmd_mumps_ini(mumps_par, sym)
Definition imp_spmd.F:498
subroutine spmd_inf_g(nddl0, nzzk0, nddl, nzzk, nnmax, nddl0p, nzzk0p, nddlp, nzzkp, nnmaxp)
Definition imp_spmd.F:1514
subroutine spmd_cddl(nddl, nodglob, iddl, ndof, cddlp, inloc, ikc, nddlg, nddlp)
Definition imp_spmd.F:3146
subroutine ind_glob_k(npby, lpby, itab, nrbyac, irbyac, nsc, isij, nmc, imij, nss, iss, nint2, iint2, ipari, intbuf_tab, nsc2, isij2, nss2, iss2, iparg, elbuf, elbuf_tab, ixs, ixq, ixc, ixt, ixp, ixr, ixtg, ixtg1, ixs10, ixs20, ixs16, iddl, ndof, iadk, jdik, nddl, nnzk, nnmax, nkine, inloc, nkmax, nrowk, icok, icokm, nmc2, imij2, irk, npn, npp, fr_elem, iad_elem, ipm, igeo, irbe3, lrbe3, iss3, fr_i2m, iad_i2m, fr_rbe3m, iad_rbe3m, irbe2, lrbe2, isb2, nsrb2)
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21
initmumps id
subroutine recudis(nddl, iddl, ndof, ikc, lx, d, dr, inloc)
Definition recudis.F:31
subroutine recukin(rby, lpby, npby, skew, iskew, itab, weight, ms, in, ibfv, vel, icodt, icodr, nrbyac, irbyac, nint2, iint2, ipari, intbuf_tab, ndof, d, dr, x, xframe, lj, ixr, ixc, ixtg, sh4tree, sh3tree, irbe3, lrbe3, frbe3, irbe2, lrbe2)
Definition recudis.F:103
subroutine rgwal0_imp(x, d, v, rwbuf, lprw, nprw, ms, fsav, fr_wall, fopt, rwsav, weight, fsavd, nt_rw, iddl, ikc, icomv, ndof, frwl6, weight_md, dimfb, fbsav6, stabsen, tabsensor, wfext, wfext_md)
Definition rgwal0.F:211
subroutine spmd_ds_rsend(buf, size, itag, idest)
Definition spmd_dsreso.F:69
subroutine spmd_ds_rrecv(buf, size, itag, iprov)
subroutine spmd_rbcast(tabi, tabr, n1, n2, from, add)
Definition spmd_rbcast.F:62
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)
Definition message.F:889
subroutine arret(nn)
Definition arret.F:87
subroutine upd_glob_k(icodt, icodr, iskew, ibfv, npc, tf, vel, xframe, rby, x, skew, lpby, npby, itab, weight, ms, in, nrbyac, irbyac, nsc, isij, nmc, imij, nss, iss, nint2, iint2, nsc2, isij2, nss2, iss2, ipari, intbuf_tab, nddl, nnz, iadk, jdik, diag_k, lt_k, ndof, iddl, ikc, ud, b, nkud, ikud, bkud, nmc2, imij2, nt_rw, rd, lj, irbe3, lrbe3, frbe3, iss3, irbe2, lrbe2, isb2, nsrb2)
Definition upd_glob_k.F:66
subroutine zeror(a, n)
Definition zero.F:39

◆ stobuck()

subroutine stobuck ( diag_k,
lt_k,
diag_kg,
lt_kg,
integer, dimension(*) iadk,
integer, dimension(*) jdik,
integer, dimension(*) rowind,
integer, dimension(*) colptr,
value_op,
value_k,
value_kg,
integer n,
sigma )

Definition at line 936 of file imp_buck.F.

939C-----------------------------------------------
940C I m p l i c i t T y p e s
941C-----------------------------------------------
942#include "implicit_f.inc"
943C-----------------------------------------------
944C D u m m y A r g u m e n t s
945C-----------------------------------------------
946 INTEGER IADK(*), JDIK(*), ROWIND(*), COLPTR(*), N
947 my_real
948 . diag_k(*), lt_k(*), diag_kg(*), lt_kg(*), value_op(*),
949 . value_k(*), value_kg(*), sigma
950C-----------------------------------------------
951C L o c a l V a r i a b l e s
952C-----------------------------------------------
953 INTEGER I, INDCOL(N), J, JJ, IAD
954C 1ER PASSAGE : CALCUL DES INDICES DANS COLPTR
955 DO i=1,n
956 indcol(i)=0
957 ENDDO
958 DO i=1,n
959 indcol(i)=indcol(i)+1
960 DO j=iadk(i),iadk(i+1)-1
961 jj=jdik(j)
962 indcol(i)=indcol(i)+1
963 indcol(jj)=indcol(jj)+1
964 ENDDO
965 ENDDO
966 colptr(1)=1
967 DO i=1,n
968 colptr(i+1)=colptr(i)+indcol(i)
969 indcol(i)=colptr(i)-1
970 ENDDO
971C 2EME PASSAGE : REMPLISSAGE DE ROWIND, VALUE_OP ET VALUE_K
972 DO i=1,n
973 indcol(i)=indcol(i)+1
974 iad=indcol(i)
975 value_op(iad)=diag_k(i)-sigma*diag_kg(i)
976 value_k(iad)=diag_k(i)
977 value_kg(iad)=diag_kg(i)
978 rowind(iad)=i
979 DO j=iadk(i),iadk(i+1)-1
980 jj=jdik(j)
981 indcol(i)=indcol(i)+1
982 indcol(jj)=indcol(jj)+1
983 iad=indcol(i)
984 value_op(iad)=lt_k(j)-sigma*lt_kg(j)
985 value_k(iad)=lt_k(j)
986 value_kg(iad)=lt_kg(j)
987 rowind(iad)=jj
988 iad=indcol(jj)
989 value_op(iad)=lt_k(j)-sigma*lt_kg(j)
990 value_k(iad)=lt_k(j)
991 value_kg(iad)=lt_kg(j)
992 rowind(iad)=i
993 ENDDO
994 ENDDO
995C
996 RETURN