@@ -1776,7 +1776,7 @@ SUBROUTINE WRITE_SMOKEVIEW_FILE
17761776USE TRAN, ONLY: TRAN_TYPE,TRANS
17771777USE MISC_FUNCTIONS, ONLY : ACCUMULATE_STRING
17781778INTEGER :: N,NN,I,J,K,NM,NX,NY,NZ,NIN,NXL,NYL,NZL,COLOR_INDEX,IZERO,STATE_INDEX,SURF_INDEX,&
1779- TYPE_INDEX,HI1,HI2,VI1,VI2,FACE_INDEX, VRGB(3 ),N_CVENT
1779+ TYPE_INDEX,HI1,HI2,VI1,VI2,VRGB(3 ),N_CVENT
17801780INTEGER , ALLOCATABLE , DIMENSION (:,:,:) :: VENT_INDICES
17811781REAL (EB) :: X1,Y1,Z1,X2,Y2,Z2,XX,YY,ZZ,PERT1(4 ),PERT2(4 ),XMIN,YMIN,ZMIN,XA,YA,ZA
17821782TYPE SEGMENT_TYPE
@@ -2566,123 +2566,7 @@ SUBROUTINE WRITE_SMOKEVIEW_FILE
25662566 IF (VT% RADIUS> 0._EB ) N_CVENT= N_CVENT+1
25672567 ENDDO
25682568
2569- ! Create EXTERIOR_PATCHes with which Smokeview colors, textures, or contours exterior mesh boundaries.
2570-
2571- ALLOCATE (M% EXTERIOR_PATCH(10 * (6 + N_VENT_TOTAL))) ; M% N_EXTERIOR_PATCH = 0
2572- ALLOCATE (VENT_INDICES(MAX (M% IBAR,M% JBAR),MAX (M% JBAR,M% KBAR),6 )) ; VENT_INDICES = 0
2573-
2574- VENT_LOOP: DO N= 1 ,M% N_VENT
2575-
2576- VT= >M% VENTS(N)
2577-
2578- IF (VT% RADIUS> 0._EB ) CYCLE VENT_LOOP
2579-
2580- FACE_INDEX = 0
2581- IF (VT% I1== 0 .AND. VT% I2== 0 ) FACE_INDEX = 1
2582- IF (VT% I1== M% IBAR .AND. VT% I2== M% IBAR) FACE_INDEX = 2
2583- IF (VT% J1== 0 .AND. VT% J2== 0 ) FACE_INDEX = 3
2584- IF (VT% J1== M% JBAR .AND. VT% J2== M% JBAR) FACE_INDEX = 4
2585- IF (VT% K1== 0 .AND. VT% K2== 0 ) FACE_INDEX = 5
2586- IF (VT% K1== M% KBAR .AND. VT% K2== M% KBAR) FACE_INDEX = 6
2587-
2588- SELECT CASE (FACE_INDEX) ! Get vent cell indices
2589- CASE (0 )
2590- CYCLE VENT_LOOP
2591- CASE (1 :2 )
2592- HI1 = MAX (1 ,VT% J1+1 )
2593- HI2 = MIN (M% JBAR,VT% J2)
2594- VI1 = MAX (1 ,VT% K1+1 )
2595- VI2 = MIN (M% KBAR,VT% K2)
2596- CASE (3 :4 )
2597- HI1 = MAX (1 ,VT% I1+1 )
2598- HI2 = MIN (M% IBAR,VT% I2)
2599- VI1 = MAX (1 ,VT% K1+1 )
2600- VI2 = MIN (M% KBAR,VT% K2)
2601- CASE (5 :6 )
2602- HI1 = MAX (1 ,VT% I1+1 )
2603- HI2 = MIN (M% IBAR,VT% I2)
2604- VI1 = MAX (1 ,VT% J1+1 )
2605- VI2 = MIN (M% JBAR,VT% J2)
2606- END SELECT
2607-
2608- IF (VT% BOUNDARY_TYPE== MIRROR_BOUNDARY .OR. &
2609- VT% BOUNDARY_TYPE== OPEN_BOUNDARY .OR. &
2610- VT% BOUNDARY_TYPE== PERIODIC_BOUNDARY .OR. &
2611- VT% TYPE_INDICATOR== 2 ) THEN ! Render this vent invisible in Smokeview
2612- WHERE (VENT_INDICES(HI1:HI2,VI1:VI2,FACE_INDEX)==0 ) VENT_INDICES(HI1:HI2,VI1:VI2,FACE_INDEX) = - 1
2613- ELSE ! Tag user-specified vents
2614- WHERE (VENT_INDICES(HI1:HI2,VI1:VI2,FACE_INDEX)==0 ) VENT_INDICES(HI1:HI2,VI1:VI2,FACE_INDEX) = N
2615- IF (.NOT. VT% DRAW) THEN ! a dummy vent will be created and drawn rather than the actual vent.
2616- VT% COLOR_INDICATOR = 8
2617- VT% TYPE_INDICATOR = - 2
2618- VT% TRANSPARENCY = 0._EB
2619- ENDIF
2620- ENDIF
2621-
2622- ! Render GEOM vents using SURF properties (that is, do not draw GEOM vents in Smokeview)
2623-
2624- IF (VT% GEOM) VT% TYPE_INDICATOR = - 2
2625-
2626- ENDDO VENT_LOOP
2627-
2628- ! Look for interpolated mesh boundaries and ensure that Smokeview leaves these blank (VENT_INDICES=-1).
2629-
2630- DO K= 1 ,M% KBAR
2631- DO J= 1 ,M% JBAR
2632- YY = 0.5_EB * (M% Y(J)+ M% Y(J-1 ))
2633- ZZ = 0.5_EB * (M% Z(K)+ M% Z(K-1 ))
2634- XX = M% X(0 ) - 0.001_EB * M% DX(0 )
2635- CALL SEARCH_OTHER_MESHES(XX,YY,ZZ,NOM,IIO,JJO,KKO)
2636- IF (NOM> 0 .AND. VENT_INDICES(J,K,1 )<1 ) VENT_INDICES(J,K,1 )=- 1
2637- IF (M% WALL(M% CELL(M% CELL_INDEX(1 ,J,K))% WALL_INDEX(- 1 ))% OBST_INDEX> 0 ) VENT_INDICES(J,K,1 )=- 1
2638- XX = M% X(M% IBAR) + 0.001_EB * M% DX(M% IBAR)
2639- CALL SEARCH_OTHER_MESHES(XX,YY,ZZ,NOM,IIO,JJO,KKO)
2640- IF (NOM> 0 .AND. VENT_INDICES(J,K,2 )<1 ) VENT_INDICES(J,K,2 )=- 1
2641- IF (M% WALL(M% CELL(M% CELL_INDEX(M% IBAR,J,K))% WALL_INDEX(1 ))% OBST_INDEX> 0 ) VENT_INDICES(J,K,2 )=- 1
2642- ENDDO
2643- ENDDO
2644-
2645- DO K= 1 ,M% KBAR
2646- DO I= 1 ,M% IBAR
2647- XX = 0.5_EB * (M% X(I)+ M% X(I-1 ))
2648- ZZ = 0.5_EB * (M% Z(K)+ M% Z(K-1 ))
2649- YY = M% Y(0 ) - 0.001_EB * M% DY(0 )
2650- CALL SEARCH_OTHER_MESHES(XX,YY,ZZ,NOM,IIO,JJO,KKO)
2651- IF (NOM> 0 .AND. VENT_INDICES(I,K,3 )<1 ) VENT_INDICES(I,K,3 )=- 1
2652- IF (M% WALL(M% CELL(M% CELL_INDEX(I,1 ,K))% WALL_INDEX(- 2 ))% OBST_INDEX> 0 ) VENT_INDICES(I,K,3 )=- 1
2653- YY = M% Y(M% JBAR) + 0.001_EB * M% DY(M% JBAR)
2654- CALL SEARCH_OTHER_MESHES(XX,YY,ZZ,NOM,IIO,JJO,KKO)
2655- IF (NOM> 0 .AND. VENT_INDICES(I,K,4 )<1 ) VENT_INDICES(I,K,4 )=- 1
2656- IF (M% WALL(M% CELL(M% CELL_INDEX(I,M% JBAR,K))% WALL_INDEX(2 ))% OBST_INDEX> 0 ) VENT_INDICES(I,K,4 )=- 1
2657- ENDDO
2658- ENDDO
2659-
2660- DO J= 1 ,M% JBAR
2661- DO I= 1 ,M% IBAR
2662- XX = 0.5_EB * (M% X(I)+ M% X(I-1 ))
2663- YY = 0.5_EB * (M% Y(J)+ M% Y(J-1 ))
2664- ZZ = M% Z(0 ) - 0.001_EB * M% DZ(0 )
2665- CALL SEARCH_OTHER_MESHES(XX,YY,ZZ,NOM,IIO,JJO,KKO)
2666- IF (NOM> 0 .AND. VENT_INDICES(I,J,5 )<1 ) VENT_INDICES(I,J,5 )=- 1
2667- IF (M% WALL(M% CELL(M% CELL_INDEX(I,J,1 ))% WALL_INDEX(- 3 ))% OBST_INDEX> 0 ) VENT_INDICES(I,J,5 )=- 1
2668- ZZ = M% Z(M% KBAR) + 0.001_EB * M% DZ(M% KBAR)
2669- CALL SEARCH_OTHER_MESHES(XX,YY,ZZ,NOM,IIO,JJO,KKO)
2670- IF (NOM> 0 .AND. VENT_INDICES(I,J,6 )<1 ) VENT_INDICES(I,J,6 )=- 1
2671- IF (M% WALL(M% CELL(M% CELL_INDEX(I,J,M% KBAR))% WALL_INDEX(3 ))% OBST_INDEX> 0 ) VENT_INDICES(I,J,6 )=- 1
2672- ENDDO
2673- ENDDO
2674-
2675- ! Create EXTERIOR_PATCHes to fill in areas around actual specified vents
2676-
2677- CALL DUMMY_VENTS(1 ,M% JBAR,M% KBAR)
2678- CALL DUMMY_VENTS(2 ,M% JBAR,M% KBAR)
2679- CALL DUMMY_VENTS(3 ,M% IBAR,M% KBAR)
2680- CALL DUMMY_VENTS(4 ,M% IBAR,M% KBAR)
2681- CALL DUMMY_VENTS(5 ,M% IBAR,M% JBAR)
2682- CALL DUMMY_VENTS(6 ,M% IBAR,M% JBAR)
2683-
2684- DEALLOCATE (VENT_INDICES)
2685-
2569+
26862570 ! Write out information about vents to Smokeview file
26872571
26882572 CALL EOL
0 commit comments