File: /nfs/home/0/users/jenkins/mfix.git/model/check_data/check_solids_continuum.f

1     !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv!
2     !                                                                      !
3     !  Subroutine: CHECK_CONTINUUM_SOLIDS                                  !
4     !  Purpose: Check kinetic the run control namelist section             !
5     !                                                                      !
6     !  Author: P. Nicoletti                               Date: 27-NOV-91  !
7     !                                                                      !
8     !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^!
9           SUBROUTINE CHECK_SOLIDS_CONTINUUM
10     
11     ! Global Variables:
12     !---------------------------------------------------------------------//
13           USE constant
14           USE run
15           USE physprop
16     
17     ! Global Parameters:
18     !---------------------------------------------------------------------//
19           USE param1, only: zero, undefined, undefined_i
20     
21     ! Global Module procedures:
22     !---------------------------------------------------------------------//
23           use error_manager
24     
25           IMPLICIT NONE
26     
27     ! Local Variables:
28     !---------------------------------------------------------------------//
29           INTEGER :: LC
30           DOUBLE PRECISION :: lsin_phi
31     
32     !......................................................................!
33     
34     
35     ! initialization of various dependent constants
36           SIN_PHI = UNDEFINED   ! friction
37           SIN2_PHI = UNDEFINED   ! schaeffer
38           F_PHI = UNDEFINED    ! commented schaeffer section
39           TAN_PHI_W = UNDEFINED   ! friction or jenkins
40     
41     ! Initialize the error manager.
42           CALL INIT_ERR_MSG("CHECK_SOLIDS_CONTINUUM")
43     
44     ! Check EP_star. This is used to populate ep_star_array which is what
45     ! should be used elsewhere in the code. (see set_constprop)
46           IF(EP_STAR == UNDEFINED) THEN
47              WRITE(ERR_MSG,1000) 'EP_STAR'
48              CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
49           ELSEIF(EP_STAR < ZERO .OR. EP_STAR > ONE) THEN
50              WRITE(ERR_MSG, 1001)'EP_STAR', iVal(EP_STAR)
51              CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
52           ENDIF
53     
54     ! CHECK MU_s0
55           IF (MU_S0 < ZERO) THEN
56              WRITE(ERR_MSG, 1001) 'MU_s0', MU_s0
57              CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
58           ENDIF
59     
60     ! CHECK DIF_s0
61           IF (DIF_S0 < ZERO) THEN
62              WRITE(ERR_MSG, 1001) 'DIF_s0', DIF_s0
63              CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
64           ENDIF
65     
66     
67     ! Constant solids viscosity is employed
68           IF (MU_S0 .NE. UNDEFINED) THEN
69     ! many of the solids phase transport coefficients that are needed for
70     ! the granular energy equation will have be skipped in calc_mu_s. so
71     ! do not evaluate granular energy if the solids viscosity is set to
72     ! a constant.
73              IF(GRANULAR_ENERGY) THEN
74                 WRITE(ERR_MSG,1100)
75                 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
76              ENDIF
77     ! needed by default solids-solids drag model
78              IF (SMAX >=2) THEN
79                 IF (C_E == UNDEFINED) THEN
80                    WRITE(ERR_MSG,1101)
81                    CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
82                 ELSEIF (C_F == UNDEFINED) THEN
83                    WRITE(ERR_MSG,1102)
84                    CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
85                 ENDIF
86              ENDIF
87           ELSE
88     ! PDE granular energy. Check kinetic theory specifications.
89              IF (GRANULAR_ENERGY) THEN
90                 CALL CHECK_KT_TYPE
91              ELSE
92     ! Algebraic granular energy equation
93                 IF (C_E == UNDEFINED) THEN
94                    WRITE(ERR_MSG,1101)
95                    CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
96                 ENDIF
97     ! needed by default solids-solids drag model. SMAX may be 1 for
98     ! hybrid simulations and C_F is still needed.
99                 IF (SMAX >=2 .OR. DEM_SOLIDS) THEN
100                    IF (C_F == UNDEFINED) THEN
101                       WRITE(ERR_MSG,1102)
102                       CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
103                    ENDIF
104                 ENDIF
105              ENDIF
106           ENDIF
107     
108      1100 FORMAT('Error 1100: Constant viscosity is specified but', /&
109              'GRANULAR_ENERGY=.TRUE. Please correct the mfix.dat file')
110      1101 FORMAT('Error 1101: Coefficient of restitution (C_E) not ',      &
111              'specified.',/'Please correct the mfix.dat file.')
112      1102 FORMAT('Error 1102: Coefficient of friction (C_F) not ',         &
113              'specified.',/'Please correct the mfix.dat file.')
114     !
115     
116     ! If frictional stress modeling check various dependent/conflicting
117     ! settings
118     
119     ! plastic/frictional stress model
120           IF (FRICTION) THEN
121              IF(SCHAEFFER) THEN
122                 WRITE(ERR_MSG, 1200)
123                 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
124     ! Check that the granular energy PDE is solved.
125              ELSEIF (.NOT.GRANULAR_ENERGY) THEN
126                 WRITE(ERR_MSG,1201)
127                 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
128     ! Check the value specified for SAVAGE.
129              ELSEIF(SAVAGE>2 .OR. SAVAGE<0) THEN
130                 WRITE(ERR_MSG, 1001)'SAVAGE', iVal(SAVAGE)
131                 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
132     ! Verify that stress blending is not turned on.
133              ELSEIF(BLENDING_STRESS) THEN
134                 WRITE(ERR_MSG, 1202)
135                 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
136              ELSEIF(PHI == UNDEFINED) THEN
137                 WRITE(ERR_MSG, 1203)
138                 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
139     ! used by friction bc
140              ELSEIF(PHI_W == UNDEFINED) THEN
141                 WRITE(ERR_MSG, 1204)
142                 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
143              ENDIF
144     ! PHI & PHI_W are given in degrees but calculated in radian within
145     ! the fortran codes
146              SIN_PHI = SIN(PHI*PI/180.D0)
147              TAN_PHI_W = TAN(PHI_W*PI/180.D0)
148           ENDIF
149      1201 FORMAT('Error 1201: The FRICTION solids stress model requires ', &
150              /,'GRANULAR_ENERGY=.TRUE. Please correct the mfix.dat file.')
151      1202 FORMAT('Error 1202: Cannot use BLENDING_STRESS with FRICTION ',&
152              /,'Please correct the mfix.dat file.')
153      1204 FORMAT('Error 1204: Angle of particle-wall friction (PHI_W) not',&
154              ' specified.',/'Please correct the mfix.dat file.')
155     
156     
157     ! plastic/frictional stress model
158           IF(SCHAEFFER) THEN
159              IF(FRICTION) THEN
160                 WRITE(ERR_MSG, 1200)
161                 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
162              ELSEIF (PHI == UNDEFINED) THEN
163                 WRITE(ERR_MSG, 1203)
164                 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
165              ENDIF
166     ! PHI is given in degrees but calculated in radian within
167     ! the fortran codes
168              lsin_phi = sin(phi*PI/180.d0)
169              SIN2_PHI = lSIN_PHI*lSIN_PHI
170              F_PHI = (3.0D0 - 2.0D0*SIN2_PHI)/3.0D0    ! employed in commented
171           ENDIF
172      1200 FORMAT('Error 1200: FRICTION and SCHAEFFER models cannot be ',&
173              'used',/'together. Please correct the mfix.dat file')
174      1203 FORMAT('Error 1203: Angle of internal friction (PHI) not ',      &
175              'specified.',/'Please correct the mfix.dat file.')
176     
177     
178           IF(YU_STANDISH .AND. FEDORS_LANDEL) THEN
179              WRITE(ERR_MSG, 1300)
180              CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
181           ELSEIF(YU_STANDISH) THEN
182     ! Yu_Standish correlation checks
183              IF(SMAX < 2) THEN
184                 WRITE(ERR_MSG, 1301)
185                 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
186              ENDIF
187           ELSEIF(FEDORS_LANDEL) THEN
188     ! Fedors_Landel correlation checks.
189              IF(SMAX /= 2) THEN
190                 WRITE(ERR_MSG, 1302)
191                 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
192              ENDIF
193           ENDIF
194      1300 FORMAT('Error 1300: FEDORS_LANDEL and YU_STANDISH correlations ',&
195              'cannot be',/'used at the same time. Please correct the ',    &
196              'mfix.dat file.')
197      1301 FORMAT('Error 1301: YU_STANDISH correlation is for polydisperse',&
198              ' mixtures',/'(MMAX >= 2). Please correct the mfix.dat file.')
199      1302 FORMAT('Error 1302: FEDORS_LANDEL correlation is for binary ',   &
200              'mixtures (MMAX=2).',/'Please correct the mfix.dat file.')
201     
202     
203     ! Set the flags for blending stresses.
204           IF(BLENDING_STRESS) THEN
205     ! Turn off the default if SIGM_BLEND is set.
206              IF(SIGM_BLEND)  TANH_BLEND = .FALSE.
207           ELSE
208              TANH_BLEND  = .FALSE.
209              SIGM_BLEND  = .FALSE.
210           ENDIF
211     
212     
213           IF(MODEL_B) THEN
214              DO LC = 1, MMAX
215                 IF(.NOT.CLOSE_PACKED(LC)) THEN
216                    WRITE(ERR_MSG, 1400) LC
217                    CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
218                 ENDIF
219              ENDDO
220           ENDIF
221      1400 FORMAT('Error 1400: Solids phase ',I2,' is not CLOSE_PACKED.',/, &
222              'All solids phases must be CLOSE_PACKED with MODEL_B=.TURE.',/ &
223              'Please correct the mfix.dat file.')
224     
225     
226     ! Check that phase number where added mass applies is properly defined.
227           IF (ADDED_MASS) THEN
228              IF(M_AM == UNDEFINED_I)THEN
229                 WRITE(ERR_MSG, 1500)
230                 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
231              ELSEIF(M_AM == 0 .OR. M_AM > MMAX) THEN
232                 WRITE(ERR_MSG,1501)
233                 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
234      1500 FORMAT('Error 1500: Must specify a disperse phase, M_AM, where ',&
235              'the',/'virtual mass applies (ADDED_MASS).',/'Please correct',&
236              ' the mfix.dat file.')
237      1501 FORMAT('Error 1501: M_AM is out of range. [1,MMAX]',/'Please ',  &
238              'correct the mfix.dat file.')
239              ENDIF
240           ENDIF
241     
242     
243     ! Check name of radial distribution function
244           SELECT CASE(trim(adjustl(RDF_TYPE)))
245     
246           CASE ('LEBOWITZ')
247              RDF_TYPE_ENUM = LEBOWITZ
248     
249           CASE ('MODIFIED_LEBOWITZ')
250              RDF_TYPE_ENUM = MODIFIED_LEBOWITZ
251     
252           CASE ('MANSOORI')
253              RDF_TYPE_ENUM = MANSOORI
254     
255           CASE ('MODIFIED_MANSOORI')
256              RDF_TYPE_ENUM = MODIFIED_MANSOORI
257     
258           CASE DEFAULT
259                 WRITE(ERR_MSG, 1600)
260                 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
261            END SELECT
262     
263      1600 FORMAT('Error 1600: Unknown RDF_TYPE',/'Please ',  &
264              'correct the mfix.dat file.')
265     
266     ! If the default (LEBOWITZ) is not set for a monodisperse case, then
267     ! flag the error and exit. Otherwise, change it to CARNAHAN-STARLING.
268           IF(MMAX == 1) THEN
269              IF(RDF_TYPE_ENUM /= LEBOWITZ) THEN
270                 WRITE(ERR_MSG, 1601) trim(adjustl(RDF_TYPE))
271                 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
272     
273      1601 FORMAT('Error 1601: The RDF_TYPE should NOT be sepecified when ',&
274              'MMAX = 1',/'because Carnahan-Starling is the only available',&
275              ' radial distribution',/'function for monodisperse systems. ',&
276              'Please correct the mfix.dat file.')
277     
278              ELSE
279                 RDF_TYPE_ENUM = CARNAHAN_STARLING
280              ENDIF
281           ENDIF
282     
283      1000 FORMAT('Error 1000: Required input not specified: ',A,/'Please ',&
284                 'correct the mfix.dat file.')
285      1001 FORMAT('Error 1001: Illegal or unphysical input: ',A,' = ',A,/   &
286              'Please correct the mfix.dat file.')
287     
288     
289           CALL FINL_ERR_MSG
290     
291     
292           RETURN
293           END SUBROUTINE CHECK_SOLIDS_CONTINUUM
294     
295     
296     
297     !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv!
298     !                                                                      !
299     !  Subroutine: CHECK_KT_TYPE                                           !
300     !  Purpose: Check kinetic theory input specifications. These checks    !
301     !  are almost all related to the KT_TYPE keyword.                      !
302     !  Notes: To enter this routine granular_energy must be true           !
303     !                                                                      !
304     !  Author: J.Musser                                   Date: 04-FEB-14  !
305     !                                                                      !
306     !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^!
307           SUBROUTINE CHECK_KT_TYPE
308     
309     
310     ! Global Variables:
311     !---------------------------------------------------------------------//
312           USE constant
313           USE run
314           USE physprop
315     
316     ! Global Parameters:
317     !---------------------------------------------------------------------//
318           USE param1, only: half, one, undefined
319     
320     ! Global Module procedures:
321     !---------------------------------------------------------------------//
322           use error_manager
323     
324           IMPLICIT NONE
325     
326     ! Local Variables:
327     !---------------------------------------------------------------------//
328     ! loop counters
329           INTEGER :: I, J
330     
331     !......................................................................!
332     
333     
334     ! Initialize the error manager.
335           CALL INIT_ERR_MSG("CHECK_KT_TYPE")
336     
337     ! These are some checks to satisfy legacy input:
338           IF (AHMADI .AND. SIMONIN) THEN
339              WRITE(ERR_MSG, 9001)
340              CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
341           ELSEIF(AHMADI) THEN
342              IF(KT_TYPE(1:6) /= 'AHMADI' .AND.                        &
343                 KT_TYPE(1:8) /= 'LUN_1984')THEN
344                 WRITE(ERR_MSG,9002)trim(KT_TYPE)
345                 CALL FLUSH_ERR_MSG(ABORT = .TRUE.)
346              ELSE
347                 KT_TYPE='AHMADI'
348              ENDIF
349           ELSEIF(SIMONIN) THEN
350              IF(KT_TYPE(1:7) /= 'SIMONIN' .AND.                       &
351                 KT_TYPE(1:8) /= 'LUN_1984')THEN
352                 WRITE(ERR_MSG,9003)trim(KT_TYPE)
353                 CALL FLUSH_ERR_MSG(ABORT = .TRUE.)
354              ELSE
355                 KT_TYPE='SIMONIN'
356              ENDIF
357           ENDIF
358      9001 FORMAT('Error 9001: Cannot specify AHMADI and SIMONIN together.',&
359              /'Please correct the mfix.dat file.')
360      9002 FORMAT('Error 9002: Cannot specify AHMADI and KT_TYPE = ',A,'.', &
361              /'Please correct the mfix.dat file.')
362      9003 FORMAT('Error 9003: Cannot specify SIMONIN and KT_TYPE = ',A,'.',&
363              /'Please correct the mfix.dat file.')
364     
365     
366     
367     ! Check for valid options for kinetic theory models (KT_TYPE)
368           SELECT CASE(trim(adjustl(KT_TYPE)))
369     
370     !``````````````````````````````````````````````````````````````````````
371           CASE ('IA_NONEP')
372              KT_TYPE_ENUM = IA_2005
373              IF (C_E == UNDEFINED) THEN
374                 WRITE(ERR_MSG,1003)
375                 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
376              ENDIF
377     
378     
379     !``````````````````````````````````````````````````````````````````````
380           CASE ('GD_99')
381              KT_TYPE_ENUM = GD_1999
382              IF (C_E == UNDEFINED) THEN
383                 WRITE(ERR_MSG,1003)
384                 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
385              ELSEIF(SMAX > 1) THEN
386                 WRITE(ERR_MSG,1002) TRIM(KT_TYPE)
387                 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
388              ENDIF
389     
390     
391     !``````````````````````````````````````````````````````````````````````
392           CASE ('GTSH')
393              KT_TYPE_ENUM = GTSH_2012
394              IF (C_E == UNDEFINED) THEN
395                 WRITE(ERR_MSG,1002)
396                 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
397              ELSEIF(SMAX > 1) THEN
398                 WRITE(ERR_MSG,1002) TRIM(KT_TYPE)
399                 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
400              ENDIF
401     
402     
403     !``````````````````````````````````````````````````````````````````````
404           CASE ('GHD')
405              KT_TYPE_ENUM = GHD_2007
406     ! This variable is only used for GHD at this point...
407     ! Define restitution coefficient matrix
408              DO I = 1, SMAX
409                 DO J = 1, SMAX
410                    IF(r_p(I,J) == UNDEFINED) THEN
411                       IF(C_E == UNDEFINED) THEN
412                          WRITE(ERR_MSG,1003)
413                          CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
414                       ELSE
415                          r_p(I,J) = C_e
416                       ENDIF
417                    ENDIF
418     ! just need to define r_p(1,2) and r_p(2,1) will be set.
419                    r_p(J,I) = r_p(I,J)
420                 ENDDO
421              ENDDO
422     
423              IF(DRAG_TYPE_ENUM /= WEN_YU .AND. DRAG_TYPE_ENUM /= HYS) THEN
424                 WRITE(ERR_MSG, 1030)
425                 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
426              ELSEIF(ADDED_MASS) THEN
427                 WRITE(ERR_MSG,1031)
428                 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
429              ELSEIF(SMAX > 2) THEN  ! not sure this is still true!
430                 WRITE(ERR_MSG, 1032)
431                 CALL FLUSH_ERR_MSG
432              ENDIF
433     
434     ! Automatically set SPECIES_EQ(MMAX) = .FALSE. to avoid potential
435     ! checks/loops over the mmax species type eqn which has no meaning
436              SPECIES_EQ(MMAX) = .FALSE.
437              NMAX_s(MMAX) = 1
438     
439     ! currently set to avoid an overflow error in write_res0
440     ! legacy variable?
441              NMAX(MMAX) = 1
442     
443      1030 FORMAT('Error 1030: KT_TYPE = "GHD" is restricted to DRAG_TYPE', &
444              'values of WEN_YU and HYS.',/'Please correct the mfix.dat ',  &
445              'file.')
446      1031 FORMAT('Error 1031: ADDED_MASS force cannot be applied with ',   &
447              'GHD theory that',/'solves for mixture equations.',/'Please', &
448              'correct the mifx.dat file.')
449      1032 FORMAT('Warning 1032: GHD theory may not be valid for more ',    &
450              'than two solids phases',/'it requires further development.')
451     
452     
453     !``````````````````````````````````````````````````````````````````````
454           CASE ('AHMADI')
455              KT_TYPE_ENUM = AHMADI_1995
456              AHMADI = .TRUE.
457              IF(.NOT.K_EPSILON) THEN
458                 WRITE(ERR_MSG,1040) 'K_EPSILON = .TRUE.'
459                 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
460              ELSEIF (C_E == UNDEFINED) THEN
461                 WRITE(ERR_MSG,1003)
462                 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
463              ELSEIF(C_F == UNDEFINED .AND. SMAX>=2) THEN
464                 WRITE(ERR_MSG, 1004)
465                 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
466              ENDIF
467      1040 FORMAT('Error 1040: KT_TYPE = "AHMADI" requires ',A,/       &
468              'Please correct the mfix.dat file.')
469     
470     
471     !``````````````````````````````````````````````````````````````````````
472           CASE ('SIMONIN')
473              KT_TYPE_ENUM = SIMONIN_1996
474              SIMONIN = .TRUE.
475              IF(.NOT.K_EPSILON) THEN
476                 WRITE(ERR_MSG,1050) 'K_EPSILON = .TRUE.'
477                 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
478              ELSEIF (C_E == UNDEFINED) THEN
479                 WRITE(ERR_MSG,1003)
480                 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
481              ELSEIF(C_F == UNDEFINED .AND. SMAX>=2) THEN
482                 WRITE(ERR_MSG, 1004)
483                 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
484              ENDIF
485      1050 FORMAT('Error 1050: KT_TYPE = "SIMONIN" requires ',A,/      &
486              'Please correct the mfix.dat file.')
487     
488     
489     ! Lun is the default implementation.
490     !``````````````````````````````````````````````````````````````````````
491           CASE ('LUN_1984')
492              KT_TYPE_ENUM = LUN_1984
493     ! this version of the restitution coefficient is needed by most KT_TYPE
494     ! models. it is also needed in default solids-solids drag model
495              IF (C_E == UNDEFINED) THEN
496                 WRITE(ERR_MSG,1003)
497                 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
498              ELSEIF(C_F == UNDEFINED .AND. SMAX>=2) THEN
499                 WRITE(ERR_MSG, 1004)
500                 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
501              ENDIF
502     
503     
504           CASE DEFAULT
505              WRITE(ERR_MSG,1001) trim(adjustl(KT_TYPE))
506              CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
507      1001 FORMAT('Error 1001: Invalid or unknown KT_TYPE: ',A,/            &
508              'Please correct the mfix.dat file.')
509     
510           END SELECT
511     
512     ! eventually this should be made specific to lun/ahmadi/simonin
513     ! but because calc_gw_hw_cw in calc_u_friction is not consistent
514     ! it currently must be defined for all kt_types whenever friction
515     ! is invoked...
516           ETA = (ONE + C_E)*HALF
517     
518     
519      1002 FORMAT('Error 1002: KT_TYPE = ',A,' is for monodisperse',&
520              ' solids',/'(MMAX = 1). Please correct the mfix.dat file.')
521     
522      1003 FORMAT('Error 1003: Coefficient of restitution (C_E) not ',      &
523              'specified.',/'Please correct the mfix.dat file.')
524     
525      1004 FORMAT('Error 1004: Coefficient of friction (C_F) not ',         &
526              'specified.',/'Please correct the mfix.dat file.')
527     
528     
529           RETURN
530           END SUBROUTINE CHECK_KT_TYPE
531