OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
imp_sol_init.F
Go to the documentation of this file.
1Copyright> OpenRadioss
2Copyright> Copyright (C) 1986-2025 Altair Engineering Inc.
3Copyright>
4Copyright> This program is free software: you can redistribute it and/or modify
5Copyright> it under the terms of the GNU Affero General Public License as published by
6Copyright> the Free Software Foundation, either version 3 of the License, or
7Copyright> (at your option) any later version.
8Copyright>
9Copyright> This program is distributed in the hope that it will be useful,
10Copyright> but WITHOUT ANY WARRANTY; without even the implied warranty of
11Copyright> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12Copyright> GNU Affero General Public License for more details.
13Copyright>
14Copyright> You should have received a copy of the GNU Affero General Public License
15Copyright> along with this program. If not, see <https://www.gnu.org/licenses/>.
16Copyright>
17Copyright>
18Copyright> Commercial Alternative: Altair Radioss Software
19Copyright>
20Copyright> As an alternative to this open-source version, Altair also offers Altair Radioss
21Copyright> software under a commercial license. Contact Altair to discuss further if the
22Copyright> commercial version may interest you: https://www.altair.com/radioss/.
23!||====================================================================
24!|| imp_sol_init ../engine/source/implicit/imp_sol_init.F
25!||--- called by ------------------------------------------------------
26!|| resol ../engine/source/engine/resol.F
27!||--- calls -----------------------------------------------------
28!|| ancmsg ../engine/source/output/message/message.F
29!|| arret ../engine/source/system/arret.F
30!|| buf_dim1 ../engine/source/implicit/produt_v.F
31!|| cp_dm ../engine/source/implicit/produt_v.F
32!|| cp_real ../engine/source/implicit/produt_v.F
33!|| dim_glob_k ../engine/source/implicit/ind_glob_k.F
34!|| dim_int7 ../engine/source/implicit/ind_glob_k.F
35!|| dim_span ../engine/source/implicit/ind_glob_k.F
36!|| fil_span0 ../engine/source/implicit/ind_glob_k.F
37!|| imp_frii ../engine/source/mpi/implicit/imp_fri.F
38!|| imp_trans0 ../engine/source/output/restart/wrrest.F
39!|| ind_glob_k ../engine/source/implicit/ind_glob_k.F
40!|| spmd_mstop ../engine/source/mpi/init/spmd_mstop.F
41!|| zero1 ../engine/source/system/zero.F
42!||--- uses -----------------------------------------------------
43!|| elbufdef_mod ../common_source/modules/mat_elem/elbufdef_mod.F90
44!|| groupdef_mod ../common_source/modules/groupdef_mod.F
45!|| impbufdef_mod ../engine/share/modules/impbufdef_mod.F
46!|| intbufdef_mod ../common_source/modules/interfaces/intbufdef_mod.F90
47!|| message_mod ../engine/share/message_module/message_mod.f
48!||====================================================================
49 SUBROUTINE imp_sol_init(
50 1 GEO ,NPBY ,LPBY ,ITAB ,
51 2 IPARI ,IXS ,IXQ ,IXC ,IXT ,
52 4 IXP ,IXR ,IXTG ,IXTG1 ,IXS10 ,
53 5 IXS20 ,IXS16 ,IPARG ,
54 6 ELBUF ,NINT7 ,NBINTC ,X ,DMCP ,
55 7 FR_ELEM ,IAD_ELEM ,FR_I2M ,IAD_I2M ,
56 8 NPRW ,NUM_IMP1 ,NUM_IMPL ,MONVOL ,IGRSURF ,
57 9 FR_MV ,IPM ,IGEO ,IAD_RBY ,
58 A FR_RBY ,SH4TREE ,SH3TREE ,IRBE3 ,LRBE3 ,
59 B FR_RBE3M ,IAD_RBE3M ,IRBE2 ,LRBE2 ,IBFV ,
60 C VEL ,ELBUF_TAB ,IFRAME ,INTBUF_TAB,
61 D NDDL0 ,NNZK0 ,IMPBUF_TAB )
62C-----------------------------------------------
63C M o d u l e s
64C-----------------------------------------------
65 USE elbufdef_mod
66 USE intbufdef_mod
67 USE groupdef_mod
68 USE message_mod
70C-----------------------------------------------
71C I m p l i c i t T y p e s
72C-----------------------------------------------
73#include "implicit_f.inc"
74C-----------------------------------------------
75C C o m m o n B l o c k s
76C-----------------------------------------------
77#include "com01_c.inc"
78#include "com04_c.inc"
79#include "com08_c.inc"
80#include "param_c.inc"
81#include "scr05_c.inc"
82#include "impl1_c.inc"
83#include "task_c.inc"
84#include "buckcom.inc"
85#include "units_c.inc"
86C-----------------------------------------------------------------
87C D u m m y A r g u m e n t s
88C-----------------------------------------------
89 INTEGER NDDL0,NNZK0,IPARG(NPARG,*),FR_ELEM(*) ,IAD_ELEM(2,*)
90 INTEGER NPBY(NNPBY,*),LPBY(*),ITAB(*)
91 INTEGER NINT7,NBINTC,IPARI(NPARI,*),
92 . FR_I2M(*),IAD_I2M(*),FR_RBY(*),IAD_RBY(*)
93 INTEGER MONVOL(*),
94 . FR_MV(NSPMD+2,NVOLU),NPRW(*),FR_RBE3M(*),IAD_RBE3M(*)
95 INTEGER IPM(NPROPMI,*),IGEO(NPROPGI,*),IFRAME(LISKN,*)
96 INTEGER
97 . IXS(NIXS,*),IXQ(NIXQ,*),IXC(NIXC,*), IXT(NIXT,*), IXP(NIXP,*),
98 . IXR(NIXR,*), IXTG(NIXTG,*),IXS10(6,*),IXS20(12,*),
99 . IXS16(8,*),IXTG1(4,*),IRBE3(*),LRBE3(*),
100 . SH4TREE(*), SH3TREE(*),
101 . irbe2(*),lrbe2(*),ibfv(*),num_imp1(*),num_impl(ninter,nthread)
102C REAL
103 my_real
104 . geo(npropg,*),elbuf(*),vel(*),x(*),dmcp(*)
105 TYPE (ELBUF_STRUCT_), DIMENSION(NGROUP) :: ELBUF_TAB
106 TYPE (INTBUF_STRUCT_) INTBUF_TAB(*)
107 TYPE (SURF_) , DIMENSION(NSURF) :: IGRSURF
108 TYPE (IMPBUF_STRUCT_) ,TARGET :: IMPBUF_TAB
109C-----------------------------------------------
110C L o c a l V a r i a b l e s
111C-----------------------------------------------
112 INTEGER I,J,K,N,M,L,NDOFI,NDOFJ,NKINE,NMIJ2,IP,NPN,NPP,IER1,
113 . LI1,LI2,LI3,LI4,LI5,LI6,LI7,LI8,LI9,LI10,LI11,LI12,
114 . LIF,LI13,LI14,LI15,LI16,LI17,IER2
115 INTEGER NTMP,L1,NNDLNKINE,NNMAX,NKMAX,NNDL
116 INTEGER, POINTER :: NDDL,NNZK,NRBYAC,NINT2,NMC,NMC2,NMONV
117 INTEGER, DIMENSION(:) ,POINTER :: IADK,JDIK,IDDL,NDOF,INLOC,LSIZE,I_IMP,
118 . irbyac,nsc,iint2,nkud,imonv,ikinw
119 my_real, DIMENSION(:) ,POINTER :: diag_k,lt_k,diag_m,lt_m,lb,
120 . lb0,bkud,d_imp,elbuf_c,bufmat_c,
121 . x_c,dd,ddr
122C=======================================================================
123 IF (n2d>0) THEN
124 IF(ispmd==0)THEN
125 CALL ancmsg(msgid=161,anmode=aninfo)
126 ENDIF
127C CALL ARRET(2)
128 ENDIF
129 IF (iresp==1) THEN
130 IF(ispmd==0)THEN
131 CALL ancmsg(msgid=162,anmode=aninfo)
132 ENDIF
133 CALL arret(2)
134 ENDIF
135#ifndef MPI
136 IF (neig>0) THEN
137 IF(ispmd==0)THEN
138 CALL ancmsg(msgid=294,anmode=aninfo)
139 ENDIF
140 CALL arret(2)
141 END IF
142 IF (nbuck>0) THEN
143 IF(ispmd==0)THEN
144 CALL ancmsg(msgid=295,anmode=aninfo)
145 ENDIF
146 CALL arret(2)
147 END IF
148#endif
149c
150 ALLOCATE(impbuf_tab%IDDL(numnod))
151 ALLOCATE(impbuf_tab%NDOF(numnod))
152 ALLOCATE(impbuf_tab%INLOC(numnod))
153 ALLOCATE(impbuf_tab%IRBYAC(2*nrbykin))
154 ALLOCATE(impbuf_tab%NSC(nrbykin))
155 ALLOCATE(impbuf_tab%IINT2(ninter))
156 ALLOCATE(impbuf_tab%NKUD(nfxvel))
157 ALLOCATE(impbuf_tab%IMONV(nvolu))
158 nddl => impbuf_tab%NDDL
159 nnzk => impbuf_tab%NNZK
160 nrbyac => impbuf_tab%NRBYAC
161 nint2 => impbuf_tab%NINT2
162 nmc => impbuf_tab%NMC
163 nmc2 => impbuf_tab%NMC2
164 nmonv => impbuf_tab%NMONV
165 iddl => impbuf_tab%IDDL
166 ndof => impbuf_tab%NDOF
167 inloc => impbuf_tab%INLOC
168 lsize => impbuf_tab%LSIZE
169 i_imp => impbuf_tab%I_IMP
170 irbyac => impbuf_tab%IRBYAC
171 nsc => impbuf_tab%NSC
172 nsc = 0
173 iint2 => impbuf_tab%IINT2
174 nkud => impbuf_tab%NKUD
175 imonv => impbuf_tab%IMONV
176 CALL dim_glob_k(
177 1 geo ,npby ,lpby ,itab ,nrbyac ,
178 2 irbyac ,nint2 ,iint2 ,ipari ,
179 3 ixs ,ixq ,ixc ,ixt ,
180 4 ixp ,ixr ,ixtg ,ixtg1 ,ixs10 ,
181 5 ixs20 ,ixs16 ,iparg ,ndof ,
182 6 iddl ,nddl ,nnzk ,elbuf ,inloc ,
183 7 lsize ,fr_elem ,iad_elem ,fr_i2m ,iad_i2m ,
184 8 nprw ,nmonv ,imonv ,monvol ,igrsurf ,
185 9 fr_mv ,ipm ,igeo ,iad_rby ,
186 a fr_rby ,sh4tree ,sh3tree ,irbe3 ,lrbe3 ,
187 b fr_rbe3m ,iad_rbe3m ,irbe2 ,lrbe2 ,ibfv ,
188 c vel ,elbuf_tab ,iframe ,intbuf_tab )
189 s_iadk=nddl+1
190 s_jdik=nnzk
191 nddl0 = nddl
192 nnzk0 = nnzk
193 ALLOCATE(impbuf_tab%IADK(s_iadk))
194 ALLOCATE(impbuf_tab%JDIK(s_jdik))
195 iadk => impbuf_tab%IADK
196 jdik => impbuf_tab%JDIK
197c S_ISIJ=IMPBUF_TAB%LSIZE(4)
198c S_IMIJ=IMPBUF_TAB%LSIZE(5)
199c S_NSS=IMPBUF_TAB%LSIZE(1)
200c S_ISS=IMPBUF_TAB%LSIZE(3)
201c S_ISIJ2=IMPBUF_TAB%LSIZE(7)
202c S_NSS2=IMPBUF_TAB%LSIZE(2)
203c S_ISS2=IMPBUF_TAB%LSIZE(6)
204c S_NSC2=NINT2
205c S_NROWK=IMPBUF_TAB%LSIZE(8)
206c S_ICOK=(LSIZE(8)-LCOKM)*LSIZE(9)
207c S_ICOKM=LCOKM*LSIZE(10)
208c S_NMIJ2=4*LSIZE(11)
209c S_NSS3=IMPBUF_TAB%LSIZE(14)
210c S_ISB2=IMPBUF_TAB%LSIZE(15)
211c S_NSRB2=IMPBUF_TAB%LSIZE(16)
212C
213 nkine = lsize(8)
214 nnmax = lsize(9)
215 nkmax = lsize(10)
216 nmij2 = lsize(11)
217 npn = lsize(12)
218 npp = lsize(13)
219C
220c ALLOCATE(IMPBUF_TAB%ISIJ(S_ISIJ))
221c ALLOCATE(IMPBUF_TAB%IMIJ(S_IMIJ))
222c ALLOCATE(IMPBUF_TAB%NSS(S_NSS))
223c ALLOCATE(IMPBUF_TAB%ISIJ2(S_ISIJ2))
224c ALLOCATE(IMPBUF_TAB%NSS2(S_NSS2))
225c ALLOCATE(IMPBUF_TAB%ISS2(S_ISS2))
226c ALLOCATE(IMPBUF_TAB%NSC2(S_NSC2))
227c ALLOCATE(IMPBUF_TAB%ISS2(S_ISS2))
228c ALLOCATE(IMPBUF_TAB%NROWK(S_NROWK))
229c ALLOCATE(IMPBUF_TAB%ICOK(S_ICOK))
230c ALLOCATE(IMPBUF_TAB%ICOKM(S_ICOKM))
231c ALLOCATE(IMPBUF_TAB%NMIJ2(S_NMIJ2))
232c ALLOCATE(IMPBUF_TAB%NSS3(S_NSS3))
233c ALLOCATE(IMPBUF_TAB%ISB2(S_ISB2))
234c ALLOCATE(IMPBUF_TAB%NSRB2(S_NSRB2))
235C----finally not to splite IKINW, otherwise too many changes
236 li1 =1
237 li2 = li1+lsize(4)
238 li3 = li2+lsize(5)
239 li4 = li3+lsize(1)
240 li5 = li4+lsize(3)
241 li6 = li5+lsize(7)
242 li7 = li6+lsize(2)
243 li8 = li7+lsize(6)
244 li9 = li8+nint2
245 li10 = li9+lsize(8)
246 li11 = li10+(lsize(8)-lcokm)*lsize(9)
247 li12 = li11+lcokm*lsize(10)
248 li13 = li12+4*lsize(11)
249 li14 = li13+lsize(14)
250 li15 = li14+lsize(15)
251 lif = li15+lsize(16)
252 s_ikinw = lif
253 ALLOCATE(impbuf_tab%IKINW(s_ikinw))
254 ikinw => impbuf_tab%IKINW
255 CALL ind_glob_k(npby ,lpby ,
256 1 itab ,nrbyac ,irbyac ,nsc ,ikinw(li1),
257 2 nmc ,ikinw(li2),ikinw(li3),ikinw(li4),nint2 ,
258 3 iint2 ,ipari ,intbuf_tab,ikinw(li8),ikinw(li5),
259 4 ikinw(li6),ikinw(li7),iparg ,elbuf ,elbuf_tab ,
260 5 ixs ,ixq ,ixc ,ixt ,ixp ,
261 6 ixr ,ixtg ,ixtg1 ,ixs10 ,ixs20 ,
262 7 ixs16 ,iddl ,ndof ,iadk ,
263 8 jdik ,nddl ,nnzk ,lsize(9) ,lsize(8) ,
264 9 inloc ,lsize(10),ikinw(li9),ikinw(li10),ikinw(li11),
265 a lsize(11) ,ikinw(li12),li1 ,lsize(12) ,lsize(13) ,
266 b fr_elem ,iad_elem ,ipm ,igeo ,irbe3 ,
267 c lrbe3 ,ikinw(li13),fr_i2m ,iad_i2m ,fr_rbe3m ,
268 d iad_rbe3m ,irbe2 ,lrbe2 ,ikinw(li14),ikinw(li15))
269 ntmp=max(nkmax,nnmax)
270 IF (iroddl/=0) THEN
271 maxb = min(6*(ntmp+1),nddl)
272 maxb1 = min(6*(nnmax+1),nddl)
273 ELSE
274 maxb = min(3*(ntmp+1),nddl)
275 maxb1 = min(3*(nnmax+1),nddl)
276 ENDIF
277 maxb0 = maxb
278 nndl=3*numnod
279c IF (IMON>0) CALL STOPTIME(TIMERS,31)
280 IF(ispmd==0)THEN
281 WRITE(istdo,*)
282 WRITE(istdo,*)' **************************'
283 WRITE(istdo,*)' ** IMPLICIT OPTION USED **'
284 WRITE(istdo,*)' **************************'
285 WRITE(istdo,*)
286 ENDIF
287C-----integer : 1:IKC,2:IKUD,3:W_DDL,4:IADM,5:JDIM,6:NDOFI,7:IDDLI,8:INBUF_C
288 IF(nfxvel>0.AND.neig==0)THEN
289 l1=nfxvel*max(3,maxb)
290 ELSE
291 l1=0
292 ENDIF
293 s_ikc=nddl+6
294 s_ikud=l1
295C -----------W_DDL is reserved anyway------
296 s_w_ddl=nddl
297 max_l = 0
298 IF (nmonv>0.AND.isolv>=3.AND.neig==0) THEN
299 IF(ispmd==0)THEN
300 CALL ancmsg(msgid=163,anmode=aninfo)
301 ENDIF
302 CALL arret(2)
303 ENDIF
304C ----- ---------
305 IF ((isolv==1.OR.isolv>4).AND.n_pat>1) THEN
306 CALL fil_span0(nrbyac,irbyac,npby,iddl,ndof,nddl)
307 CALL dim_span(n_pat,nddl,iadk,jdik,max_l,maxb1)
308 s_iadm=nddl+1
309 ELSE
310 s_iadm=0
311 ENDIF
312 s_jdim=max_l
313 ALLOCATE(impbuf_tab%IKC(s_ikc))
314 ALLOCATE(impbuf_tab%IKUD(s_ikud))
315 ALLOCATE(impbuf_tab%W_DDL(s_w_ddl))
316 ALLOCATE(impbuf_tab%IADM(s_iadm))
317 ALLOCATE(impbuf_tab%JDIM(s_jdim))
318 s_ndofi=numnod
319 s_iddli=0
320 nint7 = 0
321 s_cand_n = 0
322 s_cand_e = 0
323 s_indsubt= 0
324 IF (ninter/=0.AND.neig==0) THEN
325 CALL dim_int7(ninter,ipari ,intbuf_tab ,nint7)
326 IF (nint7>0) THEN
327 IF (isolv==4) THEN
328 CALL ancmsg(msgid=214,anmode=aninfo)
329 CALL arret(2)
330 ENDIF
331 s_cand_n = nint7*nthread !NS_IMP
332 s_cand_e = s_cand_n !NE_IMP
333 s_indsubt= s_cand_n !IND_IMP
334 s_iddli=numnod
335 ENDIF
336 ENDIF
337 ALLOCATE(impbuf_tab%CAND_N(s_cand_n))
338 ALLOCATE(impbuf_tab%CAND_E(s_cand_e))
339 ALLOCATE(impbuf_tab%INDSUBT(s_indsubt),stat=ier1)
340 s_inbuf_c =0
341 ALLOCATE(impbuf_tab%NDOFI(s_ndofi))
342 ALLOCATE(impbuf_tab%IDDLI(s_iddli))
343 ALLOCATE(impbuf_tab%INBUF_C(s_inbuf_c))
344 IF (nspmd>1.AND.nbintc>0) CALL imp_frii(ninter)
345c IIF=II9
346C-----reel : 1,2,3,4:DIAG_K,LT_K,DIAG_M,LT_M,5,6:LB,DB,7:BKUD,8,9:D_IMP,DR_IMP
347C---- 10,11,12:ELBUF_C,BUFMAT_C,X_C,13,14:DD,DDR,15,16:X_actual,free
348C-----------17-21:FEXT,DG,DGR,DI,DIR;(Riks arc-length);22:BUFIN_C,23,24:AC,ACR,
349 s_diag_k=nddl
350 s_lt_k=nnzk
351 s_diag_m=nddl
352 s_lt_m=max(nnzk,max_l)
353 s_lb=nddl
354 IF (iline/=1.AND.tt==zero.AND.isprb==0) THEN
355 IF (nmonv>0) isigini=1
356 ELSE
357 isigini=0
358 ENDIF
359 IF ((isprb==1.OR.isigini==1.OR.ilintf>0)
360 . .AND.neig==0) THEN
361 s_lb0=nddl
362 ELSE
363 s_lb0=0
364 ENDIF
365 s_bkud=l1
366 s_d_imp=nndl
367 IF (iroddl/=0.AND.neig==0) THEN
368 s_dr_imp=nndl
369 ELSE
370 s_dr_imp=0
371 ENDIF
372 IF (iline/=1) THEN
374 s_x_c=nndl
375 s_dd=nndl
376 IF (iroddl/=0) THEN
377 s_ddr=nndl
378 ELSE
379 s_ddr=0
380 ENDIF
381 ELSEIF (ilintf>0) THEN
383 s_x_c=nndl
384 s_dd=0
385 s_ddr=0
386 ELSE
387 s_elbuf_c=0
388 s_bufmat_c=0
389 s_x_c=0
390 s_dd=0
391 s_ddr=0
392 ENDIF
393 s_x_a=0
394 IF (neig==0) THEN
395 IF (ismdisp>0) s_x_a=nndl
396 ENDIF
397C-----------17-21:FEXT,DG,DGR,DG0,DGR0;(Riks arc-length);22:BUFIN_C,23,24:AC,ACR,
398 s_fext=0
399 s_dg=0
400 s_dgr=0
401 s_dg0=0
402 s_dgr0=0
403 IF (idtc==3) THEN
404 s_fext=nddl
405 IF (iroddl/=0) THEN
406 s_dg=nndl
407 s_dgr=nndl
408 s_dg0=nndl
409 s_dgr0=nndl
410 ELSE
411 s_dg=nndl
412 s_dg0=nndl
413 ENDIF
414 ENDIF
415 s_bufin_c=0
416 s_ac=0
417 s_acr=0
418 IF (neig==0) THEN
419 s_ac=nndl
420 IF (iroddl/=0) s_acr=nndl
421 ENDIF
422C
423 ALLOCATE(impbuf_tab%DIAG_K(s_diag_k))
424 ALLOCATE(impbuf_tab%LT_K(s_lt_k))
425 ALLOCATE(impbuf_tab%DIAG_M(s_diag_m))
426 ALLOCATE(impbuf_tab%LT_M(s_lt_m))
427 ALLOCATE(impbuf_tab%LB(s_lb))
428 ALLOCATE(impbuf_tab%LB0(s_lb0))
429 ALLOCATE(impbuf_tab%BKUD(s_bkud))
430 ALLOCATE(impbuf_tab%D_IMP(s_d_imp))
431 ALLOCATE(impbuf_tab%DR_IMP(s_dr_imp))
432 ALLOCATE(impbuf_tab%ELBUF_C(s_elbuf_c))
433 ALLOCATE(impbuf_tab%BUFMAT_C(s_bufmat_c))
434 ALLOCATE(impbuf_tab%X_C(s_x_c))
435 ALLOCATE(impbuf_tab%DD(s_dd))
436 ALLOCATE(impbuf_tab%DDR(s_ddr))
437 ALLOCATE(impbuf_tab%X_A(s_x_a))
438 ALLOCATE(impbuf_tab%FEXT(s_fext))
439 ALLOCATE(impbuf_tab%DG(s_dg))
440 ALLOCATE(impbuf_tab%DGR(s_dgr))
441 ALLOCATE(impbuf_tab%DG0(s_dg0))
442 ALLOCATE(impbuf_tab%DGR0(s_dgr0))
443 ALLOCATE(impbuf_tab%BUFIN_C(s_bufin_c))
444 ALLOCATE(impbuf_tab%AC(s_ac))
445 ALLOCATE(impbuf_tab%ACR(s_acr),stat=ier2)
446c
447 IF (ier1/=0.OR.ier2/=0) THEN
448 CALL ancmsg(msgid=19,anmode=aninfo,
449 . c1='FOR IMPLICIT')
450 CALL arret(2)
451 ENDIF
452C---------INITIALISATION------
453 impbuf_tab%D_IMP=zero
454 impbuf_tab%IKC=0
455 nddl0 = nddl
456 nnzk0 = nnzk
457 isetk=1
458 idsc=1
459C---------IT(TOTAL),ITC,IWAIT,IDIV,R02,EIMP,E02-,Ichang-----
460 i_imp=0
461 it_bcs = 0
462 it_pcg = 0
463 impbuf_tab%R_IMP(1:25)=zero
464C ---- X_actual,V_zero-----
465 IF (neig==0) THEN
466 IF (s_x_a>0) CALL cp_real(nndl,x,impbuf_tab%X_A)
467 IF (idyna==0) CALL cp_dm(numgeo,geo,igeo,dmcp,1)
468 END IF
469C----i--initialisation for for travers nodes detection-----
470 IF (ninter/=0.AND.neig==0) THEN
471 nt_imp1=0
472 DO i=1,ninter
473 num_imp1(i)=0
474 ENDDO
475 DO j=1,nthread
476 DO i=1,ninter
477 num_impl(i,j)=0
478 ENDDO
479 ENDDO
480 ENDIF
481 CALL imp_trans0(impbuf_tab%R_IMP,impl_s0)
482 IF (iline/=1) CALL zero1(impbuf_tab%DD,nndl)
483c IBUCK= IBUCKL
484 IF (nbuck>0.AND.bisolv==2) THEN
485 WRITE(istdo,'(A)')
486 .' !! BISOLV =2 REQUIRES OPTION /IMPL/GRAPH IN RADIOSS STARTER'
487 WRITE(iout,'(A)')
488 .' !! BISOLV =2 REQUIRES OPTION /IMPL/GRAPH IN RADIOSS STARTER'
489 CALL spmd_mstop()
490 RETURN
491 ENDIF
492C
493 RETURN
494 END SUBROUTINE imp_sol_init
495!||====================================================================
496!|| imp_restarcp ../engine/source/implicit/imp_sol_init.F
497!||--- called by ------------------------------------------------------
498!|| resol ../engine/source/engine/resol.f
499!||--- calls -----------------------------------------------------
500!|| cp_dm ../engine/source/implicit/produt_v.F
501!|| cp_real ../engine/source/implicit/produt_v.F
502!|| zeror ../engine/source/system/zero.F
503!||--- uses -----------------------------------------------------
504!|| impbufdef_mod ../engine/share/modules/impbufdef_mod.F
505!||====================================================================
506 SUBROUTINE imp_restarcp(X,V,VR,GEO,IGEO,DMCP,IMPBUF_TAB)
507C-----------------------------------------------
508C M o d u l e s
509C-----------------------------------------------
510 USE impbufdef_mod
511C-----------------------------------------------
512C I m p l i c i t T y p e s
513C-----------------------------------------------
514#include "implicit_f.inc"
515C-----------------------------------------------
516C C o m m o n B l o c k s
517C-----------------------------------------------
518#include "com01_c.inc"
519#include "com04_c.inc"
520#include "param_c.inc"
521#include "impl1_c.inc"
522C-----------------------------------------------
523C D u m m y A r g u m e n t s
524C-----------------------------------------------
525 INTEGER
526 . IGEO(NPROPGI,*)
527C REAL
528 my_real
529 . GEO(NPROPG,*),X(*),DMCP(*),V(*),VR(*)
530 TYPE (IMPBUF_STRUCT_) :: IMPBUF_TAB
531C-----------------------------------------------
532C L o c a l V a r i a b l e s
533C-----------------------------------------------
534 INTEGER I,J,NNDL
535C-----------------------------------------------
536 IF (IDYNA==0) then
537 CALL zeror(v,numnod)
538 IF (iroddl/=0) CALL zeror(vr,numnod)
539 CALL cp_dm(numgeo,geo,igeo,dmcp,2)
540 ENDIF
541C ----------------for restart---
542 IF (ismdisp>0) THEN
543 nndl=3*numnod
544 CALL cp_real(nndl,impbuf_tab%X_A,x)
545 END IF
546C
547 RETURN
548 END SUBROUTINE imp_restarcp
#define my_real
Definition cppsort.cpp:32
subroutine imp_trans0(r_imp, nr)
Definition wrrest.F:399
subroutine zero1(r, n)
subroutine imp_frii(ninter)
Definition imp_fri.F:456
subroutine imp_sol_init(geo, npby, lpby, itab, ipari, ixs, ixq, ixc, ixt, ixp, ixr, ixtg, ixtg1, ixs10, ixs20, ixs16, iparg, elbuf, nint7, nbintc, x, dmcp, fr_elem, iad_elem, fr_i2m, iad_i2m, nprw, num_imp1, num_impl, monvol, igrsurf, fr_mv, ipm, igeo, iad_rby, fr_rby, sh4tree, sh3tree, irbe3, lrbe3, fr_rbe3m, iad_rbe3m, irbe2, lrbe2, ibfv, vel, elbuf_tab, iframe, intbuf_tab, nddl0, nnzk0, impbuf_tab)
subroutine imp_restarcp(x, v, vr, geo, igeo, dmcp, impbuf_tab)
subroutine fil_span0(nrbyac, irbyac, npby, iddl, ndof, nddl)
subroutine dim_span(nn, nddl, iadk, jdik, l_nz, ndmax)
subroutine dim_int7(ninter, ipari, intbuf_tab, nnmax)
subroutine dim_glob_k(geo, npby, lpby, itab, nrbyac, irbyac, nint2, iint2, ipari, ixs, ixq, ixc, ixt, ixp, ixr, ixtg, ixtg1, ixs10, ixs20, ixs16, iparg, ndof, iddl, nddl, nnzk, elbuf, inloc, lsize, fr_elem, iad_elem, fr_i2m, iad_i2m, nprw, nmonv, imonv, monvol, igrsurf, fr_mv, ipm, igeo, iad_rby, fr_rby, sh4tree, sh3tree, irbe3, lrbe3, fr_rbe3m, iad_rbe3m, irbe2, lrbe2, ibfv, vel, elbuf_tab, iframe, intbuf_tab)
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
integer s_elbuf_c
integer s_bufmat_c
integer s_inbuf_c
integer s_bufin_c
integer s_indsubt
subroutine cp_real(n, x, xc)
Definition produt_v.F:871
subroutine buf_dim1(l1, lt)
Definition produt_v.F:973
subroutine cp_dm(numgeo, geo, igeo, dmcp, iflag)
Definition produt_v.F:2563
subroutine resol(timers, element, nodes, coupling, af, iaf, iskwn, neth, ipart, nom_opt, kxx, ixx, ixtg, ixs, ixq, ixt, ixp, ixr, ifill, mat_elem, ims, npc, ibcl, ibfv, idum, las, laccelm, nnlink, lnlink, iparg, dd_iad, igrv, iexlnk, kinet, ipari, nprw, iconx, npby, lpby, lrivet, nstrf, ljoint, nodpor, monvol, ilink, llink, linale, neflsw, nnflsw, icut, cluster, itask, inoise, thke, damp, pm, skews, geo, eani, bufmat, bufgeo, bufsf, w, veul, fill, dfill, alph, wb, dsave, asave, msnf, tf, forc, vel, fsav, fzero, xlas, accelm, agrv, fr_wave, failwave, parts0, elbuf, rwbuf, sensors, rwsav, rby, rivet, secbuf, volmon, lambda, wa, fv, partsav, uwa, val2, phi, segvar, r, crflsw, flsw, fani, xcut, anin, tani, secfcum, bufnois, idata, rdata, iframe, kxsp, ixsp, nod2sp, ispsym, ispcond, xframe, spbuf, xspsym, vspsym, pv, fsavd, ibvel, lbvel, wasph, w16, isphio, lprtsph, lonfsph, vsphio, fbvel, lagbuf, ibcslag, iactiv, dampr, gjbufi, gjbufr, rbmpc, ibmpc, sphveln, nbrcvois, nbsdvois, lnrcvois, lnsdvois, nercvois, nesdvois, lercvois, lesdvois, npsegcom, lsegcom, nporgeo, ixtg1, npbyl, lpbyl, rbyl, igeo, ipm, madprt, madsh4, madsh3, madsol, madnod, madfail, iad_rby, fr_rby, fr_wall, iad_rby2, fr_rby2, iad_i2m, fr_i2m, addcni2, procni2, iadi2, fr_mv, iadmv2, fr_ll, fr_rl, iadcj, fr_cj, fr_sec, iad_sec, iad_cut, fr_cut, rg_cut, newfront, fr_mad, fxbipm, fxbrpm, fxbnod, fxbmod, fxbglm, fxbcpm, fxbcps, fxblm, fxbfls, fxbdls, fxbdep, fxbvit, fxbacc, fxbelm, fxbsig, fxbgrvi, fxbgrvr, eigipm, eigibuf, eigrpm, lnodpor, fr_i18, graphe, iflow, rflow, lgrav, dd_r2r, fasolfr, fr_lagf, llagf, lprw, icontact, rcontact, sh4tree, sh3tree, ipadmesh, padmesh, msc, mstg, inc, intg, ptg, iskwp, nskwp, isensp, nsensp, iaccp, naccp, ipart_state, acontact, pcontact, factiv, sh4trim, sh3trim, mscnd, incnd, ibfflux, fbfflux, rbym, irbym, lnrbym, icodrbym, ibcv, fconv, ibftemp, fbftemp, iad_rbym, fr_rbym, weight_rm, ms_ply, zi_ply, inod_pxfem, iel_pxfem, iadc_pxfem, adsky_pxfem, icode_ply, icodt_ply, iskew_ply, admsms, madclnod, nom_sect, mcpc, mcptg, dmelc, dmeltg, mssa, dmels, mstr, dmeltr, msp, dmelp, msrt, dmelrt, ibcr, fradia, res_sms, table, irbe2, lrbe2, iad_rbe2, fr_rbe2, phie, msf, procne_pxfem, iadsdp_pxfem, iadrcp_pxfem, icfield, lcfield, cfield, msz2, diag_sms, iloadp, lloadp, loadp, inod_crk, iel_crk, iadc_crk, adsky_crk, cne_crk, procne_crk, iadsdp_crk, iadrcp_crk, ibufssg_io, ibc_ply, dmint2, ibordnode, elbuf_tab, por, nodedge, iad_edge, fr_edge, fr_nbedge, crknodiad, lgauge, gauge, igaup, ngaup, nodlevxf, dd_r2r_elem, nodglobxfe, sph2sol, sol2sph, irst, dmsph, wagap, xfem_tab, elcutc, nodenr, kxfenod2elc, enrtag, rthbu f, kxig3d, ixig3d, knot, wige, wsmcomp, stack, cputime_mp_glob, cputime_mp, tab_ump, poin_ump, sol2sph_typ, irunn_bis, addcsrect, iad_frnor, fr_nor, procnor, iad_fredg, fr_edg, drape_sh4n, drape_sh3n, tab_mat, nativ0_sms, multi_fvm, segquadfr, ms_2d, h3d_data, subsets, igrnod, igrbric, igrquad, igrsh4n, igrsh3n, igrtruss, igrbeam, igrspring, igrpart, igrsurf, forneqs, nloc_dmg, iskwp_l, knotlocpc, knotlocel, pinch_data, tag_skins6, ale_connectivity, xcell, xface, ne_nercvois, ne_nesdvois, ne_lercvois, ne_lesdvois, ibcscyc, lbcscyc, t_monvol, id_global_vois, face_vois, dynain_data, fcont_max, ebcs_tab, diffusion, kloadpinter, loadpinter, dgaploadint, drapeg, user_windows, output, interfaces, dt, loads, python, dpl0cld, vel0cld, ndamp_vrel, id_damp_vrel, fr_damp_vrel, ndamp_vrel_rbyg, names_and_titles, unitab, liflow, lrflow, glob_therm, pblast, rbe3)
Definition resol.F:633
subroutine spmd_mstop()
Definition spmd_mstop.F:33
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 zeror(a, n)
Definition zero.F:39