OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
lec_inistate_d00_brick-check.F
Go to the documentation of this file.
1Copyright> OpenRadioss
2Copyright> Copyright (C) 1986-2025 Altair Engineering Inc.
3Copyright>
4Copyright> This program is free software: you can redistribute it and/or modify
5Copyright> it under the terms of the GNU Affero General Public License as published by
6Copyright> the Free Software Foundation, either version 3 of the License, or
7Copyright> (at your option) any later version.
8Copyright>
9Copyright> This program is distributed in the hope that it will be useful,
10Copyright> but WITHOUT ANY WARRANTY; without even the implied warranty of
11Copyright> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12Copyright> GNU Affero General Public License for more details.
13Copyright>
14Copyright> You should have received a copy of the GNU Affero General Public License
15Copyright> along with this program. If not, see <https://www.gnu.org/licenses/>.
16Copyright>
17Copyright>
18Copyright> Commercial Alternative: Altair Radioss Software
19Copyright>
20Copyright> As an alternative to this open-source version, Altair also offers Altair Radioss
21Copyright> software under a commercial license. Contact Altair to discuss further if the
22Copyright> commercial version may interest you: https://www.altair.com/radioss/.
23!||====================================================================
24!|| lec_inistate_d00_brick_check ../starter/source/elements/initia/lec_inistate_d00_brick-check.F
25!||--- called by ------------------------------------------------------
26!|| hm_read_inistate_d00 ../starter/source/elements/initia/hm_read_inistate_d00.F
27!||--- calls -----------------------------------------------------
28!|| ancmsg ../starter/source/output/message/message.F
29!||--- uses -----------------------------------------------------
30!|| message_mod ../starter/share/message_module/message_mod.F
31!||====================================================================
33 1 IXS ,IGEO ,ITRIS ,ISOLNODD00 ,IE ,
34 2 NPT ,NLAY ,ISOLNOD ,JJHBE ,IGTYP ,
35 3 ISROT ,KEYWORD )
36C---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----A----+----B----+----C----+----D--
37C-----------------------------------------------
38C M o d u l e s
39C-----------------------------------------------
40 USE message_mod
41 use element_mod , only : nixs
42C-----------------------------------------------
43C I m p l i c i t T y p e s
44C-----------------------------------------------
45#include "implicit_f.inc"
46C-----------------------------------------------
47C C o m m o n B l o c k s
48C-----------------------------------------------
49#include "param_c.inc"
50C-----------------------------------------------
51C D u m m y A r g u m e n t s
52C-----------------------------------------------
53 INTEGER IXS(NIXS,*), IGEO(NPROPGI,*) ,ITRIS(*), ISOLNODD00(*)
54 INTEGER IE, NPT, ISOLNOD, JJHBE, IGTYP, ISROT, NLAY
55 CHARACTER*15,KEYWORD
56C-----------------------------------------------
57C L o c a l V a r i a b l e s
58C-----------------------------------------------
59 INTEGER IPIDD00, JJHBED00, NPTD00, NPTF, NPTR, NPTS, NPTT, ICSTR, IINT, NLY,NNOD
60C-----------------------------------------------
61C---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----A----+----B----+----C----+----D--
62C-----------------------------------------
63C INITIALE STRESS FILE D00
64C CHECK INPUT CONSISTENCY BETWEEN /INIBRI AND D00
65C Erreur if difference in data ( D00 & INIBRI)
66C-----------------------------------------
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)
73C
74C Solid property ISOLID
75C
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
85 CALL ancmsg(msgid=695,
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
94C
95C Number of nodes
96C
97 nnod = isolnod
98 IF (isolnod==10 .AND. isrot==1) nnod=4
99 IF (isolnodd00(ie) /=nnod) THEN
100 CALL ancmsg(msgid=695,
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
109C
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
121C
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
140C
141C Number of layers
142C
143 IF (keyword == '/INIBRI/ORTHO ' .AND. nly /= nlay) THEN
144 CALL ancmsg(msgid=695,
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
153C
154C
155 ELSEIF (jjhbed00 == 14 .OR.isolnod==16 .OR.isolnod==20 ) THEN
156 nptd00 = nptr*npts*nptt
157 ELSEIF (jjhbed00 == 12 .OR.jjhbed00==17.OR.jjhbed00==18) THEN
158 nptd00 = 8
159 ENDIF
160
161 IF (nptd00 == 0 .and. igtyp == 43) nptd00 = 4
162
163 IF (nptd00 == 0) nptd00 = 1
164 IF (isolnod == 10) nptd00 = 4
165 IF (isolnod == 4 .AND. (isrot == 0 .OR. 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
174C
175C Number of integration points
176C
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
187C
188 RETURN
189 END
190
subroutine lec_inistate_d00_brick_check(ixs, igeo, itris, isolnodd00, ie, npt, nlay, isolnod, jjhbe, igtyp, isrot, keyword)
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:895