OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
lectur.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 "param_c.inc"
#include "warn_c.inc"
#include "scr02_c.inc"
#include "scr03_c.inc"
#include "scr05_c.inc"
#include "scr06_c.inc"
#include "scr07_c.inc"
#include "scr14_c.inc"
#include "scr16_c.inc"
#include "scr17_c.inc"
#include "scr18_c.inc"
#include "cong1_c.inc"
#include "cong2_c.inc"
#include "scrfs_c.inc"
#include "stati_c.inc"
#include "statr_c.inc"
#include "units_c.inc"
#include "scrcut_c.inc"
#include "scrnoi_c.inc"
#include "parit_c.inc"
#include "chara_c.inc"
#include "task_c.inc"
#include "sphcom.inc"
#include "impl1_c.inc"
#include "tabsiz_c.inc"
#include "remesh_c.inc"
#include "sms_c.inc"
#include "rad2r_c.inc"
#include "inter22.inc"
#include "userlib.inc"
#include "spmd_c.inc"
#include "intstamp_c.inc"
#include "couple_c.inc"
#include "impl2_c.inc"
#include "buckcom.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine lectur (icode, iskew, iskwn, ixtg, ixs, ixq, ixc, ixt, ixp, ixr, itab, itabm1, npc, iparg, igrv, ibgr, ipari, npby, lpby, nnlink, llink, linale, neflsw, nnflsw, icut, inoise, x, v, vr, ms, in, skew, pld, rby, wa, crflsw, xcut, anin, dampr, igrnod, kxsp, weight, fr_rby2, fr_rl, partsav, ipart, pm, monvol, volmon, ipart_state, geo, table, iframe, xframe, elbuf_str, igeo, intbuf_tab, ipm, h3d_data, multi_fvm, igrpart, tag_skins6, icfield, lcfield, tagslv_rby, mds_label, mds_output_table, mds_nmat, max_depvar, mds_ndepsvar, stack, ibcl, iloadp, lloadp, sensors, dynain_data, dt, loads, output, names_and_titles, mat_param, glob_therm, pblast)
subroutine prout_buck (ip, nbuck, ibuck)
subroutine lecimpl

Function/Subroutine Documentation

◆ lecimpl()

subroutine lecimpl

Definition at line 3281 of file lectur.F.

3282C-----------------------------------------------
3283C M o d u l e s
3284C-----------------------------------------------
3285 USE imp_kbcs
3286 USE imp_pcg_proj
3287 USE imp_spbrm
3288 USE message_mod
3289C-----------------------------------------------
3290C I m p l i c i t T y p e s
3291C-----------------------------------------------
3292#include "implicit_f.inc"
3293C-----------------------------------------------
3294C C o m m o n B l o c k s
3295C-----------------------------------------------
3296#include "com01_c.inc"
3297#include "com04_c.inc"
3298#include "com06_c.inc"
3299#include "units_c.inc"
3300#include "task_c.inc"
3301#include "impl1_c.inc"
3302#include "impl2_c.inc"
3303#include "buckcom.inc"
3304C-----------------------------------------------
3305C L o c a l V a r i a b l e s
3306C-----------------------------------------------
3307 INTEGER J,NTY,IPRINT,IBID,ISOL
3308 my_real cs1(2),s
3309 REAL FLMIN
3310 CHARACTER*25 MSG_TYPE(9),MSG_ISOL(9),MSG_INSOL(4),MSG_PRE(5),MSG_BSOL(3)
3311 DATA
3312 . msg_type
3313 . / 'STATIC LINEAR',
3314 . 'STATIC NON-LINEAR',
3315 . 'DYNAMIC NON-LINEAR',
3316 . 'MODAL ANALYSIS',
3317 . 'CHECK',
3318 . 'QUASI-STATIC LINEAR',
3319 . 'QUASI-STATIC NON-LINEAR',
3320 . 'BUCKLING',
3321 . 'RADIOSS-AcuSolve DC-FSI'/,
3322 . msg_isol
3323 . / 'PREC. CONJUGATE GRADIENT',
3324 . 'DIRECT(MUMPS) ',
3325c . 'PREC. LANZOS ',
3326 . 'DIRECT',
3327 . 'MULTI-LEVEL CONDENSATION',
3328 . 'MIXE SOLVERS: 1 + 3',
3329 . 'MIXE SOLVERS: 1 + 4',
3330 . 'auto SELECT solver ',
3331 . 'pcg(gpu) ',
3332 . 'pcgp(projection) '/,
3333 . MSG_INSOL
3334 . / 'modified newton',
3335 . 'quasi-newton',
3336 . 'sloan elastoplas',
3337 . 'full newton'/,
3338 . MSG_PRE
3339 . / 'none',
3340 . 'diagonal jacobien',
3341 . 'imcomp. cholesky(0)',
3342 . 'stablilized ic(0)',
3343 . 'factored appro. inverses'/,
3344 . MSG_BSOL
3345 . / 'superlu',
3346 . 'mumps',
3347 . 'multi-level condensation'/
3348C-----------------------------------------------
3349 IPRINT=0
3350C IMPMV>0 isolv/=1 --> IMPMV=0
3351 IF (ISPMD == 0) IPRINT=1
3352 IF (IMP_CHK > 0) THEN
3353 NTY = 5
3354 IF (IPREC /= 5) IPREC=5
3355 IF (ILINE /= 1) ILINE=1
3356 IF (ISOLV /= 1) ISOLV=1
3357 IF (D_TOL /= ZERO) D_TOL = ZERO
3358 ENDIF
3359 IF(ISOLV >= 3 ) THEN
3360 CALL ANCMSG(MSGID=296,ANMODE=ANINFO,I1=ISOLV)
3361 ISOLV = 2
3362 END IF
3363
3364#ifndef MUMPS5
3365.AND. IF(ISOLV == 2 NSPMD > 1) THEN
3366 WRITE(6,*) "Fatal error: MUMPS is required, but not available"
3367 CALL ARRET(5)
3368 ENDIF
3369#endif
3370 IF (NEIG > 0) THEN
3371 ILINE=1
3372 ISPRB=0
3373 IQSTAT=0
3374 IF (NSPMD == 1) THEN
3375 IPREC=1
3376 ELSE
3377 IPREC=5
3378 ENDIF
3379 ENDIF
3380 IF (NBUCK > 0) THEN
3381 ILINE=1
3382C----fix mono w/ BCS solver
3383 IF (NSPMD == 1) ISOLV =2
3384 ENDIF
3385C--------solvers----
3386C machine precision minimum -simple
3387 CALL FLOATMIN(CS1(1),CS1(2),FLMIN)
3388 P_MACH = TWO*SQRT(FLMIN)
3389 IF (NSPMD > 1)CALL SPMD_MAX_S(P_MACH)
3390C AUTO SELECT SOLVER
3391 IF (ISOLV == 7 ) THEN
3392
3393 IF (ILINE == 1) THEN
3394
3395 WRITE(IOUT,*) ' ** warning ** : solver auto SELECT is not ','compatible with linear run '
3396 WRITE(IOUT,*) ' ** resetting to ** : default one '
3397
3398 WRITE(ISTDO,*) ' ** warning ** : solver auto SELECT is not ','compatible with linear run '
3399 WRITE(ISTDO,*) ' ** resetting to ** : default one '
3400
3401 ISOLV = 0
3402
3403 END IF
3404
3405 ENDIF
3406C----- default solver-> MUMPS
3407 IF (ISOLV == 0) ISOLV = 2
3408C-------ISOLV=2 --> use MUMPS anyway
3409 IMUMPSV = 0
3410.AND. IF (ISOLV > 1 ISOLV <9 ) IMUMPSV = 1
3411.OR. IF (ISOLV == 2 ISOLV ==3 ) THEN
3412 IMUMPSV = 1
3413 ISOLV = 3
3414 END IF
3415.OR..AND. IF ((ISOLV == 3ISOLV == 4)INTP_C < 0) THEN
3416 IF(IPRINT==1) THEN
3417 WRITE(IOUT,*) ' ** warning ** : direct solver is not ','compatible with impl/inter/knonl option '
3418 WRITE(IOUT,*) ' ** resetting to ** : mixe one '
3419 ENDIF
3420 ISOLV = ISOLV + 2
3421 ENDIF
3422C-------ISOLV=9 -> PCG w/ Projection
3423 IF (ISOLV == 9) THEN
3424 IF (M_VS ==0) M_VS=20
3425 IF (IPRO_S0 ==0) IPRO_S0=4
3426 END IF
3427 IF (M_VS > 0) THEN
3428C------case /IMPL/PROJV/n w/o /SOLV/9
3429 IF (ISOLV /= 9) THEN
3430 WRITE(IOUT,*) ' ** warning ** : /impl/projv is ','only compatible with pcgp solver '
3431 WRITE(IOUT,*) ' ** change to ** : isolv=9 '
3432 ISOLV = 9
3433 END IF
3434 END IF
3435
3436.AND..AND. IF (NBUCK > 0NSPMD == 1ISOLV /= 3) THEN
3437 WRITE(IOUT,*) ' ** warning ** : /impl/buckl is ','only compatible with bcs solver '
3438 WRITE(IOUT,*) ' ** change to ** : isolv=3 '
3439 ISOLV = 3
3440 ENDIF
3441
3442.OR. IF (IPREC == 0IPREC > 6)IPREC=5
3443
3444 IF (ISOLV == 2) THEN
3445.OR. IF (ITOL == 0ITOL > 1) ITOL=2
3446 IF (L_TOL == ZERO) L_TOL=P_MACH
3447.OR. ELSEIF (ISOLV == 1ISOLV>=7) THEN
3448 IF (ITOL == 0) ITOL=3
3449 IF (ITOL > 4) THEN
3450 IF(IPRINT==1) THEN
3451 WRITE(IOUT,*) ' ** warning ** : wrong linear stop ','criterion number, reset to default one ** '
3452 ENDIF
3453 ITOL=3
3454 ENDIF
3455 IF (L_TOL == ZERO) THEN
3456 IF (ITOL == 3) THEN
3457 L_TOL=P_MACH
3458.OR. IF (N_PAT > 1ISOLV == 9) L_TOL=P_MACH*EM01
3459 ELSE
3460 L_TOL=EM5
3461 ENDIF
3462 ENDIF
3463C--------direct-----
3464.OR. ELSEIF (ISOLV == 3ISOLV == 4) THEN
3465 IPREC=1
3466 IF (NSPMD>1) IMUMPSV = 1
3467C--------MIX-----
3468.OR. ELSEIF (ISOLV == 5ISOLV == 6) THEN
3469 IPREC=1
3470 IMUMPSV = 1
3471 IF (ITOL == 0) ITOL=1
3472 IF (ITOL > 4) THEN
3473 IF(IPRINT==1) THEN
3474 WRITE(IOUT,*) ' ** warning ** : wrong linear stop ','criterion number, reset to default one ** '
3475 ENDIF
3476 ITOL=3
3477 ENDIF
3478 IF (L_TOL == ZERO) THEN
3479 IF (ITOL == 3) THEN
3480 L_TOL=P_MACH*EM01
3481 ELSE
3482 L_TOL=EM5
3483 ENDIF
3484 ENDIF
3485 ELSE
3486 IF (ISPMD == 0)THEN
3487 WRITE(IOUT,*) ' ** warning ** : solver non available '
3488 WRITE(IOUT,*) ' ** resetting to ** : default one '
3489 ENDIF
3490 ISOLV = 1
3491 ENDIF
3492
3493.AND. IF (IPREC > 2IPREC /= 5) THEN
3494 IF (ISPMD == 0)THEN
3495 WRITE(IOUT,*) ' ** warning ** : ',
3496 . 'this precondition method is no more supported '
3497 WRITE(IOUT,*) ' ** resetting to ** : default one '
3498 ENDIF
3499 IPREC = 5
3500 ENDIF
3501
3502 IF (N_PAT > 1) THEN
3503 IF (N_PAT > 4) THEN
3504 IF(IPRINT==1) THEN
3505 WRITE(IOUT,*) ' ** warning ** : unavailable precondition',' matrix pattern, reset to 4 ** '
3506 ENDIF
3507 N_PAT = 4
3508 ENDIF
3509 IF (IPREC /= 5) THEN
3510 IF(IPRINT==1) THEN
3511 WRITE(IOUT,*) ' ** warning ** : input precondition matrix',' PATTERN ONLY AVAILABLE WITH IPREC=5 : IGNORED **'
3512 ENDIF
3513 n_pat = 1
3514 ENDIF
3515 ENDIF
3516
3517 p_mach = two*flmin
3518 IF (nvolu>0 .AND. impmv > 0 .AND. isolv/=1) THEN
3519 IF(iprint==1) THEN
3520 WRITE(iout,*) ' ** WARNING ** : DIRECT SOLVER IS NOT ','COMPATIBLE WITH MONITORED VOLUME TYPE3 '
3521 WRITE(iout,*) ' ** STIFFNESS WILL BE IGNORED ** '
3522 ENDIF
3523 impmv = 0
3524 END IF
3525
3526 IF (iline == 1) THEN
3527 nty=1
3528 IF (iqstat > 0) nty=6
3529 insolv = 0
3530 IF (ilintf > 0) imp_int7 = 2
3531 IF (intp_c < 0) ittoff = 1
3532 IF (ikt > 0) ikt=0
3533 ndtfix = 0
3534 IF (nbuck == 0) ikpres = 0
3535 idtc = 0
3536 IF (iscau > 0) THEN
3537 IF (ismdisp > 0) THEN
3538 IF(iprint==1) THEN
3539 WRITE(iout,*) ' ** WARNING ** : SMALL DISPLACEMENT IS IGNORED',' INCOMPATIBLE WITH CAUCHY STRESS OUTPUT OPTION;'
3540 ENDIF
3541 ismdisp = 0
3542 ENDIF
3543 ELSE
3544 ismdisp = 1
3545 END IF
3546 ELSE
3547C--------nonlinear parametres-----
3548 IF (isprb == 1.AND.idyna > 0) THEN
3549 IF(iprint==1) THEN
3550 WRITE(iout,*) ' ** WARNING ** : DYNAMIC IMPLICIT IS NOT ', 'COMPATIBLE WITH IMPL/SPRBACK OPTION '
3551 WRITE(iout,*) ' ** RESETTING ** : STATIC ONE '
3552 ENDIF
3553 idyna=0
3554 ENDIF
3555 IF (isprb == 1.AND.isigini > 0) THEN
3556 IF(iprint==1) THEN
3557 WRITE(iout,*) ' ** WARNING ** : PRE-STRESSES OPTION IS NOT ', 'COMPATIBLE WITH IMPL/SPRBACK OPTION '
3558 WRITE(iout,*) ' ** DEACTIVATING IT '
3559 ENDIF
3560 isigini=0
3561 ENDIF
3562
3563 IF (iqstat > 1) iqstat=1
3564
3565 IF (idyna > 0) THEN
3566 nty=3
3567 IF (iqstat > 0) THEN
3568 IF(iprint==1) THEN
3569 WRITE(iout,*) ' ** WARNING ** : QUASI-SATIC IMPLICIT IS NOT ','COMPATIBLE WITH DYNAMIC OPTION '
3570 WRITE(iout,*) ' ** RESETTING ** : DYNAMIC ONE '
3571 ENDIF
3572 iqstat=0
3573 END IF
3574 IF (idyna == 2) THEN
3575 IF (newm_a < half) newm_a = half
3576 IF (newm_b < half*newm_a) newm_b = half*newm_a
3577 ELSE
3578 IF (hht_a == zero) THEN
3579 hht_a=-zep05
3580 ELSE
3581 hht_a=min(zero,hht_a)
3582 hht_a=max(-third,hht_a)
3583 ENDIF
3584 ENDIF
3585 nexp = 1
3586 ELSE
3587 nty=2
3588 IF (iqstat > 0) nty=7
3589 END IF !(IDYNA > 0)
3590C--------------Non linear solvers
3591 IF (insolv > 4)THEN
3592 IF(iprint==1) THEN
3593 WRITE(iout,*) ' ** WARNING ** : WRONG NONLINEAR SOLVER '
3594 WRITE(iout,*) ' ** RESETTING TO** : DEFAULT ONE '
3595 ENDIF
3596 insolv = 0
3597 ENDIF
3598 IF (insolv==4)THEN
3599 ikt=4
3600 n_lim=1
3601 IF (isolv==5 .OR. isolv==6) isolv=3
3602 ENDIF
3603
3604 IF (insolv == 0)insolv = 1
3605C--------stop criteria-------
3606 IF (nitol < 12) THEN
3607 IF (nitol > 3) THEN
3608 IF(iprint==1) THEN
3609 WRITE(iout,*) ' ** WARNING ** : WRONG NONLINEAR STOP ',
3610 . 'CRITERION NUMBER, RESET TO DEFAULT ONE ** '
3611 ENDIF
3612 nitol=0
3613 ENDIF
3614 IF (nitol == 0) nitol=2
3615 IF (nitol == 1) THEN
3616 IF (n_tol == zero) n_tol=em3
3617 ELSEIF (nitol == 2) THEN
3618 IF (n_tol == zero) n_tol=five*em3
3619 ELSEIF (nitol == 3) THEN
3620 IF (n_tol == zero) n_tol=em3
3621 ENDIF
3622C IF (N_TOL == ZERO) N_TOL=EM3
3623 ELSEIF (nitol == 12) THEN
3624 IF (n_tole == zero) n_tole=em3
3625 IF (n_tolf == zero) n_tolf=em02
3626 ELSEIF (nitol == 23) THEN
3627 IF (n_tolu == zero) n_tolu=em02
3628 IF (n_tolf == zero) n_tolf=em02
3629 ELSEIF (nitol == 13) THEN
3630 IF (n_tolu == zero) n_tolu=em02
3631 IF (n_tole == zero) n_tole=em3
3632 ELSEIF (nitol == 123) THEN
3633 IF (n_tolu == zero) n_tolu=em02
3634 IF (n_tole == zero) n_tole=em3
3635 IF (n_tolf == zero) n_tolf=em02
3636 ELSE
3637 CALL ancmsg(msgid=132,anmode=aninfo,
3638 . i1=nitol)
3639 CALL arret(2)
3640 END IF !(NITOL < 12) THEN
3641C
3642 IF (idtc == 1) THEN
3643 IF (nl_dtp == 0) nl_dtp=4
3644 IF (nl_dtn == 0) nl_dtn=15
3645 IF (scal_dtn == zero) scal_dtn=two_third
3646 IF (scal_dtp == zero) scal_dtp=onep01
3647 ELSEIF (idtc == 2) THEN
3648 IF (nl_dtp == 0) nl_dtp=6
3649 IF (nl_dtn == 0) nl_dtn=20
3650 IF (idyna == 0) THEN
3651 IF (scal_dtn == zero) scal_dtn=two_third
3652 IF (scal_dtp == zero) scal_dtp=onep1
3653 ELSE
3654 IF (scal_dtn == zero) scal_dtn=two_third
3655 IF (scal_dtp == zero) scal_dtp=onep1
3656 ENDIF
3657C-------ALEN=ALEN0 IF ALEN0=0 sinon ALEN est calcule auto
3658C-------RIKS ARC LENGTH METHOD ------
3659 ELSEIF (idtc == 3) THEN
3660 IF (nl_dtp == 0) nl_dtp=12
3661 IF (nl_dtn == 0) nl_dtn=25
3662 IF (scal_dtn == zero) scal_dtn=two_third
3663 IF (scal_dtp == zero) scal_dtp=onep2
3664 IF (ial_m == 0) ial_m = 2
3665 IF (ndtfix > 0) THEN
3666 IF(iprint==1) THEN
3667 WRITE(istdo,*)
3668 . ' ** WARNING :RIKS METHOD IS NOT ','COMPATIBLE WITH FIXED TIME POINT '
3669 WRITE(istdo,*) ' ** FIXED TIME POINT : DEACTIVATED '
3670 WRITE(iout,*)' ** WARNING :RIKS METHOD IS NOT ','COMPATIBLE WITH FIXED TIME POINT '
3671 WRITE(iout,*) ' ** FIXED TIME POINT : DEACTIVATED '
3672 ndtfix = 0
3673 idtfix = 0
3674 ENDIF
3675 ENDIF
3676 ELSE
3677 IF(.NOT.(ismdisp > 0.AND.isolv < 4)) THEN
3678 IF(iprint==1) THEN
3679 WRITE(istdo,*) ' ** WARNING: NO TIMESTEP CONTROL METHOD DEFINED **'
3680 WRITE(istdo,*)' ** POTENTIAL INFINITE LOOP IF NO CONVERGENCE IS ACHIEVED **'
3681 WRITE(iout,*)' ** WARNING: NO TIMESTEP CONTROL METHOD DEFINED **'
3682 WRITE(iout,*) ' ** POTENTIAL INFINITE LOOP IF NO CONVERGENCE IS ACHIEVED **'
3683 ENDIF
3684 END IF !(.NOT.(ISMDISP > 0.AND.ISOLV < 4)) THEN
3685 IF (scal_dtn == zero) scal_dtn=half
3686 END IF !(IDTC == 1)
3687C
3688 IF (dt_max == zero) dt_max=ep10
3689 IF (dt_min == zero) dt_min=em10
3690C
3691 IF (dt_imp == zero) THEN
3692 IF(iprint==1) THEN
3693 WRITE(istdo,*)' ** WARNING: NO INITIAL TIMESTEP DEFINED **'
3694 WRITE(iout,*)' ** WARNING: NO INITIAL TIMESTEP DEFINED **'
3695 ENDIF
3696 ENDIF
3697C
3698 IF (rf_max == zero) rf_max=ep30
3699C
3700 IF (ismdisp == 1 ) THEN
3701 ikg =0
3702 ikpres = 0
3703 IF (ikproj == 0 ) ikproj =-1
3704C
3705 IF (idyna > 0 .AND. idtc > 0.AND.isolv < 4 .AND. scal_dtp /= one) THEN
3706 IF(iprint==1) THEN
3707 WRITE(istdo,*)' ** WARNING: CONST. TIME-STEP WILL BE USED WITH SMALL DISP. **'
3708 WRITE(iout,*)' ** WARNING: CONST. TIME-STEP WILL BE USED WITH SMALL DISP. **'
3709 ENDIF
3710 scal_dtp = one
3711 ENDIF
3712 END IF
3713C
3714 IF (n_lim == 0) THEN
3715 IF (isolv < 3.OR.idtc == 3) THEN
3716 n_lim=3
3717 ELSEIF (isolv == 5.OR.isolv == 6) THEN
3718 n_lim=3
3719 ELSE
3720 n_lim=6
3721 END IF
3722 END IF
3723C
3724 END IF !IF (ILINE == 1) THEN
3725
3726 IF (imp_chk > 0) THEN
3727 nty = 5
3728 IF (iqstat > 0) iqstat=1
3729 ENDIF
3730
3731 IF (nbuck > 0) nty = 8
3732 IF (isolv == 3.AND.imumpsd == 0) imumpsd=1
3733C
3734 IF (isolv == 5) imumpsd=1
3735C
3736C-----------attention initialization should not be inside below--
3737 IF(iprint==1) THEN
3738 IF (nspmd == 1.AND.isolv == 3) THEN
3739 msg_isol(isolv)='DIRECT (BCS)'
3740 ELSEIF (isolv == 3) THEN
3741 msg_isol(isolv)='DIRECT (MUMPS)'
3742 ENDIF
3743 IF (neig == 0) THEN
3744 IF(isolv == 3.OR.isolv == 4) THEN
3745 isol = isolv
3746 IF (imumpsv==1) isol = 2
3747 WRITE(iout,5010)msg_type(nty),msg_isol(isol),lprint
3748 ELSE
3749 isol=min(9,isolv)
3750 WRITE(iout,5000)msg_type(nty),msg_isol(isol),msg_pre(iprec),itol,l_lim,l_tol,lprint
3751 ENDIF
3752 ibid =0
3753 IF (intp_c < 0) ibid =1
3754 WRITE(iout,5020)ikg,ikpres,iautspc,isprb,ibid
3755 ELSE
3756 WRITE(iout,5050)msg_type(4)
3757 ENDIF
3758 IF (m_vs > 0) WRITE(iout,8400)m_vs,ipro_s0
3759 IF (ikproj /= 0) WRITE(iout,7600)ikproj
3760C
3761 IF (iline /= 1) THEN
3762 ibid = insolv
3763 IF (insolv==4) insolv=1
3764 IF (ibid == 5) ibid = 3
3765 IF (nitol < 12) THEN
3766 WRITE(iout,5100)msg_insol(ibid),dt_imp,nitol,n_tol
3767 ELSEIF (nitol < 123) THEN
3768 IF (nitol == 12) THEN
3769 WRITE(iout,5112)msg_insol(ibid),dt_imp,nitol,n_tole,n_tolf
3770 ELSEIF (nitol == 23) THEN
3771 WRITE(iout,5123)msg_insol(ibid),dt_imp,nitol,n_tolf,n_tolu
3772 ELSEIF (nitol == 13) THEN
3773 WRITE(iout,5113)msg_insol(ibid),dt_imp,nitol,n_tole,n_tolu
3774 ENDIF
3775 ELSEIF (nitol == 123) THEN
3776 WRITE(iout,5132)msg_insol(ibid),dt_imp,nitol,n_tole,n_tolf,
3777 . n_tolu
3778 ENDIF
3779C
3780 IF(isolv == 5.OR.isolv == 6) THEN
3781 WRITE(iout,5150)ipupd,n_lim,nprint,isigini,irref,idtc,dt_min,dt_max
3782 ELSE
3783 WRITE(iout,5180)n_lim, nprint,isigini,irref,idtc,dt_min,dt_max
3784 ENDIF
3785C
3786 IF(irig_m == 1) THEN
3787 WRITE(iout,8600)
3788 ELSEIF(irig_m > 1) THEN
3789 WRITE(iout,8700) e_ref(1:3)
3790 ENDIF
3791C
3792 WRITE(iout,8010) ismdisp
3793 WRITE(iout,8200) rf_min,rf_max
3794 IF (ncy_max > 0) WRITE(iout,7900) ncy_max
3795 IF (idtc == 1) THEN
3796 WRITE(iout,7700)
3797 WRITE(iout,5200)nl_dtp,scal_dtp,nl_dtn,scal_dtn
3798 ELSEIF (idtc == 2) THEN
3799 WRITE(iout,7700)
3800 WRITE(iout,5300)nl_dtp,nl_dtn,scal_dtn,scal_dtp,alen0
3801 ELSEIF (idtc == 3) THEN
3802 s = scal_riks
3803 WRITE(iout,7800)
3804 WRITE(iout,7650)nl_dtp,nl_dtn,scal_dtn,scal_dtp,alen0,ial_m,s
3805 scal_riks = s*s
3806 ENDIF
3807 END IF !(ILINE /= 1)
3808
3809
3810C
3811 IF (idyna == 2) THEN
3812 WRITE(iout,6300)newm_a,newm_b
3813 ELSEIF (idyna > 0) THEN
3814 WRITE(iout,5400)hht_a
3815 ELSEIF (iqstat > 0.AND.scal_dtq /= one) THEN
3816 WRITE(iout,6400)scal_dtq
3817 ENDIF
3818 IF (idy_damp > 0) WRITE(iout,6200)dampa_imp,dampb_imp
3819 IF (n_pat > 1) WRITE(iout,6100)n_pat
3820 IF (ittoff > 0) WRITE(iout,6500)
3821 IF (ilintf > 0) WRITE(iout,6600)
3822 IF (iscau > 0) WRITE(iout,6700)
3823 IF (imp_lr > 0) WRITE(iout,6800)
3824C
3825 ENDIF ! IF(IPRINT==1) THEN
3826C
3827 IF (iline /= 1) THEN
3828 IF (iline_s == 0) iline_s=3
3829 IF (iline_s == 100) THEN
3830 iline_s=0
3831 IF(iprint==1)WRITE(iout,7000)
3832 ENDIF
3833 ELSE
3834 iline_s=0
3835 ENDIF
3836
3837 IF (iline /= 1.AND.iline_s > 0) THEN
3838 IF (nls_lim == 0) nls_lim=20
3839 IF (ls_tol == zero) ls_tol=em03
3840 IF(iprint==1)WRITE(iout,6900)iline_s,nls_lim,ls_tol
3841 IF (iline_s == 3) THEN
3842 IF (nitol /= 2.AND.nitol /= 4) THEN
3843 ls_tol=five*ls_tol
3844 ELSE
3845 ls_tol=half*ls_tol
3846 ENDIF
3847 ELSEIF (iline_s == 2) THEN
3848 ls_tol=half*ls_tol
3849 ENDIF
3850 ENDIF
3851
3852 IF (iline /= 1.AND.irefi > 0) THEN
3853 IF(iprint==1)WRITE(iout,7100)irefi
3854 END IF
3855
3856 IF (iline /= 1.AND.ndiver == 0) THEN
3857 IF (irefi > 2.AND.iline_s /= 1) THEN
3858 ndiver=2
3859 ELSEIF(ikt > 0.AND.iline_s /= 1) THEN
3860 ndiver=0
3861 ELSE
3862 ndiver=1
3863 END IF
3864 ELSEIF(ndiver == -1) THEN
3865 ndiver=0
3866 END IF
3867
3868 IF (iline /= 1.AND.ndiver > 0) THEN
3869 IF(iprint==1)WRITE(iout,7200)ndiver
3870 ndiver = ndiver + 1
3871 END IF
3872
3873 IF (iline /= 1) THEN
3874 IF (tol_div == zero ) THEN
3875 tol_div = ep04
3876 IF (iline_s == 1) tol_div=ep03
3877 IF (ismdisp == 1) tol_div=ep10
3878 ELSE
3879 IF(iprint==1)WRITE(iout,8500)tol_div
3880 END IF
3881 END IF
3882
3883 IF (ikt == 1) THEN
3884 IF(iprint==1)WRITE(iout,7300)
3885 ELSEIF (ikt == 2) THEN
3886 IF(iprint==1)WRITE(iout,7400)
3887 ELSEIF (ikt == 3) THEN
3888 IF(iprint==1)WRITE(iout,8000)
3889 ELSEIF (ikt == 4) THEN
3890 IF(iprint==1)WRITE(iout,8100)
3891 END IF
3892
3893 IF (ndtfix > 0) THEN
3894 IF(iprint==1) THEN
3895 WRITE(iout,7500) ndtfix
3896 WRITE(iout,7510)(dtimpf(j),j=1,ndtfix)
3897 END IF
3898 END IF
3899
3900 IF (nbuck > 0) THEN
3901 IF (imumpsv> 0) THEN
3902 IF (bisolv /= 1.AND.bisolv /= 2) THEN
3903 WRITE(istdo,*) ' ** ERROR ** UNAVAILABLE SOLVER FOR BUCKLING ANALYSIS'
3904 WRITE(iout,*) ' ** ERROR ** UNAVAILABLE SOLVER FOR BUCKLING ANALYSIS'
3905 CALL arret(2)
3906 ENDIF
3907 IF (ispmd == 0) THEN
3908 WRITE(iout,6000) nbuck, shftbuck, bniter, bincv, bmaxncv, msg_bsol(2)
3909 ENDIF
3910 ELSE
3911 CALL prout_buck(iout,nbuck,ibuckl)
3912 END IF
3913 ENDIF
3914C
3915 RETURN
3916 5000 FORMAT(/
3917 . ' IMPLICIT OPTIONS USED :'//
3918 . ' IMPLICIT TYPE : . . . . . . . . . . . . . ',2x,a/
3919 . ' LINEAR SOLVER : . . . . . . . . . . . . . ',2x,a/
3920 . ' PRECONDITION METHOD : . . . . . . . . . . ',2x,a/
3921 . ' STOP CRITERION FOR LINEAR SOLVER . . . . .',2x,i5/
3922 . ' ITERATION NUM. LIMIT FOR LINEAR SOLVER . .',2x,i5/
3923 . ' TOLERANCE FOR LINEAR SOLVER . . . . . . . ',2x,g14.7/
3924 . ' PRINTOUT FREQUENCY FOR LINEAR SOLVER . . .',2x,i5/)
3925 5010 FORMAT(/
3926 . ' IMPLICIT OPTIONS USED :'//
3927 . ' IMPLICIT TYPE : . . . . . . . . . . . . . ',2x,a/
3928 . ' LINEAR SOLVER : . . . . . . . . . . . . . ',2x,a/
3929 . ' PRINTOUT FREQUENCY FOR LINEAR SOLVER . . .',2x,i5/)
3930 5020 FORMAT(/
3931 . ' GEOMETRICAL STIFFNESS FLAG . . .. . . . .',2x,i5/
3932 . ' LOAD (PRESSURE) STIFFNESS FLAG . . . . . ',2x,i5/
3933 . ' AUTOSPC FLAG (0:OFF,1:ON,2:ALL) . . .. . .',2x,i5/
3934 . ' SPRING-BACK OPTION : . . . . . . . . . . .',2x,i5/
3935 . ' SPECIAL PCG SOLVER FOR CONTACT . . . .. . ',2x,i5/)
3936 5050 FORMAT(/
3937 . ' IMPLICIT OPTIONS USED :'//
3938 . ' IMPLICIT TYPE : . . . . . . . . . . . . . ',2x,a//)
3939 5100 FORMAT(
3940 . ' NON-LINEAR SOLVER : . . . . . . . . . . . ',2x,a/
3941 . ' INITIAL TIME STEP . . . . . . . . . . . . ',2x,g14.7/
3942 . ' stop criterion for non-linear solver . . .',2X,I5/
3943 . ' tolerance for non-linear solver . . . . . ',2X,G14.7)
3944 5112 FORMAT(
3945 . ' non-linear solver : . . . . . . . . . . . ',2X,A/
3946 . ' initial time step . . . . . . . . . . . . ',2X,G14.7/
3947 . ' stop criterion for non-linear solver . . .',2X,I5/
3948 . ' energy tolerance for non-linear solver . .',2x,g14.7/
3949 . ' FORCE TOLERANCE FOR NON-LINEAR SOLVER . .',2x,g14.7)
3950 5113 FORMAT(
3951 . ' NON-LINEAR SOLVER : . . . . . . . . . . . ',2x,a/
3952 . ' INITIAL TIME STEP . . . . . . . . . . . . ',2x,g14.7/
3953 . ' STOP CRITERION FOR NON-LINEAR SOLVER . . .',2x,i5/
3954 . ' ENERGY TOLERANCE FOR NON-LINEAR SOLVER . .',2x,g14.7/
3955 . ' DISP. TOLERANCE FOR NON-LINEAR SOLVER . .',2x,g14.7)
3956 5123 FORMAT(
3957 . ' NON-LINEAR SOLVER : . . . . . . . . . . . ',2x,a/
3958 . ' INITIAL TIME STEP . . . . . . . . . . . . ',2x,g14.7/
3959 . ' STOP CRITERION FOR NON-LINEAR SOLVER . . .',2x,i5/
3960 . ' FORCE TOLERANCE FOR NON-LINEAR SOLVER . .',2x,g14.7/
3961 . ' DISP. TOLERANCE FOR NON-LINEAR SOLVER . .',2x,g14.7)
3962 5132 FORMAT(
3963 . ' NON-LINEAR SOLVER : . . . . . . . . . . . ',2x,a/
3964 . ' INITIAL TIME STEP . . . . . . . . . . . . ',2x,g14.7/
3965 . ' STOP CRITERION FOR NON-LINEAR SOLVER . . .',2x,i5/
3966 . ' ENERGY TOLERANCE FOR NON-LINEAR SOLVER . .',2x,g14.7/
3967 . ' FORCE TOLERANCE FOR NON-LINEAR SOLVER . .',2x,g14.7/
3968 . ' DISP. TOLERANCE FOR NON-LINEAR SOLVER . .',2x,g14.7)
3969 5150 FORMAT(
3970 . ' REFORMING FLAG IN MIX SOLVER(0:AUTO,>0:ITER)',2x,i5/
3971 . ' ITERATION NUM.LIMIT FOR REFORMING MATRIX .',2x,i5/
3972 . ' PRINTOUT FREQUENCY FOR NON-LINEAR SOLVER .',2x,i5/
3973 . ' PRE-STRESSES CONTROL FLAG . . . . . . . . ',2x,i5/
3974 . ' REFERENCE RESIDUAL FLAG . . . . . . .. . .',2x,i5/
3975 . ' TIME STEP CONTROL METHOD . . . . . . . . .',2x,i5/
3976 . ' MINIMUM TIME STEP . . . . . . . . . . . . ',2x,g14.7/
3977 . ' MAXIMUM TIME STEP . . . . . . . . . . . . ',2x,g14.7//)
3978 5180 FORMAT(
3979 . ' ITERATION NUM.LIMIT FOR REFORMING MATRIX .',2x,i5/
3980 . ' PRINTOUT FREQUENCY FOR NON-LINEAR SOLVER .',2x,i5/
3981 . ' PRE-STRESSES CONTROL FLAG . . . . . . . . ',2x,i5/
3982 . ' REFERENCE RESIDUAL FLAG . . . . . . .. . .',2x,i5/
3983 . ' TIME STEP CONTROL METHOD . . . . . . . . .',2x,i5/
3984 . ' MINIMUM TIME STEP . . . . . . . . . . . . ',2x,g14.7/
3985 . ' MAXIMUM TIME STEP . . . . . . . . . . . . ',2x,g14.7//)
3986 5200 FORMAT(
3987 . ' CONVERGE ITERATION NUM. FOR INCREASING DT. ',2x,i5/
3988 . ' INCREASING TIME STEP SCALE FACTOR. . . . .',2x,g14.7/
3989 . ' CONVERGE ITERATION NUM. FOR DECREASING DT .',2x,i5/
3990 . ' DECREASING TIME STEP SCALE FACTOR. . . . .',2x,g14.7/)
3991 5300 FORMAT(
3992 . ' DESIRED CONVERGE ITERATION NUM. . . . . . .',2x,i5/
3993 . ' MAXIMUM CONVERGE ITERATION NUM. . . . . . .',2x,i5/
3994 . ' DECREASING TIME STEP SCALE FACTOR. . . . .',2x,g14.7/
3995 . ' MAXIMUM INCREASING TIME STEP SCALE FACTOR ',2x,g14.7/
3996 . ' CONSTANT ARC-LENGTH. . . . . . .. . . . . ',2x,g14.7//)
3997 5400 FORMAT(
3998 . ' TIME INTEGRATION WITH HHT-ALPHA CONSTANT ',2x,g14.7//)
3999 6000 FORMAT(
4000 . ' EULER BUCKLING ANALYSIS :'/
4001 . ' NUMBER OF MODES TO BE COMPUTED :. . . . . ',2x,i5/
4002 . ' SHIFT IN BUCKLING MODES PENCIL :. . . . . ',2x,g14.7/
4003 . ' MAXIMUM NUMBER OF ARNOLDI ITERATIONS :. . ',2x,i5/
4004 . ' INITIAL FACTOR FOR SUBSPACE DIMENSION : . ',2x,i5/
4005 . ' MAXIMUM FACTOR FOR SUBSPACE DIMENSION : . ',2x,i5/
4006 . ' LINEAR SOLVER : . . . . . . . . . . . . . ',2x,a/)
4007 6100 FORMAT(
4008 . ' PRECONDITION MATRIX SPARSE PATTERN(A^N) . ',2x,i5/)
4009 6200 FORMAT(
4010 . ' IMPLICIT RAYLEIGH DAMPING COEFFICIENTS : ',2x,2g14.7/)
4011 6300 FORMAT(
4012 . ' TIME INTEGRATION WITH NEWMARK CONSTANTS ',2x,2g14.7//)
4013 6400 FORMAT(
4014 . ' QUASI-STATIC INERTIA SCALE FACTOR : ',2x,g14.7//)
4015 6500 FORMAT(
4016 . ' CROSSING CONTACT NODE DETECTION DEACTIVATED .',/)
4017 6600 FORMAT(
4018 . ' LINEAR ANALYSE TAKING INTO ACCOUNT CONTACT . .',/)
4019 6700 FORMAT(
4020 . ' CAUCHY STRESS SELECTED FOR LINEAR ANALYSE . .',/)
4021 6800 FORMAT(
4022 . ' TAKING INTO ACCOUNT LARGE RIGID ROTATION . .',/)
4023 6900 FORMAT(
4024 . ' LINE-SEARCH METHOD :. . . . . . . . . . . .',2x,i5/
4025 . ' MAXIMUM LINE-SEARCH ITERATION NUM. . . . . ',2x,i5/
4026 . ' TOLERANCE FOR LINE-SEARCH ITERATION. . . .',2x,g14.7/)
4027 7000 FORMAT(
4028 . ' LINE-SEARCH DEACTIVATED . . . . . . . . . . .',/)
4029 7100 FORMAT(
4030 . ' REFERENCE RESIDUAL OPTIONS FOR CONTACT . . ',2x,i5/)
4031 7200 FORMAT(
4032 . ' DIVERGENCE CRITERION NUMBERS : . . . . . .',2x,i5/)
4033 7300 FORMAT(
4034 . ' SIMPLIFIED TANGENT STIFFNESS ACTIVATED . .',/)
4035 7400 FORMAT(
4036 . ' AVERAGE CONTINUUM TANGENT STIFFNESS ACTIVATED',/)
4037 7500 FORMAT(
4038 . ' FIXED TIME POINT NUMBER: . . . . . . . .',2x,i5)
4039 7510 FORMAT( /,3x,6g20.13,//)
4040 7600 FORMAT(
4041 . ' FULL PROJECTION FOR QEPH(-1:OFF,1:ON) . . .. . .',2x,i5/)
4042 7650 FORMAT(
4043 . ' DESIRED CONVERGE ITERATION NUM. . . . . . .',2x,i5/
4044 . ' MAXIMUM CONVERGE ITERATION NUM. . . . . . .',2x,i5/
4045 . ' DECREASING TIME STEP SCALE FACTOR. . . . .',2x,g14.7/
4046 . ' MAXIMUM INCREASING TIME STEP SCALE FACTOR ',2x,g14.7/
4047 . ' CONSTANT ARC-LENGTH. . . . . . .. . . . . ',2x,g14.7/
4048 . ' CONSTRAINT TYPE . . . .. . . . . . . . . . ',2x,i5/
4049 . ' LOADING CONTRIBUTION SCALE FACTOR . . . . ',2x,g14.7//)
4050 7700 FORMAT('AUTOMATIC TIME STEP CONTROL:'/)
4051 7800 FORMAT('AUTOMATIC TIME STEP WITH RIKS METHOD:'/)
4052 7900 FORMAT(
4053 . ' MAXIMUM INCREMENT(NCYCLE) NUM . . .. . .',2x,i5/)
4054 8000 FORMAT(
4055 . ' CONTINUUM TANGENT STIFFNESS ACTIVATED. .',/)
4056 8100 FORMAT(
4057 . ' CONSISTENT TANGENT STIFFNESS ACTIVATED. .',/)
4058 8200 FORMAT(
4059 . ' MINIMUM REFERENCE FORCE RESIDUAL . . . .',2x,g14.7/
4060 . ' MAXIMUM REFERENCE FORCE RESIDUAL . . . . ',2x,g14.7//)
4061 8010 FORMAT(
4062 . ' SMALL DISPLACEMENT OPTION(0:OFF,1:ON) . . .. . .',2x,i5/)
4063 8400 FORMAT(
4064 . ' NUMBER OF PROJECTION VECTORS OF PCG . . . ',2x,i5/
4065 . ' PROJECTION VECTOR INITIALIZATION METHOD . ',2x,i5/)
4066 8500 FORMAT(
4067 . ' DIVERGING TOL. OF RELATIVE FORCE RESIDUAL :',2x,g14.7/)
4068 8600 FORMAT(
4069 . ' FREE RIGID MOTION /MRIGM USED . . . . . . .'/)
4070 8700 FORMAT(
4071 . ' FREE RIGID MOTION /MRIGM W/ REF_NODE_ID:',2x,3i10/)
#define my_real
Definition cppsort.cpp:32
subroutine prout_buck(ip, nbuck, ibuck)
Definition lectur.F:3223
subroutine jacobien(a, n, ew, ev, tol, lamda)
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21
for(i8=*sizetab-1;i8 >=0;i8--)
integer, dimension(4) e_ref
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

◆ lectur()

subroutine lectur ( integer, dimension(*) icode,
integer, dimension(*) iskew,
integer, dimension(liskn,*) iskwn,
integer, dimension(nixtg,*) ixtg,
integer, dimension(nixs,*) ixs,
integer, dimension(nixq,*) ixq,
integer, dimension(nixc,*) ixc,
integer, dimension(nixt,*) ixt,
integer, dimension(nixp,*) ixp,
integer, dimension(nixr,*) ixr,
integer, dimension(*) itab,
integer, dimension(*) itabm1,
integer, dimension(*) npc,
integer, dimension(nparg,ngroup) iparg,
integer, dimension(nigrv,*) igrv,
integer, dimension(*) ibgr,
integer, dimension(npari,*) ipari,
integer, dimension(nnpby,*) npby,
integer, dimension(*) lpby,
integer, dimension(*) nnlink,
integer, dimension(*) llink,
integer, dimension(*) linale,
integer, dimension(*) neflsw,
integer, dimension(*) nnflsw,
integer, dimension(*) icut,
integer, dimension(*) inoise,
x,
v,
vr,
ms,
in,
skew,
pld,
rby,
wa,
crflsw,
xcut,
anin,
dampr,
type(group_), dimension(ngrnod) igrnod,
integer, dimension(nisp,*) kxsp,
integer, dimension(*) weight,
integer, dimension(*) fr_rby2,
integer, dimension(nspmd+2,*) fr_rl,
partsav,
integer, dimension(*) ipart,
pm,
integer, dimension(*) monvol,
volmon,
integer, dimension(*) ipart_state,
geo,
type(ttable), dimension(*) table,
integer, dimension(liskn,*) iframe,
xframe,
type(elbuf_struct_), dimension(ngroup), target elbuf_str,
integer, dimension(npropgi,*) igeo,
type(intbuf_struct_), dimension(*) intbuf_tab,
integer, dimension(npropmi,*) ipm,
type (h3d_database) h3d_data,
type (multi_fvm_struct) multi_fvm,
type(group_), dimension(ngrpart) igrpart,
integer, dimension(*) tag_skins6,
integer, dimension(sizfield,*) icfield,
integer, dimension(*) lcfield,
integer, dimension(*) tagslv_rby,
character, dimension(1024,mds_nmat) mds_label,
integer, dimension(mds_nmat*max_depvar) mds_output_table,
integer mds_nmat,
integer max_depvar,
integer, dimension(*) mds_ndepsvar,
type (stack_ply) stack,
integer, dimension(*) ibcl,
integer, dimension(*) iloadp,
integer, dimension(*) lloadp,
type (sensors_), intent(inout), target sensors,
type (dynain_database), intent(inout) dynain_data,
type (dt_), intent(inout) dt,
type (loads_), intent(in) loads,
type(output_), intent(inout) output,
type(names_and_titles_), intent(inout) names_and_titles,
type (matparam_struct_), dimension(nummat), intent(inout) mat_param,
type (glob_therm_), intent(inout) glob_therm,
type (pblast_), intent(inout) pblast )
Parameters
[in,out]outputoutput structure
[in,out]names_and_titlesNAMES_AND_TITLES host the input deck names and titles for outputs

Definition at line 86 of file lectur.F.

105C-----------------------------------------------
106C M o d u l e s
107C-----------------------------------------------
108 USE table_mod
109 USE message_mod
110 USE mat_elem_mod
111 USE intbufdef_mod
112 USE stack_mod
113 USE h3d_mod
114 USE multi_fvm_mod
115 USE groupdef_mod
117 USE fvbag_mod
118 USE check_mod
119 USE sensor_mod
120 USE anim_mod
121 USE outputs_mod
122 USE state_mod
124 USE ale_mod
125 USE dt_mod
126 USE loads_mod
127 USE output_mod
128 USE fxb_mod
129 USE my_alloc_mod
131 USE elbufdef_mod
132 USE glob_therm_mod
133 USE pblast_mod
134 USE prelech3d_mod
135C-----------------------------------------------
136C I m p l i c i t T y p e s
137C-----------------------------------------------
138#include "implicit_f.inc"
139C-----------------------------------------------
140C C o m m o n B l o c k s
141C-----------------------------------------------
142#include "com01_c.inc"
143#include "com04_c.inc"
144#include "com06_c.inc"
145#include "com08_c.inc"
146#include "com09_c.inc"
147#include "param_c.inc"
148#include "warn_c.inc"
149#include "scr02_c.inc"
150#include "scr03_c.inc"
151#include "scr05_c.inc"
152#include "scr06_c.inc"
153#include "scr07_c.inc"
154#include "scr14_c.inc"
155#include "scr16_c.inc"
156#include "scr17_c.inc"
157#include "scr18_c.inc"
158#include "cong1_c.inc"
159#include "cong2_c.inc"
160#include "scrfs_c.inc"
161#include "stati_c.inc"
162#include "statr_c.inc"
163#include "units_c.inc"
164#include "scrcut_c.inc"
165#include "scrnoi_c.inc"
166#include "parit_c.inc"
167#include "chara_c.inc"
168#include "task_c.inc"
169#include "sphcom.inc"
170#include "impl1_c.inc"
171#include "tabsiz_c.inc"
172#include "remesh_c.inc"
173#include "sms_c.inc"
174#include "rad2r_c.inc"
175#include "inter22.inc"
176#include "userlib.inc"
177#include "spmd_c.inc"
178#include "intstamp_c.inc"
179#include "couple_c.inc"
180C-----------------------------------------------
181C D u m m y A r g u m e n t s
182C-----------------------------------------------
183 INTEGER IPARG(NPARG,NGROUP), IPARI(NPARI,*), IXS(NIXS,*),
184 . IXQ(NIXQ,*), IXC(NIXC,*), IXT(NIXT,*), IXP(NIXP,*),
185 . IXR(NIXR,*), IXTG(NIXTG,*),ITAB(*), ITABM1(*),
186 . ISKWN(LISKN,*), NPBY(NNPBY,*),NNLINK(*) ,LLINK(*) ,LINALE(*),
187 . ICODE(*) ,ISKEW(*),NPC(*),NEFLSW(*),NNFLSW(*),ICUT(*),
188 . INOISE(*),IGRV(NIGRV,*),IBGR(*),
189 . LPBY(*),KXSP(NISP,*),WEIGHT(*),FR_RBY2(*),
190 . FR_RL(NSPMD+2,*),
191 . IPART(*), MONVOL(*), IPART_STATE(*),IFRAME(LISKN,*),
192 . IGEO(NPROPGI,*),IPM(NPROPMI,*),TAG_SKINS6(*),
193 . ICFIELD(SIZFIELD,*), LCFIELD(*), TAGSLV_RBY(*),
194 . MDS_OUTPUT_TABLE(MDS_NMAT*MAX_DEPVAR),MDS_NMAT,MAX_DEPVAR,
195 . MDS_NDEPSVAR(*),IBCL(*),ILOADP(*),LLOADP(*)
196 my_real
197 . skew(lskew,*),rby(*),ms(*),in(*),anin(*),
198 . x(*), v(*), vr(*),wa(*),pld(*),crflsw(*),xcut(*),
199 . dampr(nrdamp,*), partsav(*),pm(npropm,*),
200 . volmon(*),geo(npropg,*),xframe(nxframe,*)
201 TYPE(TTABLE) TABLE(*)
202 TYPE(ELBUF_STRUCT_), TARGET, DIMENSION(NGROUP) :: ELBUF_STR
203 TYPE(INTBUF_STRUCT_) INTBUF_TAB(*)
204 TYPE (H3D_DATABASE) :: H3D_DATA
205 TYPe (MULTI_FVM_STRUCT) :: MULTI_FVM
206 TYPE(GROUP_) ,DIMENSION(NGRNOD) :: IGRNOD
207 TYPE(GROUP_) ,DIMENSION(NGRPART) :: IGRPART
208 CHARACTER MDS_LABEL(1024,MDS_NMAT)
209 TYPE (STACK_PLY) :: STACK
210 TYPE (SENSORS_) ,INTENT(INOUT) ,TARGET :: SENSORS
211 TYPE (DYNAIN_DATABASE), INTENT(INOUT) :: DYNAIN_DATA
212 TYPE (DT_), INTENT(INOUT) :: DT
213 TYPE (LOADS_), INTENT(IN) :: LOADS
214 TYPE(OUTPUT_), INTENT(INOUT) :: OUTPUT !< output structure
215 TYPE(NAMES_AND_TITLES_),INTENT(INOUT) :: NAMES_AND_TITLES !< NAMES_AND_TITLES host the input deck names and titles for outputs
216 TYPE (MATPARAM_STRUCT_) ,DIMENSION(NUMMAT) ,INTENT(INOUT) :: MAT_PARAM
217 type (glob_therm_) ,intent(inout) :: glob_therm
218 type (pblast_) ,intent(inout) :: pblast
219C-----------------------------------------------
220C L o c a l V a r i a b l e s
221C-----------------------------------------------
222 INTEGER NLEC(16), I, NSLIOF, NELSOF, NELQOF, NDAMPN,
223 . NELCOF, NELTOF, NELPOF, NELROF, NINTCH, NUBCSN, ITFOR0, IRFE0,
224 . IRFL0, K, NELOF, NN, NBC, IL, II, J, KLG, KUG, NBLK, NG,
225 . ITY, NEL, NFT, IAD, IGOF, K1, K2, N, I1, I2, I3, IR1, IR2, IR3,
226 . ISK, IC, ICR, M1, M2, IM, NOINT, NSEARCH, JPRI, NPTS,
227 . NRBYON, NRBYOF, NELTGOF,NINIV,NSLIOFN,NSLIOFS,KK,NTY,
228 . NSN,NRTS,NRTM,NMN,L,NCPRI1,NRLINK0,NALELK0,
229 . NSPHOF,IWIOUT,NLECSPH(10),NFXINP,NCRST1,NEIGOFF,NEOFF,
230 . NALEOF,NEULEROF,NTHERMOF,NFVMESH,MLW,LL,ISK1,ISK2,
231 . NFVMODI,IOK, ALEStrL(0:8), NALELINK0, GR_ID,
232 . NALELK_starter, uID, NALELK_removed, JALE,USERL_COUNT,
233 . IDEL2,IS,
234 . STEXT1,MULTIREST1,NLPRI1,LOWMACH_OPT,IERROR,
235 . NINTERSKID,IVOLU,IFV,IFV_TYPE,ISTATG_P,
236 . K3,K4,K5,K6,K7,K8,K9,NINEFRICG,NS,NI,NPARTOF,K10,K11
237
238 INTEGER :: NBPARTALEON, NBPARTALEOFF, PARTID, ISON, ION, IOFF, NBALEON_PART, NBALEOFF_PART
239 INTEGER, DIMENSION(:), ALLOCATABLE :: ALEOFF_PARTIDS_TMP, ALEOFF_PARTIDS,
240 . ALEON_PARTIDS_TMP, ALEON_PARTIDS
241 INTEGER, DIMENSION(:), ALLOCATABLE :: ALELIN_ON_OFF
242 my_real
243 . tfi, dtf, dtm, alp, gam,
244 . cv1, cv2, cv3, volm, tstart, tfin,dt_input, dt_crit
245 CHARACTER*9 Label1,Label2,Label3,Label4,Label5,Label6,Label7,Label8
246 CHARACTER*16 ALEform(0:8),Cale1,Cale2,CHAR1,CHAR2,Label9
247 CHARACTER*3 :: LABEL_DEF,LABEL_ROT
248 CHARACTER(LEN=4), DIMENSION(20) :: TITLE
249 my_real eta1,eta2,min_aspect,min_defv
250 my_real, DIMENSION(:), POINTER :: offg
251 TYPE (SENSOR_STR_) ,DIMENSION(:) ,POINTER :: SENSOR_TAB
252 LOGICAL IS_ALREADY_PRINTED
253 REAL(KIND=8) :: dth
254 REAL(KIND=8), dimension(9) :: dth1
255 INTEGER, DIMENSION(:), ALLOCATABLE :: IPARTOF
256C-----------------------------------------------
257C E x t e r n a l F u n c t i o n s
258C-----------------------------------------------
259 INTEGER,EXTERNAL :: NGR2USR
260C-----------------------------------------------
261 ! setting NOINT in IPARI(13)
262 ierr = 0
263 dt_input= zero
264 DO i=1,ninter
265 ipari(13,i)=10
266 IF(ipari(15,i) == 0) ipari(15,i)=i
267 ENDDO
268 sensor_tab => sensors%SENSOR_TAB(1:sensors%NSENSOR)
269
270 CALL chkipari(ipari)
271
272 READ (iin,'(20A4)') title
273 READ (iin,'(4F16.0,I8,I10,2I8)')tfi,dth,dtf,dtm,ncpri1,ncrst1,multirest1,nlpri1
274 READ (iin,'(5F16.0)')(dth1(i),i=1,5)
275 READ (iin,'(4F16.0)')(dth1(i+5),i=1,4)
276 READ (iin,'(6F10.0)')alp,gam,cv1,cv2,cv3,volm
277 READ (iin,'(I8)') lowmach_opt
278 READ (iin,'(10I8)') nsliof,nelsof,nelqof,nelcof,neltof,nelpof,nelrof,neltgof,nsliofn,nsliofs
279 READ (iin,'(I8)') nsphof
280 READ (iin,'(4I8)') naleof,neulerof,nthermof,npartof
281 READ (iin,'(2I8)') nrlink0,nalelk0
282 READ (iin,'(2I8)') nalelink0
283C--------------
284C ALE ON / OFF
285C--------------
286 READ (iin, '(I8, I8)') nbpartaleon, nbpartaleoff
287 IF(mcheck == 0)THEN
288 nrlink=nrlink0
289 nalelk=nalelk0
290 nalelink=nalelink0
291 irprev = 0
292 ENDIF
293 nrbyon = 0
294 nrbyof = 0
295 nubcsn = 0
296 niniv = 0
297 READ (iin,'(2I8)') nubcsn,niniv
298 READ (iin,'(3I8)') nintch,nrbyon,nrbyof
299 READ (iin,'(I8)') ndampn
300 READ(iin,'(I8)') nfxinp
301C-----
302 READ(iin,'(2I8)') neigoff, neoff
303 READ(iin,'(2I8)') nfvmesh, nfvmodi
304C-----
305 IF(ncpri1 == 0) ncpri1=1
306 IF(mcheck == 0)ncpri = ncpri1
307C-----
308 IF(mcheck == 0)nlpri = nlpri1
309C
310 IF(ncrst1 == 0.AND.mcheck == 0) ncrst=10000000
311 IF(tfi /= 0.0) tstop=tfi
312C
313 IF(toutp0 /= zero) toutp = toutp0
314 IF(dtoutp0 > zero) dtoutp= dtoutp0
315 IF(dtoutp<=zero) toutp = ep30
316 IF (toutp < tt-dt2.AND.dtoutp > zero)toutp = toutp
317 . + int((tt-dt2-toutp)/dtoutp)*dtoutp
318 IF (toutp < tt-dt2)toutp = toutp+dtoutp
319C
320C .sta files
321 IF(tstat0 /= zero) tstat = tstat0
322 IF(dtstat0 > zero) dtstat= dtstat0
323 IF(dtstat<=zero) tstat = ep30
324 IF (tstat < tt-dt2.AND.dtstat > zero)tstat = tstat
325 . + int((tt-dt2-tstat)/dtstat)*dtstat
326 IF (tstat < tt-dt2)tstat = tstat+dtstat
327C .dynain files
328 IF(dynain_data%TDYNAIN0 /= zero) dynain_data%TDYNAIN = dynain_data%TDYNAIN0
329 IF(dynain_data%DTDYNAIN0 > zero) dynain_data%DTDYNAIN= dynain_data%DTDYNAIN0
330 IF(dynain_data%DTDYNAIN<=zero) dynain_data%TDYNAIN = ep30
331 IF (dynain_data%TDYNAIN < tt-dt2.AND.dynain_data%DTDYNAIN > zero)dynain_data%TDYNAIN = dynain_data%TDYNAIN
332 . + int((tt-dt2-dynain_data%TDYNAIN)/dynain_data%DTDYNAIN)*dynain_data%DTDYNAIN
333 IF (dynain_data%TDYNAIN< tt-dt2)dynain_data%TDYNAIN = dynain_data%TDYNAIN+dynain_data%DTDYNAIN
334C abf files
335 DO i=1,10
336 IF(dtabf0(i) > zero) dtabf(i)= dtabf0(i)
337 IF(dtabfwr0(i) > zero) dtabfwr(i)= dtabfwr0(i)
338 ENDDO
339 IF (abfile(1) /= 0) tabfis(1) = tt
340C
341 IF(dth /= zero.AND.mcheck == 0) output%TH%DTHIS=dth
342 DO i= 1, 9
343 IF(dth1(i) /= zero.AND.mcheck == 0) output%TH%DTHIS1(i)=dth1(i)
344 ENDDO
345c h3d files
346 h3d_data%DTH3D = zero
347 h3d_data%TH3D_STOP = ep30
348 IF(h3d_data%TH3D0 /= zero) h3d_data%TH3D = h3d_data%TH3D0
349 IF(h3d_data%DTH3D0 > zero) h3d_data%DTH3D= h3d_data%DTH3D0
350 IF(h3d_data%TH3D_STOP0 > zero .AND. h3d_data%TH3D_STOP0 /= ep20)THEN
351 h3d_data%TH3D_STOP = h3d_data%TH3D_STOP0
352 ENDIF
353 IF(h3d_data%DTH3D<=zero) THEN
354 h3d_data%TH3D = ep30
355 h3d_data%TH3D_STOP = ep30
356 ENDIF
357 IF (h3d_data%TH3D < tt-dt2.AND. h3d_data%DTH3D > zero)
358 . h3d_data%TH3D = h3d_data%TH3D + int((tt-dt2-h3d_data%TH3D)/h3d_data%DTH3D)*h3d_data%DTH3D
359 IF (h3d_data%TH3D < tt-dt2)h3d_data%TH3D = h3d_data%TH3D+h3d_data%DTH3D
360C
361 IF(mcheck == 0)THEN
362 ale%GRID%VGY0=zero
363 ale%GRID%VGZ0=zero
364 IF(dtf /= zero) dtfac=dtf
365 IF(dtm /= zero) dtmin=dtm
366 IF(alp /= zero) ale%GRID%ALPHA=alp
367 IF(gam /= zero) ale%GRID%GAMMA=gam
368 IF(cv1 /= zero) ale%GRID%VGX =cv1
369 IF(cv2 /= zero) ale%GRID%VGY =cv2
370 IF(cv3 /= zero) ale%GRID%VGZ =cv3
371 IF(ale%GRID%NWALE_ENGINE == 2)THEN
372 IF(alp /= zero) THEN
373 ale%GRID%ALPHA = alp/(-ale%GRID%VGX+sqrt(ale%GRID%VGX**2+ one))
374 dt_input = alp
375 ELSE
376 dt_input = ale%GRID%ALPHA*(-ale%GRID%VGX+sqrt(ale%GRID%VGX**2+ one))
377 ENDIF
378 ENDIF
379 IF(ale%GRID%NWALE_ENGINE == 1.AND.alp == zero) ale%GRID%ALPHA=ep30
380 IF(volm /= zero)volmin=volm
381 IF(int22>0)THEN
382 dtfac22 = one
383 IF(dtfac>half)dtfac22 = half / dtfac
384 ENDIF
385 ENDIF
386C
387 IF(mcheck==0)THEN
388 IF(idtmins/=0)THEN
389 IF(dtmins == zero)dtmins = dtmin
390 IF(dtfacs == zero)dtfacs = dtfac
391 IF(tol_sms == zero) tol_sms = em03
392 IF(nsmspcg==0)nsmspcg=1000
393 idtgrs =idtgrs_old
394 IF(ispmd==0)THEN
395C
396 IF(idtmins==2.AND.irest_mselt==0)THEN
397 CALL ancmsg(msgid=120,anmode=aninfo_blind)
398 CALL arret(2)
399 END IF
400C
401C IF((IDTMINS==2.OR.IDTMINS_INT/=0).AND.NODADT/=0)THEN
402C CALL ANCMSG(MSGID=209,ANMODE=ANINFO_BLIND)
403C CALL ARRET(2)
404C END IF
405 END IF
406 ENDIF
407 IF(idtmins_int/=0)THEN
408 IF(dtmins_int == zero)dtmins_int = dtmin
409 IF(dtfacs_int == zero)dtfacs_int = dtfac
410 IF(tol_sms == zero) tol_sms = em03
411 IF(nsmspcg==0)nsmspcg=1000
412 ENDIF
413 ELSE
414 idtmins=idtmins_old
415 dtmins =dtmins_old
416 dtfacs =dtfacs_old
417 idtgrs =idtgrs_old
418 idtmins_int=idtmins_int_old
419 dtmins_int =dtmins_int_old
420 dtfacs_int =dtfacs_int_old
421 END IF
422C
423 dtfacx = one
424 DO i=1,51
425 IF(dtmin1(i) == zero)dtmin1(i) = dtmin
426 IF(dtfac1(i) == zero)dtfac1(i) = dtfac
427 dtfacx = min(dtfac1(i), dtfacx)
428 ENDDO
429
430 IF(idtmin(52) == 0)idtmin(52) = 1
431 IF(dtfac1(52) == zero)dtfac1(52) = zep9
432 IF(dtmin1(52) == zero)dtmin1(52) = em20
433
434 i=102
435 IF(ale%GLOBAL%IDT_ALE==-1)THEN
436 IF(dtmin1(i) == zero)dtmin1(i) = dtmin
437 IF(dtfac1(i) == zero)dtfac1(i) = dtfac
438 ELSE
439 IF(dtmin1(i) == zero)dtmin1(i) = zero
440 IF(dtfac1(i) == zero)dtfac1(i) = half
441 ENDIF
442C
443 IF(nodadt == 0)THEN
444 IF(idtmin(1) == 0)idtmin(1) = 1
445 IF(idtmin(2) == 0)idtmin(2) = 1
446 IF(idtmin(3) == 0)idtmin(3) = 2
447 IF(idtmin(7) == 0)idtmin(7) = 2
448 ENDIF
449C
450 IF(ispmd == 0) WRITE(iout,'(//1X,20A4//)') title
451 itfor0=itform + 1
452 irfe0 =(irform/5)
453 irfl0 =(irform-5*irfe0) + 1
454 irfe0 =irfe0 + 1
455
456C --------------------------------------------------------------------
457c CALL RCHECKMASS(IXR ,GEO ,PM ,MSR ,INR ,
458c . MS ,IN ,ITAB ,IGEO ,IPM ,
459c . UPARAM ,IPART ,IPARTR )
460C --------------------------------------------------------------------
461C User Libraries output & checks
462C --------------------------------------------------------------------
463 IF (nspmd > 1)THEN
464 userl_count = userl_avail
465 CALL spmd_glob_isum9(userl_count,1)
466 IF (ispmd==0)THEN
467 IF (userl_count /= 0 .AND. userl_count /= nspmd)THEN
468 CALL ancmsg(msgid=254,anmode=aninfo,
469 . c1=dlibfile(1:dlibfile_size))
470 CALL arret(2)
471 ENDIF
472 ENDIF
473 ENDIF
474C When Dynamical user libraries are used, add a print in 0001.out file
475 IF (userl_avail==1)THEN
476 IF(ispmd==0)THEN
477 WRITE(iout,4500)
478 WRITE(iout,4600) dlibfile(1:dlibfile_size),dlibtkvers
479 ENDIF
480 ENDIF
481C --------------------------------------------------------------------
482
483 IF (irad2r==1) THEN
484 IF(ispmd==0) WRITE(iout,1099)
485 IF (itfor0==1 ) THEN
486 CALL ancmsg(msgid=242,anmode=aninfo_blind)
487 CALL arret(2)
488 ENDIF
489 ELSE
490 IF ((r2r_siu==1).AND.(ispmd==0)) THEN
491 CALL ancmsg(msgid=239,anmode=aninfo_blind)
492 CALL arret(2)
493 ENDIF
494 ENDIF
495C
496 min_aspect = dt%BRICK_CST_COL_MIN
497 min_defv = dt%BRICK_CST_DEFV_MIN
498 IF(ispmd == 0.AND.mcheck == 0)WRITE(iout,1100)tstop,output%TH%DTHIS,dtfac,dtmin
499 IF(nodadt == 0)THEN
500 IF ((min_aspect+min_defv)>zero) THEN
501 IF(ispmd == 0.AND.mcheck == 0)THEN
502 WRITE(iout,4700) dtfac1(1),dtmin1(1),idtmin(1),
503 + min_aspect,min_defv,
504 + dtfac1(2),dtmin1(2),idtmin(2),
505 + dtfac1(3),dtmin1(3),idtmin(3),
506 + dtfac1(4),dtmin1(4),idtmin(4),
507 + dtfac1(5),dtmin1(5),idtmin(5),
508 + dtfac1(6),dtmin1(6),idtmin(6),
509 + dtfac1(9),dtmin1(9),idtmin(9),
510 + dtfac1(10),dtmin1(10),idtmin(10)
511 !WRITE(IOUT,4710) DTFAC1(102),DTMIN1(102)
512 IF(idt1sh /=0) WRITE(iout,4720)
513 IF(idt1sol/=0) WRITE(iout,4730)
514 IF(idt1tet10/=0) WRITE(iout,4740)
515 endif!(ISPMD == 0.AND.MCHECK == 0)
516 ELSE
517 IF(ispmd == 0.AND.mcheck == 0)THEN
518 WRITE(iout,1105) dtfac1(1),dtmin1(1),idtmin(1),
519 + dtfac1(2),dtmin1(2),idtmin(2),
520 + dtfac1(3),dtmin1(3),idtmin(3),
521 + dtfac1(4),dtmin1(4),idtmin(4),
522 + dtfac1(5),dtmin1(5),idtmin(5),
523 + dtfac1(6),dtmin1(6),idtmin(6),
524 + dtfac1(9),dtmin1(9),idtmin(9),
525 + dtfac1(10),dtmin1(10),idtmin(10)
526 !WRITE(IOUT,4710) DTFAC1(102),DTMIN1(102)
527 IF(idt1sh /=0) WRITE(iout,4720)
528 IF(idt1sol/=0) WRITE(iout,4730)
529 IF(idt1tet10/=0) WRITE(iout,4740)
530 endif!(ISPMD == 0.AND.MCHECK == 0)
531 END IF !(MIN_ASPECT+MIN_DEFV)>ZERO)
532 IF (dt%IDEL_BRICK>zero) THEN
533 IF(ispmd == 0.AND.mcheck == 0)THEN
534 WRITE(iout,5020)dt%BRICK_DEL_COL_MIN,dt%BRICK_DEL_DEFV_MIN,dt%BRICK_DEL_ASP_MAX,dt%BRICK_DEL_DEFV_MAX
535 ENDIF
536 ENDIF
537 IF(idtmin(11) == 3 .OR. idtmin(11) == 8) THEN
538 IF(ispmd == 0.AND.mcheck == 0)WRITE(iout,1107)dtfac1(11),dtmin1(11),idtmin(11)
539 ENDIF
540 IF(idtmins_int/=0)THEN
541 IF((ispmd == 0).AND.mcheck == 0)THEN
542 WRITE(iout,1209) dtfacs_int,dtmins_int
543 END IF
544 END IF
545 IF(idtmins/=0)THEN
546 IF((ispmd == 0).AND.mcheck == 0.AND.idtgrs<=0)THEN
547 WRITE(iout,1109) dtfacs,dtmins,tol_sms,nsmspcg,m_vs_sms,ncprisms,-idtgrs
548 ELSEIF((ispmd == 0).AND.mcheck == 0)THEN
549 WRITE(iout,1109) dtfacs,dtmins,tol_sms,nsmspcg,m_vs_sms,ncprisms,igrpart(idtgrs)%ID
550 END IF
551 END IF
552 ELSE
553 IF(ispmd == 0.AND.mcheck == 0)THEN
554 IF(idtmin(11)==0)THEN
555 WRITE(iout,1116) dtfac1(11),zero
556 ELSEIF(idtmin(11)==1.OR.idtmin(11)==3.OR.idtmin(11) == 8)THEN
557 IF ( percent_addmass > zero) THEN
558 WRITE(iout,1206) dtfac1(11),dtmin1(11),percent_addmass,idtmin(11)
559 ELSE
560 WRITE(iout,1106) dtfac1(11),dtmin1(11),idtmin(11)
561 ENDIF
562 END IF
563 END IF
564 IF ((min_aspect+min_defv)>zero) THEN
565 IF(ispmd == 0.AND.mcheck == 0)THEN
566 WRITE(iout,4700) dtfac1(1),dtmin1(1),idtmin(1),
567 + min_aspect,min_defv,
568 + dtfac1(2),dtmin1(2),idtmin(2),
569 + dtfac1(3),dtmin1(3),idtmin(3),
570 + dtfac1(4),dtmin1(4),idtmin(4),
571 + dtfac1(5),dtmin1(5),idtmin(5),
572 + dtfac1(6),dtmin1(6),idtmin(6),
573 + dtfac1(9),dtmin1(9),idtmin(9),
574 + dtfac1(10),dtmin1(10),idtmin(10)
575 !WRITE(IOUT,4710) DTFAC1(102),DTMIN1(102)
576 IF(idt1sh /=0) WRITE(iout,4720)
577 IF(idt1sol/=0) WRITE(iout,4730)
578 IF(idt1tet10/=0) WRITE(iout,4740)
579 ENDIF
580 ELSE
581 IF(ispmd == 0.AND.mcheck == 0)THEN
582 WRITE(iout,1105) dtfac1(1),dtmin1(1),idtmin(1),
583 + dtfac1(2),dtmin1(2),idtmin(2),
584 + dtfac1(3),dtmin1(3),idtmin(3),
585 + dtfac1(4),dtmin1(4),idtmin(4),
586 + dtfac1(5),dtmin1(5),idtmin(5),
587 + dtfac1(6),dtmin1(6),idtmin(6),
588 + dtfac1(9),dtmin1(9),idtmin(9),
589 + dtfac1(10),dtmin1(10),idtmin(10)
590 !WRITE(IOUT,4710) DTFAC1(102),DTMIN1(102)
591 IF(idt1sh /=0) WRITE(iout,4720)
592 IF(idt1sol/=0) WRITE(iout,4730)
593 IF(idt1tet10/=0) WRITE(iout,4740)
594 ENDIF
595 END IF !((MIN_ASPECT+MIN_DEFV)>ZERO) THEN
596 IF (dt%IDEL_BRICK>zero) THEN
597 IF(ispmd == 0.AND.mcheck == 0)THEN
598 WRITE(iout,5020)dt%BRICK_DEL_COL_MIN,dt%BRICK_DEL_DEFV_MIN,dt%BRICK_DEL_ASP_MAX,dt%BRICK_DEL_DEFV_MAX
599 ENDIF
600 END IF
601 IF(idtmins_int/=0)THEN
602 IF((ispmd == 0).AND.mcheck == 0)THEN
603 WRITE(iout,1209) dtfacs_int,dtmins_int
604 END IF
605 END IF
606C
607 IF(idtmins/=0)THEN
608C
609 IF (isms_selec < 3) THEN
610 IF((ispmd == 0).AND.mcheck == 0.AND.idtgrs<=0) THEN
611 WRITE(iout,1108) dtfacs,dtmins,tol_sms,nsmspcg,ncprisms,-idtgrs
612 ELSEIF((ispmd == 0).AND.mcheck == 0)THEN
613 WRITE(iout,1108) dtfacs,dtmins,tol_sms,nsmspcg,ncprisms,igrpart(idtgrs)%ID
614 END IF
615C
616 ELSE
617C-- /DT/CST_AMS >- automatic element selection
618 dt_crit = dtmins / max(em20,dtfac1(11))
619 IF((ispmd == 0).AND.mcheck == 0.AND.idtgrs<=0)THEN
620 WRITE(iout,2109) dtfacs,dtmins,tol_sms,nsmspcg,m_vs_sms,ncprisms,dt_crit,-idtgrs
621 ELSEIF((ispmd == 0).AND.mcheck == 0)THEN
622 WRITE(iout,2109) dtfacs,dtmins,tol_sms, nsmspcg,m_vs_sms,ncprisms,dt_crit,igrpart(idtgrs)%ID
623 END IF
624C
625 END IF
626C
627 ENDIF
628C
629 ENDIF
630C
631
632 IF(nodadt==0.AND.(istatcnd/=0.AND.impl_s==0))THEN
633 CALL ancmsg(msgid=121,anmode=aninfo_blind)
634 CALL arret(2)
635 END IF
636 IF(ispmd == 0.AND.mcheck == 0.AND.kdtint /= 0)THEN
637 WRITE(iout,'(A)')' NEW (HIDDEN) TIME STEP COMPUTATION',' ON INTERFACE TYPE 7,11 AND 19 IS ON'
638 ENDIF
639 IF(ispmd == 0.AND.mcheck == 0.AND.kdtsmstr == 0)THEN
640 WRITE(iout,'(A)')' BACK TO VERSION 4 COMPUTATION OF NODAL TIME STEP',' CASE OF SMALL STRAIN FOR SOLIDS.'
641 ENDIF
642 IF(codvers>=44.AND.numsph /= 0.AND.mcheck == 0)THEN
643 IF(idtmin(51) == 3)THEN
644 IF(ispmd == 0)THEN
645 WRITE(istdo,*)' ** WARNING SMALL STRAIN FORMULATION FOR SPH'
646 WRITE(iout,*)' ** WARNING SMALL STRAIN FORMULATION IS NOT AVAILABLE FOR SPH,',' OPTION /DT/SPHCEL/CST WILL BE OMITTED.'
647 END IF
648 idtmin(51)=0
649 ENDIF
650 IF(nodadt == 1)THEN
651 IF(ispmd == 0) WRITE(iout,*)'IMPROVED TIME STEP (NODAL) COMPUTATION ON SPH PARTICLES :'
652 dtfac1(51)=dtfac1(11)
653 ENDIF
654 IF(ispmd == 0) WRITE(iout,1151)dtfac1(51),dtmin1(51),idtmin(51)
655 ENDIF
656C
657 IF(ispmd == 0.AND.mcheck == 0) THEN
659 !if at least on option /DT/FVMBAG/0 or /DT/FVMBAG/1 is defined then output parameter for the retained one (last read one)
660 ! (multiple definition is not expected)
661 IF(num_opt_dt_fvmbag_1>0)THEN
662 WRITE(iout,1156)
663 ELSE
664 WRITE(iout,1155)
665 ENDIF
666 WRITE(iout,1152)dtfac1(52),dtmin1(52),idtmin(52)
667 ENDIF
668 ENDIF
669 IF(ispmd == 0.AND.mcheck == 0) THEN
670 k1 = 1
671 is_already_printed = .false.
672 DO ivolu = 1, nvolu
673 ifv = monvol(k1 - 1 + 45)
674 ifv_type = monvol(k1 - 1 + 2)
675 IF (ifv_type == 6 .OR. ifv_type == 8 .OR. ifv_type == 11) THEN
676 IF(.NOT.is_already_printed)THEN
677 WRITE(iout,1157)
678 is_already_printed=.true.
679 ENDIF
680 ENDIF
681 IF(ifv_type == 6) WRITE(iout,1147)monvol(k1)
682 IF(ifv_type == 8) WRITE(iout,1148)monvol(k1)
683 IF(ifv_type == 11)WRITE(iout,1149)monvol(k1)
684 IF (ifv_type == 6 .OR. ifv_type == 8 .OR. ifv_type == 11) THEN
685 WRITE(iout,1153)fvdata_old(ifv)%CFL_COEF,fvdata_old(ifv)%DTMIN,fvdata_old(ifv)%ID_DT_OPTION
686 IF(fvdata_old(ifv)%ID_DT_OPTION ==2)THEN
687 WRITE(iout,1154)fvdata_old(ifv)%L_TYPE,fvdata_old(ifv)%LAMBDA,fvdata_old(ifv)%DTOLD
688 ENDIF
689 ENDIF
690 k1=k1+nimv
691 ENDDO
692 ENDIF
693C
694 IF(ispmd == 0.AND.mcheck == 0.AND.idt1sol /= 0) WRITE(iout,'(A)')' OPTIMIZED TIME STEP COMPUTATION FOR HEPH.'
695 IF(ispmd == 0.AND.mcheck == 0.AND.idttsh /= 0) WRITE(iout,'(A)')' OPTIMIZED (SHELL) TIME STEP FOR THICK SHELLS.'
696 IF(ispmd == 0.AND.mcheck == 0)WRITE(iout,1110)ncpri,ncrst,multirest,invers,itfor0
697 IF(ispmd == 0.AND.restart_file == 0) WRITE(iout,*) check_message(2)(1:len_trim(check_message(2)) )
698 IF (impl_s == 1.AND.ikg>=5) THEN
699 ikg=ikg-5
700 IF(ispmd == 0) THEN
701 WRITE(iout,*) ' ** WARNING ** : PARITH/ON IS NOT ','COMPATIBLE WITH IMPLICIT OPTION '
702 WRITE(iout,*) ' ** RESETTING ** : PARITH/OFF '
703 ENDIF
704 ENDIF
705C-------------------------------------------
706C .h3d files
707C-------------------------------------------
708 CALL prelech3d(numgeo ,npropgi ,npropmi ,nummat ,numply ,
709 . igeo ,ipm ,h3d_data ,multi_fvm,mds_output_table,
710 . mds_nmat ,max_depvar,mds_ndepsvar,mat_param,numsphg)
711 CALL lech3d(geo,igeo,ipm,ipart,h3d_data,multi_fvm,ipari,iparg,tag_skins6,
712 . mds_label,mds_output_table,mds_nmat,max_depvar,mds_ndepsvar,
713 . elbuf_str,stack,ibcl,iloadp,lloadp,loads,mat_param,pblast,
714 . igrpart)
715c
716 IF(h3d_data%N_OUTP_H3D /= 0 .AND. ispmd == 0)THEN
717 WRITE(iout,5000)h3d_data%TH3D,h3d_data%DTH3D
718 WRITE(iout,*)' |'
719 DO i=1,h3d_data%N_OUTP_H3D
720 IF( h3d_data%OUTPUT_LIST(i)%ETYPE == 1 .OR.
721 . h3d_data%OUTPUT_LIST(i)%ETYPE == 2 .AND. numelcg+numeltgg > 0 .OR.
722 . h3d_data%OUTPUT_LIST(i)%ETYPE == 3 .AND. numelsg > 0 .OR.
723 . h3d_data%OUTPUT_LIST(i)%ETYPE == 4 .AND. numeltrg+numelpg+numelrg > 0 .OR.
724 . h3d_data%OUTPUT_LIST(i)%ETYPE == 5 .AND. numsphg > 0 .OR.
725 . h3d_data%OUTPUT_LIST(i)%ETYPE == 6 .AND. numelqg > 0 .OR.
726 . h3d_data%OUTPUT_LIST(i)%ETYPE == 7 .AND. numsking > 0) THEN
727 char1=' '
728 IF(h3d_data%OUTPUT_LIST(i)%ETYPE == 1)THEN
729 char1='NODAL'
730 ELSEIF(h3d_data%OUTPUT_LIST(i)%ETYPE == 2)THEN
731 char1='SHELL'
732 ELSEIF(h3d_data%OUTPUT_LIST(i)%ETYPE == 3)THEN
733 char1='SOLID'
734 ELSEIF(h3d_data%OUTPUT_LIST(i)%ETYPE == 4)THEN
735 char1='ONED'
736 ELSEIF(h3d_data%OUTPUT_LIST(i)%ETYPE == 5)THEN
737 char1='SPH'
738 ELSEIF(h3d_data%OUTPUT_LIST(i)%ETYPE == 6)THEN
739 char1='QUAD'
740 ELSEIF(h3d_data%OUTPUT_LIST(i)%ETYPE == 7)THEN
741 char1='SKIN'
742 ENDIF
743c
744 char2=' '
745 IF(h3d_data%OUTPUT_LIST(i)%OUTP_TYPE == 1)THEN
746 char2='SCALAR'
747 ELSEIF(h3d_data%OUTPUT_LIST(i)%OUTP_TYPE == 2)THEN
748 char2='VECTOR'
749 ELSEIF(h3d_data%OUTPUT_LIST(i)%OUTP_TYPE == 3)THEN
750 char2='tensor'
751 ELSEIF(H3D_DATA%OUTPUT_LIST(I)%OUTP_TYPE == 4)THEN
752 CHAR2='torsor'
753 ENDIF
754c
755 STEXT1 = H3D_DATA%OUTPUT_LIST(I)%S_STRING1
756 WRITE(IOUT,*) ' |----'//CHAR1//' '//CHAR2//' : '
757c WRITE(IOUT,*) ' |----'//H3D_DATA%OUTPUT_LIST(I)%KEYWORD
758 WRITE(IOUT,*) ' | '//H3D_DATA%OUTPUT_LIST(I)%STRING1(1:STEXT1)
759
760 IF (H3D_DATA%OUTPUT_LIST(I)%IUVAR > 0)
761 . WRITE(IOUT,*) ' | uvar=', H3D_DATA%OUTPUT_LIST(I)%IUVAR
762
763 IF (H3D_DATA%OUTPUT_LIST(I)%PLY > 0)
764 . WRITE(IOUT,*) ' | ply=',H3D_DATA%OUTPUT_LIST(I)%PLY
765
766 IF (H3D_DATA%OUTPUT_LIST(I)%LAYER > 0)
767 . WRITE(IOUT,*) ' | layer=',H3D_DATA%OUTPUT_LIST(I)%LAYER
768
769 IF (H3D_DATA%OUTPUT_LIST(I)%IPT > 0)
770 . WRITE(IOUT,*) ' | ipt=',H3D_DATA%OUTPUT_LIST(I)%IPT
771
772 IF (H3D_DATA%OUTPUT_LIST(I)%IR > 0)
773 . WRITE(IOUT,*) ' | ir=',H3D_DATA%OUTPUT_LIST(I)%IR
774
775 IF (H3D_DATA%OUTPUT_LIST(I)%IR > 0)
776 . WRITE(IOUT,*) ' | is=',H3D_DATA%OUTPUT_LIST(I)%IS
777
778 IF (H3D_DATA%OUTPUT_LIST(I)%IT > 0)
779 . WRITE(IOUT,*) ' | it=',H3D_DATA%OUTPUT_LIST(I)%IT
780
781 WRITE(IOUT,*)' |'
782 ENDIF
783 ENDDO
784 WRITE(IOUT,*)' '
785 WRITE(IOUT,*)' '
786 ENDIF
787C-------------------------------------------
788C---------------------
789C FE THERMAL ANALYSIS
790C---------------------
791.AND. IF(ISPMD == 0 IMASSI > 0 ) THEN
792 WRITE(IOUT,'(a)')' reset initial mass for this run '
793 ENDIF
794C---------------------
795C INITIAL MASS
796C---------------------
797.AND. IF (ISPMD == 0 GLOB_THERM%ITHERM_FE > 0 ) THEN
798 WRITE(IOUT,'(a)')' finite element thermal analysis '
799 IF (GLOB_THERM%IDT_THERM == 1) THEN
800 WRITE(IOUT,'(a)')' thermal analysis only'
801 WRITE(IOUT,'(a,1x,g14.7)')' thermal time step scale factor . . . . . . . . .', GLOB_THERM%DTFACTHERM
802 ENDIF
803 IF (GLOB_THERM%THEACCFACT > ONE ) THEN
804 WRITE(IOUT,'(a,1x,g14.7/)')' factor to speed-up thermal analysis. . . . . . .', GLOB_THERM%THEACCFACT
805 ENDIF
806 ENDIF
807C-------------------------------------------
808C Animations
809C-------------------------------------------
810 IF(TANIM0 /= ZERO) TANIM = TANIM0
811.AND. IF(TANIM_STOP0/=ZERO TANIM_STOP0/=EP20) TANIM_STOP = TANIM_STOP0
812 IF(DTANIM0 > ZERO) DTANIM= DTANIM0
813 IF(DTANIM<=ZERO) TANIM = EP30
814.AND. IF (TANIM < TT-DT2DTANIM > ZERO)TANIM = TANIM
815 . + INT((TT-DT2-TANIM)/DTANIM)*DTANIM
816 IF (TANIM < TT-DT2)TANIM = TANIM+DTANIM
817C-----------------------
818.AND. IF(ANIM_V(14)+H3D_DATA%N_VECT_DROT > 0
819.AND..AND..AND..OR. . ((ISECUT == 0 IISROT == 0 IMPOSE_DR == 0 IDROT == 0) IRODDL == 0)) THEN
820 IF(ISPMD == 0) THEN
821 WRITE(IOUT,*) ' ** warning ** : /anim/drot option used',
822 . ' WHILE rotational dof are not computed',
823 . ' (idrot = 0 in /ioflag option)'
824 WRITE(ISTDO,*) ' ** warning ** : /anim/drot option used',
825 . ' WHILE rotational dof are not computed',
826 . ' (idrot = 0 in /ioflag option)'
827 ENDIF
828 IF(ANIM_V(14) == 1) THEN
829 ANIM_V(14) = 0
830 NV_ANI = NV_ANI - 1
831 ENDIF
832 ENDIF
833C-----------------------
834.AND. IF(ISPMD == 0MCHECK == 0) THEN
835C-----------------------
836C Tracing Animations cards
837C-----------------------
838 WRITE(IOUT,1120)TANIM,DTANIM,TANIM_STOP,SENSORS%ANIM_ID,SENSORS%ANIM_DT,
839 + ANIM_E(1),ANIM_E(2),ANIM_E(3),ANIM_E(25),
840 + ANIM_E(4),ANIM_E(5),ANIM_E(6),
841 + ANIM_E(7),ANIM_E(8),ANIM_E(9),
842 + ANIM_E(10)+ANIM_E(4960)+ANIM_E(4961)+ANIM_E(4962)
843 WRITE(IOUT,1129) ANIM_N(3),ANIM_N(4),ANIM_N(6)
844 WRITE(IOUT,1130)
845 + ANIM_V(1),ANIM_V(2),ANIM_V(3),ANIM_V(4),ANIM_V(5),
846 + ANIM_V(6),ANIM_V(7),ANIM_V(9),ANIM_V(12),
847 + ANIM_T(1),ANIM_T(2),ANIM_T(3),ANIM_T(4)
848 WRITE(IOUT,1140)
849 + ANIM_T(5),ANIM_T(6),ANIM_T(7),ANIM_T(8),
850 + ANIM_M,ANIM_K
851 ENDIF
852C-----------------------
853C The correct indexes in ANIM data structures wrt integration points or layers
854C of all actual elements will be rebuilt ::
855C-----------------------
856 CALL ANIM_BUILD_INDEX_ALL(ISPMD ,MCHECK ,SENSORS ,IGEO ,GEO )
857C-------------------------------------------
858C STOP/SENSOR
859C-------------------------------------------
860 IF (MCHECK == 0) THEN
861 ALLOCATE(SENSORS%STOP(SENSORS%NSTOP))
862 SENSORS%STOP(:) = 0
863 END IF
864 IF (MCHECK == 0) THEN
865 IF (SENSORS%NSTOP > 0) THEN
866 DO K=1,SENSORS%NSTOP
867 IERR = 1
868 IF (SENSORS%STOP_TMP(K) > 0) THEN
869 DO I=1,SENSORS%NSENSOR
870 IF (SENSOR_TAB(I)%SENS_ID == SENSORS%STOP_TMP(K)) THEN
871 SENSORS%STOP(K) = I
872 IERR = 0
873 EXIT
874 ENDIF
875 ENDDO
876 ENDIF
877 IF (IERR == 1) THEN
878 CALL ANCMSG(MSGID=233, ANMODE=ANINFO,I1=SENSORS%STOP_TMP(K))
879 ENDIF
880 ENDDO
881 ENDIF
882.AND. END IF !(ISPMD==0MCHECK==0)
883C-------------------------------------------
884C STATE/SENSOR
885C-------------------------------------------
886 IF (MCHECK == 0) THEN
887 ALLOCATE(SENSORS%STAT(SENSORS%NSTAT))
888 SENSORS%STAT(:) = 0
889 END IF
890.AND. IF (ISPMD == 0 MCHECK == 0) THEN
891 MSTATT = 0
892 IF (SENSORS%NSTAT > 0) THEN
893 DO K=1,SENSORS%NSTAT
894 IERR = 1
895 IF(SENSORS%STAT(K) /= 0) THEN
896 DO I=1,SENSORS%NSENSOR
897 IF (SENSORS%SENSOR_TAB(I)%SENS_ID == SENSORS%STAT(K)) THEN
898 SENSORS%STAT(K) = I
899 IERR = 0
900 EXIT
901 ENDIF
902 ENDDO
903 ENDIF
904 IF (IERR == 1) THEN
905 CALL ANCMSG(MSGID=235, ANMODE=ANINFO,I1=SENSORS%STAT(K))
906 ELSE
907 MSTAT(K) = 0
908 ENDIF
909 ENDDO
910 ENDIF
911.AND. END IF !(ISPMD==0MCHECK==0)
912C-------------------------------------------
913C OUTP/SENSOR
914C-------------------------------------------
915 IF (MCHECK == 0) THEN
916 ALLOCATE(SENSORS%OUTP(SENSORS%NOUTP))
917 SENSORS%OUTP(:) = 0
918 END IF
919.AND. IF (ISPMD == 0 MCHECK == 0) THEN
920 IF (SENSORS%NOUTP > 0) THEN
921 DO K=1,SENSORS%NOUTP
922 IERR = 1
923 IF (SENSORS%OUTP_TMP(K) > 0) THEN
924 DO I=1,SENSORS%NSENSOR
925 IF (SENSORS%SENSOR_TAB(I)%SENS_ID == SENSORS%OUTP_TMP(K)) THEN
926 SENSORS%OUTP(K) = I
927 IERR = 0
928 EXIT
929 ENDIF
930 ENDDO
931 ENDIF
932 IF (IERR == 1) THEN
933 CALL ANCMSG(MSGID=236, ANMODE=ANINFO,I1 = SENSORS%OUTP_TMP(K))
934 ENDIF
935 ENDDO
936 ENDIF
937.AND. END IF !(ISPMD==0MCHECK==0)
938C-------------------------------------------
939C H3D/SENSOR
940C-------------------------------------------
941.AND. IF (ISPMD == 0MCHECK == 0) THEN
942 DO K=1,H3D_DATA%N_SENS_H3D
943 IOK = 0
944 IF(H3D_DATA%LSENS_H3D(K) /= 0)THEN
945 DO I=1,SENSORS%NSENSOR
946 IF(H3D_DATA%LSENS_H3D(K) == SENSOR_TAB(I)%SENS_ID)THEN
947 H3D_DATA%LSENS_H3D(K)=I
948 IOK = 1
949 EXIT
950 ENDIF
951 ENDDO
952 ENDIF
953 IF(IOK == 0) THEN
954 CALL ANCMSG(MSGID=283,ANMODE=ANINFO,I1=H3D_DATA%LSENS_H3D(K))
955 CALL ARRET(2)
956 ENDIF
957 ENDDO
958.AND. ENDIF !(ISPMD==0MCHECK==0)
959C-------------------------------------------
960C STATE/SENSOR
961C-------------------------------------------
962.AND. IF(ISPMD == 0MCHECK == 0) THEN
963 WRITE(IOUT,1150)DTIN,DTMX
964 IF(IMPL /= 0)
965 . WRITE(IOUT,1160)EPS,EPS2,NITMX
966 ISTATG_P = IABS(ISTATG)
967 IF(ISTAT == 1)THEN
968 WRITE(IOUT,1171)ISTATG_P,BETA,PERIOD
969 ELSEIF(ISTAT == 2)THEN
970.OR. IF (TST_START>ZEROTST_STOP>ZERO) THEN
971 IF (TST_STOP==ZERO) TST_STOP = TSTOP
972 WRITE(IOUT,5001)ISTATG_P,TST_START,TST_STOP
973 ELSE
974 WRITE(IOUT,1172)ISTATG_P
975 END IF
976 ELSEIF(ISTAT == 3)THEN
977.OR. IF (TST_START>ZEROTST_STOP>ZERO) THEN
978 IF (TST_STOP==ZERO) TST_STOP = TSTOP
979 WRITE(IOUT,5011)ISTATG_P,TST_START,TST_STOP
980 ELSE
981 WRITE(IOUT,5010)ISTATG_P
982 END IF
983 ENDIF
984C-----------------------
985 IF(IPARIT == 0)THEN
986 WRITE(IOUT,1180)
987 ELSEIF(IPARIT == 1)THEN
988 WRITE(IOUT,1181)
989 ELSE
990 WRITE(IOUT,1182)IPARIT-1
991 ENDIF
992C-----------------------
993 WRITE(IOUT,1300) NSLIOF,NPARTOF,NELSOF,NELQOF,NELCOF,NELTOF,NELPOF,NELROF,NELTGOF,NSPHOF
994 WRITE(IOUT,1400) NRLINK
995 WRITE(IOUT,1500) NUBCSN
996.OR. IF(IALE /= 0IEULER /= 0)WRITE(IOUT,1450) NALELINK+NALELK !format v12 + format v5
997c
998.AND. ELSEIF(ISPMD == 0 MCHECK /= 0) THEN
999.AND. ENDIF !(ISPMD==0MCHECK==0)
1000C-----------------------------------
1001C ALE/EULER : UPWIND
1002C----------------------------------------
1003 ! ALE%UPWIND%UPW_UPDATE == 1 : ENGINE /UPWIND CARD DETECTED
1004 !ALE%UPWIND%UPW_UPDATE == 2 : /UPWIND CARD IS CHANGING AT LEAST ONE PARAMETER
1005 !if /UPWIND is defined then set new parameters
1006.AND. IF(ISPMD == 0 MCHECK == 0)THEN
1007.OR. IF(IALE /= 0 IEULER /= 0)THEN
1008 IF(ALE%UPWIND%UPW_UPDATE /= 0 )THEN
1009 DO K=1,NUMMAT-1
1010 !ILAW=PM(19,K)
1011 JALE=INT(PM(72,K)) ! JALE from PROP (IGEO(62,IPID)) is not checked since this option /UPWIND is obsolete
1012 IF(JALE /= 0)THEN
1013.OR. IF(PM(15,K) /= ALE%UPWIND%UPWMG2 PM(16,K) /= ALE%UPWIND%UPWOG2)THEN
1014 ALE%UPWIND%UPW_UPDATE = 2
1015 PM(15,K) = ALE%UPWIND%UPWMG2
1016 PM(16,K) = ALE%UPWIND%UPWOG2
1017 ENDIF
1018 ENDIF
1019 ENDDO
1020 IF(ALE%UPWIND%UPWSM /= ALE%UPWIND%UPWSM2)THEN
1021 ALE%UPWIND%UPW_UPDATE = 2
1022 ALE%UPWIND%UPWSM = ALE%UPWIND%UPWSM2
1023 ENDIF
1024 !if /UPWIND is not defined then catch parameter from previous run
1025 ELSEIF(ALE%UPWIND%UPW_UPDATE == 0)THEN
1026 ALE%UPWIND%UPWMG2=ONE
1027 ALE%UPWIND%UPWOG2=ONE
1028 ALE%UPWIND%UPWSM2=ONE
1029 DO K=1,NUMMAT-1
1030 !ILAW=PM(19,K)
1031 JALE=INT(PM(72,K))
1032 IF(JALE /= 0)THEN
1033.OR..OR. IF(PM(15,K) /= ALE%UPWIND%UPWMG2 PM(16,K) /= ALE%UPWIND%UPWOG2 ALE%UPWIND%UPWSM /= ALE%UPWIND%UPWSM2)THEN
1034 IF(PM(15,K) /= ZERO)ALE%UPWIND%UPWMG2 = PM(15,K)
1035 IF(PM(16,K) /= ZERO)ALE%UPWIND%UPWOG2 = PM(16,K)
1036 IF(ALE%UPWIND%UPWSM /= ZERO)ALE%UPWIND%UPWSM2 = ALE%UPWIND%UPWSM
1037 EXIT
1038 ENDIF
1039 ENDIF
1040 ENDDO
1041 ENDIF
1042 ENDIF
1043 ENDIF
1044C-----------------------------------
1045C ALE/EULER : OUTPUT
1046C----------------------------------------
1047.OR. IF(IALE /= 0 IEULER /= 0)THEN
1048 !-----------------------
1049 ! QUASI-INCOMPRESSIBLE /INCMP
1050 !-----------------------
1051.AND. IF(ALE%GLOBAL%INCOMP == 1MCHECK == 0) WRITE(IOUT,1196)
1052 !-----------------------
1053 ! GRID FORMULATION
1054 !-----------------------
1055 !---ALE GRID FORMULATION CHECK---!
1056.AND. IF(ALE%GRID%NWALE_ENGINE /= ALE%GRID%NWALE_RST ALE%GRID%NWALE_ENGINE /= -1) THEN !Forbid ALE grid formulation switch
1057 IF(ALE%GRID%NWALE_ENGINE /= 3)THEN !expect if new one is /ALE/ZERO
1058 ALEform=(/'donea ','disp ','spring ', 'zero ',
1059 . 'standard ','laplacian ','volume ', 'flow-tracking ',
1060 . 'lagrange ' /)
1061 ALEStrL=(/5,4,6,4,8,9,6,13,8/)
1062 Cale1=ALEform(ALE%GRID%NWALE_ENGINE)
1063 Cale2=ALEform(ALE%GRID%NWALE_RST)
1064 CALL ANCMSG(MSGID=229,ANMODE=ANINFO,
1065 . C1=Cale1(1:ALEStrL(ALE%GRID%NWALE_ENGINE)),C2=Cale2(1:ALEStrL(ALE%GRID%NWALE_RST)))
1066 CALL ARRET(2)
1067 ELSE
1068 ALE%GRID%NWALE_ENGINE = 3
1069 END IF
1070 END IF
1071
1072 !--Labels for Staggered Scheme
1073 IF(ALE%UPWIND%UPWM == 2)THEN
1074 Label1='tg '
1075 ELSEIF(ALE%UPWIND%UPWM == 3)THEN
1076 Label1='supg '
1077 ELSE
1078 Label1='upwind '
1079 ENDIF
1080 Label2='upwind '
1081 Label3='upwind '
1082 IF(ALEMUSCL_Param%IALEMUSCL == 0)THEN
1083 Label4='upwind '
1084 ELSE
1085 Label4='muscl '
1086 ENDIF
1087 !--Labels for Colocated Scheme
1088 IF(ALEMUSCL_Param%IALEMUSCL == 0)THEN
1089 Label5='1st-order'
1090 Label6='1st-order'
1091 Label7='1st-order'
1092 Label8='1st-order'
1093 ELSEIF(ALEMUSCL_Param%IALEMUSCL == 1)THEN
1094 Label5='2nd-order'
1095 Label6='2nd-order'
1096 Label7='2nd-order'
1097 Label8='2nd-order'
1098 ELSEIF(ALEMUSCL_Param%IALEMUSCL == 2)THEN
1099 Label5='1st-order'
1100 Label6='1st-order'
1101 Label7='1st-order'
1102 Label8='2nd-order'
1103 ENDIF
1104 MULTI_FVM%LOWMACH_OPT = .FALSE.
1105.AND. IF (LOWMACH_OPT == 1 MULTI_FVM%IS_USED) THEN
1106 MULTI_FVM%LOWMACH_OPT = .TRUE.
1107 ENDIF
1108 ALEform=(/'donea ','disp ','spring ', 'zero ',
1109 . 'standard ','laplacian ','volume ', 'flow-tracking ',
1110 . 'lagrange '/)
1111 !effective value which will be retained during numerical solving
1112 IF(ALE%GRID%NWALE_ENGINE /= -1)THEN
1113 ALE%GRID%NWALE = ALE%GRID%NWALE_ENGINE
1114 ELSE
1115 ALE%GRID%NWALE = ALE%GRID%NWALE_RST
1116 ENDIF
1117 Label9(:)=' '
1118 Label9(1:16)=ALEform(ALE%GRID%NWALE)
1119 eta1=ALE%UPWIND%UPWMG2
1120 eta2=ALE%UPWIND%UPWOG2
1121 IF(ALE%UPWIND%UPWM>1)eta1=ALE%UPWIND%CUPWM
1122 !OUTPUT NUMERICAL SCHEME AND ITS PARAMETERS
1123.AND. IF(ISPMD == 0 MCHECK == 0)THEN
1124 WRITE(IOUT,1001)
1125 WRITE(IOUT,1002)Label1,eta1,Label2,eta2,Label3,eta2,Label4
1126 IF(MULTI_FVM%IS_USED)THEN
1127 WRITE(IOUT,1003)Label5,Label6,Label7,Label8
1128 IF(MULTI_FVM%LOWMACH_OPT)WRITE(IOUT,1004)
1129 IF(ALEMUSCL_Param%IALEMUSCL/=0)WRITE(IOUT,1005)ALEMUSCL_Param%BETA
1130 ENDIF
1131 !OUTPUT COURANT NUMBER
1132 WRITE(IOUT,1006) DTFAC1(102),DTMIN1(102)
1133 !OUTPUT GRID SMOOTHING FORMULATION AND ITS PARAMETERS
1134 WRITE(IOUT,1007)Label9(1:len_trim(Label9))
1135 SELECT CASE (ALE%GRID%NWALE)
1136 CASE(0) !DONEA
1137 WRITE(IOUT,1008)
1138 WRITE(IOUT,1200) ALE%GRID%ALPHA,ALE%GRID%GAMMA,ALE%GRID%VGX,ALE%GRID%VGY,ALE%GRID%VGZ,VOLMIN
1139 CASE(1) !DISP
1140 WRITE(IOUT,1008)
1141 WRITE(IOUT,1220) ALE%GRID%ALPHA,VOLMIN
1142 CASE(2) !SPRING
1143 WRITE(IOUT,1008)
1144 WRITE(IOUT,1250) DT_INPUT,ALE%GRID%ALPHA,ALE%GRID%GAMMA,ALE%GRID%VGX,ALE%GRID%VGY,VOLMIN
1145 CASE(3) !ZERO
1146 !no parameters
1147 CASE(4) !STANDARD
1148 WRITE(IOUT,1008)
1149 WRITE(IOUT,1254) ALE%GRID%ALPHA,ALE%GRID%GAMMA,ALE%GRID%VGX,ALE%GRID%VGY
1150 CASE(5)! LAPLACIAN
1151 WRITE(IOUT,1008)
1152 WRITE(IOUT,1254) ALE%GRID%ALPHA,ALE%GRID%GAMMA,ALE%GRID%VGX,ALE%GRID%VGY
1153 CASE(6) !VOLUME
1154 !no parameters
1155 CASE(7) !FLOW-TRACKING
1156 WRITE(IOUT,1008)
1157 LABEL_DEF=' no'
1158 LABEL_ROT=' no'
1159 IF(INT(ALE%GRID%VGX) == 1)LABEL_DEF='yes'
1160 IF(INT(ALE%GRID%VGY) == 1)LABEL_ROT='yes'
1161 WRITE(IOUT,1257) LABEL_DEF,LABEL_ROT,ALE%GRID%ALPHA,ALE%GRID%GAMMA
1162 CASE(8) !LAGRANGE
1163 !no parameters
1164 END SELECT
1165 ENDIF
1166.OR. ENDIF !(IALE/=0IEULER/=0)
1167 !---CHECK END-------------------!
1168!-----------------------
1169! FEM MOMENTUM INTEGRATION
1170!-----------------------
1171.AND. IF(ISPMD == 0MCHECK == 0)THEN
1172.AND. IF(IALE+IEULER /= 0 ALE%GLOBAL%ISFINT /= 3)THEN
1173 SELECT CASE(ALE%GLOBAL%ISFINT)
1174 !CASE(3)
1175 ! WRITE(IOUT,1197) !default
1176 CASE(2)
1177 WRITE(IOUT,1198)
1178 CASE(1)
1179 WRITE(IOUT,1199)
1180 END SELECT
1181 ENDIF
1182 ENDIF
1183
1184C-------------------------------
1185C ELIMINATION PARTIE ALE EULER THERMIQUE
1186C-------------------------------
1187.AND. IF(IALE /= 0NALEOF == 1)THEN
1188.AND. IF(ISPMD == 0MCHECK == 0)THEN
1189 WRITE(IOUT,*)'ale formulation switched off '
1190 END IF
1191 IALE = 0
1192 END IF
1193.AND. IF(IEULER /= 0NEULEROF == 1)THEN
1194.AND. IF(ISPMD == 0MCHECK == 0)THEN
1195 WRITE(IOUT,*)'euler formulation switched off '
1196 END IF
1197 IEULER = 0
1198 END IF
1199.AND. IF (GLOB_THERM%ITHERM /= 0NTHERMOF == 1)THEN
1200.AND. IF(ISPMD == 0MCHECK == 0)THEN
1201 WRITE(IOUT,*)'thermic formulation switched off '
1202 END IF
1203 GLOB_THERM%ITHERM = 0
1204 END IF
1205C-------------------------------
1206.AND..AND. IF(IDEL7 /= 0MCHECK == 0N2D == 0)THEN
1207 IDELI7 = IDEL7 - 1
1208 IF(ISPMD == 0)THEN
1209 WRITE(IOUT,1550) IDELI7
1210 CALL ANCMSG(MSGID=122,ANMODE=ANINFO_BLIND)
1211 CALL ARRET(2)
1212 ENDIF
1213.AND. ELSEIF(N2D /= 0MCHECK == 0)THEN
1214 IF(ISPMD == 0)WRITE(IOUT,1550) IDEL7-1
1215 END IF
1216C-------------------------------
1217C INTERFACE CLEANING
1218C-------------------------------
1219 IF(NSLIOF /= 0) THEN
1220C
1221 NN=(NSLIOF+9)/10
1222 DO IL=1,NN
1223 READ (IIN,'(10i10)') (NLEC(I),I=1,10)
1224 DO I=1,10
1225 IF(NLEC(I) == 0)CYCLE
1226.AND. IF(ISPMD == 0MCHECK == 0)WRITE(IOUT,2000) NLEC(I)
1227 DO K=1,NINTER
1228 IF(IPARI(15,K) == NLEC(I))THEN
1229 IF(IPARI(7,K)==2)THEN
1230 IDEL2= IPARI(17,K)
1231 IF(IDEL2 /= 0)THEN
1232C SMASS & SINER have been saved only if IDEL2 /= 0
1233 NSN = IPARI(5,K)
1234 DO N=1,NSN
1235 IS =INTBUF_TAB(K)%NSV(N)
1236 IF(IS > 0)THEN
1237 MS(IS)=INTBUF_TAB(K)%SMAS(N)
1238 IN(IS)=INTBUF_TAB(K)%SINER(N)
1239 INTBUF_TAB(K)%NSV(N)=-IS
1240 END IF
1241 END DO
1242 END IF
1243 END IF
1244C----- change T_stop for int25 otherwise issue w/ int25
1245 IF(IPARI(7,K)==25)THEN
1246 INTBUF_TAB(K)%VARIABLES(11) = ZERO
1247 ELSE
1248 IPARI(7,K)=0
1249 ENDIF
1250 END IF
1251 ENDDO
1252 ENDDO !next I
1253 ENDDO
1254 ENDIF
1255C-----------------------------------
1256C CLEANING INTERFACE NODES
1257C----------------------------------------
1258 IF(NSLIOFN /= 0) THEN
1259 READ (IIN,'(2i8)') I,NN
1260 KK=0
1261 DO K=1,NINTER
1262 IF(IPARI(15,K) == I)KK=K
1263 ENDDO
1264 IF(KK == 0)THEN
1265 IF(ISPMD == 0) THEN
1266 CALL ANCMSG(MSGID=123,ANMODE=ANINFO_BLIND)
1267 ENDIF
1268 CALL ARRET(2)
1269 ENDIF
1270 NRTS =IPARI(3,KK)
1271 NRTM =IPARI(3,KK)
1272 NSN =IPARI(5,KK)
1273 NMN =IPARI(6,KK)
1274 NTY =IPARI(7,KK)
1275 IF (IPARI(71,KK)/=0) NTY = 19 ! Interface type 19
1276 IF(NTY == 3)THEN
1277 NSN =NSN + NMN
1278.OR. ELSEIF(NTY == 4 NTY == 5)THEN
1279.OR..OR. ELSEIF(NTY == 7 NTY == 10 NTY == 22)THEN
1280 ELSE
1281 IF(ISPMD == 0) THEN
1282 CALL ANCMSG(MSGID=124,ANMODE=ANINFO_BLIND)
1283 ENDIF
1284 CALL ARRET(2)
1285 ENDIF
1286 DO IL=1,NN
1287 READ (IIN,'(10i10)') (NLEC(I),I=1,10)
1288 DO I=1,10
1289 IF(NLEC(I) /= 0)THEN
1290 DO K=1,NSN
1291 IF(ITAB(INTBUF_TAB(KK)%NSV(K)) == NLEC(I))THEN !NSV(K)
1292 INTBUF_TAB(KK)%STFNS(K)=ZERO !STFNS(K)
1293 ENDIF
1294 ENDDO
1295 ENDIF
1296 ENDDO
1297 ENDDO
1298 ENDIF
1299C----------------------------------------------
1300C CLEANING ELEMS
1301C----------------------------------------------
1302 NELOF=NELSOF+NELQOF+NELCOF+NELTOF+NELPOF+NELROF+NELTGOF+NSPHOF
1303C-----------------------
1304C 1. 3D ELEMS
1305C-----------------------
1306 IF(NELSOF > 0)THEN
1307.AND. IF(ISPMD == 0MCHECK == 0)WRITE (IOUT,1810)
1308 NN=(NELSOF+4)/5
1309 NBC=5
1310 DO IL=1,NN
1311 READ (IIN,'(10i10)') (NLEC(II),II=1,10)
1312 DO J=1,NBC
1313 KLG=NLEC(2*J-1)
1314 KUG=NLEC(2*J )
1315 IF(KLG<=0) GO TO 120
1316 NBLK=(IL-1)*NBC+J
1317 DO L=1,NUMELS
1318.AND. IF(IXS(NIXS,L)>=KLGIXS(NIXS,L)<=KUG) THEN
1319 DO K=KLG,KUG
1320 IF(IXS(NIXS,L) == K) THEN
1321 IXS(1,L)=-IABS(IXS(1,L))
1322 GOTO 111
1323 ENDIF
1324 ENDDO
1325 ENDIF
1326111 CONTINUE
1327 ENDDO
1328 ENDDO
1329 ENDDO
1330 120 CONTINUE
1331 K=0
1332 DO J=1,NUMELS
1333 IF(IXS(1,J) < 0)THEN
1334 K=K+1
1335 NLEC(K) = IXS(NIXS,J)
1336 IF(K == 10)THEN
1337 IF(MCHECK == 0)WRITE (IOUT,'(5i10)') (NLEC(II),II=1,K)
1338 K=0
1339 ENDIF
1340 ENDIF
1341 ENDDO
1342 IF(K > 0) THEN
1343 IF(MCHECK == 0)WRITE (IOUT,'(5i10)') (NLEC(II),II=1,K)
1344 ENDIF
1345 IF(NSPMD > 1) THEN
1346 ! required treatments to retrieve deleted elems in correct order
1347 IWIOUT = 0
1348 IF (ISPMD /= 0) CALL SPMD_CHKW(IWIOUT,IOUT)
1349 CALL SPMD_GLOB_ISUM9(IWIOUT,1)
1350 CALL SPMD_IBCAST(IWIOUT,IWIOUT,1,1,0,2)
1351 IF (IWIOUT > 0) THEN
1352 CALL SPMD_WIOUT(IOUT,IWIOUT)
1353 IWIOUT = 0
1354 ENDIF
1355 ENDIF
1356 ENDIF!(NELSOF > 0)
1357C-----------------------
1358C 2. 2D-ELEMS
1359C-----------------------
1360 IF(NELQOF > 0)THEN
1361.AND. IF(ISPMD == 0MCHECK == 0)WRITE (IOUT,1820)
1362 IF (INVERS < 18) THEN
1363 NN=(NELQOF+7)/8
1364 NBC=8
1365 ELSE
1366 NN=(NELQOF+4)/5
1367 NBC=5
1368 ENDIF
1369 DO I=1,NN
1370 READ (IIN,'(10i10)') (NLEC(II),II=1,10)
1371 DO J=1,NBC
1372 KLG=NLEC(2*J-1)
1373 KUG=NLEC(2*J )
1374 IF(KLG<=0) GO TO 220
1375 NBLK=(I-1)*NBC+J
1376 DO L=1,NUMELQ
1377.AND. IF(IXQ(NIXQ,L)>=KLGIXQ(NIXQ,L)<=KUG) THEN
1378 DO K=KLG,KUG
1379 IF(IXQ(NIXQ,L) == K) THEN
1380 IXQ(1,L)=-IABS(IXQ(1,L))
1381 GOTO 211
1382 ENDIF
1383 ENDDO
1384 ENDIF
1385 211 CONTINUE
1386 ENDDO
1387 ENDDO
1388 ENDDO
1389 220 CONTINUE
1390 K=0
1391 DO J=1,NUMELQ
1392 IF(IXQ(1,J) < 0)THEN
1393 K=K+1
1394 NLEC(K) = IXQ(NIXQ,J)
1395 IF(K == 10)THEN
1396 IF(MCHECK == 0)WRITE (IOUT,'(5i10)') (NLEC(II),II=1,K)
1397 K=0
1398 ENDIF
1399 ENDIF
1400 ENDDO
1401 IF(K > 0) THEN
1402 IF(MCHECK == 0)WRITE (IOUT,'(5i10)') (NLEC(II),II=1,K)
1403 ENDIF
1404 IF(NSPMD > 1) THEN
1405 ! required treatments to retrieve deleted elems in correct order
1406 IWIOUT = 0
1407 IF (ISPMD /= 0) CALL SPMD_CHKW(IWIOUT,IOUT)
1408 CALL SPMD_GLOB_ISUM9(IWIOUT,1)
1409 CALL SPMD_IBCAST(IWIOUT,IWIOUT,1,1,0,2)
1410 IF (IWIOUT > 0) THEN
1411 CALL SPMD_WIOUT(IOUT,IWIOUT)
1412 IWIOUT = 0
1413 ENDIF
1414 ENDIF
1415 END IF
1416C-----------------------
1417C 3. SHELL ELEMS
1418C-----------------------
1419 IF(NELCOF > 0)THEN
1420.AND. IF(ISPMD == 0MCHECK == 0)WRITE (IOUT,1830)
1421 NN=(NELCOF+4)/5
1422 NBC=5
1423 DO I=1,NN
1424 READ (IIN,'(10i10)') (NLEC(II),II=1,10)
1425 DO J=1,NBC
1426 KLG=NLEC(2*J-1)
1427 KUG=NLEC(2*J )
1428 IF(KLG<=0) GO TO 320
1429 NBLK=(I-1)*NBC+J
1430 DO L=1,NUMELC
1431.AND. IF(IXC(NIXC,L)>=KLGIXC(NIXC,L)<=KUG) THEN
1432 DO K=KLG,KUG
1433 IF(IXC(NIXC,L) == K) THEN
1434 IXC(1,L)=-IABS(IXC(1,L))
1435 GOTO 311
1436 ENDIF
1437 ENDDO
1438 ENDIF
1439 311 CONTINUE
1440 ENDDO
1441 ENDDO
1442 ENDDO
1443 320 CONTINUE
1444 K=0
1445 DO J=1,NUMELC
1446 IF(IXC(1,J) < 0)THEN
1447 K=K+1
1448 NLEC(K) = IXC(NIXC,J)
1449 IF(K == 10)THEN
1450 IF(MCHECK == 0)WRITE (IOUT,'(5i10)') (NLEC(II),II=1,K)
1451 K=0
1452 ENDIF
1453 ENDIF
1454 ENDDO
1455 IF(K > 0) THEN
1456 IF(MCHECK == 0)WRITE (IOUT,'(5i10)') (NLEC(II),II=1,K)
1457 ENDIF
1458 IF(NSPMD > 1) THEN
1459 ! required treatments to retrieve deleted elems in correct order
1460 IWIOUT = 0
1461 IF (ISPMD /= 0) CALL SPMD_CHKW(IWIOUT,IOUT)
1462 CALL SPMD_GLOB_ISUM9(IWIOUT,1)
1463 CALL SPMD_IBCAST(IWIOUT,IWIOUT,1,1,0,2)
1464 IF (IWIOUT > 0) THEN
1465 CALL SPMD_WIOUT(IOUT,IWIOUT)
1466 IWIOUT = 0
1467 ENDIF
1468 ENDIF
1469 END IF
1470C-----------------------
1471C 4. ROD ELEMS
1472C-----------------------
1473 IF(NELTOF > 0)THEN
1474.AND. IF(ISPMD == 0MCHECK == 0)WRITE (IOUT,1840)
1475 NN=(NELTOF+4)/5
1476 NBC=5
1477 DO I=1,NN
1478 READ (IIN,'(10i10)') (NLEC(II),II=1,10)
1479 DO J=1,NBC
1480 KLG=NLEC(2*J-1)
1481 KUG=NLEC(2*J )
1482 IF(KLG<=0) GO TO 420
1483 NBLK=(I-1)*NBC+J
1484 DO L=1,NUMELT
1485.AND. IF(IXT(NIXT,L)>=KLGIXT(NIXT,L)<=KUG) THEN
1486 DO K=KLG,KUG
1487 IF(IXT(NIXT,L) == K) THEN
1488 IXT(1,L)=-IABS(IXT(1,L))
1489 GOTO 411
1490 ENDIF
1491 ENDDO
1492 ENDIF
1493 411 CONTINUE
1494 ENDDO
1495 ENDDO
1496 ENDDO
1497 420 CONTINUE
1498 K=0
1499 DO J=1,NUMELT
1500 IF(IXT(1,J) < 0)THEN
1501 K=K+1
1502 NLEC(K) = IXT(NIXT,J)
1503 IF(K == 10)THEN
1504 IF(MCHECK == 0)WRITE (IOUT,'(5i10)') (NLEC(II),II=1,K)
1505 K=0
1506 ENDIF
1507 ENDIF
1508 ENDDO
1509 IF(K > 0) THEN
1510 IF(MCHECK == 0) WRITE (IOUT,'(5i10)') (NLEC(II),II=1,K)
1511 ENDIF
1512 IF(NSPMD > 1) THEN
1513 ! required treatments to retrieve deleted elems in correct order
1514 IWIOUT = 0
1515 IF (ISPMD /= 0) CALL SPMD_CHKW(IWIOUT,IOUT)
1516 CALL SPMD_GLOB_ISUM9(IWIOUT,1)
1517 CALL SPMD_IBCAST(IWIOUT,IWIOUT,1,1,0,2)
1518 IF (IWIOUT > 0) THEN
1519 CALL SPMD_WIOUT(IOUT,IWIOUT)
1520 IWIOUT = 0
1521 ENDIF
1522 ENDIF
1523 END IF
1524C-----------------------
1525C 5. BEAM ELEMS
1526C-----------------------
1527 IF(NELPOF > 0)THEN
1528.AND. IF(ISPMD == 0MCHECK == 0)WRITE (IOUT,1850)
1529 NN=(NELPOF+4)/5
1530 NBC=5
1531 DO I=1,NN
1532 READ (IIN,'(10i10)') (NLEC(II),II=1,10)
1533 DO J=1,NBC
1534 KLG=NLEC(2*J-1)
1535 KUG=NLEC(2*J )
1536 IF(KLG<=0) GO TO 520
1537 NBLK=(I-1)*NBC+J
1538 DO L=1,NUMELP
1539.AND. IF(IXP(NIXP,L)>=KLGIXP(NIXP,L)<=KUG) THEN
1540 DO K=KLG,KUG
1541 IF(IXP(NIXP,L) == K) THEN
1542 IXP(1,L)=-IABS(IXP(1,L))
1543 GOTO 511
1544 ENDIF
1545 ENDDO
1546 ENDIF
1547 511 CONTINUE
1548 ENDDO
1549 ENDDO
1550 ENDDO
1551 520 CONTINUE
1552 K=0
1553 DO J=1,NUMELP
1554 IF(IXP(1,J) < 0)THEN
1555 K=K+1
1556 NLEC(K) = IXP(NIXP,J)
1557 IF(K == 10)THEN
1558 IF(MCHECK == 0)WRITE (IOUT,'(5i10)') (NLEC(II),II=1,K)
1559 K=0
1560 ENDIF
1561 ENDIF
1562 ENDDO
1563 IF(K > 0) THEN
1564 IF(MCHECK == 0)WRITE (IOUT,'(5i10)') (NLEC(II),II=1,K)
1565 ENDIF
1566 IF(NSPMD > 1) THEN
1567 ! required treatments to retrieve deleted elems in correct order
1568 IWIOUT = 0
1569 IF (ISPMD /= 0) CALL SPMD_CHKW(IWIOUT,IOUT)
1570 CALL SPMD_GLOB_ISUM9(IWIOUT,1)
1571 CALL SPMD_IBCAST(IWIOUT,IWIOUT,1,1,0,2)
1572 IF (IWIOUT > 0) THEN
1573 CALL SPMD_WIOUT(IOUT,IWIOUT)
1574 IWIOUT = 0
1575 ENDIF
1576 ENDIF
1577 END IF
1578C-----------------------
1579C 6. SPRING ELEMS
1580C-----------------------
1581 IF(NELROF > 0)THEN
1582.AND. IF(ISPMD == 0MCHECK == 0)WRITE (IOUT,1860)
1583 NN=(NELROF+4)/5
1584 NBC=5
1585 DO I=1,NN
1586 READ (IIN,'(10i10)') (NLEC(II),II=1,10)
1587 DO J=1,NBC
1588 KLG=NLEC(2*J-1)
1589 KUG=NLEC(2*J )
1590 IF(KLG<=0) GO TO 620
1591 NBLK=(I-1)*NBC+J
1592 DO L=1,NUMELR
1593.AND. IF(IXR(NIXR,L)>=KLGIXR(NIXR,L)<=KUG) THEN
1594 DO K=KLG,KUG
1595 IF(IXR(NIXR,L) == K) THEN
1596 IXR(1,L)=-IABS(IXR(1,L))
1597 GOTO 611
1598 ENDIF
1599 ENDDO
1600 ENDIF
1601 611 CONTINUE
1602 ENDDO
1603 ENDDO
1604 ENDDO
1605 620 CONTINUE
1606 K=0
1607 DO J=1,NUMELR
1608 IF(IXR(1,J) < 0)THEN
1609 K=K+1
1610 NLEC(K) = IXR(NIXR,J)
1611 IF(K == 10)THEN
1612 IF(MCHECK == 0)WRITE (IOUT,'(5i10)') (NLEC(II),II=1,K)
1613 K=0
1614 ENDIF
1615 ENDIF
1616 ENDDO
1617 IF(K > 0) THEN
1618 IF(MCHECK == 0) WRITE (IOUT,'(5i10)') (NLEC(II),II=1,K)
1619 ENDIF
1620 IF(NSPMD > 1) THEN
1621 ! required treatments to retrieve deleted elems in correct order
1622 IWIOUT = 0
1623 IF (ISPMD /= 0) CALL SPMD_CHKW(IWIOUT,IOUT)
1624 CALL SPMD_GLOB_ISUM9(IWIOUT,1)
1625 CALL SPMD_IBCAST(IWIOUT,IWIOUT,1,1,0,2)
1626 IF (IWIOUT > 0) THEN
1627 CALL SPMD_WIOUT(IOUT,IWIOUT)
1628 IWIOUT = 0
1629 ENDIF
1630 ENDIF
1631 ENDIF
1632C-----------------------
1633C 7. 3N-SHELL-ELEMS
1634C-----------------------
1635 IF(NELTGOF > 0)THEN
1636.AND. IF(ISPMD == 0MCHECK == 0)WRITE (IOUT,1870)
1637 NN=(NELTGOF+4)/5
1638 NBC=5
1639 DO I=1,NN
1640 READ (IIN,'(10i10)') (NLEC(II),II=1,10)
1641 DO J=1,NBC
1642 KLG=NLEC(2*J-1)
1643 KUG=NLEC(2*J )
1644 IF(KLG<=0) GO TO 640
1645 NBLK=(I-1)*NBC+J
1646 DO L=1,NUMELTG
1647.AND. IF(IXTG(NIXTG,L)>=KLGIXTG(NIXTG,L)<=KUG) THEN
1648 DO K=KLG,KUG
1649 IF(IXTG(NIXTG,L) == K) THEN
1650 IXTG(1,L)=-IABS(IXTG(1,L))
1651 GOTO 631
1652 ENDIF
1653 ENDDO
1654 ENDIF
1655 631 CONTINUE
1656 ENDDO
1657 ENDDO
1658 ENDDO
1659 640 CONTINUE
1660 K=0
1661 DO J=1,NUMELTG
1662 IF(IXTG(1,J) < 0)THEN
1663 K=K+1
1664 NLEC(K) = IXTG(NIXTG,J)
1665 IF(K == 10)THEN
1666 IF(MCHECK == 0)WRITE (IOUT,'(5i10)') (NLEC(II),II=1,K)
1667 K=0
1668 ENDIF
1669 ENDIF
1670 ENDDO
1671 IF(K > 0) THEN
1672 IF(MCHECK == 0) WRITE (IOUT,'(5i10)') (NLEC(II),II=1,K)
1673 ENDIF
1674 IF(NSPMD > 1) THEN
1675 ! required treatments to retrieve deleted elems in correct order
1676 IWIOUT = 0
1677 IF (ISPMD /= 0) CALL SPMD_CHKW(IWIOUT,IOUT)
1678 CALL SPMD_GLOB_ISUM9(IWIOUT,1)
1679 CALL SPMD_IBCAST(IWIOUT,IWIOUT,1,1,0,2)
1680 IF (IWIOUT > 0) THEN
1681 CALL SPMD_WIOUT(IOUT,IWIOUT)
1682 IWIOUT = 0
1683 ENDIF
1684 ENDIF
1685C
1686 END IF
1687C-----------------------
1688C 8. SPH PARTICLES
1689C-----------------------
1690 IF(NSPHOF > 0)THEN
1691.AND. IF(ISPMD == 0MCHECK == 0)WRITE (IOUT,1880)
1692 NN=(NSPHOF+4)/5
1693 NBC=5
1694 K=0
1695 DO I=1,NN
1696 READ (IIN,'(10i10)') (NLEC(II),II=1,10)
1697 DO J=1,NBC
1698 KLG=NLEC(2*J-1)
1699 KUG=NLEC(2*J )
1700 IF(KLG<=0) GO TO 732
1701 NBLK=(I-1)*NBC+J
1702 DO L=1,NUMSPH
1703.AND. IF(KXSP(NISP,L)>=KLGKXSP(NISP,L)<=KUG) THEN
1704C number of the related group :
1705 NG =MOD(ABS(KXSP(2,L)),NGROUP+1)
1706 IF(NG /= 0)THEN
1707 NFT=IPARG(3,NG)
1708 IAD=IPARG(4,NG)
1709 II=L-NFT
1710! ELBUF_STR(NG)%GBUF%OFF(II) = ZERO
1711 KXSP(2,L) = 0
1712 K=K+1
1713 NLECSPH(K) = KXSP(NISP,L)
1714 IF(K == 10)THEN
1715 IF(MCHECK == 0) WRITE (IOUT,'(5i10)') (nlecsph(ii),ii=1,k)
1716 k=0
1717 END IF
1718 END IF
1719 ENDIF
1720 ENDDO
1721 ENDDO
1722 ENDDO
1723 732 CONTINUE
1724 IF(k > 0) THEN
1725 IF(mcheck == 0)WRITE (iout,'(5I10)') (nlecsph(ii),ii=1,k)
1726 END IF
1727 IF(nspmd > 1) THEN
1728 ! required treatments to retrieve deleted elems in correct order
1729 iwiout = 0
1730 IF (ispmd /= 0) CALL spmd_chkw(iwiout,iout)
1731 CALL spmd_glob_isum9(iwiout,1)
1732 CALL spmd_ibcast(iwiout,iwiout,1,1,0,2)
1733 IF (iwiout > 0) THEN
1734 CALL spmd_wiout(iout,iwiout)
1735 iwiout = 0
1736 ENDIF
1737 ENDIF
1738C
1739 END IF
1740!-----------------------
1741! 9. /DEL/PART
1742!-----------------------
1743 IF(npartof > 0)THEN
1744 IF(ispmd == 0.AND.mcheck == 0)WRITE (iout,1890)
1745 nn=(npartof+4)/5
1746 nbc=5
1747 ALLOCATE(ipartof(npart))
1748 ipartof = 0
1749 DO i=1,nn
1750 READ (iin,'(10I10)') (nlec(ii),ii=1,10)
1751 DO j=1,nbc
1752 klg=nlec(2*j-1)
1753 kug=nlec(2*j )
1754 IF(klg<=0) GO TO 832
1755 nblk=(i-1)*nbc+j
1756 DO l = 1, npart
1757 DO k=klg,kug
1758 IF(ipart(4 + (l - 1) * lipart1) == k) THEN
1759 ipartof(l)=1
1760 cycle
1761 ENDIF
1762 ENDDO
1763 ENDDO
1764 ENDDO
1765 ENDDO
1766 832 CONTINUE
1767 k=0
1768 DO l=1,npart
1769 IF(ipartof(l)== 1)THEN
1770 k=k+1
1771 nlec(k) = ipart(4 + (l - 1) * lipart1)
1772 IF(k == 10)THEN
1773 IF(mcheck == 0)WRITE (iout,'(5I10)') (nlec(ii),ii=1,k)
1774 k=0
1775 ENDIF
1776 ENDIF
1777 ENDDO
1778 IF(k > 0) THEN
1779 IF(mcheck == 0) WRITE (iout,'(5I10)') (nlec(ii),ii=1,k)
1780 ENDIF
1781 IF(nspmd > 1) THEN
1782 ! required treatments to retrieve deleted elems in correct order
1783 iwiout = 0
1784 IF (ispmd /= 0) CALL spmd_chkw(iwiout,iout)
1785 CALL spmd_glob_isum9(iwiout,1)
1786 CALL spmd_ibcast(iwiout,iwiout,1,1,0,2)
1787 IF (iwiout > 0) THEN
1788 CALL spmd_wiout(iout,iwiout)
1789 iwiout = 0
1790 ENDIF
1791 ENDIF
1792!
1793 END IF
1794
1795C-------------------------------
1796C Output by interface :
1797C 1 - Skid lines
1798C-------------------------------
1799 IF(h3d_data%N_SCAL_SKID > 0.AND.nintskidold==0) THEN
1800 ninterskid = h3d_data%N_SCAL_SKID
1801 IF(nintstamp/=0) THEN
1802 ALLOCATE (pskids(ninterskid,numnodg))
1803 pskids(1:ninterskid,1:numnodg) = zero
1804 ELSE
1805 ALLOCATE (pskids(ninterskid,numnod))
1806 pskids(1:ninterskid,1:numnod) = zero
1807 ENDIF
1808 ELSEIF(h3d_data%N_SCAL_SKID == 0.AND.nintskidold==0)THEN
1809 ALLOCATE (pskids(0,0))
1810 ENDIF
1811C-------------------------------------------
1812C 2 - Frictionnal energy: allocs tabs
1813C--------------------------------------------
1814 IF(h3d_data%N_SCAL_CSE_FRIC >0.AND.s_efric == 0)THEN
1815 ALLOCATE(efricg(numnod))
1816 efricg(1:numnod) = zero
1817 IF(nintstamp/=0) THEN
1818 ALLOCATE(efricg_stamp(numnodg))
1819 efricg_stamp(1:numnodg) = zero
1820 ELSE
1821 ALLOCATE(efricg_stamp(0))
1822 ENDIF
1823 ELSEIF(s_efric==0)THEN
1824 ALLOCATE(efricg(0))
1825 ALLOCATE(efricg_stamp(0))
1826 ENDIF
1827
1828 IF(h3d_data%N_SCAL_CSE_FRICINT > 0.AND.s_efricint==0) THEN
1829C
1830 ninefricg = h3d_data%N_SCAL_CSE_FRICINT
1831 ninefric_stamp = 0
1832 ninefric = 0
1833 IF(nintstamp/=0) THEN
1834 DO n=1,ninter
1835 ni = h3d_data%N_CSE_FRIC_INTER (n)
1836 IF(ni/= 0.AND.ipari(7,n)==21) ninefric_stamp = ninefric_stamp + 1
1837 ENDDO
1838 ENDIF
1839 IF(ninefric_stamp==ninefricg) THEN
1840 CALL my_alloc(efric_stamp,ninefricg,numnodg)
1841 efric_stamp(1:ninefricg,1:numnodg) = zero
1842 CALL my_alloc(efric,0,0)
1843 ELSEIF(ninefric_stamp==0) THEN
1844 ninefric = ninefricg
1845 CALL my_alloc(efric,ninefric,numnod)
1846 efric(1:ninefricg,1:numnod) = zero
1847 CALL my_alloc(efric_stamp,0,0)
1848 ELSE
1849 ninefric = ninefricg-ninefric_stamp
1850 CALL my_alloc(efric_stamp,ninefric_stamp,numnodg)
1851 efric_stamp(1:ninefric_stamp,1:numnodg) = zero
1852 CALL my_alloc(efric,ninefric,numnod)
1853 efric(1:ninefric,1:numnod) = zero
1854 ns = 0
1855 nn= 0
1856 DO n=1,ninter
1857 ni = h3d_data%N_CSE_FRIC_INTER (n)
1858 IF(ni/= 0.AND.ipari(7,n)==21) THEN
1859 ns = ns+1
1860 h3d_data%N_CSE_FRIC_INTER (n) = ninefric + ns
1861 ELSEIF (ni/=0) THEN
1862 nn = nn+1
1863 h3d_data%N_CSE_FRIC_INTER (n) = nn
1864 ENDIF
1865 ENDDO
1866 ENDIF
1867 ELSEIF(s_efricint==0)THEN
1868 CALL my_alloc(efric,0,0)
1869 CALL my_alloc(efric_stamp,0,0)
1870 ENDIF
1871C-----------------------------------
1872
1873C-----------------------
1874C RESET OFF ARRAY
1875C-----------------------
1876 IF (nelof > 0)THEN
1877 DO ng=1,ngroup
1878 offg => elbuf_str(ng)%GBUF%OFF
1879 mlw=iparg(1,ng)
1880 ity=iparg(5,ng)
1881 nel=iparg(2,ng)
1882 nft=iparg(3,ng)
1883 iad=iparg(4,ng)
1884 igof=0
1885C-----------------------
1886C 1. SOLID ELEMS
1887C-----------------------
1888 IF(ity == 1.AND.nelsof /= 0)THEN
1889 igof=1
1890 DO i=1,nel
1891 ii=i+nft
1892 IF(ixs(1,ii) < 0)THEN
1893 ixs(1,ii)=-ixs(1,ii)
1894 IF (mlw /= 0) THEN
1895 offg(i)=zero
1896 ELSE ! loi0, pas de off
1897 CALL ancmsg(msgid=238,anmode=aninfo_blind,i1=ixs(nixs,ii),c1='BRICK',c2='BRICK')
1898 ENDIF
1899 ELSE
1900 igof=0
1901 ENDIF
1902 ENDDO
1903C-----------------------
1904C 2. 2D ELEMS
1905C-----------------------
1906 ELSEIF(ity == 2.AND.nelqof /= 0)THEN
1907 igof=1
1908 DO i=1,nel
1909 ii=i+nft
1910 IF(ixq(1,ii) < 0)THEN
1911 ixq(1,ii)=-ixq(1,ii)
1912 offg(i) = zero
1913 ELSE
1914 igof=0
1915 ENDIF
1916 ENDDO
1917C-----------------------
1918C 3. SHELL ELEMS
1919C-----------------------
1920 ELSEIF(ity == 3.AND.nelcof /= 0)THEN
1921 igof=1
1922 DO i=1,nel
1923 ii=i+nft
1924 IF(ixc(1,ii) < 0)THEN
1925 ixc(1,ii)=-ixc(1,ii)
1926 IF (mlw /= 0) THEN
1927 offg(i) = zero
1928 ELSE ! loi0, pas de off
1929 CALL ancmsg(msgid=238,anmode=aninfo_blind,i1=ixc(nixc,ii), c1='SHELL',c2='SHELL')
1930 ENDIF
1931 ELSE
1932 igof=0
1933 ENDIF
1934 ENDDO
1935C-----------------------
1936C 4. ROD ELEMS
1937C-----------------------
1938 ELSEIF(ity == 4.AND.neltof /= 0)THEN
1939C IGOF=1
1940C suppression du groupe incompatible avec option gap truss
1941 igof=0
1942 DO i=1,nel
1943 ii=i+nft
1944 IF(ixt(1,ii) < 0)THEN
1945 ixt(1,ii)=-ixt(1,ii)
1946 offg(i) = zero
1947C ELSE
1948C IGOF=0
1949 ENDIF
1950 ENDDO
1951C-----------------------
1952C 5. BEAM ELEMS
1953C-----------------------
1954 ELSEIF(ity == 5.AND.nelpof /= 0)THEN
1955 igof=1
1956 DO i=1,nel
1957 ii=i+nft
1958 IF(ixp(1,ii) < 0)THEN
1959 ixp(1,ii)=-ixp(1,ii)
1960 offg(i) = zero
1961 ELSE
1962 igof=0
1963 ENDIF
1964 ENDDO
1965C-----------------------
1966C 6. ELEMENTS RESSORTS
1967C-----------------------
1968 ELSEIF(ity == 6.AND.nelrof /= 0)THEN
1969 igof=0
1970 DO i=1,nel
1971 ii=i+nft
1972 IF(ixr(1,ii) < 0)THEN
1973 ixr(1,ii)=-ixr(1,ii)
1974 offg(i) = zero
1975 ENDIF
1976 ENDDO
1977C-----------------------
1978C 7. 3N-SHELL-ELEMS
1979C-----------------------
1980 ELSEIF(ity == 7.AND.neltgof /= 0)THEN
1981 igof=1
1982 DO i=1,nel
1983 ii=i+nft
1984 IF(ixtg(1,ii) < 0)THEN
1985 ixtg(1,ii)=-ixtg(1,ii)
1986 IF(mlw /= 0) THEN
1987 offg(i) = zero
1988 ELSE ! loi0, pas de off
1989 CALL ancmsg(msgid=238,anmode=aninfo_blind,i1=ixtg(nixtg,ii), c1='SH_3N',c2='SH_3N')
1990 ENDIF
1991 ELSE
1992 igof=0
1993 ENDIF
1994 ENDDO
1995C-----------------------
1996C 8. SPH PARTICLES
1997C-----------------------
1998 ELSEIF(ity == 51.AND.nsphof /= 0)THEN
1999 igof=1
2000 DO i=1,nel
2001 ii=i+nft
2002 IF(kxsp(2,ii) == 0)THEN
2003 offg(i) = zero
2004 ELSE
2005 igof=0
2006 ENDIF
2007 ENDDO
2008 ENDIF
2009C----------------------------------------
2010C CHECK FOR GROUP CLEANING
2011C----------------------------------------
2012 iparg(8,ng)=max0(iparg(8,ng),igof)
2013 ENDDO ! next NG
2014 END IF
2015! /DEL/PART
2016 IF(npartof > 0)THEN
2017! per group
2018 k1=1+lipart1*(npart+nthpart)+2*9*(npart+nthpart)
2019 k2=k1+numels
2020 k3=k2+numelq
2021 k4=k3+numelc
2022 k5=k4+numelt
2023 k6=k5+numelp
2024 k7=k6+numelr
2025 k8=k7
2026 k9=k8+numeltg
2027 k10= k9 + numelx
2028 k11= k10+ numsph
2029 DO ng = 1, ngroup
2030 offg => elbuf_str(ng)%GBUF%OFF
2031 mlw=iparg(1,ng)
2032 ity = iparg(5, ng)
2033 nel = iparg(2, ng)
2034 nft = iparg(3, ng)
2035 IF (nel == 0) cycle
2036 igof=0
2037 SELECT CASE (ity)
2038 CASE(1)
2039! 1. SOLID ELEMS
2040 igof=1
2041 DO i=1,nel
2042 ii=i+nft-1
2043 partid = ipart(k1 + ii)
2044 IF (ipartof(partid)==1) THEN
2045 IF (mlw/=0) offg(i) = zero
2046 ELSE
2047 igof=0
2048 ENDIF
2049 ENDDO
2050 CASE(2)
2051! 2. 2D ELEMS
2052 igof=1
2053 DO i=1,nel
2054 ii=i+nft-1
2055 partid = ipart(k2 + ii)
2056 IF (ipartof(partid)==1) THEN
2057 offg(i) = zero
2058 ELSE
2059 igof=0
2060 ENDIF
2061 ENDDO
2062 CASE(3)
2063! 3. SHELL ELEMS
2064 igof=1
2065 DO i=1,nel
2066 ii=i+nft-1
2067 partid = ipart(k3 + ii)
2068 IF (ipartof(partid)==1) THEN
2069 IF (mlw/=0) offg(i) = zero
2070 ELSE
2071 igof=0
2072 ENDIF
2073 ENDDO
2074 CASE(4)
2075! 4. ROD ELEMS
2076 igof=0
2077 DO i=1,nel
2078 ii=i+nft-1
2079 partid = ipart(k4 + ii)
2080 IF (ipartof(partid)==1) offg(i) = zero
2081 ENDDO
2082 CASE(5)
2083! 5. BEAM ELEMS
2084 igof=1
2085 DO i=1,nel
2086 ii=i+nft-1
2087 partid = ipart(k5 + ii)
2088 IF (ipartof(partid)==1) THEN
2089 offg(i) = zero
2090 ELSE
2091 igof=0
2092 ENDIF
2093 ENDDO
2094 CASE(6)
2095! 6. ELEMENTS RESSORTS
2096 igof=0
2097 DO i=1,nel
2098 ii=i+nft-1
2099 partid = ipart(k6 + ii)
2100 IF (ipartof(partid)==1) offg(i) = zero
2101 ENDDO
2102 CASE(7)
2103! 7. 3N-SHELL-ELEMS
2104 igof=1
2105 DO i=1,nel
2106 ii=i+nft-1
2107 partid = ipart(k7 + ii)
2108 IF (ipartof(partid)==1) THEN
2109 IF (mlw/=0) offg(i) = zero
2110 ELSE
2111 igof=0
2112 ENDIF
2113 ENDDO
2114 CASE(51)
2115! 8. SPH PARTICLES
2116 igof=1
2117 DO i=1,nel
2118 ii=i+nft-1
2119 partid = ipart(k10 + ii)
2120 IF (ipartof(partid)==1) THEN
2121 offg(i) = zero
2122 ELSE
2123 igof=0
2124 ENDIF
2125 ENDDO
2126 END SELECT
2127 iparg(8,ng)=max0(iparg(8,ng),igof)
2128 ENDDO
2129 IF (ALLOCATED(ipartof)) DEALLOCATE(ipartof)
2130 END IF
2131C-------------------------------------------
2132C ADDING RIGID LINK BETWEEN NODES
2133C-------------------------------------------
2134 IF(nrlink > 0 .AND. mcheck == 0) THEN
2135 k1 =1
2136 k2 =1
2137 DO k=1,nrlink
2138 READ (iin,'(I8,1X,3I1,1X,3I1,I10)')n,i1,i2,i3,ir1,ir2,ir3,isk
2139 READ (iin,'(10I10)') (llink(k2+i-1),i=1,n)
2140 ic=i3+2*i2+4*i1
2141 icr=ir3+2*ir2+4*ir1
2142 IF(iroddl == 0)icr=0
2143 IF(ispmd == 0.AND.mcheck == 0)WRITE(iout,2100) k,i1,i2,i3,ir1,ir2,ir3,isk,n
2144 IF(ispmd == 0.AND.mcheck == 0)WRITE(iout,'(10I10)') (llink(k2+i-1),i=1,n)
2145 IF ( isk /= 0) THEN
2146 isk1 = 0
2147 isk2 = 0
2148 DO ll=0,numskw
2149 IF(isk == iskwn(4,ll+1)) THEN
2150 isk1 = ll
2151 isk2 = 1
2152 ENDIF
2153 ENDDO
2154 IF ( isk2 == 0) THEN
2155 CALL ancmsg(msgid=125,anmode=aninfo)
2156 CALL arret(2)
2157 ENDIF
2158 isk = isk1
2159 ENDIF
2160 ! shared verification & defining specific data structure
2161 CALL fr_rlink1(llink(k2),itabm1,fr_rl(1,k),n)
2162 CALL rlink0(
2163 1 v ,vr ,ms ,in ,nnlink(k1),
2164 2 nnlink(k1+1),nnlink(k1+2),llink(k2),n ,ic ,
2165 3 icr ,nnlink(k1+3),isk ,skew(1,isk+1),iskwn ,
2166 4 fr_rl(1,k) ,weight )
2167 k1=k1+4
2168 k2=k2+n
2169 IF(ic+icr == 0)THEN
2170 IF(ispmd == 0)CALL ancmsg(msgid=126,anmode=aninfo)
2171 CALL arret(2)
2172 ENDIF
2173 ENDDO
2174 ENDIF
2175C-------------------------------------------
2176C ALE - LINK ON GRID VELOCITY
2177C format v5 ('/VEL/*')
2178C-------------------------------------------
2179C
2180C |ALE LINK 1 |2 |NALELK
2181C +----+----+----+----+----+----+----+----+----+...-+----+----+----+--...+----+----+--...
2182C LINALE |uID | M1 | M2 | N | IC | IM |id1 |id2 |id3 |... |idn | ... |
2183C +----+----+----+----+----+----+----+----+----+...-+----+----+----+--...+----+----+--...
2184C (1:SLINALE) 1 2 3 4 5 6 6+1 6+N
2185C +LLINAL |
2186C (N=1 if grnod_id is used)
2187C
2188C First subarrays are used to define ale links from starter (1:SLINALE). Engine links are in (SLINALE+1:SLINALE+LLINAL)
2189C Only Starter part is written in restart files.
2190C
2191C M1 : MAIN node 1
2192C M2 : MAIN node 2
2193C N : number of nodes
2194C IC : dir XYZ
2195C IM : formulation option -1,0,1
2196C id*: node_id list or grnod_id
2197C
2198C N<0 means that ALE LINK is tagged in FRALNK() as defined from a grnod_id.
2199
2200C
2201C +--RADIOSS2
2202C +--LECINP
2203C | +--FREFORM (direct access writing IUSC1, counting number of /VEL/ALE cards)
2204C | +--FRALNK(src/freef/fralnk.F) (LINALE size calculation:SLINALE, reading/checking GRNOD option)
2205C +--LECTUR (storing data in LINALE)
2206C | +--FR_RLALE(priv/spmd/fr_rlink1.F) (check and tag available nodes on current domain)
2207C +--RESOL
2208C +--ALEWDX
2209C +--ALELIN(priv/ale/alelin.F) (ale link subroutine, updated to be used with grnod_id)
2210C
2211C
2212C
2213
2214C SLINALE : starter size
2215C LLINAL : engine size
2216C NALELK : engine /VEL/ALE card (obsolete)
2217C NALELINK: engine /ALELINK/VEL
2218C after reading : SLINALE <- SLINALE+LLINAL
2219C NALELK <- NALELK+NALELINK
2220
2221 nalelk_starter = 0
2222 IF(mcheck==0)nalelk_starter = slinale/7 !SLINALE : starter linale size
2223 nalelk_removed=0
2224 k=6
2225
2226 !setting MAIN node user id to internal id
2227 DO j=1,nalelk_starter
2228 IF(irun == 1 .AND. mcheck == 0)
2229 . CALL fr_rlale(linale(k-4),linale(k-3),linale(k+1),itabm1,-1)
2230 k=k+1+6
2231 ENDDO
2232
2233 IF(nalelk /= 0.AND.mcheck == 0)THEN
2234 k=slinale+6 !LINALE(1:SLINALE):starter cards ;LINALE(SLINALE+1:SLINALE+LLINE):engine cards
2235 !K=5 !en attendant de copier LIALE starter dans (1:SLINALE)
2236 DO j=1,nalelk
2237 READ (iin,'(3I10,5X,3I1,I10)')m1,m2,n,i1,i2,i3,im
2238 !---------------------------------!
2239 ! ALE LINK DEFINED FROM NODES !
2240 !---------------------------------!
2241 IF(n>0)THEN
2242 READ (iin,'(10I10)')(linale(k+i),i=1,n)
2243 ic=i3+2*i2+4*i1
2244 IF(ic == 0)THEN
2245 ic=7
2246 i1=1
2247 i2=1
2248 i3=1
2249 ENDIF
2250 IF(ispmd == 0.AND.mcheck == 0)WRITE(iout,2200)m1,m2,i1,i2,i3,im
2251 linale(k-4)=m1
2252 linale(k-3)=m2
2253 linale(k-2)=n
2254 linale(k-1)=ic
2255 linale(k)=im
2256 IF(ispmd == 0.AND.mcheck == 0)THEN
2257 WRITE(iout,'(10I10)')(linale(k+i),i=1,n)
2258 WRITE(iout,2201)
2259 ENDIF
2260c Verification partagee et tag en - noeuds non present
2261 CALL fr_rlale(linale(k-4),linale(k-3),linale(k+1),itabm1,n)
2262 k=k+n+6
2263 !---------------------------------!
2264 ! ALE LINK DEFINED FROM GRNOD !
2265 !---------------------------------!
2266 ELSE !N<=0
2267 !M1 < 0
2268 !GR_ID < 0
2269 READ (iin,'(I10)', err=998,iostat=ierror)gr_id
2270
2271 0998 IF(ierror/=0)THEN
2272 WRITE(istdo,*) ' ** ERROR IN ALE LINK: INVALID GRNOD_ID'
2273 gr_id = 0
2274 ENDIF
2275 linale(k+1)=ngr2usr(gr_id,igrnod,ngrnod)
2276
2277 IF(linale(k+1)==0)CALL arret(2) !node group not found
2278
2279 IF(im==0.AND.igrnod(linale(k+1))%SORTED /= 1)THEN
2280 !option 0 needs to be defined with a /GRNOD/NODENS
2281 WRITE(istdo,*)' ** ERROR IN ALE LINK:'
2282 WRITE(istdo,*) ' UNSORTABLE NODE GROUP REQUIRED WITH OPTION 0 (/GRNOD/NODENS)'
2283 WRITE(iout ,*)' ** ERROR IN ALE LINK:'
2284 WRITE(iout,*) ' UNSORTABLE NODE GROUP REQUIRED WITH OPTION 0 (/GRNOD/NODENS)'
2285 CALL arret(2)
2286 ENDIF
2287
2288 ic=i3+2*i2+4*i1
2289 IF(ic == 0)THEN
2290 ic=7
2291 i1=1
2292 i2=1
2293 i3=1
2294 ENDIF
2295 IF(ispmd == 0.AND.mcheck == 0)THEN
2296 WRITE(iout,2200)m1,m2,i1,i2,i3,im !N=1 with GRNOD option
2297 WRITE(iout,2202)gr_id
2298 ENDIF
2299 linale(k-4)=m1
2300 linale(k-3)=m2
2301 linale(k-2)=n
2302 linale(k-1)=ic
2303 linale(k)=im
2304 !shared verification & untag non present nodes
2305 CALL fr_rlale(linale(k-4),linale(k-3),linale(k+1),itabm1,n)
2306 k=k+1+6
2307 ENDIF
2308 ENDDO !next J
2309 slinale = slinale + llinal
2310 ENDIF !IF(NALELK /= 0.AND.MCHECK == 0)THEN
2311
2312C-------------------------------------------
2313C ALE - LINK ON GRID VELOCITY
2314C format >= v12 ('/ALE/LINK/*')
2315C-------------------------------------------
2316 IF(nalelink /= 0.AND.mcheck == 0)THEN
2317 IF(nalelk==0)k=slinale+6
2318 DO j=1,nalelink
2319 READ (iin,'(3I10,5X,3I1,I10)')m1,m2,n,i1,i2,i3,im
2320 IF(m1>0.AND.m2>0)THEN
2321 !---------------------------------!
2322 ! ALE LINK DEFINED FROM NODES !
2323 !---------------------------------!
2324 IF(n>0)THEN
2325 READ (iin,'(10I10)')(linale(k+i),i=1,n)
2326 ic=i3+2*i2+4*i1
2327 IF(ic == 0)THEN
2328 ic=7
2329 i1=1
2330 i2=1
2331 i3=1
2332 ENDIF
2333 IF(ispmd == 0.AND.mcheck == 0)WRITE(iout,2200)m1,m2,i1,i2,i3,im
2334 linale(k-4)=m1
2335 linale(k-3)=m2
2336 linale(k-2)=n
2337 linale(k-1)=ic
2338 linale(k)=im
2339 IF(ispmd == 0.AND.mcheck == 0)THEN
2340 WRITE(iout,'(10I10)')(linale(k+i),i=1,n)
2341 WRITE(iout,2201)
2342 ENDIF
2343 ! Verification partagee et tag en - noeuds non present
2344 CALL fr_rlale(linale(k-4),linale(k-3),linale(k+1),itabm1,n)
2345 k=k+n+6
2346 !---------------------------------!
2347 ! ALE LINK DEFINED FROM GRNOD !
2348 !---------------------------------!
2349 ELSE !(N<=0)
2350 READ (iin,'(I10)', err=999,iostat=ierror)gr_id
2351 0999 IF(ierror/=0)THEN
2352 WRITE(istdo,*) ' ** ERROR IN ALE LINK: CANNOT READ GRNOD_ID VALUE'
2353 gr_id = 0
2354 CALL arret(2) !node group not read
2355 ENDIF
2356
2357 linale(k+1)=ngr2usr(gr_id,igrnod,ngrnod)
2358 IF(linale(k+1)==0)THEN
2359 WRITE(istdo,*) ' ** ERROR IN ALE LINK: INVALID GRNOD_ID'
2360 CALL arret(2) !node group not found
2361 ENDIF
2362
2363 IF(im==0.AND.igrnod(linale(k+1))%SORTED /= 1)THEN
2364 !option 0 needs to be defined with a /GRNOD/NODENS
2365 WRITE(istdo,*)' ** ERROR IN ALE LINK:'
2366 WRITE(istdo,*)' UNSORTABLE NODE GROUP REQUIRED WITH OPTION 0 (/GRNOD/NODENS)'
2367 WRITE(iout ,*)' ** ERROR IN ALE LINK:'
2368 WRITE(iout,*) ' UNSORTABLE NODE GROUP REQUIRED WITH OPTION 0 (/GRNOD/NODENS)'
2369 CALL arret(2)
2370 ENDIF
2371
2372 ic=i3+2*i2+4*i1
2373 IF(ic == 0)THEN
2374 ic=7
2375 i1=1
2376 i2=1
2377 i3=1
2378 ENDIF
2379 IF(ispmd == 0.AND.mcheck == 0)THEN
2380 WRITE(iout,2200)m1,m2,i1,i2,i3,im !N=1 with GRNOD option
2381 WRITE(iout,2202)gr_id
2382 ENDIF
2383 linale(k-4)=m1
2384 linale(k-3)=m2
2385 linale(k-2)=n
2386 linale(k-1)=ic
2387 linale(k)=im
2388 !shared verification & untag non present nodes
2389 CALL fr_rlale(linale(k-4),linale(k-3),linale(k+1),itabm1,n)
2390 k=k+1+6
2391 ENDIF !(N>0)
2392
2393 !---------------------------------!
2394 ! ALE LINK SET ON !
2395 !---------------------------------!
2396 ELSEIF(m1==-1)THEN ! ON
2397 ALLOCATE(alelin_on_off(iabs(n)))
2398 READ (iin,'(10I10)')(alelin_on_off(i),i=1,n)
2399 !L=1 !pos
2400 kk=0 ! number of ale link deactivated
2401 DO i1=1,n
2402 l=1 !pos
2403 m1=alelin_on_off(i1)
2404 DO i=1,nalelk_starter
2405 !---------------------------------!
2406 ! CHECK AND DEACTIVATE !
2407 !---------------------------------!
2408 IF(l>=slinale)THEN
2409 !warning : uID does not exist
2410 WRITE(istdo,*)' ** WARNING ALE LINK DOES NOT EXIST :',m1
2411 WRITE(iout,*) ' ** WARNING ALE LINK DOES NOT EXIST :',m1
2412 EXIT
2413 ELSE
2414 uid = linale(l+0)
2415 n = linale(l+3)
2416 IF(uid==-m1)THEN
2417 nalelk_removed = nalelk_removed+1 !counting deactivated links
2418 linale(l+0)=-linale(l+0) !setting negative uID to skip ALE LINK treatment (alelin.F)
2419 !printout :
2420 IF(ispmd == 0.AND.mcheck == 0)WRITE(iout,2211)m1 !N=1 with GRNOD option
2421 EXIT !next ALELIN_ON_OFF
2422 ELSEIF(uid==m1)THEN
2423 nalelk_removed = nalelk_removed+1 !counting deactivated links
2424 !warning uID already set OFF :
2425 WRITE(istdo,*)' ** WARNING ALE LINK ALREADY ACTIVATED : ',m1
2426 EXIT !next ALELIN_ON_OFF
2427 ENDIF
2428
2429 ENDIF
2430 l = l+6+iabs(n) !next uID position in LINALE()
2431 ENDDO
2432 ENDDO
2433 DEALLOCATE(alelin_on_off)
2434 !IF(NALELK_removed>0)NALELK_removed=1 !/ALE/LINK/ON or OFF card is no longer taken into account
2435
2436 !---------------------------------!
2437 ! ALE LINK SET OFF !
2438 !---------------------------------!
2439 ELSEIF(m1==-2)THEN ! OFF
2440 ALLOCATE(alelin_on_off(iabs(n)))
2441 READ (iin,'(10I10)')(alelin_on_off(i),i=1,n)
2442 !L=1 !pos
2443 kk=0 ! number of ale link deactivated
2444 DO i1=1,n
2445 l=1 !pos
2446 m1=alelin_on_off(i1)
2447 DO i=1,nalelk_starter
2448 !---------------------------------!
2449 ! CHECK AND DEACTIVATE !
2450 !---------------------------------!
2451 IF(l>=slinale)THEN
2452 !warning : uID does not exist
2453 WRITE(istdo,*) ' ** WARNING ALE LINK DOES NOT EXIST :',m1
2454 WRITE(iout,*) ' ** WARNING ALE LINK DOES NOT EXIST :',m1
2455 EXIT
2456 ELSE
2457 uid = linale(l+0)
2458 n = linale(l+3)
2459 IF(uid==m1)THEN
2460 nalelk_removed = nalelk_removed+1 !counting deactivated links
2461 linale(l+0)=-linale(l+0) !setting negative uID to skip ALE LINK treatment (alelin.F)
2462 !printout :
2463 IF(ispmd == 0.AND.mcheck == 0)WRITE(iout,2210)m1 !N=1 with GRNOD option
2464 EXIT !next ALELIN_ON_OFF
2465 ELSEIF(uid==-m1)THEN
2466 nalelk_removed = nalelk_removed+1 !counting deactivated links
2467 !warning uID already set OFF :
2468 WRITE(istdo,*)' ** WARNING ALE LINK ALREADY DEACTIVATED :',m1
2469 EXIT !next ALELIN_ON_OFF
2470 ENDIF
2471 ENDIF
2472 l = l+6+iabs(n) !next uID position in LINALE()
2473 ENDDO
2474 ENDDO
2475 DEALLOCATE(alelin_on_off)
2476 !IF(NALELK_removed>0)NALELK_removed=1 !/ALE/LINK/ON or OFF card is no longer taken into account
2477 ENDIF
2478
2479 ENDDO
2480 slinale = slinale + llinal
2481 nalelk = nalelk+nalelink-nalelk_removed
2482 ENDIF !(NALELINK /= 0.AND.MCHECK == 0)
2483
2484 IF(mcheck==0)nalelk=nalelk+nalelk_starter
2485
2486C-------------------------------------------
2487C ALE ON/ OFF
2488C-------------------------------------------
2489 IF(nbpartaleon > 0) ALLOCATE(aleon_partids_tmp(nbpartaleon))
2490 IF(nbpartaleoff > 0) ALLOCATE(aleoff_partids_tmp(nbpartaleoff))
2491 ion = 0
2492 ioff = 0
2493 DO i = 1, nbpartaleon + nbpartaleoff
2494 READ(iin, '(I10, I10)') partid, ison
2495 IF (ison == 1) THEN
2496 ion = ion + 1
2497 aleon_partids_tmp(ion) = partid
2498 ELSE IF(ison == 0) THEN
2499 ioff = ioff + 1
2500 aleoff_partids_tmp(ioff) = partid
2501 ENDIF
2502 ENDDO
2503C Checking for doublon and suppression
2504 DO i = 1, nbpartaleon
2505 partid = aleon_partids_tmp(i)
2506 IF (partid /= -1) THEN
2507 DO j = 1, nbpartaleon
2508 IF (j == i) cycle
2509 IF (aleon_partids_tmp(j) == partid) THEN
2510 nbpartaleon = nbpartaleon - 1
2511 aleon_partids_tmp(j) = -1
2512 ENDIF
2513 ENDDO
2514 ENDIF
2515 ENDDO
2516 DO i = 1, nbpartaleoff
2517 partid = aleoff_partids_tmp(i)
2518 IF (partid /= -1) THEN
2519 DO j = 1, nbpartaleoff
2520 IF (j == i) cycle
2521 IF (aleoff_partids_tmp(j) == partid) THEN
2522 nbpartaleoff = nbpartaleoff - 1
2523 aleoff_partids_tmp(j) = -1
2524 ENDIF
2525 ENDDO
2526C Check if part is also defined in ON
2527C By default, all parts are ON, if a part is set to OFF
2528C and ON at the same time, we choose to OFF it
2529 DO j = 1, nbpartaleon
2530 IF (aleon_partids_tmp(j) == partid) THEN
2531 !!! WARNING TO OUTPUT HERE
2532 aleon_partids_tmp(j) = -1
2533 nbpartaleon = nbpartaleon - 1
2534 CALL ancmsg(msgid = 272, anmode = aninfo, i1 = partid)
2535 ENDIF
2536 ENDDO
2537 ENDIF
2538 ENDDO
2539C Checking that part ids exist in IPART(4, *)
2540 nbaleoff_part = nbpartaleoff
2541 nbaleon_part = nbpartaleon
2542 DO i = 1, nbpartaleon
2543 partid = aleon_partids_tmp(i)
2544 ison = 0
2545 IF (partid /= -1) THEN
2546 DO j = 1, npart
2547 IF (ipart(4 + (j - 1) * lipart1) == partid) THEN
2548 ison = 1
2549 aleon_partids_tmp(i) = j
2550 EXIT
2551 ENDIF
2552 ENDDO
2553 ENDIF
2554 IF (ison == 0) THEN
2555 aleon_partids_tmp(i) = -1
2556 nbaleon_part = nbaleon_part - 1
2557 CALL ancmsg(msgid = 271, anmode = aninfo, i1 = partid)
2558 CALL arret(2)
2559 ENDIF
2560 ENDDO
2561 DO i = 1, nbpartaleoff
2562 partid = aleoff_partids_tmp(i)
2563 ison = 0
2564 IF (partid /= -1) THEN
2565 DO j = 1, npart
2566 IF (ipart(4 + (j - 1) * lipart1) == partid) THEN
2567 ison = 1
2568 aleoff_partids_tmp(i) = j
2569 EXIT
2570 ENDIF
2571 ENDDO
2572 ENDIF
2573 IF (ison == 0) THEN
2574 aleoff_partids_tmp(i) = -1
2575 nbaleoff_part = nbaleoff_part - 1
2576 CALL ancmsg(msgid = 271, anmode = aninfo, i1 = partid)
2577 CALL arret(2)
2578 ENDIF
2579 ENDDO
2580C Filling module values
2581 IF (nbaleoff_part > 0) ALLOCATE(aleoff_partids(nbaleoff_part))
2582 IF (nbaleon_part > 0) ALLOCATE(aleon_partids(nbaleon_part))
2583 DO i = 1, nbpartaleon
2584 partid = aleon_partids_tmp(i)
2585 ison = 0
2586 IF (partid /= -1) THEN
2587 ison = ison + 1
2588 aleon_partids(ison) = partid
2589 ENDIF
2590 ENDDO
2591 ison = 0
2592 DO i = 1, nbpartaleoff
2593 partid = aleoff_partids_tmp(i)
2594 IF (partid /= -1) THEN
2595 ison = ison + 1
2596 aleoff_partids(ison) = partid
2597 ENDIF
2598 ENDDO
2599C OUTPUT
2600 DO i = 1, nbaleoff_part
2601 WRITE(iout, 4800) aleoff_partids(i)
2602 ENDDO
2603C-------------------------------------------
2604C Fill IPARG
2605C-------------------------------------------
2606 k1 = 1 + lipart1 * (npart + nthpart) + 2 * 9 * (npart + nthpart)
2607 k2 = k1 + numels
2608 DO ng = 1, ngroup
2609 ity = iparg(5, ng)
2610 nel = iparg(2, ng)
2611 nft = iparg(3, ng)
2612C Initially, IPARG(76, *) = 0 --> ON
2613C When restarting a computation, IPARG(76, NG) = Whatever was put here during previous run
2614C Find part associated to the current group
2615C by checking the first element of the group
2616C NB : all elements in a same group belong necessarily to the same part
2617
2618 IF (ity == 1) THEN
2619C Solid groups
2620 partid = ipart(k1 + nft)
2621 ELSEIF (ity == 2) THEN
2622C Shells and coques
2623 partid = ipart(k2 + nft)
2624 ENDIF
2625C Check if this part is found in ALEOFF_PARTIDS
2626 DO i = 1, nbaleoff_part
2627 IF (aleoff_partids(i) == partid) THEN
2628 iparg(76, ng) = 1 ! --> OFF
2629 EXIT
2630 ENDIF
2631 ENDDO
2632C Check if this part is found in ALEON_PARTIDS
2633 DO i = 1, nbaleon_part
2634 IF (aleon_partids(i) == partid) THEN
2635 iparg(76, ng) = 0 ! --> ON
2636 EXIT
2637 ENDIF
2638 ENDDO
2639 ENDDO
2640 IF (ALLOCATED(aleon_partids_tmp)) DEALLOCATE(aleon_partids_tmp)
2641 IF (ALLOCATED(aleoff_partids_tmp)) DEALLOCATE(aleoff_partids_tmp)
2642 IF (ALLOCATED(aleon_partids)) DEALLOCATE(aleon_partids)
2643 IF (ALLOCATED(aleoff_partids)) DEALLOCATE(aleoff_partids)
2644C-------------------------------------------
2645C MODIFICATION DES CONDITIONS AUX LIMITES
2646C-------------------------------------------
2647 IF(nubcsn /= 0)THEN
2648 CALL lcbcsf(icode,iskew,nubcsn,itab,itabm1,npby ,iskwn,weight)
2649 IF(nspmd > 1) THEN
2650C traitement necessaire pour recuperer les noeuds cond limites
2651 iwiout = 0
2652 IF (ispmd /= 0) CALL spmd_chkw(iwiout,iout)
2653 CALL spmd_glob_isum9(iwiout,1)
2654 CALL spmd_ibcast(iwiout,iwiout,1,1,0,2)
2655 IF (iwiout > 0) THEN
2656 CALL spmd_wiout(iout,iwiout)
2657 iwiout = 0
2658 END IF
2659 END IF
2660 END IF
2661C-------------------------------------------
2662C MODIFICATION DES INTERFACES
2663C-------------------------------------------
2664 IF(nintch /= 0)THEN
2665 DO i=1,nintch
2666 READ(iin,'(2I8,2F16.0)')noint,nsearch,tstart,tfin
2667 IF(tfin == 0.0)tfin=1.e30
2668 IF(tfin <= tstart) THEN
2669 CALL ancmsg(msgid=307,anmode=anstop)
2670 CALL arret(2)
2671 ENDIF
2672
2673 jpri = -1
2674 DO j=1,ninter
2675 IF(noint == ipari(15,j)) THEN
2676 IF(nsearch /= 0) ipari(13,j)=nsearch
2677 intbuf_tab(j)%VARIABLES(3) = tstart
2678 intbuf_tab(j)%VARIABLES(11) = tfin
2679 jpri=j
2680 ENDIF
2681 ENDDO
2682 IF(jpri/=-1) THEN
2683 IF(ispmd == 0.AND.mcheck == 0) WRITE(iout,2300)noint,ipari(13,jpri),tstart,tfin
2684 ELSE
2685 IF(ispmd == 0.AND.mcheck == 0) WRITE(iout,2301)noint
2686 ENDIF
2687 ENDDO
2688 ENDIF
2689C
2690 IF(mcheck /= 0)THEN
2691 DO i = 1,mx_outp
2692 nv_outp = nv_outp + outp_v(i)
2693 nss_outp = nss_outp + outp_ss(i)
2694 nst_outp = nst_outp + outp_st(i)
2695 ncs_outp = ncs_outp + outp_cs(i)
2696 nct_outp = nct_outp + outp_ct(i)
2697 nts_outp = nts_outp + outp_ts(i)
2698 nps_outp = nps_outp + outp_ps(i)
2699 npt_outp = npt_outp + outp_pt(i)
2700 nrs_outp = nrs_outp + outp_rs(i)
2701 nrt_outp = nrt_outp + outp_rt(i)
2702 ENDDO
2703 IF(outp_v(12) == 1)nv_outp=nv_outp+1
2704 ENDIF
2705C-------------------------------------------
2706C MODIFICATION OF RIGID BODY
2707C-------------------------------------------
2708 IF(nrbyof /= 0)
2709 1 CALL rbyonf(iparg,ipari ,ms ,in ,
2710 2 ixs ,ixq ,ixc ,ixt ,ixp ,
2711 3 ixr ,skew ,itab ,itabm1 ,iskwn ,
2712 4 npby ,0 ,nrbyof,wa ,lpby ,
2713 5 rby ,x ,v ,vr ,ixtg ,
2714 6 igrv ,ibgr ,weight,fr_rby2,partsav,
2715 7 ipart,elbuf_str,icfield,lcfield,tagslv_rby)
2716C
2717 IF(nrbyon /= 0)
2718 1 CALL rbyonf(iparg,ipari ,ms ,in ,
2719 2 ixs ,ixq ,ixc ,ixt ,ixp ,
2720 3 ixr ,skew ,itab ,itabm1 ,iskwn ,
2721 4 npby ,1 ,nrbyon,wa ,lpby ,
2722 5 rby ,x ,v ,vr ,ixtg ,
2723 6 igrv ,ibgr ,weight,fr_rby2,partsav,
2724 7 ipart,elbuf_str,icfield,lcfield,tagslv_rby)
2725C---------------------------------------------------------
2726C READING DATA FOR FLUX & ROTATION
2727C---------------------------------------------------------
2728 IF (nsflsw /= 0.AND.mcheck == 0) THEN
2729 CALL lecflsw (nsflsw,ntflsw,neflsw,nnflsw,crflsw,x,ixs,iparg,wa)
2730 ENDIF
2731C-------------------------------------------------
2732C MODIFICATION OF TIME FUNCTIONS
2733C-------------------------------------------------
2734 IF (nfct /= 0) THEN
2735 CALL lecfun (npc, pld, nfct, npts, table)
2736 END IF
2737C-------------------------------------------------
2738C RESET VELOCITIES
2739C-------------------------------------------------
2740 IF (niniv /= 0) THEN
2741 CALL lecinv (niniv,x,v,vr,itab,iframe,xframe,igrnod,fxbipm,fxbvit,fxbrpm)
2742 END IF
2743C---------------------------------------------------------
2744C CUTS
2745C---------------------------------------------------------
2746 IF(ncuts > 0.AND.mcheck == 0)CALL leccut(icut,xcut,itabm1)
2747C---------------------------------------------------------
2748C ANIMATION (DT ,DMAS)
2749C---------------------------------------------------------
2750 DO i=1,sanin
2751 anin(i)=zero
2752 ENDDO
2753C---------------------------------------------------------
2754C FILTERED SAMPLED OUTPUT
2755C---------------------------------------------------------
2756 IF(nnoise > 0)CALL lecnoise(inoise,itabm1,names_and_titles)
2757 nnoiser=nnoise
2758C---------------------------------------------------------
2759C MADYMO COUPLING GENERAL DATA (CONVERSION FACTORS).
2760C---------------------------------------------------------
2761#ifdef DNC
2762 IF( imadcpl > 0.AND.invers>=40.AND.mcheck == 0)CALL leccpl()
2763#endif
2764C---------------------------------------------------------
2765C OPTIONS SPMD SPECIFIQUES
2766 IF(ipread > 0.AND.ispmd == 0.AND.mcheck == 0) WRITE(iout,4000)
2767 IF(iddw > 0.AND.ispmd == 0.AND.mcheck == 0) WRITE(iout,4100)
2768C---------------------------------------------------------
2769C RAYLEIGH DAMPING
2770C---------------------------------------------------------
2771 CALL lecdamp(ndampn, dampr, igrnod)
2772C---------------------------------------------------------
2773 istatcnd_sav= istatcnd
2774 IF(impl_s/=0) THEN
2775 IF(isprb==0.AND.nadmesh/=0)THEN
2776 IF (ispmd == 0) THEN
2777 CALL ancmsg(msgid=131,anmode=aninfo)
2778 ENDIF
2779 CALL arret(2)
2780 ENDIF
2781 istatcnd = 0
2782 END IF
2783C---------------------------------------------------------
2784 IF (impl_s == 1.OR.neig > 0) CALL lecimpl
2785 IF (nfxinp > 0) CALL lecfxinp(nfxinp)
2786 IF(ale%SUB%NODSUBDT /= 0)THEN
2787 IF(ispmd == 0) THEN
2788 CALL ancmsg(msgid=129,anmode=aninfo_blind)
2789 END IF
2790 CALL arret(2)
2791 END IF
2792 IF (neigoff > 0) CALL leceig(neigoff, neoff)
2793 IF (nfvmesh > 0) CALL lecfvbag(nfvmesh, monvol, volmon, x)
2794 IF (nfvmodi > 0) CALL lecfvbag1(nfvmodi, monvol, volmon)
2795C-------------------------------------------
2796C .sta files
2797C-------------------------------------------
2798 IF(mcheck /= 0)THEN
2799 nc_stat = 0
2800 DO i = 1,mx_stat
2801 nc_stat = nc_stat + stat_c(i)
2802 ENDDO
2803 ENDIF
2804 IF(nstatprt /= 0 .OR. nstatall /= 0)THEN
2805 k1=1+lipart1*(npart+nthpart)+2*9*(npart+nthpart)
2806 k2=k1+numels
2807 k3=k2+numelq
2808 k4=k3+numelc
2809 k5=k4+numelt
2810 k6=k5+numelp
2811 k7=k6+numelr
2812 k8=k7
2813 k9=k8+numeltg
2814 CALL lecstat(ipart,ipart_state,elbuf_str,ipm,iparg,ipart(k1),
2815 . ipart(k3),ipart(k8),mat_param)
2816 END IF
2817C-------------------------------------------
2818C .dynain files
2819C-------------------------------------------
2820 IF(dynain_data%NDYNAINPRT /= 0 .OR. dynain_data%NDYNAINALL /= 0)THEN
2821 k1=1+lipart1*(npart+nthpart)+2*9*(npart+nthpart)
2822 k2=k1+numels
2823 k3=k2+numelq
2824 k4=k3+numelc
2825 k5=k4+numelt
2826 k6=k5+numelp
2827 k7=k6+numelr
2828 k8=k7
2829 k9=k8+numeltg
2830 CALL read_dynain(ipart,dynain_data,ipart(k3),ipart(k8),ixc,ixtg)
2831 END IF
2832c-----------------------------------------
2833c deallocate temporary SENSOR arrays
2834c-----------------------------------------
2835 IF (ALLOCATED(sensors%ANIM_TMP)) DEALLOCATE (sensors%ANIM_TMP)
2836 IF (ALLOCATED(sensors%STAT_TMP)) DEALLOCATE (sensors%STAT_TMP)
2837 IF (ALLOCATED(sensors%OUTP_TMP)) DEALLOCATE (sensors%OUTP_TMP)
2838 IF (ALLOCATED(sensors%STOP_TMP)) DEALLOCATE (sensors%STOP_TMP)
2839C---------------------------------------------------------
2840 IF(ierr == 0) RETURN
2841 CALL arret(0)
2842 1001 FORMAT(/
2843 & 1x,'ALE EULER SOLVERS'/
2844 & 1x,'-----------------'/)
2845 1002 FORMAT(
2846 & 1x,' +--STAGGERRED SCHEME'/
2847 & 1x,' | +--MOMENTUM : ',a16,' eta=',g14.7/
2848 & 1x,' | +--MASS : ',a16,' eta=',g14.7/
2849 & 1x,' | +--ENERGY : ',a16,' eta=',g14.7/
2850 & 1x,' | +--VOLUME FRACTION : ',a16)
2851 1003 FORMAT(
2852 & 1x,' |'/
2853 & 1x,' +--COLOCATED SCHEME (LAW151)'/
2854 & 1x,' | +--MOMENTUM : ',a16/
2855 & 1x,' | +--MASS : ',a16/
2856 & 1x,' | +--ENERGY : ',a16/
2857 & 1x,' | +--VOLUME FRACTION : ',a16 )
2858 1004 FORMAT(
2859 & 1x,' | +--LOW MACH OPTION : ENABLED' )
2860 1005 FORMAT(
2861 & 1x,' | +--MUSCL OPTION : ENABLED beta=',g14.7)
2862 1006 FORMAT(
2863 & 1x,' |'/
2864 & 1x,' +--TIME STEP'/
2865 & 1x,' | +--COURANT NUMBER : ',g14.7/
2866 & 1x,' | +--MINIMUM TIME STEP : ',g14.7)
2867 1007 FORMAT(
2868 & 1x,' |'/
2869 & 1x,' +--GRID SMOOTHING'/
2870 & 1x,' +--FORMULATION : ',a17)
2871 1008 FORMAT(
2872 & 1x,' +--PARAMETERS :')
2873
2874 1099 FORMAT(
2875 . ' MULTIDOMAINS COUPLING . . . . . . . . . . . . . .',g14.7//)
2876 1100 FORMAT(
2877 . ' FINAL TIME . . . . . . . . . . . . . . . . . . . ',g14.7//
2878 . ' TIME INTERVAL FOR TIME HISTORY PLOTS . . . . . . ',g14.7//
2879 . ' TIME STEP SCALE FACTOR . . . . . . . . . . . . . ',g14.7//
2880 . ' MINIMUM TIME STEP . . . . . . . . . . . . . . . ',g14.7//)
2881 1105 FORMAT(
2882 . ' BRICK TIME STEP SCALE FACTOR . . . . . . . . . . ',g14.7/
2883 . ' BRICK MINIMUM TIME STEP. . . . . . . . . . . . . ',g14.7/
2884 . ' MIN. TIME STEP FLAG (1:STOP RUN, 2:DELETE BRICK) ',i5//
2885 . ' QUAD TIME STEP SCALE FACTOR. . . . . . . . . . . ',g14.7/
2886 . ' QUAD MINIMUM TIME STEP . . . . . . . . . . . . . ',g14.7/
2887 . ' MIN. TIME STEP FLAG (1:STOP RUN, 2:DELETE QUAD). ',i5//
2888 . ' SHELL TIME STEP SCALE FACTOR . . . . . . . . . . ',g14.7/
2889 . ' SHELL MINIMUM TIME STEP. . . . . . . . . . . . . ',g14.7/
2890 . ' MIN. TIME FLAG (1:STOP, 2:DELETE, 3:SMALL STRAIN)',i5//
2891 . ' TRUSS TIME STEP SCALE FACTOR . . . . . . . . . . ',g14.7/
2892 . ' TRUSS MINIMUM TIME STEP. . . . . . . . . . . . . ',g14.7/
2893 . ' MIN. TIME FLAG (1:STOP, 2:DELETE). . . . . . . . ',i5//
2894 . ' BEAM TIME STEP SCALE FACTOR. . . . . . . . . . . ',g14.7/
2895 . ' BEAM MINIMUM TIME STEP . . . . . . . . . . . . . ',g14.7/
2896 . ' MIN. TIME FLAG (1:STOP, 2:DELETE). . . . . . . . ',i5//
2897 . ' SPRING TIME STEP SCALE FACTOR. . . . . . . . . . ',g14.7/
2898 . ' SPRING MINIMUM TIME STEP . . . . . . . . . . . . ',g14.7/
2899 . ' MIN. TIME FLAG (1:STOP, 2:DELETE). . . . . . . . ',i5//
2900 . ' AIRBAG TIME STEP SCALE FACTOR. . . . . . . . . . ',g14.7/
2901 . ' AIRBAG MINIMUM TIME STEP . . . . . . . . . . . . ',g14.7/
2902 . ' MIN. TIME FLAG (1:STOP). . . . . . . . . . . . . ',i5//
2903 . ' CONTACT TIME STEP SCALE FACTOR . . . . . . . . . ',g14.7/
2904 . ' CONTACT MINIMUM TIME STEP. . . . . . . . . . . . ',g14.7/
2905 . ' MIN. TIME FLAG(1:STOP, 2:REMOVE NODE FROM INTERF)',i5/ )
2906 1155 FORMAT('/DT/FVMBAG/0 OPTION')
2907 1156 FORMAT('/DT/FVMBAG/1 OPTION')
2908 1157 FORMAT('FVMBAG TIME STEP SYNTHESIS')
2909 1147 FORMAT(
2910 . ' FVMBAG ID. . . . . . . . . . . . . . . . . . . . ',i10)
2911 1148 FORMAT(
2912 . ' FVMBAG1 ID. . . . . . . . . . . . . . . . . . . . ',i10)
2913 1149 FORMAT(
2914 . ' FVMBAG2 ID. . . . . . . . . . . . . . . . . . . . ',i10)
2915 1151 FORMAT(
2916 . ' SMOOTH PARTICLES TIME STEP SCALE FACTOR. . . . . ',g14.7/
2917 . ' SMOOTH PARTICLES MINIMUM TIME STEP . . . . . . . ',g14.7/
2918 . ' MIN. TIME FLAG (1:STOP, 2:DELETE, 5:KILL). . . . ',i5 )
2919 1152 FORMAT(
2920 . ' FVMBAG TIME STEP SCALE FACTOR. . . . . . . . . . ',g14.7/
2921 . ' FVMBAG MINIMUM TIME STEP . . . . . . . . . . . . ',g14.7/
2922 . ' FVMBAG TIME STEP FLAG. . . . . . . . . . . . . . ',i5,/)
2923 1153 FORMAT(
2924 . ' . . TIME STEP SCALE FACTOR. . . . . . . . . . . . . . ',g14.7/
2925 . ' . . MINIMUM TIME STEP . . . . . . . . . . . . . . . . ',g14.7/
2926 . ' . . TIME STEP FLAG. . . . . . . . . . . . . . . . . . ',i5)
2927 1154 FORMAT(
2928 . ' . . CHARACTERISTIC LENGTH OPTION. . . . . . . . . . . ',i5/
2929 . ' . . TIME STEP SMOOTHING FACTOR. . . . . . . . . . . . ',g14.7/
2930 . ' . . PREVIOUS TIME STEP. . . . . . . . . . . . . . . . ',g14.7)
2931 1107 FORMAT(
2932 . ' CONTACT NODAL TIME STEP SCALE FACTOR . . . . . . ',g14.7/
2933 . ' CONTACT NODAL MINIMUM TIME STEP. . . . . . . . . ',g14.7/
2934 . ' CONTACT NODAL MIN. TIME FLAG . . . . . . . . . . ',i5/
2935 . ' 3:INCREASE MASS, ORIGINAL FORMULATION . . . . ',/
2936 . ' 8:INCREASE MASS, IMPROVED FORMULATION . . . . ',//)
2937 1209 FORMAT(
2938 . ' AMS CONTACT TIME STEP IS ON . . . . . . . . . . . . .',/
2939 . ' . . . . . .(ALL CONTACTS WILL BE CONCERNED).) . . . .',/
2940 . ' AMS CONTACT TIME STEP SCALE FACTOR. . . . . . . . . .',g14.7/
2941 . ' AMS CONTACT MINIMUM TIME STEP . . . . . . . . . . . .',g14.7//)
2942 1106 FORMAT(
2943 . ' NODAL TIME STEP SCALE FACTOR, . . . . . . . . . ',g14.7/
2944 . ' NODAL MINIMUM TIME STEP. . . . . . . . . . . . . ',g14.7/
2945 . ' MIN. TIME FLAG . . . . . . . . . . . . . . . . . ',i5/
2946 . ' 1:STOP. . . . . . . . . . . . . . . . . . . . ',/
2947 . ' 3:INCREASE MASS, ORIGINAL FORMULATION . . . . ',/
2948 . ' 8:INCREASE MASS, IMPROVED FORMULATION . . . . ',//)
2949 1116 FORMAT(
2950 . ' NODAL TIME STEP SCALE FACTOR, . . . . . . . . . ',g14.7/
2951 . ' NODAL MINIMUM TIME STEP. . . . . . . . . . . . . ',g14.7/)
2952 1206 FORMAT(
2953 . ' NODAL TIME STEP SCALE FACTOR, . . . . . . . . . ',g14.7/
2954 . ' NODAL MINIMUM TIME STEP. . . . . . . . . . . . . ',g14.7/
2955 . ' ADDED MASS RATIO (DM/M0) . . . . . . . . . . . . ',g14.7/
2956 . ' MIN. TIME FLAG . . . . . . . . . . . . . . . . . ',i5/
2957 . ' 1:STOP. . . . . . . . . . . . . . . . . . . . ',/
2958 . ' 3:INCREASE MASS, ORIGINAL FORMULATION . . . . ',/
2959 . ' 8:INCREASE MASS, IMPROVED FORMULATION . . . . ',//)
2960 1108 FORMAT(
2961 . ' ADVANCED MASS SCALING IS ON . . . . . . . . . . .',/
2962 . ' AMS NODAL TIME STEP SCALE FACTOR. . . . . . . . .',g14.7/
2963 . ' AMS NODAL MINIMUM TIME STEP . . . . . . . . . . .',g14.7/
2964 . ' AMS TOLERANCE ON CONVERGENCE. . . . . . . . . . .',g14.7/
2965 . ' AMS MAXIMUM NUMBER OF ITERATIONS FOR CONVERGENCE.',i10/
2966 . ' OUTPUT FREQUENCY OF INFORMATION / CONVERGENCE . .',i10/
2967 . ' PART GROUP ID (=0 ALL PARTS) . . . . . . . . . . ',i10//)
2968 1109 FORMAT(
2969 . ' ADVANCED MASS SCALING IS ON . . . . . . . . . . .',/
2970 . ' AMS TIME STEP SCALE FACTOR. . . . . . . . . . . .',g14.7/
2971 . ' AMS MINIMUM TIME STEP . . . . . . . . . . . . . .',g14.7/
2972 . ' AMS TOLERANCE ON CONVERGENCE. . . . . . . . . . .',g14.7/
2973 . ' AMS MAXIMUM NUMBER OF ITERATIONS FOR CONVERGENCE.',i10/
2974 . ' NUMBER OF PRECONDITIONING VECTORS FOR PCG . . . .',i10/
2975 . ' OUTPUT FREQUENCY OF INFORMATION / CONVERGENCE . .',i10/
2976 . ' PART GROUP ID (=0 ALL PARTS) . . . . . . . . . . ',i10//)
2977 2109 FORMAT(
2978 . ' ADVANCED MASS SCALING IS ON . . . . . . . . . . .',/
2979 . ' AMS TIME STEP SCALE FACTOR. . . . . . . . . . . .',g14.7/
2980 . ' AMS MINIMUM TIME STEP . . . . . . . . . . . . . .',g14.7/
2981 . ' AMS TOLERANCE ON CONVERGENCE. . . . . . . . . . .',g14.7/
2982 . ' AMS MAXIMUM NUMBER OF ITERATIONS FOR CONVERGENCE.',i10/
2983 . ' NUMBER OF PRECONDITIONING VECTORS FOR PCG . . . .',i10/
2984 . ' OUTPUT FREQUENCY OF INFORMATION / CONVERGENCE . .',i10/
2985 . ' AUTO ELEMENT SELECTION - TIME STEP CRITERIA . . .',g14.7/
2986 . ' PART GROUP ID (=0 ALL PARTS) . . . . . . . . . . ',i10//)
2987 1110 FORMAT(
2988 . ' PRINTOUT CYCLE FREQUENCY . . . . . . . . . . . . ',i5 //
2989 . ' RESTART CYCLE FREQUENCY. . . . . . . . . . . . . ',i10 //
2990 . ' MAXIMUM RESTART WRITE BEFORE OVERWRITE . . . . . ',i5 //
2991 . ' INVERS: INPUT DECK VERSION . . . . . . . . . . . ',i5/
2992 . ' ITTYP : FLAG FOR TYPE OF T-FILE. . . . . . . . . ' ,i5/)
2993 1120 FORMAT(/
2994 . ' TIME FOR FIRST ANIMATION-FILE PLOT . . . . . . . ',g14.7/
2995 . ' TIME INTERVAL FOR ANIMATION-FILE PLOTS . . . . . ',g14.7/
2996 . ' TIME TO STOP ANIMATION-FILE PLOTS. . . . . . . . ',g14.7/
2997 . ' SENSOR FOR ANIMATION-FILE PLOTS. . . . . . . . . ',i10/
2998 . ' TIME INTERVAL FOR SENSOR ANIMATION-FILE PLOTS. . ',g14.7//
2999 . ' VARIABLE SAVED ON ANIMATION FILES (1: YES) :',/
3000 . ' PLASTIC STRAIN. . . . . . ',i5/
3001 . ' DENSITY (SOLID ONLY). ',i5/
3002 . ' SPECIFIC ENERGY . . . . . ',i5/
3003 . ' HOURGLASS ENERGY. . . . . ',i5/
3004 . ' TEMPERATURE (SOLID ONLY). ',i5/
3005 . ' THICKNESS (SHELL ONLY). ',i5/
3006 . ' PRESSURE (SOLID ONLY). ',i5/
3007 . ' VON MISES . . . . . . . . ',i5/
3008 . ' TURBULENT ENERGY (FLUID). ',i5/
3009 . ' TURBULENT VISCOSITY(FLUID)',i5/
3010 . ' VORTICITY (FLUID) . . . . ',i5)
3011 1129 FORMAT(
3012 . ' NODAL VALUES SAVED ON ANIMATION FILES (1: YES) :',/
3013 . ' PRESSURE. . . . . . . . . ',i5/
3014 . ' DENSITY . . . . . . . . . ',i5/
3015 . ' TEMPERATURE . . . . . . . ',i5)
3016 1130 FORMAT(
3017 . ' VECTOR SAVED ON ANIMATION FILES (1: YES) :',/
3018 . ' VELOCITY VECTOR . . . . . ',i5/
3019 . ' DISPLACEMENT VECTOR . . . ',i5/
3020 . ' ACCELERATION VECTOR . . . ',i5/
3021 . ' CONTACT FORCES. . . . . . ',i5/
3022 . ' INTERNAL FORCES . . . . . ',i5/
3023 . ' EXTERNAL FORCES . . . . . ',i5/
3024 . ' SECTION RBY RWALL FORCES. ',i5/
3025 . ' ROTATIONAL VELOCITY VECTOR',i5/
3026 . ' contact pressure(vectors)',I5/
3027 . ' shell tensor saved on animation files(1: yes) :',/
3028 . ' membrane stress . . . . . ',I5/
3029 . ' bending stress(moment/t^2)',I5/
3030 . ' upper layer stress. . . . ',I5/
3031 . ' lower layer stress. . . . ',I5)
3032 1140 FORMAT(
3033 . ' membrane strain . . . . . ',I5/
3034 . ' curvature . . . . . . . . ',I5/
3035 . ' upper layer strain. . . . ',I5/
3036 . ' lower layer strain. . . . ',I5/
3037 . ' nodal mass saved on animation files(1: yes) :',I5/
3038 . ' keep deleted element(1: yes) :',I5//)
3039 1150 FORMAT(
3040 . ' initial time step. . . . . . . . . . . . . . . . ',G14.7/
3041 . ' maximum time step. . . . . . . . . . . . . . . . ',G14.7)
3042 1160 FORMAT(/
3043 . ' IMPLICIT : conjugated gradient ' /
3044 . ' global convergence precision . . . . . . . . . . ',G14.7/
3045 . ' incremental convergence precision. . . . . . . . ',G14.7/
3046 . ' maximum number of iterations . . . . . . . . . . ',I5)
3047 1171 FORMAT(/
3048 . ' dynamic relaxation ' /
3049 . ' node group id(=0 all nodes) . . . . . . . . . . ',I10/
3050 . ' beta . . . . . . . . . . . . . . . . . . . . . . ',G14.7/
3051 . ' period . . . . . . . . . . . . . . . . . . . . . ',G14.7)
3052 1172 FORMAT(/
3053 . ' kinematic relaxation ' /
3054 . ' node group id (=0 all nodes) . . . . . . . . . . ',I10)
3055 1180 FORMAT(/
3056 . ' parallel arithmetic off')
3057 1181 FORMAT(/
3058 . ' parallel arithmetic on')
3059 1182 FORMAT(/
3060 . ' parallel arithmetic flag . . . . . . . . . . . . ',I5)
3061 1196 FORMAT(/
3062 . ' quasi-compressible formulation on(/incmp)')
3063 1198 FORMAT(
3064 . ' momentum : mixed integration')
3065 1199 FORMAT(
3066 . ' momentum : volume integration')
3067 1200 FORMAT(
3068 . 28X,' alpha : donea coefficient. . . . . . . . . . . ',G14.7/
3069 . 28X,' gamma : grid velocity limitation factor. . . . ',G14.7/
3070 . 28X,' fscalex : x-grid velocity scale factor . . . . . ',G14.7/
3071 . 28X,' fscaley : y-grid velocity scale factor . . . . . ',G14.7/
3072 . 28X,' fscalez : z-grid velocity scale factor . . . . . ',G14.7/
3073 . 28X,' volmin : minimum volume for element deletion. . ',G14.7//)
3074 1220 FORMAT(
3075 . 28X,' umax : maximum absolute grid velocity . . . . . ',G14.7/
3076 . 28X,' vmin : minimum volume for element deletion. . . ',G14.7//)
3077 1250 FORMAT(
3078 . 28X,' dt0 : typical time step. . . . . . . . . . . . ',G14.7/
3079 . 28X,' dt0* : effective time step. . . . . . . . . . . ',G14.7/
3080 . 28X,' gamma : non linearity factor . . . . . . . . . . ',G14.7/
3081 . 28X,' eta : damping coefficient . . . . . . . . . . ',G14.7/
3082 . 28X,' nu : shear factor . . . . . . . . . . . . . . ',G14.7/
3083 . 28X,' volmin: minimum volume for element deletion. . . ',G14.7//)
3084 1254 FORMAT(
3085 . 28X,' alpha : stability factor . . . . . . . . . . . . ',G14.7/
3086 . 28X,' gamma : non linearity factor . . . . . . . . . . ',G14.7/
3087 . 28X,' beta : damping coefficient. . . . . . . . . . . ',G14.7/
3088 . 28X,' lc : characteristic length. . . . . . . . . . ',G14.7//)
3089 1257 FORMAT(
3090 . 28X,' enabled deformation . . . . . . . . . . . . . . ',A3/
3091 . 28X,' enabled rotation . . . . . . . . . . . . . . . ',A3/
3092 . 28X,' scale factor for deformation . . . . . . . . . . ',G14.7/
3093 . 28X,' scale factor for rotation . . . . . . . . . . . ',G14.7//)
3094 1300 FORMAT(
3095 . ' number of interfaces to be eliminated. . . . . . ',I8//
3096 . ' number of parts to be eliminated . . . . . . . . ',I8//
3097 . ' number of solid element blocks to be eliminated ',I8//
3098 . ' number of quad element blocks to be eliminated ',I8//
3099 . ' number of shell element blocks to be eliminated ',I8//
3100 . ' number of truss element blocks to be eliminated ',I8//
3101 . ' number of beam element blocks to be eliminated ',I8//
3102 . ' number of spring element blocks to be eliminated ',I8//
3103 . ' number of sh_3n element blocks to be eliminated ',I8//
3104 . ' number of sph particles blocks to be eliminated ',I8/)
3105 1400 FORMAT(
3106 . ' number of rigid links. . . . . . . . . . . . . . ',I8/)
3107 1450 FORMAT(
3108 . ' number of ale links. . . . . . . . . . . . . . . ',I8/)
3109 1500 FORMAT(
3110 . ' number of new boundary conditions. . . . . . . . ',I8/)
3111 1550 FORMAT(
3112 . ' remove inter.7 segment after shell failure(1 yes)',I5/)
3113 1810 FORMAT(///' list of eliminated solid elements ')
3114 1820 FORMAT(///' list of eliminated quad elements ')
3115 1830 FORMAT(///' list of eliminated shell elements ')
3116 1840 FORMAT(///' list of eliminated truss elements ')
3117 1850 FORMAT(///' list of eliminated beam elements ')
3118 1860 FORMAT(///' list of eliminated spring elements ')
3119 1870 FORMAT(///' list of eliminated sh_3n elements ')
3120 1880 FORMAT(///' list of eliminated sph particles ')
3121 1890 FORMAT(///' list of eliminated parts ')
3122 2000 FORMAT(/' INTERFACE number',I10,' is eliminated')
3123 2100 FORMAT(/' rigid link:',I5,
3124 . ' translation x,y,z',3(1X,I1),
3125 . ' rotation x,y,z',3(1X,I1),
3126 . ' skew ',I10,/
3127 . ' ---------- ',I10,' nodes :')
3128 2200 FORMAT(/' ale link: ',/,
3129 . ' --------',/,
3130 . ' main nodes : ',2I8,/,
3131 . ' (x,y,z) : (',I1,',',I1,',',I1,')',/,
3132 . ' TYPE : ',I2)
3133 2201 FORMAT( ' nodes :')
3134 2202 FORMAT( ' node group : ',I2)
3135 2210 FORMAT(' deactivating ale link id:',I5)
3136 2211 FORMAT(' activating ale link id:',I5)
3137 2300 FORMAT(/' INTERFACE changes'/
3138 . ' INTERFACE nb . . . . . . . . . . . . . . . . . . ',I10/
3139 . ' search of closest nodes each nsearch time steps. ',I5/
3140 . ' start time . . . . . . . . . . . . . . . . . . . ',G14.7/
3141 . ' stop time . . . . . . . . . . . . . . . . . . . ',G14.7)
3142
3143 2301 FORMAT(/' error in INTERFACE changes'/
3144 . ' INTERFACE nb is not existing . . . . . . . . . . ',I10)
3145
3146 4000 FORMAT(/
3147 . ' spmd parallel restart reading(pread) activated')
3148 4100 FORMAT(/
3149 . ' spmd element weight estimation(ddw) activated')
3150C
3151 4500 FORMAT(/
3152 & 1X,'EXTERNAL library for users code INTERFACE ')
3153 4600 FORMAT(
3154 & 1X,'library name . . . . . . . . . . . . . . . . . . . . ',A/
3155 & 1X,'radioss users code INTERFACE version . . . . . . . .',I10//)
3156 4700 FORMAT(
3157 . ' brick time step scale factor . . . . . . . . . . ',G14.7/
3158 . ' brick minimum time step. . . . . . . . . . . . . ',G14.7/
3159 . ' min. time step flag(1:stop run, 2:delete 3:cst )',I5//
3160 . ' brick_cst minimum aspect ratio(tet collapse). . ',G14.7/
3161 . ' brick_cst minimum volume change . . . . . . . . ',G14.7//
3162 . ' quad time step scale factor. . . . . . . . . . . ',G14.7/
3163 . ' quad minimum time step . . . . . . . . . . . . . ',G14.7/
3164 . ' min. time step flag(1:stop run, 2:delete quad). ',I5//
3165 . ' shell time step scale factor . . . . . . . . . . ',G14.7/
3166 . ' shell minimum time step. . . . . . . . . . . . . ',G14.7/
3167 . ' min. time flag(1:stop, 2:delete, 3:small strain)',I5//
3168 . ' truss time step scale factor . . . . . . . . . . ',G14.7/
3169 . ' truss minimum time step. . . . . . . . . . . . . ',G14.7/
3170 . ' min. time flag(1:stop, 2:delete). . . . . . . . ',I5//
3171 . ' beam time step scale factor. . . . . . . . . . . ',G14.7/
3172 . ' beam minimum time step . . . . . . . . . . . . . ',G14.7/
3173 . ' min. time flag(1:stop, 2:delete). . . . . . . . ',I5//
3174 . ' spring time step scale factor. . . . . . . . . . ',G14.7/
3175 . ' spring minimum time step . . . . . . . . . . . . ',G14.7/
3176 . ' min. time flag(1:stop, 2:delete). . . . . . . . ',I5//
3177 . ' airbag time step scale factor. . . . . . . . . . ',G14.7/
3178 . ' airbag minimum time step . . . . . . . . . . . . ',G14.7/
3179 . ' min. time flag(1:stop). . . . . . . . . . . . . ',I5//
3180 . ' INTERFACE type 7 time step scale factor. . . . . ',G14.7/
3181 . ' INTERFACE type 7 minimum time step . . . . . . . ',G14.7/
3182 . ' min. time flag(1:stop, 2:remove node from interf)',I5/ )
3183 4720 FORMAT(
3184 . ' accurate time step for shells is used. . . . . . ',/)
3185 4730 FORMAT(
3186 . ' accurate time step for 4-node & 8-node solid is used',/)
3187 4740 FORMAT(
3188 . ' accurate time step for 10-node tetrahedra is used ',/)
3189 4800 FORMAT(
3190 . ' part deactivated for ale / euler computation',2X,I10)
3191 5000 FORMAT(/' h3d files : '/
3192 . ' time for first h3d-file plot . . . . . . . . . . ',G14.7/
3193 . ' time interval for h3d-file plots . . . . . . . . ',G14.7/
3194 . ' variable saved on h3d files : ')
3195 5001 FORMAT(/
3196 . ' kinematic relaxation ' /
3197 . ' node group id(=0 all nodes) . . . . . . . . . . ',I10/
3198 . ' start time. . . . . . . . . . . . . . . . . . . ',G14.7/
3199 . ' stop time. . . . . . . . . . . . . . . . . . . ',G14.7)
3200 5010 FORMAT(/
3201 . ' adaptive dynamic relaxation ' ,/
3202 . ' node group id(=0 all nodes) . . . . . . . . . . ',I10/)
3203 5011 FORMAT(/
3204 . ' adaptive dynamic relaxation ' /
3205 . ' node group id(=0 all nodes) . . . . . . . . . . ',I10/
3206 . ' start time. . . . . . . . . . . . . . . . . . . ',G14.7/
3207 . ' stop time. . . . . . . . . . . . . . . . . . . ',G14.7)
3208 5020 FORMAT(
3209 . ' brick_del minimum collapse ratio. . . . . . . . . ',G14.7/
3210 . ' brick_del minimum volume change . . . . . . . . . ',G14.7/
3211 . ' brick_del maximum aspect ratio . . . . . . . . . ',G14.7/
3212 . ' brick_del maximum volume change . . . . . . . . . ',G14.7//)
3213
subroutine chkipari(ipari)
Definition chkstfn3.F:211
subroutine damping(nodft, nodlt, v, vr, a, ar, damp, ms, in, igrnod, dim, itask, weight, tagslv_rby, wfext)
Definition damping.F:882
subroutine lecimpl
Definition lectur.F:3282
subroutine lecfun(npc, pld, nfct, nptst, table)
Definition lecfun.F:35
#define alpha
Definition eval.h:35
subroutine fr_rlink1(nod, itabm1, fr_rl, nsn)
Definition fr_rlink1.F:36
subroutine fr_rlale(m1, m2, nod, itabm1, itag)
Definition fr_rlink1.F:131
subroutine drot(n, dx, incx, dy, incy, c, s)
DROT
Definition drot.f:92
subroutine lcbcsf(icode, iskew, numbcsn, itab, itabm1, npby, iskwn, weight)
Definition lcbcsf.F:36
subroutine leccut(icut, xcut, itabm1)
Definition leccut.F:31
subroutine lecdamp(nd, dampr, igrnod)
Definition lecdamp.F:36
subroutine leceig(neigoff, neoff)
Definition leceig.F:31
subroutine lecflsw(nsflsw, ntflsw, neflsw, nnflsw, crflsw, x, ixs, iparg, itmp)
Definition lecflsw.F:36
subroutine lecfvbag1(nfvmodi, monvol, volmon)
Definition lecfvbag1.F:29
subroutine lecfvbag(nfvmesh, monvol, volmon, x)
Definition lecfvbag.F:34
subroutine lecfxinp(nfxinp)
Definition lecfxinp.F:33
subroutine lech3d(geo, igeo, ipm, ipart, h3d_data, multi_fvm, ipari, iparg, tag_skins6, mds_label, mds_output_table, mds_nmat, max_depvar, mds_ndepsvar, elbuf_str, stack, ibcl, iloadp, lloadp, loads, mat_param, pblast, igrpart)
Definition lech3d.F:96
subroutine lecinv(niniv, x, v, vr, itab, iframe, xframe, igrnod, fxbipm, fxbvit, fxbrpm)
Definition lecinv.F:39
subroutine lecnoise(inoise, itabm1, names_and_titles)
Definition lecnoise.F:45
subroutine lecstat(ipart, ipart_state, elbuf_tab, ipm, iparg, iparts, ipartc, ipartg, mat_param)
Definition lecstat.F:37
initmumps id
type(ale_) ale
Definition ale_mod.F:249
type(alemuscl_param_) alemuscl_param
integer restart_file
Definition check_mod.F:52
character(len=2048), dimension(check_message_size) check_message
Definition check_mod.F:54
type(fvbag_data), dimension(:), allocatable fvdata_old
Definition fvbag_mod.F:193
integer num_opt_dt_fvmbag_1
Definition fvbag_mod.F:199
integer num_opt_dt_fvmbag_0
Definition fvbag_mod.F:198
integer, dimension(:,:), allocatable fxbipm
Definition fxb_mod.F:39
integer ninefric
Definition outputs_mod.F:65
integer s_efric
Definition outputs_mod.F:64
integer s_efricint
Definition outputs_mod.F:64
integer ninefric_stamp
Definition outputs_mod.F:65
integer function ngr2usr(iu, igr, ngr)
Definition nintrr.F:325
program radioss
Definition radioss.F:34
subroutine rbyonf(iparg, ipari, ms, in, ixs, ixq, ixc, ixt, ixp, ixr, skew, itab, itabm1, iskwn, npby, onof, nrbynf, itag, lpby, rby, x, v, vr, ixtg, igrv, ibgr, weight, fr_rby2, partsav, ipart, elbuf_tab, icfield, lcfield, tagslv_rby)
Definition rbyonf.F:41
subroutine read_dynain(ipart, dynain_data, ipartc, iparttg, ixc, ixtg)
Definition read_dynain.F:38
subroutine rlink0(v, vr, ms, in, nlik, idir, idrot, nod, nsn, ic, icr, iskw, isk, skew, iskwn, fr_rl, weight)
Definition rlink0.F:35
subroutine spmd_chkw(iwiout, iout)
Definition spmd_chkw.F:38
subroutine spmd_ibcast(tabi, tabr, n1, n2, from, add)
Definition spmd_ibcast.F:57
subroutine spmd_glob_isum9(v, len)
Definition spmd_th.F:523
subroutine spmd_wiout(iout, iwiout)
Definition spmd_wiout.F:40
int main(int argc, char *argv[])
subroutine upwind(rho, vis, vdx, vdy, vdz, r, s, t, deltax, gam, nel)
Definition upwind.F:35

◆ prout_buck()

subroutine prout_buck ( integer ip,
integer nbuck,
integer ibuck )

Definition at line 3222 of file lectur.F.

3223C-----------------------------------------------
3224C M o d u l e s
3225C-----------------------------------------------
3226 USE imp_kbcs
3227C-----------------------------------------------
3228C I m p l i c i t T y p e s
3229C-----------------------------------------------
3230#include "implicit_f.inc"
3231C-----------------------------------------------
3232C D u m m y A r g u m e n t s
3233C-----------------------------------------------
3234 INTEGER IP,NBUCK,IBUCK
3235C-----------------------------------------------
3236C L o c a l V a r i a b l e s
3237C-----------------------------------------------
3238 CHARACTER*25 MSG_BSOL(2)
3239 DATA
3240 . msg_bsol
3241 . / 'BCS',
3242 . '-' /
3243C-----------------------------------------------
3244 IF (ibuck > 0) THEN
3245 WRITE(ip,1000)
3246 ELSE
3247 WRITE(ip,2000)
3248 END IF
3249 WRITE(ip,3000)nbuck,shift_b,emin_b,emax_b,msgl_b,maxset_b, msg_bsol(1)
3250
3251 RETURN
3252 1000 FORMAT(
3253 . ' EULER BUCKLING ANALYSIS (RESTART):'/)
3254 2000 FORMAT(
3255 . ' EULER BUCKLING ANALYSIS :'/)
3256 3000 FORMAT(
3257 . ' NUMBER OF MODES TO BE COMPUTED: . . . . . ',2x,i5/
3258 . ' SHIFT IN BUCKLING MODES PENCIL: . . . . . ',2x,g14.7/
3259 . ' MINIMUM EIGENVALUE: . . . . . . . . . . . ',2x,g14.7/
3260 . ' MAXIMUM EIGENVALUE: . . . . . . . . . . . ',2x,g14.7/
3261 . ' OUTPUT MESSAGE LEVEL: . . . . . . . . . . ',2x,i5/
3262 . ' NUMBER OF VECTORS IN BLOCK OR SET: . . . ',2x,i5/
3263 . ' LINEAR SOLVER: . . . . . . . . . . . . . ',2x,a/)
integer maxset_b
integer msgl_b