OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_mat24.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!|| hm_read_mat24 ../starter/source/materials/mat/mat024/hm_read_mat24.F
25!||--- called by ------------------------------------------------------
26!|| hm_read_mat ../starter/source/materials/mat/hm_read_mat.F90
27!||--- calls -----------------------------------------------------
28!|| ancmsg ../starter/source/output/message/message.F
29!|| hm_get_floatv ../starter/source/devtools/hm_reader/hm_get_floatv.F
30!|| hm_get_intv ../starter/source/devtools/hm_reader/hm_get_intv.F
31!|| hm_option_is_encrypted ../starter/source/devtools/hm_reader/hm_option_is_encrypted.F
32!|| init_mat_keyword ../starter/source/materials/mat/init_mat_keyword.F
33!||--- uses -----------------------------------------------------
34!|| elbuftag_mod ../starter/share/modules1/elbuftag_mod.F
35!|| message_mod ../starter/share/message_module/message_mod.F
36!|| submodel_mod ../starter/share/modules1/submodel_mod.F
37!||====================================================================
38 SUBROUTINE hm_read_mat24(
39 . NUPARAM ,NUVAR ,NFUNC ,IPM ,PM ,
40 . MTAG ,MAT_ID ,TITR ,UNITAB ,LSUBMODEL,
41 . ISRATE ,MATPARAM )
42C-----------------------------------------------
43C M o d u l e s
44C-----------------------------------------------
45 USE unitab_mod
46 USE elbuftag_mod
47 USE message_mod
48 USE submodel_mod
49 USE matparam_def_mod
50C-----------------------------------------------
51C ROUTINE DESCRIPTION :
52C ===================
53C READ MAT LAW24 (CONCRETE)
54C-----------------------------------------------
55C DUMMY ARGUMENTS DESCRIPTION:
56C ===================
57C UNITAB UNITS ARRAY
58C ID MATERIAL ID(INTEGER)
59C TITR MATERIAL TITLE
60C LSUBMODEL SUBMODEL STRUCTURE
61C-----------------------------------------------
62C I m p l i c i t T y p e s
63C-----------------------------------------------
64#include "implicit_f.inc"
65C-----------------------------------------------
66C C o m m o n B l o c k s
67C-----------------------------------------------
68#include "scr03_c.inc"
69#include "units_c.inc"
70#include "param_c.inc"
71C-----------------------------------------------
72C D u m m y A r g u m e n t s
73C-----------------------------------------------
74 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
75 INTEGER, INTENT(IN) :: MAT_ID
76 INTEGER, INTENT(INOUT) :: NUPARAM,NUVAR,NFUNC
77 INTEGER, DIMENSION(NPROPMI) ,INTENT(INOUT) :: IPM
78 my_real, DIMENSION(NPROPM) ,INTENT(INOUT) :: pm
79 CHARACTER(nchartitle) ,INTENT(IN) :: TITR
80 TYPE(submodel_data), DIMENSION(*),INTENT(IN) :: LSUBMODEL
81 TYPE(mlaw_tag_), INTENT(INOUT) :: MTAG
82 TYPE(matparam_struct_) ,INTENT(INOUT) :: MATPARAM
83C-----------------------------------------------
84C L o c a l V a r i a b l e s
85C-----------------------------------------------
86 INTEGER :: ICAP,ILAW,ISRATE
87 my_real :: RHO0,RHOR,YMC,ANUC,FC,FT,FB,F2D,S0,HT,DSUP1,EPSMAX,VKY,RT,
88 . RC,HBP,ALI,ALF,VMAX,ROK,RO0,HV0,YMS,Y0S,ETS,ARM1,ARM2,ARM3,
89 . etc,bulk,expo,f2d0,aa,cc,bc,sq32,bt,ac,eps0,hvfac
90 CHARACTER*64 :: message
91 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
92C=======================================================================
93 is_encrypted = .false.
94 is_available = .false.
95 ilaw = 24
96c
97 eps0 = zero ! not yet supported in cfg
98 hvfac = zero ! not yet supported in cfg
99 israte = 0 ! strain rate will be calculated for output even if not used
100C--------------------------------------------------
101C check crypting
102C--------------------------------------------------
103c
104 CALL hm_option_is_encrypted(is_encrypted)
105c
106c--------------------------------------------------
107c Read DATA
108c--------------------------------------------------
109 CALL hm_get_floatv('MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
110 CALL hm_get_floatv('Refer_Rho' ,rhor ,is_available, lsubmodel, unitab)
111c
112 CALL hm_get_floatv('MAT_E' ,ymc ,is_available, lsubmodel, unitab)
113 CALL hm_get_floatv('MAT_NU' ,anuc ,is_available, lsubmodel, unitab)
114 CALL hm_get_intv ('Iflag' ,icap ,is_available, lsubmodel)
115c
116 CALL hm_get_floatv('MAT_SIGY' ,fc ,is_available, lsubmodel, unitab)
117 CALL hm_get_floatv('MAT_FtFc' ,ft ,is_available, lsubmodel, unitab)
118 CALL hm_get_floatv('MAT_FbFc' ,fb ,is_available, lsubmodel, unitab)
119 CALL hm_get_floatv('MAT_F2Fc' ,f2d ,is_available, lsubmodel, unitab)
120 CALL hm_get_floatv('MAT_SoFc' ,s0 ,is_available, lsubmodel, unitab)
121c
122 CALL hm_get_floatv('MAT_ETAN' ,ht ,is_available, lsubmodel, unitab)
123 CALL hm_get_floatv('MAT_DAMAGE' ,dsup1 ,is_available, lsubmodel, unitab)
124 CALL hm_get_floatv('MAT_EPS' ,epsmax ,is_available, lsubmodel, unitab)
125c
126 CALL hm_get_floatv('MAT_BETA' ,vky ,is_available, lsubmodel, unitab)
127 CALL hm_get_floatv('MAT_PPRES' ,rt ,is_available, lsubmodel, unitab)
128 CALL hm_get_floatv('MAT_YPRES' ,rc ,is_available, lsubmodel, unitab)
129 CALL hm_get_floatv('MAT_BPMOD' ,hbp ,is_available, lsubmodel, unitab)
130 CALL hm_get_floatv('MAT_ETC' ,etc ,is_available, lsubmodel, unitab)
131c
132 CALL hm_get_floatv('MAT_DIL_Y' ,ali ,is_available, lsubmodel, unitab)
133 CALL hm_get_floatv('MAT_DIL_F' ,alf ,is_available, lsubmodel, unitab)
134 CALL hm_get_floatv('MAT_COMPAC' ,vmax ,is_available, lsubmodel, unitab)
135c
136 CALL hm_get_floatv('MAT_CAP_BEG' ,rok ,is_available, lsubmodel, unitab)
137 CALL hm_get_floatv('MAT_CAP_END' ,ro0 ,is_available, lsubmodel, unitab)
138 CALL hm_get_floatv('MAT_TPMOD' ,hv0 ,is_available, lsubmodel, unitab)
139 CALL hm_get_floatv('MAT_EPS0' ,eps0 ,is_available, lsubmodel, unitab)
140 CALL hm_get_floatv('MAT_HVFAC' ,hvfac ,is_available, lsubmodel, unitab)
141c
142 CALL hm_get_floatv('MAT_E2' ,yms ,is_available, lsubmodel, unitab) !young modulus
143 CALL hm_get_floatv('MAT_SSIG' ,y0s ,is_available, lsubmodel, unitab) !yield strength
144 CALL hm_get_floatv('MAT_SETAN' ,ets ,is_available, lsubmodel, unitab) !tangent modulus
145c
146 CALL hm_get_floatv('MAT_PDIR1' ,arm1 ,is_available, lsubmodel, unitab)
147 CALL hm_get_floatv('MAT_PDIR2' ,arm2 ,is_available, lsubmodel, unitab)
148 CALL hm_get_floatv('MAT_PDIR3' ,arm3 ,is_available, lsubmodel, unitab)
149c--------------------------------------------------
150c DEFAULT VALUES
151c--------------------------------------------------
152 IF (rhor == zero) rhor = rho0
153c
154 IF (ft == zero) ft = em01
155 IF (fb == zero) fb = six_over_5
156 IF (s0 == zero) s0 = five_over_4
157 IF (ht >= zero) ht =-ymc
158 IF (dsup1 == zero) dsup1 = zep99999
159 IF (vmax >= zero) vmax =-zep35
160 IF (epsmax <= zero) epsmax= ep20
161c
162 IF (vky == zero) vky = half
163 IF (rc == zero) rc =-third*fc
164 IF (hbp == zero) THEN
165 IF(etc /= zero )THEN
166 IF(etc < ymc) THEN
167 hbp = ymc*etc/(ymc-etc)
168 ELSE
169 CALL ancmsg(msgid=2065,
170 . msgtype=msgerror,
171 . anmode=aninfo_blind_2,
172 . i1=mat_id,
173 . c1=titr)
174 ENDIF
175 ELSEIF (etc == zero )THEN
176 etc = (one-vky)*ymc*fc/(twoem3*ymc-vky*fc)
177 IF(etc < ymc) THEN
178 hbp = ymc*etc/(ymc-etc)
179 ELSE
180 CALL ancmsg(msgid=2066,
181 . msgtype=msgerror,
182 . anmode=aninfo_blind_2,
183 . i1=mat_id,
184 . c1=titr)
185 ENDIF
186 ENDIF
187 ENDIF
188 bulk = ymc/three/(one-two*anuc)
189 IF (rok == zero) rok = rc
190 IF (icap == 0 .AND. invers < 2017) icap = 1
191 IF (icap == 2) THEN
192 IF (f2d == zero) f2d = seven
193 IF (ro0 == zero) ro0 =-two*fc
194 IF (hv0 == zero) hv0 = half*bulk
195 IF (eps0 == zero) eps0 = zep02
196 IF (hvfac== zero) hvfac= zep1
197 expo = -one/eps0
198 ELSE
199 IF (f2d == zero) f2d = four
200 IF (ro0 == zero) ro0 =-four_over_5*fc
201 IF (hv0 == zero) hv0 = ymc/five
202 expo = one/hv0/vmax
203 hvfac = zero
204 ENDIF
205 !IF(ALI == ZERO) ALI = -ONE/FIVE
206 !IF(ALF == ZERO) ALF = -ONE/TEN
207 IF (ali >= zero) THEN
208 IF (icap == 1) THEN
209 message='CAP REQUIRES ALPHAI PARAMETER STRICTLY <0 '
210 ELSE
211 message='ALPHAI RESET TO DEFAULT -0.2 CAP REQUIRES ALPHAI <0'
212 ali =- one/five
213 ENDIF
214 CALL ancmsg(msgid=1161,
215 . msgtype=msgwarning,
216 . anmode=aninfo,
217 . i1=mat_id,
218 . c1=titr,
219 . c2=message)
220 ENDIF
221c
222 IF (dsup1 >= one .OR. dsup1 < zero) THEN
223 CALL ancmsg(msgid=605,
224 . msgtype=msgerror,
225 . anmode=aninfo_blind_2,
226 . i1=mat_id,
227 . c1=titr)
228 END IF
229C-----------------------
230C OTTOSEN SURFACE PARAMETERS
231C-----------------------
232C Failure surface : f = r - rf = 0
233C
234C Ottosen surface defined with :
235C -> rf = 1/AA (-BB+SQRT(BB / B2 -AA(SM-CC))
236C where BB = BB(BC,BT) = 1/2[BC(1-CS3T) + BT(1+CS3T)]
237C
238C AA,BC,BT,CC are deduced from material input :
239C
240 f2d0 = f2d - s0
241 aa = three_half* ( s0 /(f2d0 -one) - ft * fb /(fb-ft))/(f2d0 - fb*ft)
242 cc = fb * ft * ( f2d0 /(fb-ft) - s0 /(f2d0-one))/(f2d0 - fb*ft)
243 bc = half*sqr3_2 * (cc + third - two*third*aa)
244 bt = half*sqr3_2 * (cc/ft - third - two*third*aa*ft)
245 ac = cc*aa
246 aa = aa/fc
247c-----------------
248 pm(1) = rhor
249 pm(89) = rho0
250c
251 pm(20) = ymc
252 pm(21) = anuc
253 pm(22) = ymc/(two*(one+anuc))
254 pm(25) = ymc*anuc/(one+anuc)/(one-two*anuc)
255 pm(24) = pm(25) + two*pm(22)
256 pm(26) = max(zero,dsup1)
257 pm(27) = vmax
258 pm(28) = one-ht/ymc
259C
260 pm(29) = rok
261 pm(30) = ro0
262C
263 pm(32) = bulk
264 pm(33) = fc
265 pm(34) = rt
266 pm(35) = rc
267 pm(36) = rt*(two*rc-rt)
268 pm(37) = (rc-rt)**2
269 pm(38) = aa
270 pm(39) = bc
271 pm(40) = bt
272 pm(41) = ac
273 pm(42) = ft*fc/ymc
274 pm(43) = hbp
275 pm(44) = ali
276 pm(45) = alf
277 pm(46) = vky
278 pm(47) = epsmax
279C
280 pm(48) = hv0
281 pm(49) = expo
282C
283 pm(50) = yms
284 pm(51) = y0s
285 pm(52) = ets
286 pm(53) = arm1
287 pm(54) = arm2
288 pm(55) = arm3
289 pm(56) = one !
290 pm(57) = icap+em01
291 pm(58) = one-hvfac
292 pm(59) = zero !
293 pm(105)= two*pm(22)/(bulk+four_over_3*pm(22)) ! =(1-2*Nuc)/(1-Nuc)
294c---------------------
295 ipm(252)= 2 ! Formulation for solid element time step computation.
296c---------------------
297 nuparam = 0
298 nfunc = 0
299 nuvar = 0
300c-----------------
301c---- Definition des variables internes (stockage elementaire)
302c-----------------
303 mtag%G_GAMA = 6
304 mtag%G_PLA = 1
305 mtag%L_PLA = 7 ! plastic strain tensor for output
306c
307 mtag%L_SIGA = 3
308 mtag%L_EPSA = 3
309 mtag%L_DAM = 3
310 mtag%L_ANG = 6
311 mtag%L_SF = 3
312 mtag%L_VK = 1 ! K0
313 mtag%L_STRA = 6
314 mtag%L_CRAK = 3
315 mtag%L_DSUM = 1
316 mtag%L_ROB = 1
317 mtag%L_SIGC = 6
318 mtag%L_DGLO = 6
319 mtag%L_RK = 1 ! K
320 mtag%L_EPE = 1 ! EPSP VOL
321c
322 ! MATPARAM keywords
323 CALL init_mat_keyword(matparam,"ELASTO_PLASTIC")
324 CALL init_mat_keyword(matparam,"HOOK")
325c
326 ! Properties compatibility
327 CALL init_mat_keyword(matparam,"SOLID_ISOTROPIC")
328 CALL init_mat_keyword(matparam,"SPH")
329c
330c-----------------
331 WRITE(iout,1100) trim(titr),mat_id,24
332 WRITE(iout,1000)
333
334 IF (is_encrypted) THEN
335 WRITE(iout,'(5X,A,//)')'MATERIAL LAW CONFIDENTIAL DATA'
336 ELSE
337 WRITE(iout,1200) rho0
338 IF (icap == 2) THEN
339 WRITE(iout,1300)
340 WRITE(iout,1400) ymc,anuc,fc,ft,fb,f2d,s0,ht,dsup1,epsmax
341 WRITE(iout,1500) vky,rt,rc,rok,ro0,etc,hbp,hv0,eps0,hvfac,
342 . ali,alf,vmax,yms,y0s,ets,arm1,arm2,arm3,
343 . aa,bc,bt,cc
344 ELSE
345 WRITE(iout,1301)
346 WRITE(iout,1400) ymc,anuc,fc,ft,fb,f2d,s0,ht,dsup1,epsmax
347 WRITE(iout,1600) vky,rt,rc,rok,ro0,etc,hbp,hv0,ali,alf,vmax,
348 . yms,y0s,ets,arm1,arm2,arm3,
349 . aa,bc,bt,cc
350 ENDIF
351 ENDIF
352C-----------------
353 RETURN
354C-----------------
355 1000 FORMAT
356 & (5x,' MATERIAL MODEL : CONCRETE ',/,
357 & 5x,' BRITTLE ELASTIC PLASTIC MATRIX ',/,
358 & 5x,' ELASTIC PLASTIC REINFORCEMENT ',/,
359 & 5x,'------------------------------------------',/)
360 1100 FORMAT(/
361 & 5x,a,/,
362 & 5x,'MATERIAL NUMBER . . . . . . . . . . . . . =',i10/,
363 & 5x,'MATERIAL LAW. . . . . . . . . . . . . . . =',i10/)
364 1200 FORMAT(
365 & 5x,'INITIAL DENSITY . . . . . . . . . . . . . =',1pg20.13/)
366 1300 FORMAT(
367 & 5x,' NEW CAP FORMULATION ',/)
368 1301 FORMAT(
369 & 5x,' original cap formulation ',/)
370 1400 FORMAT(
371 & 5X,' 1. matrix properties ',/,
372 & 5X,'ymc young modulus . . . . . . . . . . . =',E12.4/,
373 & 5X,'nuc poisson ratio . . . . . . . . . . . =',E12.4/,
374 & 5X,'fc uniaxial compression strength . . . =',E12.4/,
375 & 5X,'ft/fc tensile strength . . . . . . . . . =',E12.4/,
376 & 5X,'fb/fc biaxial strength . . . . . . . . . =',E12.4/,
377 & 5X,'f2/fc confined strength . . . . . . . . . =',E12.4/,
378 & 5X,'s0/fc confining stress. . . . . . . . . . =',E12.4/,
379 & 5X,'ht<0 tensile tangent mudulus . . . . . . =',E12.4/,
380 & 5X,'dsup1 maximum damage . . . . . . . . . . =',E12.4/,
381 & 5X,'depsm total failure crack strain . . . . =',E12.4)
382 1500 FORMAT(
383 & 5X,'ky initial hardening PARAMETER . . . . =',E12.4/,
384 & 5X,'rt failure/plastic transition pres . . =',E12.4/,
385 & 5X,'rc proportional yield. . . . . . . . . =',E12.4/,
386 & 5X,'rok beginning of cape . . . . . . . . . =',E12.4/,
387 & 5X,'ro0 END OF INITIAL CAPE . . . . . . . . =',E12.4/,
388 & 5X,'ETC PLASTIC TANGENT MODULUS . . . . . . =',E12.4/,
389 & 5X,'HBP UNIAXIAL PLASTIC MODULUS . . . . . =',E12.4/,
390 & 5X,'HV0 INITIAL TRIAXIAL PLASTIC MODULUS. . =',E12.4/,
391 & 5X,'EPS0 EPS0 FOR HPV HARDENING . . . . . . =',E12.4/,
392 & 5X,'HVFAC REDUCTION COEFFICIENT FOR HPV . . . =',E12.4/,
393 & 5X,'ALI COMPACTANCY FACTOR AT YIELD . . . =',E12.4/,
394 & 5X,'ALF DILATANCY FACTOR AT FAILURE . . . . =',E12.4/,
395 & 5X,'VMAX MAXIMAL COMPACTION VOLUME (<0). . . =',E12.4/,
396 & 5X,' 2. REINFORCEMENT PROPERTIES ',/,
397 & 5X,'YMS YOUNG MODULUS . . . . . . . . . . . =',E12.4/,
398 & 5X,'Y0S YIELD STRESS . . . . . . . . . . . =',E12.4/,
399 & 5x,'ETS TANGENT MODULUS . . . . . . . . . . =',e12.4/,
400 & 5x,'ARM1 PERCENTAGE OF REINFORCEMENT DIR 1 . =',e12.4/,
401 & 5x,'ARM2 PERCENTAGE OF REINFORCEMENT DIR 2 . =',e12.4/,
402 & 5x,'ARM3 PERCENTAGE OF REINFORCEMENT DIR 3 . =',e12.4/,
403 & 5x,'PARAMETER A FOR OTTOSEN SURFACE. . . . . =',e12.4/,
404 & 5x,'PARAMETER BC FOR OTTOSEN SURFACE. . . . . =',e12.4/,
405 & 5x,'PARAMETER BT FOR OTTOSEN SURFACE. . . . . =',e12.4/,
406 & 5x,'PARAMETER C FOR OTTOSEN SURFACE. . . . . =',e12.4)
407 1600 FORMAT(
408 & 5x,'KY INITIAL HARDENING PARAMETER . . . . =',e12.4/,
409 & 5x,'RT FAILURE/PLASTIC TRANSITION PRES . . =',e12.4/,
410 & 5x,'RC PROPORTIONAL YIELD. . . . . . . . . =',e12.4/,
411 & 5x,'ROK BEGINNING OF CAPE . . . . . . . . . =',e12.4/,
412 & 5x,'RO0 END OF INITIAL CAPE . . . . . . . . =',e12.4/,
413 & 5x,'ETC PLASTIC TANGENT MODULUS . . . . . . =',e12.4/,
414 & 5x,'HBP UNIAXIAL PLASTIC MODULUS . . . . . =',e12.4/,
415 & 5x,'HV0 INITIAL TRIAXIAL PLASTIC MODULUS. . =',e12.4/,
416 & 5x,'ALI DILATANCY FACTOR AT YIELD . . . . . =',e12.4/,
417 & 5x,'ALF DILATANCY FACTOR AT FAILURE . . . . =',e12.4/,
418 & 5x,'VMAX MAXIMAL COMPACTION VOLUME (<0). . . =',e12.4//,
419 & 5x,' 2. REINFORCEMENT PROPERTIES ',/,
420 & 5x,'YMS YOUNG MODULUS . . . . . . . . . . . =',e12.4/,
421 & 5x,'Y0S YIELD STRESS . . . . . . . . . . . =',e12.4/,
422 & 5x,'ETS TANGENT MODULUS . . . . . . . . . . =',e12.4/,
423 & 5x,'ARM1 PERCENTAGE OF REINFORCEMENT DIR 1 . =',e12.4/,
424 & 5x,'ARM2 PERCENTAGE OF REINFORCEMENT DIR 2 . =',e12.4/,
425 & 5x,'ARM3 PERCENTAGE OF REINFORCEMENT DIR 3 . =',e12.4/,
426 & 5x,'PARAMETER A FOR OTTOSEN SURFACE. . . . . =',e12.4/,
427 & 5x,'PARAMETER BC FOR OTTOSEN SURFACE. . . . . =',e12.4/,
428 & 5x,'PARAMETER BT FOR OTTOSEN SURFACE. . . . . =',e12.4/,
429 & 5x,'PARAMETER C FOR OTTOSEN SURFACE. . . . . =',e12.4)
430C-----------------
431 RETURN
432 END
#define my_real
Definition cppsort.cpp:32
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_option_is_encrypted(is_encrypted)
subroutine hm_read_mat24(nuparam, nuvar, nfunc, ipm, pm, mtag, mat_id, titr, unitab, lsubmodel, israte, matparam)
subroutine init_mat_keyword(matparam, keyword)
#define max(a, b)
Definition macros.h:21
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