36
37
38
39
41 use element_mod , only : nixs
42
43
44
45#include "implicit_f.inc"
46
47
48
49#include "param_c.inc"
50
51
52
53 INTEGER IXS(NIXS,*), IGEO(NPROPGI,*) ,ITRIS(*), ISOLNODD00(*)
54 INTEGER IE, NPT, ISOLNOD, JJHBE, IGTYP, ISROT, NLAY
55 CHARACTER*15,KEYWORD
56
57
58
59 INTEGER IPIDD00, JJHBED00, NPTD00, NPTF, NPTR, NPTS, NPTT, ICSTR, IINT, NLY,NNOD
60
61
62
63
64
65
66
67 ipidd00 = ixs(10,ie)
68 jjhbed00 = igeo(10,ipidd00)
69 igtyp = igeo(11,ipidd00)
70 isrot = igeo(20,ipidd00)
71 icstr = igeo(14,ipidd00)
72 iint = igeo(15,ipidd00)
73
74
75
76 IF (jjhbed00 == 0) jjhbed00 = 1
77 IF (isolnod==4.OR.isolnod==10) jjhbed00=1
78 IF (isolnod==16.OR.isolnod==20) jjhbed00=16
79 IF ((isolnod==4.OR.isolnod==10).AND.jjhbe /= 1) jjhbe = 1
80 IF (jjhbe == 0) jjhbe = 1
81 IF (jjhbed00 == 1 .AND. iint == 3 .AND. isolnod==8) jjhbed00 = 5
82
83 IF ((jjhbed00 /=jjhbe) .AND.((jjhbed00 /= 2).AND.
84 . (jjhbe /= 0)) .AND. isolnod /= 4) THEN
86 . msgtype=msgerror,
87 . anmode=aninfo,
88 . i1=itris(ie),
89 . c1='FORMULATION',
90 . c2='SOLID PROPERTY',
91 . i2=igeo(1,ipidd00),
92 . c3=keyword)
93 ENDIF
94
95
96
97 nnod = isolnod
98 IF (isolnod==10 .AND. isrot==1) nnod=4
99 IF (isolnodd00(ie) /=nnod) THEN
101 . msgtype=msgerror,
102 . anmode=aninfo,
103 . i1=itris(ie),
104 . c1='NUMBER OF NODES',
105 . c2='BRICK',
106 . i2=itris(ie),
107 . c3=keyword)
108 ENDIF
109
110 nptd00 = 0
111 nptr = 0
112 npts = 0
113 nptt = 0
114 IF (jjhbed00 == 14 .OR.isolnod==16 .OR.isolnod==20 ) THEN
115 nptf = igeo(4,ipidd00)
116 IF (nptf<=8) nptf = 222
117 nptr=nptf/100
118 npts=mod(nptf/10,10)
119 nptt=mod(nptf,10)
120 END IF
121
122 IF (jjhbed00 == 14 .AND.igtyp==22 ) THEN
123 SELECT CASE (icstr)
124 CASE(100)
125 nly = nptr
126 IF (nly ==0) nly =iint
127 nptd00 = nly*npts*nptt
128 CASE(10)
129 nly = npts
130 IF (nly ==0) nly =iint
131 nptd00 = nly*nptr*nptt
132 CASE(1)
133 nly = nptt
134 IF (nly ==0) nly =iint
135 nptd00 = nly*nptr*npts
136 CASE DEFAULT
137 nly = -huge(nly)
138 nptd00 = -huge(nptd00)
139 END SELECT
140
141
142
143 IF (keyword == '/INIBRI/ORTHO ' .AND. nly /= nlay) THEN
145 . msgtype=msgerror,
146 . anmode=aninfo,
147 . i1=itris(ie),
148 . c1='number of layers',
149 . C2='solid property',
150 . I2=IGEO(1,IPIDD00),
151 . C3=KEYWORD)
152 ENDIF
153
154
155.OR..OR. ELSEIF (JJHBED00 == 14 ISOLNOD==16 ISOLNOD==20 ) THEN
156 NPTD00 = NPTR*NPTS*NPTT
157.OR..OR. ELSEIF (JJHBED00 == 12 JJHBED00==17JJHBED00==18) THEN
158 NPTD00 = 8
159 ENDIF
160
161.and. IF (NPTD00 == 0 IGTYP == 43) NPTD00 = 4
162
163 IF (NPTD00 == 0) NPTD00 = 1
164 IF (ISOLNOD == 10) NPTD00 = 4
165.AND..OR. IF (ISOLNOD == 4 (ISROT == 0 ISROT == 3)) THEN
166 NPTD00 = 1
167 ELSEIF(ISOLNOD == 4 )THEN
168 NPTD00 = 4
169 ELSEIF(JJHBED00 == 15)THEN
170 NPTD00 = IGEO(4,IPIDD00)
171 ENDIF
172
173 IF(KEYWORD =='/inibri/ortho .OR.'KEYWORD=='/inibri/eref ')RETURN
174
175
176
177 IF (NPTD00 /=NPT) THEN
178 CALL ANCMSG(MSGID=695,
179 . MSGTYPE=MSGERROR,
180 . ANMODE=ANINFO,
181 . I1=ITRIS(IE),
182 . C1='number of integration points',
183 . C2='solid property',
184 . I2=IGEO(1,IPIDD00),
185 . C3=KEYWORD)
186 ENDIF
187
188 RETURN
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)