34 . ELBUF_STR,IPARG ,IPM ,IGEO ,NUMMAT ,NUMGEO ,
35 . NGROUP ,NPARG ,NPROPMI ,NPROPGI ,MAT_PARAM,N2D ,
36 . IXT ,NUMELT ,IXP ,NUMELP ,IXR ,NUMELR ,
45 use element_mod ,
only : nixt,nixp,nixr
49#include "implicit_f.inc"
53 INTEGER,
INTENT(IN) :: IPARG(NPARG,NGROUP),N2D,
54 . IPM(NPROPMI,NUMMAT),IGEO(NPROPGI,NUMGEO),
55 . NUMMAT,NUMGEO,NGROUP,NPARG,NPROPMI,NPROPGI,
56 . IXT(NIXT,NUMELT),IXP(NIXP,NUMELP),
57 . ixr(nixr,numelr),kxx(5,numelx),numelt,numelp,
59 TYPE(elbuf_struct_),
DIMENSION(NGROUP),
INTENT(IN) :: ELBUF_STR
60 TYPE(MATPARAM_STRUCT_),
DIMENSION(NUMMAT),
INTENT(IN) :: MAT_PARAM
64 INTEGER :: NG,IGTYP,PID,PROP_ID,NLAY,IL,IMAT,ILAW,IEOS,MAT_ID,ITY,ISNOD,NFT,IVISC,MLW
65 LOGICAL :: COMPAT_ELEM,COMPAT_PROP,COMPAT_EOS,COMPAT_VISC
66 CHARACTER (LEN = 10) :: ELTYP
78 igtyp = elbuf_str(ng)%IGTYP
79 nlay = elbuf_str(ng)%NLAY
95 imat = elbuf_str(ng)%BUFLY(il)%IMAT
96 ilaw = elbuf_str(ng)%BUFLY(il)%ILAW
97 ieos = mat_param(imat)%IEOS
98 ivisc = mat_param(imat)%IVISC
113 IF (mat_param(imat)%PROP_SOLID == 0) compat_elem = .false.
117 ELSEIF (isnod == 6)
THEN
119 ELSEIF (isnod == 10)
THEN
121 ELSEIF (isnod == 16)
THEN
123 ELSEIF (isnod == 20)
THEN
132 IF (mat_param(imat)%PROP_SOLID == 0) compat_elem = .false.
139 IF (mat_param(imat)%PROP_SHELL == 0) compat_elem = .false.
144 IF (mlw /= 151) compat_elem = .false.
147 IF (mat_param(imat)%PROP_SHELL == 0) compat_elem = .false.
154 IF (mat_param(imat)%PROP_BEAM == 0) compat_elem = .false.
160 IF (mat_param(imat)%PROP_SPH == 0) compat_elem = .false.
175 IF (mat_param(imat)%PROP_SHELL /= 1 .AND.
176 . mat_param(imat)%PROP_SHELL /= 5) compat_prop = .false.
179 IF (mat_param(imat)%PROP_SHELL /= 1 .AND.
180 . mat_param(imat)%PROP_SHELL /= 2 .AND.
181 . mat_param(imat)%PROP_SHELL /= 5) compat_prop = .false.
183 CASE (10,11,17,19,51,52)
184 IF (mat_param(imat)%PROP_SHELL /= 1 .AND.
185 . mat_param(imat)%PROP_SHELL /= 2 .AND.
186 . mat_param(imat)%PROP_SHELL /= 3 .AND.
187 . mat_param(imat)%PROP_SHELL /= 4 .AND.
188 . mat_param(imat)%PROP_SHELL /= 5) compat_prop = .false.
191 IF (mat_param(imat)%PROP_SHELL /= 4 .AND.
192 . mat_param(imat)%PROP_SHELL /= 5) compat_prop = .false.
199 . mat_param(imat)%PROP_SOLID /= 5 .AND.
200 . mat_param(imat)%PROP_SOLID /= 6) compat_prop = .false.
203 IF (mat_param(imat)%PROP_SOLID /= 1 .AND.
204 . mat_param(imat)%PROP_SOLID /= 2 .AND.
205 . mat_param(imat)%PROP_SOLID /= 6) compat_prop = .false.
208 IF (mat_param(imat)%PROP_SOLID /= 1 .AND.
210 . mat_param(imat)%PROP_SOLID /= 3 .AND.
211 . mat_param(imat)%PROP_SOLID /= 6) compat_prop = .false.
214 IF (mat_param(imat)%PROP_SOLID /= 4 .AND.
215 . mat_param(imat)%PROP_SOLID /= 6) compat_prop = .false.
218 IF (mat_param(imat)%PROP_SOLID /= 5) compat_prop = .false.
224 IF (mat_param(imat)%PROP_BEAM /= 2 .AND.
225 . mat_param(imat)%PROP_BEAM /= 3) compat_prop = .false.
231 IF (mat_param(imat)%PROP_SPH /= 1) compat_prop = .false.
235 ! check material law compatibility with /eos option
237 IF (ieos > 0 .and. mat_param(imat)%COMPATIBILITY_EOS == 0)
THEN
244 IF (ivisc > 0 .AND. mat_param(imat)%COMPATIBILITY_VISC == 1 .AND.
245 . (mat_param(imat)%PROP_SHELL == 2 .OR.
246 . mat_param(imat)%PROP_SHELL == 3 .OR.
247 . mat_param(imat)%PROP_SHELL == 4 ).AND.
249 compat_visc = .false.
257 IF (.NOT. compat_elem)
THEN
260 . anmode=aninfo_blind_1,
266 ELSEIF ((compat_elem).AND.(.NOT. compat_prop))
THEN
269 . anmode=aninfo_blind_1,
277 IF (.NOT. compat_eos)
THEN
286 IF (.NOT. compat_visc)
THEN
289 . anmode=aninfo_blind_1,
318 IF (mat_param(imat)%PROP_TRUSS == 0) compat_elem = .false.
326 IF (mat_param(imat)%PROP_BEAM == 0) compat_elem = .false.
335 IF (mat_param(imat)%PROP_SPRING == 0) compat_elem = .false.
358 IF (mat_param(imat)%PROP_TRUSS /= 1) compat_prop = .false.
364 IF (mat_param(imat)%PROP_BEAM /= 1 .AND.
365 . mat_param(imat)%PROP_BEAM /= 3) compat_prop = .false.
372 IF (mat_param(imat)%PROP_SPRING /= 1 .AND.
373 . mat_param(imat)%PROP_SPRING /= 3) compat_prop = .false.
377 IF (mat_param(imat)%PROP_SPRING /= 2 .AND.
378 . mat_param(imat)%PROP_SPRING /= 3) compat_prop = .false.
387 prop_id = igeo(1,pid)
400 IF (.NOT. compat_elem)
THEN
403 . anmode=aninfo_blind_1,
409 ELSE IF ((compat_elem).AND.(.NOT. compat_prop))
THEN
412 . anmode=aninfo_blind_1,
429 . anmode=aninfo_blind_1,
433 . anmode=aninfo_blind_1,
437 . anmode=aninfo_blind_1,
441 . anmode=aninfo_blind_1,
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)