File: RELATIVE:/../../../mfix.git/model/flow_to_vel.f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 SUBROUTINE FLOW_TO_VEL_NEW(DO_VEL_CHECK, M_TOT, SKIP, BCV)
23
24 use param, only: DIM_M
25 use param1, only: UNDEFINED
26 use geometry, only: NO_I, NO_J, NO_K
27 use bc, only: BC_MASSFLOW_G
28 use bc, only: BC_VOLFLOW_G
29 use bc, only: BC_MASSFLOW_S
30 use bc, only: BC_VOLFLOW_S
31 use run, only: REINITIALIZING
32
33 use error_manager
34 use toleranc
35
36 IMPLICIT NONE
37
38
39
40 LOGICAL, intent(in) :: DO_VEL_CHECK
41
42
43 INTEGER, intent(in) :: M_TOT
44 LOGICAL, intent(in) :: SKIP(DIM_M)
45
46
47 INTEGER, intent(in) :: BCV
48
49
50 LOGICAL :: CONVERTED = .FALSE.
51
52
53 INTEGER :: M
54
55
56 CALL INIT_ERR_MSG("FLOW_TO_VEL_NEW")
57
58
59 IF(BC_MASSFLOW_G(BCV) /= UNDEFINED) &
60 CALL GAS_MASSFLOW_TO_VOLFLOW(BCV)
61
62 DO M=1,M_TOT
63 IF(BC_MASSFLOW_S(BCV,M) /= UNDEFINED) &
64 CALL SOLIDS_MASSFLOW_TO_VOLFLOW(BCV,M,SKIP(M))
65 ENDDO
66
67
68 IF(BC_VOLFLOW_G(BCV) /= UNDEFINED) THEN
69 CALL GAS_VOLFLOW_TO_VELOCITY(DO_VEL_CHECK, BCV)
70
71 = .TRUE.
72 ENDIF
73
74 DO M=1,M_TOT
75 IF(BC_VOLFLOW_S(BCV,M) /= UNDEFINED) THEN
76 CALL SOLIDS_VOLFLOW_TO_VELOCITY(DO_VEL_CHECK,BCV,M,SKIP(M))
77
78 = .TRUE.
79 ENDIF
80 ENDDO
81
82 IF(CONVERTED .AND. .NOT.REINITIALIZING .AND. &
83 (NO_I.OR.NO_J.OR.NO_K)) THEN
84 WRITE(ERR_MSG, 1100)
85 CALL FLUSH_ERR_MSG
86 ENDIF
87
88 CALL FINL_ERR_MSG
89
90 RETURN
91
92 1100 FORMAT('Warning 1100: Some volumetric or mass flow rates have ', &
93 'been converted',/'velocity. Ensure that the third (unused) ',&
94 'dimension in 2D simulations',/'is correctly specified (e.g.',&
95 ', in axisymmetric cylindrical coordinates',/'ZLENGTH = 2*Pi)')
96
97 END SUBROUTINE FLOW_TO_VEL_NEW
98
99
100
101
102
103
104
105
106
107
108
109
110 SUBROUTINE GAS_MASSFLOW_TO_VOLFLOW(BCV)
111
112 use bc, only: BC_MASSFLOW_g
113 use bc, only: BC_P_g
114 use bc, only: BC_T_g
115 use bc, only: BC_VOLFLOW_g
116 use bc, only: BC_X_g
117 use eos, only: EOSG
118 use error_manager
119 use param, only: DIMENSION_BC
120 use param1, only: UNDEFINED
121 use param1, only: ZERO
122 use physprop, only: CALC_MW
123 use physprop, only: MW_AVG, MW_g
124 use physprop, only: NMAX
125 use physprop, only: RO_g0
126 use scales, only: P_REF
127 use toleranc
128
129 IMPLICIT NONE
130
131 INTEGER, INTENT(in) :: BCV
132
133
134 DOUBLE PRECISION :: VOLFLOW
135
136 DOUBLE PRECISION :: MW
137
138 CALL INIT_ERR_MSG("GAS_MASSFLOW_TO_VOLFLOW")
139
140
141 IF(COMPARE(BC_MASSFLOW_G(BCV),ZERO)) THEN
142 VOLFLOW = ZERO
143
144
145 ELSEIF(RO_G0 /= UNDEFINED) THEN
146 VOLFLOW = BC_MASSFLOW_G(BCV)/RO_G0
147
148
149 ELSEIF(BC_P_G(BCV)/=UNDEFINED .AND. BC_T_G(BCV)/=UNDEFINED) THEN
150 IF(MW_AVG == UNDEFINED) THEN
151 MW = CALC_MW(BC_X_G,DIMENSION_BC,BCV,NMAX(0),MW_G)
152 ELSE
153 MW = MW_AVG
154 ENDIF
155 VOLFLOW = BC_MASSFLOW_G(BCV) / &
156 EOSG(MW,(BC_P_G(BCV)-P_REF),BC_T_G(BCV))
157
158
159
160 ELSE
161 WRITE(ERR_MSG, 1100) BCV
162 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
163
164 1100 FORMAT('Error 1100: Boundary condition ',I3,' failed sanity ', &
165 'check.',/'Please report this to the MFIX mailing list.')
166
167 ENDIF
168
169
170 IF(BC_VOLFLOW_G(BCV) /= UNDEFINED) THEN
171 IF(.NOT.COMPARE(VOLFLOW,BC_VOLFLOW_G(BCV))) THEN
172 WRITE(ERR_MSG,1101) trim(iVar('BC_MASSFLOW_g',BCV)), BCV, &
173 VOLFLOW, BC_VOLFLOW_g(BCV)
174 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
175 ENDIF
176 ELSE
177
178
179 (BCV) = VOLFLOW
180 ENDIF
181
182 1101 FORMAT('Error 1101: Volumetric flow rate calculated from ',A,/ &
183 'does NOT equal the specified volumetric flow rate for BC',I3,&
184 /3x,'>>> Calculated: ',G14.7,/3x,'>>> Specified: ',G14.7,/ &
185 'Please correct the mfix.dat file.')
186
187
188 CALL FINL_ERR_MSG
189
190 RETURN
191
192 END SUBROUTINE GAS_MASSFLOW_TO_VOLFLOW
193
194
195
196
197
198
199
200
201
202
203
204
205 SUBROUTINE SOLIDS_MASSFLOW_TO_VOLFLOW(BCV,M, SKIP_M)
206
207 USE bc, only: BC_MASSFLOW_s
208 USE bc, only: BC_VOLFLOW_s
209 USE bc, only: BC_X_s
210 USE param1, only: UNDEFINED, ZERO
211 USE physprop, only: BASE_ROs
212 USE physprop, only: INERT_SPECIES
213 USE physprop, only: RO_s0
214 USE physprop, only: X_s0
215 use eos, only: EOSS
216 use error_manager
217 use toleranc
218
219 IMPLICIT NONE
220
221
222 INTEGER, INTENT(in) :: BCV, M
223 LOGICAL, INTENT(in) :: SKIP_M
224
225
226 DOUBLE PRECISION :: VOLFLOW
227
228 INTEGER :: INERT
229
230 CALL INIT_ERR_MSG("SOLIDS_MASSFLOW_TO_VOLFLOW")
231
232
233 IF(SKIP_M) THEN
234 WRITE(ERR_MSG,1100) M, BCV, trim(iVar("BC_MASSFLOW_S",BCV,M))
235 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
236 ENDIF
237
238 1100 FORMAT('Error 1100: Solids phase ',I2,' has a specified mass ', &
239 'flow rate',/'at BC ',I3,', ',A,'. But, both BC_ROP_s and ',&
240 'BC_EP_s are zero or undefined.',/'Please correct the ',&
241 'mfix.dat file.')
242
243 IF(COMPARE(BC_MASSFLOW_S(BCV,M),ZERO)) THEN
244 VOLFLOW = ZERO
245
246 ELSEIF(RO_S0(M) /= UNDEFINED) THEN
247 VOLFLOW = BC_MASSFLOW_S(BCV,M)/RO_S0(M)
248 ELSE
249
250 = INERT_SPECIES(M)
251
252 = BC_MASSFLOW_S(BCV,M)/EOSS(BASE_ROs(M), &
253 X_s0(M,INERT), BC_X_S(BCV,M,INERT))
254 ENDIF
255
256
257 IF(BC_VOLFLOW_S(BCV,M) /= UNDEFINED) THEN
258 IF(.NOT.COMPARE(VOLFLOW,BC_VOLFLOW_S(BCV,M))) THEN
259 WRITE(ERR_MSG,1101) trim(iVar('BC_MASSFLOW_S',BCV,M)), BCV, &
260 VOLFLOW, BC_VOLFLOW_S(BCV,M)
261 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
262 ENDIF
263 ELSE
264 BC_VOLFLOW_S(BCV,M) = VOLFLOW
265 ENDIF
266
267 CALL FINL_ERR_MSG
268
269 RETURN
270
271 1101 FORMAT('Error 1101: Volumetric flow rate calculated from ',A,/ &
272 'does NOT equal the specified volumetric flow rate for BC',I3,&
273 /3x,'>>> Calculated: ',G14.7,/3x,'>>> Specified: ',G14.7,/ &
274 'Please correct the mfix.dat file.')
275
276
277 END SUBROUTINE SOLIDS_MASSFLOW_TO_VOLFLOW
278
279
280
281
282
283
284
285
286
287
288
289
290 SUBROUTINE GAS_VOLFLOW_TO_VELOCITY(DO_VEL_CHECK, BCV)
291
292 USE param
293 USE param1
294 USE geometry
295 USE fldvar
296 USE physprop
297 USE run
298 USE bc
299 USE scales
300 USE indices
301 USE funits
302 USE compar
303 USE discretelement
304 USE mfix_pic
305
306 use error_manager
307 use toleranc
308
309 IMPLICIT NONE
310
311
312
313
314 INTEGER, INTENT(in) :: BCV
315
316
317 LOGICAL, INTENT(in) :: DO_VEL_CHECK
318
319
320 DOUBLE PRECISION :: SGN, OFF
321
322
323 DOUBLE PRECISION :: VEL
324
325 CALL INIT_ERR_MSG("GAS_VOLFLOW_TO_VELOCITY")
326
327 SELECT CASE (trim(BC_TYPE(BCV)))
328 CASE ('MASS_INFLOW'); SGN = ONE; OFF = ZERO
329 CASE ('MASS_OUTFLOW'); SGN = -ONE; OFF = ONE
330 CASE DEFAULT
331 write(*,*) 'error in GAS_VOLFLOW_TO_VELOCITY'
332 call mfix_exit(myPE)
333 END SELECT
334
335 SELECT CASE (BC_PLANE(BCV))
336 CASE ('W'); SGN = -SGN
337 CASE ('S'); SGN = -SGN
338 CASE ('B'); SGN = -SGN
339 END SELECT
340
341
342
343 = SGN*BC_VOLFLOW_G(BCV)/(BC_AREA(BCV)*BC_EP_G(BCV))
344
345
346
347
348
349
350 IF(BC_PLANE(BCV) == 'W' .OR. BC_PLANE(BCV)== 'E') THEN
351
352 IF(BC_U_G(BCV) /= UNDEFINED .AND. DO_VEL_CHECK) THEN
353 IF(.NOT.COMPARE(VEL,BC_U_G(BCV))) THEN
354 WRITE(ERR_MSG,1100) BCV, VEL, 'BC_U_g', BC_U_G(BCV)
355 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
356 ENDIF
357 ELSE
358 BC_U_G(BCV) = VEL
359 BC_V_G(BCV) = OFF * BC_V_G(BCV)
360 BC_W_G(BCV) = OFF * BC_W_G(BCV)
361 ENDIF
362
363 ELSEIF(BC_PLANE(BCV) == 'S' .OR. BC_PLANE(BCV)== 'N') THEN
364 IF(BC_V_G(BCV) /= UNDEFINED .AND. DO_VEL_CHECK) THEN
365 IF(.NOT.COMPARE(VEL,BC_V_G(BCV))) THEN
366 WRITE(ERR_MSG, 1100) BCV, VEL, 'BC_V_g', BC_V_G(BCV)
367 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
368 ENDIF
369 ELSE
370 BC_V_G(BCV) = VEL
371 BC_U_G(BCV) = OFF * BC_U_G(BCV)
372 BC_W_G(BCV) = OFF * BC_W_G(BCV)
373 ENDIF
374
375 ELSEIF(BC_PLANE(BCV) == 'B' .OR. BC_PLANE(BCV)== 'T') THEN
376 IF(BC_W_G(BCV) /= UNDEFINED .AND. DO_VEL_CHECK) THEN
377 IF(.NOT.COMPARE(VEL, BC_W_G(BCV))) THEN
378 WRITE(ERR_MSG, 1100) BCV, VEL, 'BC_W_g', BC_W_G(BCV)
379 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
380 ENDIF
381 ELSE
382 BC_W_G(BCV) = VEL
383 BC_U_G(BCV) = OFF * BC_U_G(BCV)
384 BC_V_G(BCV) = OFF * BC_V_G(BCV)
385 ENDIF
386
387 ENDIF
388
389 CALL FINL_ERR_MSG
390
391 RETURN
392
393 1100 FORMAT(/1X,70('*')//' From: FLOW_TO_VEL',/' Message: BC No:',I2,/,&
394 ' Computed velocity is not equal to specified value',/,&
395 ' Value computed from vol. or mass flow = ',G14.7,/,&
396 ' Specified value (',A,') = ',G14.7,/1X,70('*')/)
397
398 END SUBROUTINE GAS_VOLFLOW_TO_VELOCITY
399
400
401
402
403
404
405
406
407
408
409
410
411 SUBROUTINE SOLIDS_VOLFLOW_TO_VELOCITY(DO_VEL_CHECK, BCV, M, SKIP_M)
412
413 USE param
414 USE param1
415 USE geometry
416 USE fldvar
417 USE physprop
418 USE run
419 USE bc
420 USE scales
421 USE indices
422 USE funits
423 USE compar
424 USE discretelement
425 USE mfix_pic
426
427 use error_manager
428 use toleranc
429
430 IMPLICIT NONE
431
432
433
434
435 INTEGER, INTENT(in) :: BCV, M
436
437 LOGICAL, INTENT(in) :: DO_VEL_CHECK, SKIP_M
438
439
440 DOUBLE PRECISION :: VEL
441
442 DOUBLE PRECISION :: SGN, OFF
443
444
445
446 CALL INIT_ERR_MSG("SOLIDS_VOLFLOW_TO_VELOCITY")
447
448 IF(SKIP_M) THEN
449 WRITE(ERR_MSG,1100) M, BCV, trim(iVar("BC_VOLFLOW_S",BCV,M))
450 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
451 ENDIF
452
453 1100 FORMAT('Error 1100: Solids phase ',I2,' has a specified ', &
454 'volumetric flow rate',/'at BC ',I3,', ',A,'. But, both ',&
455 'BC_ROP_s and BC_EP_s are zero or undefined.',/'Please ',&
456 'the mfix.dat file.')
457
458 SELECT CASE (trim(BC_TYPE(BCV)))
459 CASE ('MASS_INFLOW'); SGN = ONE; OFF = ZERO
460 CASE ('MASS_OUTFLOW'); SGN = -ONE; OFF = ONE
461 CASE DEFAULT
462 write(*,*) 'error in SOLIDS_VOLFLOW_TO_VELOCITY'
463 call mfix_exit(myPE)
464 END SELECT
465
466 SELECT CASE (BC_PLANE(BCV))
467 CASE ('W'); SGN = -SGN
468 CASE ('S'); SGN = -SGN
469 CASE ('B'); SGN = -SGN
470 END SELECT
471
472 IF(BC_EP_S(BCV,M) /= ZERO) THEN
473 VEL = SGN * BC_VOLFLOW_S(BCV,M)/(BC_AREA(BCV)*BC_EP_S(BCV,M))
474 ELSE
475 IF(BC_VOLFLOW_S(BCV,M) == ZERO) THEN
476 VEL = ZERO
477 ELSE
478 IF(DMP_LOG)WRITE (UNIT_LOG, 1101) BCV, M
479 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
480 ENDIF
481 ENDIF
482
483 1101 FORMAT('Error 1101: BC No:',I2,' Non-zero vol. or mass flow ',&
484 'specified with BC_ROP_s', I1,' = 0.')
485
486 IF(BC_PLANE(BCV) == 'W' .OR. BC_PLANE(BCV)== 'E') THEN
487 IF(BC_U_S(BCV,M) /= UNDEFINED .AND. DO_VEL_CHECK) THEN
488 IF(.NOT.COMPARE(VEL, BC_U_S(BCV,M))) THEN
489 WRITE(ERR_MSG, 1300) BCV, (-VEL), 'BC_U_s', M, BC_U_S(BCV,M)
490 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
491 ENDIF
492 ELSE
493 BC_U_S(BCV,M) = VEL
494 BC_V_S(BCV,M) = OFF * BC_V_S(BCV,M)
495 BC_W_S(BCV,M) = OFF * BC_W_S(BCV,M)
496 ENDIF
497
498 ELSEIF(BC_PLANE(BCV) == 'S' .OR. BC_PLANE(BCV)== 'N') THEN
499 IF(BC_V_S(BCV,M) /= UNDEFINED .AND. DO_VEL_CHECK) THEN
500 IF(.NOT.COMPARE(VEL,BC_V_S(BCV,M))) THEN
501 WRITE(ERR_MSG,1300) BCV, VEL, 'BC_V_s', M, BC_V_S(BCV,M)
502 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
503 ENDIF
504 ELSE
505 BC_V_S(BCV,M) = VEL
506 BC_U_S(BCV,M) = OFF * BC_U_S(BCV,M)
507 BC_W_S(BCV,M) = OFF * BC_W_S(BCV,M)
508 ENDIF
509
510 ELSEIF(BC_PLANE(BCV) == 'B' .OR. BC_PLANE(BCV)== 'T') THEN
511 IF(BC_W_S(BCV,M) /= UNDEFINED .AND. DO_VEL_CHECK) THEN
512 IF(.NOT.COMPARE(VEL,BC_W_S(BCV,M))) THEN
513 WRITE(ERR_MSG, 1300) BCV, VEL, 'BC_W_s', M, BC_W_S(BCV,M)
514 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
515 ENDIF
516 ELSE
517 BC_W_S(BCV,M) = VEL
518 BC_U_S(BCV,M) = OFF * BC_U_S(BCV,M)
519 BC_V_S(BCV,M) = OFF * BC_V_S(BCV,M)
520 ENDIF
521 ENDIF
522
523
524 CALL FINL_ERR_MSG
525
526 RETURN
527
528 1300 FORMAT(/1X,70('*')//' From: FLOW_TO_VEL',/' Message: BC No:',I2,/,&
529 ' Computed velocity is not equal to specified value',/,&
530 ' Value computed from vol. or mass flow = ',G14.7,/,&
531 ' Specified value (',A,I1,') = ',G14.7,/1X,70('*')/)
532
533 END SUBROUTINE SOLIDS_VOLFLOW_TO_VELOCITY
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639 SUBROUTINE FLOW_TO_VEL(DO_VEL_CHECK)
640
641
642
643
644 USE bc
645 USE compar
646 USE discretelement
647 USE eos, ONLY: EOSG, EOSS
648 USE fldvar
649 USE funits
650 USE geometry
651 USE indices
652 USE mfix_pic
653 USE param
654 USE param1
655 USE physprop
656 USE run
657 USE scales
658 USE toleranc
659
660 IMPLICIT NONE
661
662
663
664
665 INTEGER :: BCV, M
666
667 DOUBLE PRECISION :: VOLFLOW
668
669 DOUBLE PRECISION :: VEL
670
671 DOUBLE PRECISION :: EPS
672
673 LOGICAL :: CONVERTED,DO_VEL_CHECK
674
675 DOUBLE PRECISION :: MW
676
677 INTEGER :: INERT
678
679 DOUBLE PRECISION :: BC_ROs
680
681
682
683
684
685
686
687
688
689
690
691
692
693 = UNDEFINED
694
695 CONVERTED = .FALSE.
696 DO BCV = 1, DIMENSION_BC
697 IF (BC_DEFINED(BCV)) THEN
698 IF (BC_TYPE(BCV)=='MASS_INFLOW' .OR.&
699 BC_TYPE(BCV)=='MASS_OUTFLOW') THEN
700
701
702
703 IF (BC_MASSFLOW_G(BCV) /= UNDEFINED) THEN
704 IF (RO_G0 /= UNDEFINED) THEN
705 VOLFLOW = BC_MASSFLOW_G(BCV)/RO_G0
706 ELSE
707 IF (BC_P_G(BCV)/=UNDEFINED .AND. &
708 BC_T_G(BCV)/=UNDEFINED) THEN
709 IF (MW_AVG == UNDEFINED) THEN
710 MW = CALC_MW(BC_X_G,DIMENSION_BC,BCV,NMAX(0),MW_G)
711 ELSE
712 MW = MW_AVG
713 ENDIF
714 VOLFLOW = BC_MASSFLOW_G(BCV)/&
715 EOSG(MW,(BC_P_G(BCV)-P_REF),BC_T_G(BCV))
716
717 ELSE
718
719
720
721
722
723
724
725 IF (BC_TYPE(BCV) == 'MASS_OUTFLOW') THEN
726
727
728
729
730
731 IF (BC_MASSFLOW_G(BCV) == ZERO) THEN
732 VOLFLOW = ZERO
733 ELSEIF (BC_PLANE(BCV)=='W' .OR. &
734 BC_PLANE(BCV)=='E') THEN
735 IF (BC_U_G(BCV)==UNDEFINED .OR. &
736 BC_U_G(BCV)/=ZERO) THEN
737 IF(DMP_LOG)WRITE (UNIT_LOG, 1010)&
738 BCV, 'BC_U_g'
739 call mfix_exit(myPE)
740 ENDIF
741 ELSEIF (BC_PLANE(BCV)=='N' .OR. &
742 BC_PLANE(BCV)=='S') THEN
743 IF (BC_V_G(BCV)==UNDEFINED .OR. &
744 BC_V_G(BCV)/=ZERO) THEN
745 IF(DMP_LOG)WRITE (UNIT_LOG, 1010) &
746 BCV, 'BC_V_g'
747 call mfix_exit(myPE)
748 ENDIF
749 ELSEIF (BC_PLANE(BCV)=='T' .OR. &
750 BC_PLANE(BCV)=='B') THEN
751 IF (BC_W_G(BCV)==UNDEFINED .OR. &
752 BC_W_G(BCV)/=ZERO) THEN
753 IF(DMP_LOG)WRITE (UNIT_LOG, 1010) &
754 BCV, 'BC_W_g'
755 call mfix_exit(myPE)
756 ENDIF
757 ENDIF
758 ELSE
759
760 IF(DMP_LOG)WRITE (UNIT_LOG, 1020) BCV
761 call mfix_exit(myPE)
762 ENDIF
763 ENDIF
764 ENDIF
765
766
767 IF (BC_VOLFLOW_G(BCV) /= UNDEFINED) THEN
768
769
770 IF (.NOT.COMPARE(VOLFLOW,BC_VOLFLOW_G(BCV))) THEN
771 IF(DMP_LOG)WRITE (UNIT_LOG, 1000) BCV, &
772 VOLFLOW, BC_VOLFLOW_G(BCV)
773 call mfix_exit(myPE)
774 ENDIF
775 ELSE
776 BC_VOLFLOW_G(BCV) = VOLFLOW
777 ENDIF
778 ENDIF
779
780
781
782
783
784 IF (BC_VOLFLOW_G(BCV) /= UNDEFINED) THEN
785
786 IF (BC_EP_G(BCV) /= UNDEFINED) THEN
787
788
789
790 = BC_VOLFLOW_G(BCV)/(BC_AREA(BCV)*BC_EP_G(BCV))
791 ELSE
792
793
794
795
796
797 RETURN
798 ENDIF
799
800
801
802
803
804
805 = .TRUE.
806 SELECT CASE (TRIM(BC_PLANE(BCV)))
807 CASE ('W')
808 IF (BC_U_G(BCV) /= UNDEFINED.AND.DO_VEL_CHECK) THEN
809 IF (BC_TYPE(BCV)=='MASS_INFLOW' .AND. &
810 .NOT.COMPARE((-VEL),BC_U_G(BCV))) THEN
811 IF(DMP_LOG) WRITE (UNIT_LOG, 1100) BCV,&
812 (-VEL), 'BC_U_g', BC_U_G(BCV)
813 call mfix_exit(myPE)
814 ENDIF
815 IF (BC_TYPE(BCV)=='MASS_OUTFLOW' .AND. &
816 .NOT.COMPARE(VEL,BC_U_G(BCV))) THEN
817 IF(DMP_LOG) WRITE (UNIT_LOG, 1100) BCV, &
818 VEL, 'BC_U_g', BC_U_G(BCV)
819 call mfix_exit(myPE)
820 ENDIF
821 ELSE
822 IF (BC_TYPE(BCV) == 'MASS_INFLOW') THEN
823 BC_U_G(BCV) = -VEL
824 BC_V_G(BCV) = ZERO
825 BC_W_G(BCV) = ZERO
826 ELSE
827 BC_U_G(BCV) = VEL
828 ENDIF
829 ENDIF
830 CASE ('E')
831 IF (BC_U_G(BCV) /= UNDEFINED.AND.DO_VEL_CHECK) THEN
832 IF (BC_TYPE(BCV)=='MASS_INFLOW' .AND. &
833 .NOT.COMPARE(VEL,BC_U_G(BCV))) THEN
834 IF(DMP_LOG) WRITE (UNIT_LOG, 1100) BCV, VEL,&
835 'BC_U_g', BC_U_G(BCV)
836 call mfix_exit(myPE)
837 ENDIF
838 IF (BC_TYPE(BCV)=='MASS_OUTFLOW' .AND. &
839 .NOT.COMPARE((-VEL),BC_U_G(BCV))) THEN
840 IF(DMP_LOG) WRITE (UNIT_LOG, 1100) BCV, &
841 (-VEL), 'BC_U_g', BC_U_G(BCV)
842 call mfix_exit(myPE)
843 ENDIF
844 ELSE
845 IF (BC_TYPE(BCV) == 'MASS_INFLOW') THEN
846 BC_U_G(BCV) = VEL
847 BC_V_G(BCV) = ZERO
848 BC_W_G(BCV) = ZERO
849 ELSE
850 BC_U_G(BCV) = -VEL
851 ENDIF
852 ENDIF
853 CASE ('S')
854 IF (BC_V_G(BCV) /= UNDEFINED.AND.DO_VEL_CHECK) THEN
855 IF (BC_TYPE(BCV)=='MASS_INFLOW' .AND. &
856 .NOT.COMPARE((-VEL),BC_V_G(BCV))) THEN
857 IF(DMP_LOG) WRITE (UNIT_LOG, 1100) BCV,&
858 (-VEL), 'BC_V_g', BC_V_G(BCV)
859 call mfix_exit(myPE)
860 ENDIF
861 IF (BC_TYPE(BCV)=='MASS_OUTFLOW' .AND. &
862 .NOT.COMPARE(VEL,BC_V_G(BCV))) THEN
863 IF(DMP_LOG) WRITE (UNIT_LOG, 1100) BCV, VEL,&
864 'BC_V_g', BC_V_G(BCV)
865 call mfix_exit(myPE)
866 ENDIF
867 ELSE
868 IF (BC_TYPE(BCV) == 'MASS_INFLOW') THEN
869 BC_U_G(BCV) = ZERO
870 BC_V_G(BCV) = -VEL
871 BC_W_G(BCV) = ZERO
872 ELSE
873 BC_V_G(BCV) = VEL
874 ENDIF
875 ENDIF
876 CASE ('N')
877 IF (BC_V_G(BCV) /= UNDEFINED.AND.DO_VEL_CHECK) THEN
878 IF (BC_TYPE(BCV)=='MASS_INFLOW' .AND. &
879 .NOT.COMPARE(VEL,BC_V_G(BCV))) THEN
880 IF(DMP_LOG) WRITE (UNIT_LOG, 1100) BCV, VEL,&
881 'BC_V_g', BC_V_G(BCV)
882 call mfix_exit(myPE)
883 ENDIF
884 IF (BC_TYPE(BCV)=='MASS_OUTFLOW' .AND. &
885 .NOT.COMPARE((-VEL),BC_V_G(BCV))) THEN
886 IF(DMP_LOG) WRITE (UNIT_LOG, 1100) BCV, &
887 (-VEL), 'BC_V_g', BC_V_G(BCV)
888 call mfix_exit(myPE)
889 ENDIF
890 ELSE
891 IF (BC_TYPE(BCV) == 'MASS_INFLOW') THEN
892 BC_U_G(BCV) = ZERO
893 BC_V_G(BCV) = VEL
894 BC_W_G(BCV) = ZERO
895 ELSE
896 BC_V_G(BCV) = -VEL
897 ENDIF
898 ENDIF
899 CASE ('B')
900 IF (BC_W_G(BCV) /= UNDEFINED.AND.DO_VEL_CHECK) THEN
901 IF (BC_TYPE(BCV)=='MASS_INFLOW' .AND. &
902 .NOT.COMPARE((-VEL),BC_W_G(BCV))) THEN
903 IF(DMP_LOG)WRITE (UNIT_LOG, 1100) BCV,&
904 (-VEL), 'BC_W_g', BC_W_G(BCV)
905 call mfix_exit(myPE)
906 ENDIF
907 IF (BC_TYPE(BCV)=='MASS_OUTFLOW' .AND. &
908 .NOT.COMPARE(VEL,BC_W_G(BCV))) THEN
909 IF(DMP_LOG) WRITE (UNIT_LOG, 1100) BCV, VEL,&
910 'BC_W_g', BC_W_G(BCV)
911 call mfix_exit(myPE)
912 ENDIF
913 ELSE
914 IF (BC_TYPE(BCV) == 'MASS_INFLOW') THEN
915 BC_U_G(BCV) = ZERO
916 BC_V_G(BCV) = ZERO
917 BC_W_G(BCV) = -VEL
918 ELSE
919 BC_W_G(BCV) = VEL
920 ENDIF
921 ENDIF
922 CASE ('T')
923 IF (BC_W_G(BCV) /= UNDEFINED.AND.DO_VEL_CHECK) THEN
924 IF (BC_TYPE(BCV)=='MASS_INFLOW' .AND. &
925 .NOT.COMPARE(VEL,BC_W_G(BCV))) THEN
926 IF(DMP_LOG) WRITE (UNIT_LOG, 1100) BCV, VEL,&
927 'BC_W_g', BC_W_G(BCV)
928 call mfix_exit(myPE)
929 ENDIF
930 IF (BC_TYPE(BCV)=='MASS_OUTFLOW' .AND. &
931 .NOT.COMPARE((-VEL),BC_W_G(BCV))) THEN
932 IF(DMP_LOG) WRITE (UNIT_LOG, 1100) BCV,&
933 (-VEL), 'BC_W_g', BC_W_G(BCV)
934 call mfix_exit(myPE)
935 ENDIF
936 ELSE
937 IF (BC_TYPE(BCV) == 'MASS_INFLOW') THEN
938 BC_U_G(BCV) = ZERO
939 BC_V_G(BCV) = ZERO
940 BC_W_G(BCV) = VEL
941 ELSE
942 BC_W_G(BCV) = -VEL
943 ENDIF
944 ENDIF
945 END SELECT
946 ENDIF
947
948
949
950 IF (.NOT.DISCRETE_ELEMENT .OR. (DISCRETE_ELEMENT &
951 .AND. DES_CONTINUUM_HYBRID).OR. (DISCRETE_ELEMENT &
952 .AND. MPPIC)) THEN
953
954
955
956
957
958
959 DO M = 1, SMAX
960
961
962 = UNDEFINED
963 BC_ROs = UNDEFINED
964
965 IF((BC_MASSFLOW_S(BCV,M) /= UNDEFINED) .OR. &
966 (BC_VOLFLOW_S(BCV,M) /= UNDEFINED)) THEN
967
968
969 = UNDEFINED
970 IF(SOLVE_ROs(M))THEN
971 INERT = INERT_SPECIES(M)
972
973
974 IF(BC_X_S(BCV,M,INERT) == ZERO) THEN
975 IF(BC_ROP_S(BCV,M) /= ZERO) THEN
976 IF(DMP_LOG) THEN
977 WRITE(*,1401) M, BCV
978 WRITE(UNIT_LOG,1401) M, BCV
979 ENDIF
980 CALL MFIX_EXIT(myPE)
981 ELSE
982
983 = BASE_ROs(M)
984 ENDIF
985 ELSE
986
987 = EOSS(BASE_ROs(M),X_s0(M,INERT), &
988 BC_X_S(BCV,M,INERT))
989 ENDIF
990 ELSE
991 BC_ROs = RO_S0(M)
992 ENDIF
993 ELSE
994
995 = RO_S0(M)
996 ENDIF
997
998
999
1000
1001 IF (BC_MASSFLOW_S(BCV,M) /= UNDEFINED) THEN
1002
1003
1004 IF(BC_ROs <= ZERO .OR. BC_ROs==UNDEFINED) THEN
1005 IF(DMP_LOG)THEN
1006 WRITE(*,1401) M, BCV
1007 WRITE(UNIT_LOG,1401) M, BCV
1008 ENDIF
1009 CALL MFIX_EXIT(myPE)
1010 ENDIF
1011
1012 VOLFLOW = BC_MASSFLOW_S(BCV,M)/BC_ROs
1013
1014
1015 IF (BC_VOLFLOW_S(BCV,M) /= UNDEFINED) THEN
1016 IF (.NOT.COMPARE(VOLFLOW,BC_VOLFLOW_S(BCV,M))) THEN
1017 IF(DMP_LOG) WRITE(UNIT_LOG,1200) &
1018 BCV,VOLFLOW,M,BC_VOLFLOW_S(BCV,M)
1019 call mfix_exit(myPE)
1020 ENDIF
1021 ELSE
1022 BC_VOLFLOW_S(BCV,M) = VOLFLOW
1023 ENDIF
1024 ENDIF
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034 IF (BC_ROP_S(BCV,M) == UNDEFINED .AND. &
1035 BC_EP_G(BCV) /= UNDEFINED ) THEN
1036 IF (BC_EP_G(BCV) == ONE) THEN
1037 BC_ROP_S(BCV,M) = ZERO
1038 ELSEIF (SMAX == 1 .AND. &
1039 .NOT.DES_CONTINUUM_HYBRID) THEN
1040
1041
1042 IF(BC_ROs <= ZERO .OR. BC_ROs==UNDEFINED) THEN
1043 IF(DMP_LOG)THEN
1044 WRITE(*,1401) M, BCV
1045 WRITE(UNIT_LOG,1401) M, BCV
1046 ENDIF
1047 CALL MFIX_EXIT(myPE)
1048 ENDIF
1049
1050
1051
1052
1053 (BCV,M) = (ONE - BC_EP_G(BCV))*BC_ROs
1054 ENDIF
1055 ENDIF
1056
1057
1058
1059
1060
1061 IF (BC_VOLFLOW_S(BCV,M) /= UNDEFINED) THEN
1062
1063
1064 IF(BC_ROs <= ZERO .OR. BC_ROs==UNDEFINED) THEN
1065 IF(DMP_LOG)THEN
1066 WRITE(*,1401) M, BCV
1067 WRITE(UNIT_LOG,1401) M, BCV
1068 ENDIF
1069 CALL MFIX_EXIT(myPE)
1070 ENDIF
1071
1072 IF (BC_ROP_S(BCV,M) /= UNDEFINED) THEN
1073 EPS = BC_ROP_S(BCV,M)/BC_ROs
1074
1075
1076
1077 IF (EPS /= ZERO) THEN
1078 VEL = BC_VOLFLOW_S(BCV,M)/(BC_AREA(BCV)*EPS)
1079 ELSE
1080 IF (BC_VOLFLOW_S(BCV,M) == ZERO) THEN
1081 VEL = ZERO
1082 ELSE
1083 IF(DMP_LOG)WRITE (UNIT_LOG, 1250) BCV, M
1084 call mfix_exit(myPE)
1085 ENDIF
1086 ENDIF
1087 ELSE
1088 IF (BC_VOLFLOW_S(BCV,M) == ZERO) THEN
1089 VEL = ZERO
1090 ELSE
1091
1092
1093 IF(DMP_LOG)WRITE (UNIT_LOG, 1260) BCV, M
1094 call mfix_exit(myPE)
1095 ENDIF
1096 ENDIF
1097
1098
1099
1100
1101
1102
1103 = .TRUE.
1104 SELECT CASE (TRIM(BC_PLANE(BCV)))
1105 CASE ('W')
1106 IF (BC_U_S(BCV,M) /= UNDEFINED.AND.DO_VEL_CHECK) THEN
1107 IF (BC_TYPE(BCV)=='MASS_INFLOW' .AND. &
1108 .NOT.COMPARE((-VEL),BC_U_S(BCV,M))) THEN
1109 IF(DMP_LOG)WRITE (UNIT_LOG, 1300) BCV, &
1110 (-VEL), 'BC_U_s', M, BC_U_S(BCV,M)
1111 call mfix_exit(myPE)
1112 ENDIF
1113 IF (BC_TYPE(BCV)=='MASS_OUTFLOW' .AND. &
1114 .NOT.COMPARE(VEL,BC_U_S(BCV,M))) THEN
1115 IF(DMP_LOG)WRITE (UNIT_LOG, 1300) BCV, &
1116 VEL, 'BC_U_s', M, BC_U_S(BCV,M)
1117 call mfix_exit(myPE)
1118 ENDIF
1119 ELSE
1120 IF (BC_TYPE(BCV) == 'MASS_INFLOW') THEN
1121 BC_U_S(BCV,M) = -VEL
1122 BC_V_S(BCV,M) = ZERO
1123 BC_W_S(BCV,M) = ZERO
1124 ELSE
1125 BC_U_S(BCV,M) = VEL
1126 ENDIF
1127 ENDIF
1128 CASE ('E')
1129 IF (BC_U_S(BCV,M) /= UNDEFINED.AND.DO_VEL_CHECK) THEN
1130 IF (BC_TYPE(BCV)=='MASS_INFLOW' .AND. &
1131 .NOT.COMPARE(VEL,BC_U_S(BCV,M))) THEN
1132 IF(DMP_LOG)WRITE (UNIT_LOG, 1300) BCV, &
1133 VEL, 'BC_U_s', M, BC_U_S(BCV,M)
1134 call mfix_exit(myPE)
1135 ENDIF
1136 IF (BC_TYPE(BCV)=='MASS_OUTFLOW' .AND. &
1137 .NOT.COMPARE((-VEL),BC_U_S(BCV,M))) THEN
1138 IF(DMP_LOG)WRITE (UNIT_LOG, 1300) BCV, &
1139 (-VEL), 'BC_U_s', M, BC_U_S(BCV,M)
1140 call mfix_exit(myPE)
1141 ENDIF
1142 ELSE
1143 IF (BC_TYPE(BCV) == 'MASS_INFLOW') THEN
1144 BC_U_S(BCV,M) = VEL
1145 BC_V_S(BCV,M) = ZERO
1146 BC_W_S(BCV,M) = ZERO
1147 ELSE
1148 BC_U_S(BCV,M) = -VEL
1149 ENDIF
1150 ENDIF
1151 CASE ('S')
1152 IF (BC_V_S(BCV,M) /= UNDEFINED.AND.DO_VEL_CHECK) THEN
1153 IF (BC_TYPE(BCV)=='MASS_INFLOW' .AND. &
1154 .NOT.COMPARE((-VEL),BC_V_S(BCV,M))) THEN
1155 IF(DMP_LOG)WRITE (UNIT_LOG, 1300) BCV, &
1156 (-VEL), 'BC_V_s', M, BC_V_S(BCV,M)
1157 call mfix_exit(myPE)
1158 ENDIF
1159 IF (BC_TYPE(BCV)=='MASS_OUTFLOW' .AND. &
1160 .NOT.COMPARE(VEL,BC_V_S(BCV,M))) THEN
1161 IF(DMP_LOG)WRITE (UNIT_LOG, 1300) BCV, &
1162 VEL, 'BC_V_s', M, BC_V_S(BCV,M)
1163 call mfix_exit(myPE)
1164 ENDIF
1165 ELSE
1166 IF (BC_TYPE(BCV) == 'MASS_INFLOW') THEN
1167 BC_U_S(BCV,M) = ZERO
1168 BC_V_S(BCV,M) = -VEL
1169 BC_W_S(BCV,M) = ZERO
1170 ELSE
1171 BC_V_S(BCV,M) = VEL
1172 ENDIF
1173 ENDIF
1174 CASE ('N')
1175 IF (BC_V_S(BCV,M) /= UNDEFINED.AND.DO_VEL_CHECK) THEN
1176 IF (BC_TYPE(BCV)=='MASS_INFLOW' .AND. &
1177 .NOT.COMPARE(VEL,BC_V_S(BCV,M))) THEN
1178 IF(DMP_LOG)WRITE (UNIT_LOG, 1300) BCV, &
1179 VEL, 'BC_V_s', M, BC_V_S(BCV,M)
1180 call mfix_exit(myPE)
1181 ENDIF
1182 IF (BC_TYPE(BCV)=='MASS_OUTFLOW' .AND. &
1183 .NOT.COMPARE((-VEL),BC_V_S(BCV,M))) THEN
1184 IF(DMP_LOG)WRITE (UNIT_LOG, 1300) BCV, &
1185 (-VEL), 'BC_V_s', M, BC_V_S(BCV,M)
1186 call mfix_exit(myPE)
1187 ENDIF
1188 ELSE
1189 IF (BC_TYPE(BCV) == 'MASS_INFLOW') THEN
1190 BC_U_S(BCV,M) = ZERO
1191 BC_V_S(BCV,M) = VEL
1192 BC_W_S(BCV,M) = ZERO
1193 ELSE
1194 BC_V_S(BCV,M) = -VEL
1195 ENDIF
1196 ENDIF
1197 CASE ('B')
1198 IF (BC_W_S(BCV,M) /= UNDEFINED.AND.DO_VEL_CHECK) THEN
1199 IF (BC_TYPE(BCV)=='MASS_INFLOW' .AND. &
1200 .NOT.COMPARE((-VEL),BC_W_S(BCV,M))) THEN
1201 IF(DMP_LOG)WRITE (UNIT_LOG, 1300) BCV, &
1202 (-VEL), 'BC_W_s', M, BC_W_S(BCV,M)
1203 call mfix_exit(myPE)
1204 ENDIF
1205 IF (BC_TYPE(BCV)=='MASS_OUTFLOW' .AND. &
1206 .NOT.COMPARE(VEL,BC_W_S(BCV,M))) THEN
1207 IF(DMP_LOG)WRITE (UNIT_LOG, 1300) BCV, &
1208 VEL, 'BC_W_s', M, BC_W_S(BCV,M)
1209 call mfix_exit(myPE)
1210 ENDIF
1211 ELSE
1212 IF (BC_TYPE(BCV) == 'MASS_INFLOW') THEN
1213 BC_U_S(BCV,M) = ZERO
1214 BC_V_S(BCV,M) = ZERO
1215 BC_W_S(BCV,M) = -VEL
1216 ELSE
1217 BC_W_S(BCV,M) = VEL
1218 ENDIF
1219 ENDIF
1220 CASE ('T')
1221 IF (BC_W_S(BCV,M) /= UNDEFINED.AND.DO_VEL_CHECK) THEN
1222 IF (BC_TYPE(BCV)=='MASS_INFLOW' .AND. &
1223 .NOT.COMPARE(VEL,BC_W_S(BCV,M))) THEN
1224 IF(DMP_LOG)WRITE (UNIT_LOG, 1300) BCV, &
1225 VEL, 'BC_W_s', M, BC_W_S(BCV,M)
1226 call mfix_exit(myPE)
1227 ENDIF
1228 IF (BC_TYPE(BCV)=='MASS_OUTFLOW' .AND. &
1229 .NOT.COMPARE((-VEL),BC_W_S(BCV,M))) THEN
1230 IF(DMP_LOG)WRITE (UNIT_LOG, 1300) BCV, &
1231 (-VEL), 'BC_W_s', M, BC_W_S(BCV,M)
1232 call mfix_exit(myPE)
1233 ENDIF
1234 ELSE
1235 IF (BC_TYPE(BCV) == 'MASS_INFLOW') THEN
1236 BC_U_S(BCV,M) = ZERO
1237 BC_V_S(BCV,M) = ZERO
1238 BC_W_S(BCV,M) = VEL
1239 ELSE
1240 BC_W_S(BCV,M) = -VEL
1241 ENDIF
1242 ENDIF
1243 END SELECT
1244 ENDIF
1245
1246
1247
1248 ENDDO
1249 ENDIF
1250
1251 ENDIF
1252 ENDIF
1253 ENDDO
1254
1255
1256 IF (CONVERTED .AND. (NO_I .OR. NO_J .OR. NO_K) &
1257 .AND. DMP_LOG)WRITE (UNIT_LOG, 1500)
1258
1259 RETURN
1260
1261 1000 FORMAT(/1X,70('*')//' From: FLOW_TO_VEL',/' Message: BC No:',I2,/,&
1262 ' Computed volumetric flow is not equal to specified value',/,&
1263 ' Value computed from mass flow = ',G14.7,/,&
1264 ' Specified value (BC_VOLFLOW_g) = ',G14.7,/1X,70('*')/)
1265 1010 FORMAT(/1X,70('*')//' From: FLOW_TO_VEL',/' Message: BC No:',I2,&
1266 ' BC_P_g, BC_T_g, and BC_X_g or',/' a nonzero value for ',A,&
1267 ' should be specified',/1X,70('*')/)
1268 1020 FORMAT(/1X,70('*')//' From: FLOW_TO_VEL',/' Message: BC No:',I2,&
1269 ' BC_P_g, BC_T_g, and BC_X_g',/' should be specified',/1X,70('*')/)
1270 1100 FORMAT(/1X,70('*')//' From: FLOW_TO_VEL',/' Message: BC No:',I2,/,&
1271 ' Computed velocity is not equal to specified value',/,&
1272 ' Value computed from vol. or mass flow = ',G14.7,/,&
1273 ' Specified value (',A,') = ',G14.7,/1X,70('*')/)
1274 1200 FORMAT(/1X,70('*')//' From: FLOW_TO_VEL',/' Message: BC No:',I2,/,&
1275 ' Computed volumetric flow is not equal to specified value',/,&
1276 ' Value computed from mass flow = ',G14.7,/,&
1277 ' Specified value (BC_VOLFLOW_s',I1,') = ',G14.7,/1X,70('*')/)
1278 1250 FORMAT(/1X,70('*')//' From: FLOW_TO_VEL',/' Message: BC No:',I2,/,&
1279 ' Non-zero vol. or mass flow specified with BC_ROP_s',&
1280 I1,' = 0.',/1X,70('*')/)
1281 1260 FORMAT(/1X,70('*')//' From: FLOW_TO_VEL',/' Message: BC No:',I2,/,&
1282 ' BC_ROP_s',I1,' not specified',/1X,70('*')/)
1283 1300 FORMAT(/1X,70('*')//' From: FLOW_TO_VEL',/' Message: BC No:',I2,/,&
1284 ' Computed velocity is not equal to specified value',/,&
1285 ' Value computed from vol. or mass flow = ',G14.7,/,&
1286 ' Specified value (',A,I1,') = ',G14.7,/1X,70('*')/)
1287 1500 FORMAT(/1X,70('*')//' From: FLOW_TO_VEL',/&
1288 ' Message: Some volumetric or mass flow rates have been',/&
1289 ' converted to velocity values. In 2D simulations ensure',/&
1290 ' that the third (unused) dimension is correctly specified;',/&
1291 ' e.g. in axisymmetric cylindrical coordinates ZLENGTH = 2*Pi'/1X,70&
1292 ('*')/)
1293
1294 1401 FORMAT(//1X,70('*')/' From: FLOW_TO_VEL',/,' Error 1401:', &
1295 ' Solids phase ',I2,' failed sanity check in BC region ',I3, &
1296 '. ',/' Please check mfix.dat file.',/1X,70('*')//)
1297
1298
1299 END SUBROUTINE FLOW_TO_VEL
1300