37 SUBROUTINE imp_init(V,VR,IPARG,IPM,IGEO,ELBUF_TAB)
48#include "implicit_f.inc"
61 INTEGER IPARG(NPARG,NGROUP),IPM(NPROPMI,*),IGEO(*)
64 TYPE(elbuf_struct_),
DIMENSION(NGROUP) :: ELBUF_TAB
68 INTEGER K0,IDEFKZ,IER1,IER2,IFSTRUN
80 IF(impl_s==1.OR.neig>0)
THEN
82 IF (neig>0.AND.kz_tol==zero) idefkz=1
86 IF (d_tol==zero.AND.n_pat>1) d_tol=-one
87 IF (d_tol==zero) d_tol
93 IF (sk_int==zero) sk_int=onep01
95 IF (dt_imp==zero.OR.dt_imp>=trest) dt_imp=trest
98 IF (kz_tol==zero) kz_tol=two*em4
101 IF (kz_tol==zero) kz_tol=five*em4
103 IF (isprb==1.AND.idyna==0)
THEN
105 IF (iroddl/=0)
CALL zeror(vr,numnod)
107 IF (nexp==0.OR.idyna==1) nexp=1
110 IF (isolv>=2) intp_c = 1
117 IF (idefkz==1) kz_tol=ten
121 IF (iautspc==1) iautspc=0
124 IF (idyna>0)
CALL dyna_ini(1 ,numnod ,hht_a ,newm_a,newm_b,v,vr)
142 IF (ikt > 0 .OR.isprb==1)
CALL ktbuf_ini(elbuf_tab,iparg ,ipm ,igeo)
146 n_tol=
max(n_tole,n_tolf,n_tolu)
147 ELSEIF (nitol==12)
THEN
148 n_tol=
max(n_tole,n_tolf)
149 ELSEIF (nitol==23)
THEN
150 n_tol=
max(n_tolf,n_tolu)
151 ELSEIF (nitol==13)
THEN
152 n_tol=
max(n_tole,n_tolu)
183#include "implicit_f.inc"
187#include "com01_c.inc"
188#include "param_c.inc"
189#include "scr19_c.inc"
190#include "units_c.inc"
191#include "impl1_c.inc"
195 INTEGER IPARG(NPARG,NGROUP),IPM(NPROPMI,*),IGEO(*)
199 INTEGER I,IFA,IR,IS,IT,NG,BUFLEN,ERR,
200 . NEL,NPT,NPG,MLW,ISORTH,ISRATE,ISROT,IREP,ISIGV,IGTYP,
201 . ISTRA,IFAIL,NFAIL,IEOS,IXFEM,NLAY,NPTR,NPTS,NPTT,NVAR,
202 . NFT,NFT0,KFTS,ITY,JALE,OFF,ISS,ICPRE,NSG,ICNOD,ISNOD,JEUL,
203 . JHBE,JIVF,JPOR,IPLA,L_ETFAC,L_SIGE,L_A_KT,L_SUBKT,LENF,
208 TYPE(elbuf_struct_) ,
DIMENSION(NGROUP) :: ELBUF_TAB
233 IF (mlw == 0 .OR. mlw == 13 .OR. off==1) cycle
242 nlay = elbuf_tab(ng)%NLAY
243 nptr = elbuf_tab(ng)%NPTR
244 npts = elbuf_tab(ng)%NPTS
245 nptt = elbuf_tab(ng)%NPTT
251 IF (isnod==8 .AND. jhbe/=14 .AND. jhbe/=17)
THEN
252 WRITE(iout,*)
' **WARNING : ONLY ISOLID=14,17 ARE AVAILABLE',
253 1
' WITH CONSISTING TANGENT MATRIX, OPTION IGNORED. '
254 WRITE(istdo,*)
' **WARNING : ONLY ISOLID=14,17 ARE AVAILABLE',
255 1
' WITH CONSISTING TANGENT MATRIX, OPTION IGNORED. '
258 IF (mlw==42.OR.mlw==62.OR.mlw==69.OR.mlw==82)
THEN
260 IF (ihelas ==0 ) ihelas=1
261 ELSEIF (mlw==2.OR.mlw==36)
THEN
268 ELSEIF(ity==3.OR.ity==7)
THEN
280 IF (nptt == 0 .AND. mlw /= 1)
THEN
281 CALL ancmsg(msgid=227,anmode=aninfo,
282 . c1=
'FOR IMPLICIT NONLINEAR')
288 ELSEIF (mlw==2.OR.mlw==36)
THEN
298 IF (ity /=1 .AND.ity /=3 .AND.ity /=7 ) cycle
299 ALLOCATE (
ktbuf_str(ng)%MLAW_TAG(0:maxlaw) ,stat=err)
300 ALLOCATE (
ktbuf_str(ng)%ETFAC(nel*l_etfac) ,stat=err)
301 ALLOCATE (
ktbuf_str(ng)%KTBUFEP(nptr,npts,nptt) ,stat=err)
320 ALLOCATE(lbuf%A_KT(nel*l_a_kt), stat=err)
322 ALLOCATE(lbuf%SIGE(nel*l_sige), stat=err)
324 lenf = lenf + nel*(l_etfac+l_a_kt+l_sige)
330 CALL ancmsg(msgid=19,anmode=aninfo,
331 . c1=
'FOR IMPLICIT NONLINEAR')
396#include "implicit_f.inc"
400#include "com01_c.inc"
401#include "param_c.inc"
402#include "impl1_c.inc"
406 INTEGER IPARG(NPARG,NGROUP)
410 INTEGER I,IFA,IR,IS,IT,NG,NEL,MLW,JHBE,L_ETFAC,ISNOD,
411 . ITY,OFF,IGROUC(NGROUP),IG
422 IF (mlw == 0 .OR. mlw == 13 .OR. off==1) cycle
429 IF (mlw==42.OR.mlw==62.OR.mlw==69.OR.mlw==82)
THEN
431 ELSEIF (mlw==2.OR.mlw==36)
THEN
435 ELSEIF(ity==3.OR.ity=
THEN
436 IF (mlw==2.OR.mlw==36.OR.mlw==78) l_etfac=1
441 IF (ity /=1 .AND.ity /=3 .AND.ity /=7 ) cycle
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)