diff --git a/Manuals/FDS_Config_Management_Plan/FDS_Config_Management_Plan.tex b/Manuals/FDS_Config_Management_Plan/FDS_Config_Management_Plan.tex index 4f8572f16a..68c0fe56e0 100755 --- a/Manuals/FDS_Config_Management_Plan/FDS_Config_Management_Plan.tex +++ b/Manuals/FDS_Config_Management_Plan/FDS_Config_Management_Plan.tex @@ -458,6 +458,22 @@ \section{Model Testing} \end{itemize} +\section{GitHub Actions: Repository Checks} + +GitHub Actions provide automated checks of changes submitted to the \texttt{fds} and \texttt{out} repositories. Workflow definitions reside in each repository's \path{.github/workflows} directory, and results are reported on GitHub. These checks complement the verification and validation testing performed by Firebot. The workflows are summarized below. + +\begin{description} +\item[Platform builds:] \path{linux.yml}, \path{osx.yml}, and \path{windows.yml} compile and launch debug and release versions of FDS using the supported Intel or GNU compiler and MPI combinations. The Linux workflow also checks Python package imports with \path{hello_world.py} and runs regression tests of the PR security logic. + +\item[CMake builds:] \path{cmake.yml} builds FDS on Linux, macOS, and Windows across compiler, debug/release, and OpenMP configurations. CTest checks that the resulting executable starts. The platform and CMake workflows run for relevant source, build, or workflow changes. + +\item[PR security:] \path{pr-security.yml} coordinates admission and build checks for FDS pull requests, while \path{virus-scan.yml} uses ClamAV to scan the submitted and proposed merge snapshots. Outside contributions must pass scanning before build checks begin; approved developers' scans run independently, including after merging. Section~\ref{sec:pr-virus-scanning} describes this process and its repository settings. + +\item[Line endings:] \path{Line_Endings.yml} in both repositories reports an error if text files contain DOS-style line endings. + +\item[Validation revisions:] \path{Git_Revisions.yml} in \texttt{out} checks only tracked \path{*_git.txt} files and reports an error if a revision string contains \texttt{dirty}, indicating uncommitted changes in the source used to generate the results. +\end{description} + \section{Firebot: Automated Software Quality Testing} The FDS and Smokeview source codes undergo an automated build, verification, validation, and regression testing process, which is similar to a continuous integration system that automates the build/testing cycle for a project. This automated process is referred to as Firebot. The Firebot build/test process helps the FDS-SMV development team by performing automatic error checking and collecting performance and accuracy statistics between FDS revisions. @@ -552,6 +568,7 @@ \section{Records Collection, Maintenance, and Retention} NIST management approval is required prior to destruction of old or out-of-date records. Records are typically maintained for a minimum of 25 years. \section{Virus Scanning of Pull Requests} +\label{sec:pr-virus-scanning} GitHub Actions use ClamAV to scan pull requests to FDS and participating developers' forks. These checks examine repository content and do not replace release-bundle scans. Security code and approved account IDs come from the receiving repository's trusted revision. When both the author and event sender are approved developers, scanning proceeds in the background, including after merging; other pull requests must pass scanning before admission to build checks. diff --git a/Manuals/FDS_User_Guide/FDS_User_Guide.tex b/Manuals/FDS_User_Guide/FDS_User_Guide.tex index da3436db73..c8fd149757 100644 --- a/Manuals/FDS_User_Guide/FDS_User_Guide.tex +++ b/Manuals/FDS_User_Guide/FDS_User_Guide.tex @@ -14761,7 +14761,7 @@ \section{CPU Usage Data} \ct{RADI} & Radiation transport \\ \hline \ct{FIRE} & Combustion \\ \hline \ct{COMM} & MPI communication \\ \hline - \ct{BLNK} & Blank, not used \\ \hline + \ct{PACK} & Packing MPI communication buffers \\ \hline \ct{HVAC} & Heating, Ventilation, Air Conditioning \\ \hline \ct{GEOM} & Complex geometry \\ \hline \ct{VEGE} & Wildland fire spread \\ \hline diff --git a/Source/ccib.f90 b/Source/ccib.f90 index a39abc4911..a6bd84855a 100644 --- a/Source/ccib.f90 +++ b/Source/ccib.f90 @@ -12063,6 +12063,10 @@ SUBROUTINE GET_EXPLICIT_ADVDIFFVECTOR_SCALAR_3D(N) INTEGER :: IIG,JJG,KKG,IOR REAL(EB) :: UN +U_TEMP => U_WORK +F_TEMP => F_WORK +Z_TEMP => Z_WORK + ! Mesh Loop: MESH_LOOP : DO NM=LOWER_MESH_INDEX,UPPER_MESH_INDEX diff --git a/Source/main.f90 b/Source/main.f90 index 43c8217613..8c02977aa5 100644 --- a/Source/main.f90 +++ b/Source/main.f90 @@ -302,8 +302,8 @@ PROGRAM FDS ! Initialize persistent MPI sends and receives and allocate buffer arrays. IF(RADIATION .AND. .NOT. ALLOW_RANDOM_RADIATION_ROTATION) THEN CALL CALCULATE_DIRECTION_COEFFICIENTS() - CALL ALLOCATE_RADIAITON_RECV_PKG() - CALL ALLOCATE_RADIAITON_SEND_PKG() + CALL ALLOCATE_RADIATION_RECV_PKG() + CALL ALLOCATE_RADIATION_SEND_PKG() ENDIF CALL POST_RECEIVES(0) @@ -493,8 +493,8 @@ PROGRAM FDS IF (START_NEW_ANGLE_CYCLE) THEN CALL CALCULATE_DIRECTION_COEFFICIENTS() CALL INTERPOLATE_IL() - CALL ALLOCATE_RADIAITON_RECV_PKG() - CALL ALLOCATE_RADIAITON_SEND_PKG() + CALL ALLOCATE_RADIATION_RECV_PKG() + CALL ALLOCATE_RADIATION_SEND_PKG() ENDIF ENDIF @@ -1021,13 +1021,13 @@ PROGRAM FDS DO ITER=1,RADIATION_ITERATIONS IF (RADIATION .AND. ALLOW_RANDOM_RADIATION_ROTATION .AND. ITER==1) THEN - START_NEW_ANGLE_CYCLE = MOD(MAX(MESHES(LOWER_MESH_INDEX)%RAD_CALL_COUNTER-1,0), & ! -1 because we already called it once duing initialization. - ANGLE_INCREMENT*TIME_STEP_INCREMENT)==0 + START_NEW_ANGLE_CYCLE = MOD(MAX(MESHES(LOWER_MESH_INDEX)%RAD_CALL_COUNTER-1,0), & + ANGLE_INCREMENT*TIME_STEP_INCREMENT)==0 ! -1 because already called once duing initialization IF (START_NEW_ANGLE_CYCLE) THEN CALL CALCULATE_DIRECTION_COEFFICIENTS() CALL INTERPOLATE_IL() - CALL ALLOCATE_RADIAITON_RECV_PKG() - CALL ALLOCATE_RADIAITON_SEND_PKG() + CALL ALLOCATE_RADIATION_RECV_PKG() + CALL ALLOCATE_RADIATION_SEND_PKG() ENDIF ENDIF DO NM=LOWER_MESH_INDEX,UPPER_MESH_INDEX @@ -3118,7 +3118,7 @@ SUBROUTINE MESH_EXCHANGE(CODE) USE MEMORY_FUNCTIONS, ONLY: PACK_PARTICLE,PACK_WALL,PACK_THIN_WALL,REALLOCATE_STORAGE_ARRAYS,ALLOCATE_STORAGE -REAL(EB) :: TNOW,XI,YJ,ZK +REAL(EB) :: TNOW,XI,YJ,ZK,T_NOW_SUB INTEGER, INTENT(IN) :: CODE INTEGER :: NM,NOM,I,II,JJ,KK,LL,LLL,N,RNODE,SNODE,IMIN,IMAX,JMIN,JMAX,KMIN,KMAX,IJK_SIZE,RC,IC,LC INTEGER :: NNN,NN1,NN2,IPC,II1,II2,JJ1,JJ2,KK1,KK2,NQT2,NN,IOR,AIC,OBST_INDEX,IP,IW @@ -3305,6 +3305,7 @@ SUBROUTINE MESH_EXCHANGE(CODE) RHOP => M%RHO ; DP => M%DS ; ZZP => M%ZZ ENDIF IF (RNODE/=SNODE) THEN + T_NOW_SUB = CURRENT_TIME() NQT2 = 6+2*N_TOTAL_SCALARS PACK_REAL_SEND_PKG1: DO LL=1,M3%NIC_S II1 = M3%IIO_S(LL) ; II2 = II1 @@ -3329,6 +3330,7 @@ SUBROUTINE MESH_EXCHANGE(CODE) M3%REAL_SEND_PKG1(NQT2*(LL-1)+6+2*NN ) = ZZP(II2,JJ2,KK2,NN) ENDDO ENDDO PACK_REAL_SEND_PKG1 + T_USED(12) = T_USED(12) + CURRENT_TIME() - T_NOW_SUB ELSE M2=>MESHES(NOM)%OMESH(NM) IF (CODE==1) THEN @@ -3354,6 +3356,7 @@ SUBROUTINE MESH_EXCHANGE(CODE) HP => M%HS ENDIF IF (RNODE/=SNODE) THEN + T_NOW_SUB = CURRENT_TIME() PACK_REAL_SEND_PKG7: DO LL=1,M3%NIC_S SELECT CASE(M3%IOR_S(LL)) CASE(-1) ; M3%REAL_SEND_PKG7(3*LL-2) = M%FVX(M3%IIO_S(LL)-1,M3%JJO_S(LL) ,M3%KKO_S(LL) ) @@ -3376,6 +3379,7 @@ SUBROUTINE MESH_EXCHANGE(CODE) M3%REAL_SEND_PKG7(3*LL ) = HP(M3%IIO_S(LL) ,M3%JJO_S(LL) ,M3%KKO_S(LL)+1) END SELECT ENDDO PACK_REAL_SEND_PKG7 + T_USED(12) = T_USED(12) + CURRENT_TIME() - T_NOW_SUB ELSE M2=>MESHES(NOM)%OMESH(NM) IF (PREDICTOR) THEN @@ -3394,6 +3398,7 @@ SUBROUTINE MESH_EXCHANGE(CODE) IF (CODE==20 .AND. M3%NIC_S>0) THEN IF (RNODE/=SNODE) THEN + T_NOW_SUB = CURRENT_TIME() PACK_REAL_SEND_PKG4: DO LL=1,M3%NIC_S SELECT CASE(M3%IOR_S(LL)) CASE(-1) ; M3%REAL_SEND_PKG4(LL) = M%FVX_D(M3%IIO_S(LL)-1,M3%JJO_S(LL) ,M3%KKO_S(LL) ) @@ -3404,6 +3409,7 @@ SUBROUTINE MESH_EXCHANGE(CODE) CASE( 3) ; M3%REAL_SEND_PKG4(LL) = M%FVZ_D(M3%IIO_S(LL) ,M3%JJO_S(LL) ,M3%KKO_S(LL) ) END SELECT ENDDO PACK_REAL_SEND_PKG4 + T_USED(12) = T_USED(12) + CURRENT_TIME() - T_NOW_SUB ELSE M2=>MESHES(NOM)%OMESH(NM) M2%FVX_D(IMIN:IMAX,JMIN:JMAX,KMIN:KMAX) = M%FVX_D(IMIN:IMAX,JMIN:JMAX,KMIN:KMAX) @@ -3421,6 +3427,7 @@ SUBROUTINE MESH_EXCHANGE(CODE) HP => M%H ; UP => M%U ; VP => M%V ; WP => M%W ENDIF IF (RNODE/=SNODE) THEN + T_NOW_SUB = CURRENT_TIME() LL = 0 DO KK=M3%K_MIN_S,M3%K_MAX_S DO JJ=M3%J_MIN_S,M3%J_MAX_S @@ -3433,6 +3440,7 @@ SUBROUTINE MESH_EXCHANGE(CODE) ENDDO ENDDO ENDDO + T_USED(12) = T_USED(12) + CURRENT_TIME() - T_NOW_SUB ELSE M2=>MESHES(NOM)%OMESH(NM) IF (CODE==3) THEN @@ -3451,28 +3459,33 @@ SUBROUTINE MESH_EXCHANGE(CODE) OS => M3%WALL_SEND_BUFFER IF (CODE==6 .AND. RNODE/=SNODE .AND. OS%N_ITEMS>0) THEN + T_NOW_SUB = CURRENT_TIME() RC=0 ; IC=0 ; LC=0 DO I=1,OS%N_ITEMS IW = OS%ITEM_INDEX(I) WC => M%WALL(IW) CALL PACK_WALL(NM,OS,WC,OS%SURF_INDEX(I),RC,IC,LC,UNPACK_IT=.FALSE.,COUNT_ONLY=.FALSE.,CHECK_BOUNDS=.FALSE.) ENDDO + T_USED(12) = T_USED(12) + CURRENT_TIME() - T_NOW_SUB ENDIF OS => M3%THIN_WALL_SEND_BUFFER IF (CODE==6 .AND. RNODE/=SNODE .AND. OS%N_ITEMS>0) THEN + T_NOW_SUB = CURRENT_TIME() RC=0 ; IC=0 ; LC=0 DO I=1,OS%N_ITEMS IW = OS%ITEM_INDEX(I) TW => M%THIN_WALL(IW) CALL PACK_THIN_WALL(NM,OS,TW,OS%SURF_INDEX(I),RC,IC,LC,UNPACK_IT=.FALSE.,COUNT_ONLY=.FALSE.,CHECK_BOUNDS=.FALSE.) ENDDO + T_USED(12) = T_USED(12) + CURRENT_TIME() - T_NOW_SUB ENDIF ! Send out radiation info SEND_RADIATION: IF (CODE==2 .AND. M3%NIC_S>0) THEN IF (RNODE/=SNODE) THEN + T_NOW_SUB = CURRENT_TIME() IF (ICYC>1) THEN AIC = M%ANGLE_INC_COUNTER ELSE @@ -3489,6 +3502,7 @@ SUBROUTINE MESH_EXCHANGE(CODE) ENDDO ENDDO ENDDO PACK_REAL_SEND_PKG5 + T_USED(12) = T_USED(12) + CURRENT_TIME() - T_NOW_SUB ELSE M2=>MESHES(NOM)%OMESH(NM) M2%IL_R = M3%IL_S @@ -3511,9 +3525,11 @@ SUBROUTINE MESH_EXCHANGE(CODE) IF_SEND_PARTICLES: IF (CODE==11 .AND. M3%PARTICLE_SEND_BUFFER%N_ITEMS>0) THEN OS => M3%PARTICLE_SEND_BUFFER IF (SNODE/=RNODE) THEN + T_NOW_SUB = CURRENT_TIME() N_REQ=N_REQ+1 ; CALL MPI_ISEND(OS%REALS ,OS%N_REALS,MPI_DOUBLE_PRECISION,RNODE,NM,MPI_COMM_WORLD,REQ(N_REQ),IERR) N_REQ=N_REQ+1 ; CALL MPI_ISEND(OS%INTEGERS,OS%N_INTEGERS,MPI_INTEGER,RNODE,NM,MPI_COMM_WORLD,REQ(N_REQ),IERR) N_REQ=N_REQ+1 ; CALL MPI_ISEND(OS%LOGICALS,OS%N_LOGICALS,MPI_LOGICAL,RNODE,NM,MPI_COMM_WORLD,REQ(N_REQ),IERR) + T_USED(12) = T_USED(12) + CURRENT_TIME() - T_NOW_SUB ELSE M2 => MESHES(NOM)%OMESH(NM) M2%PARTICLE_RECV_BUFFER%REALS = OS%REALS @@ -3535,6 +3551,7 @@ SUBROUTINE MESH_EXCHANGE(CODE) PHI_LS_P => M%PHI_LS ENDIF IF (RNODE/=SNODE) THEN + T_NOW_SUB = CURRENT_TIME() NQT2 = 5 PACK_REAL_SEND_PKG14: DO LL=1,M3%NIC_S II1 = M3%IIO_S(LL) ; II2 = II1 @@ -3551,6 +3568,7 @@ SUBROUTINE MESH_EXCHANGE(CODE) M3%REAL_SEND_PKG14(NQT2*(LL-1)+4) = M%V_LS(II1,JJ1) M3%REAL_SEND_PKG14(NQT2*(LL-1)+5) = M%Z_LS(II1,JJ1) ENDDO PACK_REAL_SEND_PKG14 + T_USED(12) = T_USED(12) + CURRENT_TIME() - T_NOW_SUB ELSE M2=>MESHES(NOM)%OMESH(NM) IF (PREDICTOR) THEN @@ -3684,40 +3702,43 @@ SUBROUTINE MESH_EXCHANGE(CODE) ! Unpack densities and species mass fractions in the PREDICTOR (CODE=1) and CORRECTOR (CODE=4) step IF ((CODE==1.OR.CODE==4) .AND. M2%NIC_R>0 .AND. RNODE/=SNODE) THEN - NQT2 = 6+2*N_TOTAL_SCALARS - IF (CODE==1) THEN - RHOP => M2%RHOS ; DP => M2%D ; ZZP => M2%ZZS - ELSE - RHOP => M2%RHO ; DP => M2%DS ; ZZP => M2%ZZ - ENDIF - UNPACK_REAL_RECV_PKG1: DO LL=1,M2%NIC_R - II1 = M2%IIO_R(LL) ; II2 = II1 - JJ1 = M2%JJO_R(LL) ; JJ2 = JJ1 - KK1 = M2%KKO_R(LL) ; KK2 = KK1 - SELECT CASE(M2%IOR_R(LL)) - CASE(-1) ; II2=II1+1 - CASE( 1) ; II2=II1-1 - CASE(-2) ; JJ2=JJ1+1 - CASE( 2) ; JJ2=JJ1-1 - CASE(-3) ; KK2=KK1+1 - CASE( 3) ; KK2=KK1-1 - END SELECT - RHOP(II1,JJ1,KK1) = M2%REAL_RECV_PKG1(NQT2*(LL-1)+1) - RHOP(II2,JJ2,KK2) = M2%REAL_RECV_PKG1(NQT2*(LL-1)+2) - M2%MU(II1,JJ1,KK1) = M2%REAL_RECV_PKG1(NQT2*(LL-1)+3) - M2%KRES(II1,JJ1,KK1) = M2%REAL_RECV_PKG1(NQT2*(LL-1)+4) - DP(II1,JJ1,KK1) = M2%REAL_RECV_PKG1(NQT2*(LL-1)+5) - M2%Q(II1,JJ1,KK1) = M2%REAL_RECV_PKG1(NQT2*(LL-1)+6) - DO NN=1,N_TOTAL_SCALARS - ZZP(II1,JJ1,KK1,NN) = M2%REAL_RECV_PKG1(NQT2*(LL-1)+6+2*NN-1) - ZZP(II2,JJ2,KK2,NN) = M2%REAL_RECV_PKG1(NQT2*(LL-1)+6+2*NN ) - ENDDO - ENDDO UNPACK_REAL_RECV_PKG1 + T_NOW_SUB = CURRENT_TIME() + NQT2 = 6+2*N_TOTAL_SCALARS + IF (CODE==1) THEN + RHOP => M2%RHOS ; DP => M2%D ; ZZP => M2%ZZS + ELSE + RHOP => M2%RHO ; DP => M2%DS ; ZZP => M2%ZZ + ENDIF + UNPACK_REAL_RECV_PKG1: DO LL=1,M2%NIC_R + II1 = M2%IIO_R(LL) ; II2 = II1 + JJ1 = M2%JJO_R(LL) ; JJ2 = JJ1 + KK1 = M2%KKO_R(LL) ; KK2 = KK1 + SELECT CASE(M2%IOR_R(LL)) + CASE(-1) ; II2=II1+1 + CASE( 1) ; II2=II1-1 + CASE(-2) ; JJ2=JJ1+1 + CASE( 2) ; JJ2=JJ1-1 + CASE(-3) ; KK2=KK1+1 + CASE( 3) ; KK2=KK1-1 + END SELECT + RHOP(II1,JJ1,KK1) = M2%REAL_RECV_PKG1(NQT2*(LL-1)+1) + RHOP(II2,JJ2,KK2) = M2%REAL_RECV_PKG1(NQT2*(LL-1)+2) + M2%MU(II1,JJ1,KK1) = M2%REAL_RECV_PKG1(NQT2*(LL-1)+3) + M2%KRES(II1,JJ1,KK1) = M2%REAL_RECV_PKG1(NQT2*(LL-1)+4) + DP(II1,JJ1,KK1) = M2%REAL_RECV_PKG1(NQT2*(LL-1)+5) + M2%Q(II1,JJ1,KK1) = M2%REAL_RECV_PKG1(NQT2*(LL-1)+6) + DO NN=1,N_TOTAL_SCALARS + ZZP(II1,JJ1,KK1,NN) = M2%REAL_RECV_PKG1(NQT2*(LL-1)+6+2*NN-1) + ZZP(II2,JJ2,KK2,NN) = M2%REAL_RECV_PKG1(NQT2*(LL-1)+6+2*NN ) + ENDDO + ENDDO UNPACK_REAL_RECV_PKG1 + T_USED(12) = T_USED(12) + CURRENT_TIME() - T_NOW_SUB ENDIF ! Unpack densities and species mass fractions following PREDICTOR exchange IF (CODE==5 .AND. M2%NIC_R>0 .AND. RNODE/=SNODE) THEN + T_NOW_SUB = CURRENT_TIME() IF (PREDICTOR) THEN HP => M2%H ELSE @@ -3745,11 +3766,13 @@ SUBROUTINE MESH_EXCHANGE(CODE) HP(M2%IIO_R(LL) ,M2%JJO_R(LL) ,M2%KKO_R(LL)+1) = M2%REAL_RECV_PKG7(3*LL ) END SELECT ENDDO UNPACK_REAL_RECV_PKG7 + T_USED(12) = T_USED(12) + CURRENT_TIME() - T_NOW_SUB ENDIF ! Unpack particle drag at interpolated boundaries IF (CODE==20 .AND. M2%NIC_R>0 .AND. RNODE/=SNODE) THEN + T_NOW_SUB = CURRENT_TIME() UNPACK_REAL_RECV_PKG4: DO LL=1,M2%NIC_R SELECT CASE(M2%IOR_R(LL)) CASE(-1) ; M2%FVX_D(M2%IIO_R(LL)-1,M2%JJO_R(LL) ,M2%KKO_R(LL) ) = M2%REAL_RECV_PKG4(LL) @@ -3760,11 +3783,13 @@ SUBROUTINE MESH_EXCHANGE(CODE) CASE( 3) ; M2%FVZ_D(M2%IIO_R(LL) ,M2%JJO_R(LL) ,M2%KKO_R(LL) ) = M2%REAL_RECV_PKG4(LL) END SELECT ENDDO UNPACK_REAL_RECV_PKG4 + T_USED(12) = T_USED(12) + CURRENT_TIME() - T_NOW_SUB ENDIF ! Unpack pressure following PREDICTOR stage of time step IF ((CODE==3.OR.CODE==6) .AND. M2%NIC_R>0 .AND. RNODE/=SNODE) THEN + T_NOW_SUB = CURRENT_TIME() IF (CODE==3) THEN HP2 => M2%HS ; UP2 => M2%US ; VP2 => M2%VS ; WP2 => M2%WS ELSE @@ -3782,11 +3807,13 @@ SUBROUTINE MESH_EXCHANGE(CODE) ENDDO ENDDO ENDDO + T_USED(12) = T_USED(12) + CURRENT_TIME() - T_NOW_SUB ENDIF ! Unpack radiation information at the end of the CORRECTOR stage of the time step RECEIVE_RADIATION: IF (CODE==2 .AND. M2%NIC_R>0 .AND. RNODE/=SNODE) THEN + T_NOW_SUB = CURRENT_TIME() IF (ICYC>1) THEN AIC = M%ANGLE_INC_COUNTER ELSE @@ -3803,12 +3830,14 @@ SUBROUTINE MESH_EXCHANGE(CODE) ENDDO ENDDO ENDDO UNPACK_REAL_RECV_PKG5 + T_USED(12) = T_USED(12) + CURRENT_TIME() - T_NOW_SUB ENDIF RECEIVE_RADIATION ! Unpack back wall information at the end of the CORRECTOR stage of the time step OS => M2%WALL_RECV_BUFFER RECEIVE_BACK_WALL: IF (CODE==6 .AND. SNODE/=RNODE .AND. OS%N_ITEMS>0) THEN + T_NOW_SUB = CURRENT_TIME() RC=0 ; IC=0 ; LC=0 DO I=1,OS%N_ITEMS IW = OS%ITEM_INDEX(I) @@ -3816,10 +3845,12 @@ SUBROUTINE MESH_EXCHANGE(CODE) CALL PACK_WALL(NOM,OS,WC,OS%SURF_INDEX(I),RC,IC,LC,UNPACK_IT=.TRUE.,COUNT_ONLY=.FALSE.,& CHECK_BOUNDS=(INITIALIZATION_PHASE.OR.FIRST_RESTART_TIME_STEP)) ENDDO + T_USED(12) = T_USED(12) + CURRENT_TIME() - T_NOW_SUB ENDIF RECEIVE_BACK_WALL OS => M2%THIN_WALL_RECV_BUFFER RECEIVE_BACK_THIN_WALL: IF (CODE==6 .AND. SNODE/=RNODE .AND. OS%N_ITEMS>0) THEN + T_NOW_SUB = CURRENT_TIME() RC=0 ; IC=0 ; LC=0 DO I=1,OS%N_ITEMS IW = OS%ITEM_INDEX(I) @@ -3827,12 +3858,14 @@ SUBROUTINE MESH_EXCHANGE(CODE) CALL PACK_THIN_WALL(NOM,OS,TW,OS%SURF_INDEX(I),RC,IC,LC,UNPACK_IT=.TRUE.,COUNT_ONLY=.FALSE.,& CHECK_BOUNDS=(INITIALIZATION_PHASE.OR.FIRST_RESTART_TIME_STEP)) ENDDO + T_USED(12) = T_USED(12) + CURRENT_TIME() - T_NOW_SUB ENDIF RECEIVE_BACK_THIN_WALL ! Sending/Receiving PARTICLE Buffer Arrays OS => M2%PARTICLE_RECV_BUFFER IF (CODE==7 .AND. OS%N_ITEMS>0) THEN + T_NOW_SUB = CURRENT_TIME() IF (OS%N_REALS>OS%N_REALS_DIM) THEN CALL REALLOCATE_STORAGE_ARRAYS(OS,N_REALS=OS%N_REALS_DIM,N_REALS_NEW=OS%N_REALS) OS%N_REALS_DIM = OS%N_REALS @@ -3845,10 +3878,12 @@ SUBROUTINE MESH_EXCHANGE(CODE) CALL REALLOCATE_STORAGE_ARRAYS(OS,N_LOGICALS=OS%N_LOGICALS_DIM,N_LOGICALS_NEW=OS%N_LOGICALS) OS%N_LOGICALS_DIM = OS%N_LOGICALS ENDIF + T_USED(12) = T_USED(12) + CURRENT_TIME() - T_NOW_SUB ENDIF OS => M2%PARTICLE_RECV_BUFFER IF_RECEIVE_PARTICLES: IF (CODE==11 .AND. OS%N_ITEMS>0) THEN + T_NOW_SUB = CURRENT_TIME() RC=0 ; IC=0 ; LC=0 DO IP=M%NLP+1,M%NLP+OS%N_ITEMS IPC = OS%INTEGERS(IC+2) @@ -3872,30 +3907,33 @@ SUBROUTINE MESH_EXCHANGE(CODE) ENDDO M%NLP = M%NLP + OS%N_ITEMS OS%N_ITEMS = 0 + T_USED(12) = T_USED(12) + CURRENT_TIME() - T_NOW_SUB ENDIF IF_RECEIVE_PARTICLES IF (CODE==14 .AND. M2%NIC_R>0 .AND. RNODE/=SNODE) THEN - NQT2 = 5 - IF (PREDICTOR) THEN - PHI_LS_P => M2%PHI1_LS - ELSE - PHI_LS_P => M2%PHI_LS - ENDIF - UNPACK_REAL_RECV_PKG14: DO LL=1,M2%NIC_R - II1 = M2%IIO_R(LL) ; II2 = II1 - JJ1 = M2%JJO_R(LL) ; JJ2 = JJ1 - SELECT CASE(M2%IOR_R(LL)) - CASE(-1) ; II2=II1+1 - CASE( 1) ; II2=II1-1 - CASE(-2) ; JJ2=JJ1+1 - CASE( 2) ; JJ2=JJ1-1 - END SELECT - PHI_LS_P(II1,JJ1) = M2%REAL_RECV_PKG14(NQT2*(LL-1)+1) - PHI_LS_P(II2,JJ2) = M2%REAL_RECV_PKG14(NQT2*(LL-1)+2) - M2%U_LS(II1,JJ1) = M2%REAL_RECV_PKG14(NQT2*(LL-1)+3) - M2%V_LS(II1,JJ1) = M2%REAL_RECV_PKG14(NQT2*(LL-1)+4) - M2%Z_LS(II1,JJ1) = M2%REAL_RECV_PKG14(NQT2*(LL-1)+5) - ENDDO UNPACK_REAL_RECV_PKG14 + T_NOW_SUB = CURRENT_TIME() + NQT2 = 5 + IF (PREDICTOR) THEN + PHI_LS_P => M2%PHI1_LS + ELSE + PHI_LS_P => M2%PHI_LS + ENDIF + UNPACK_REAL_RECV_PKG14: DO LL=1,M2%NIC_R + II1 = M2%IIO_R(LL) ; II2 = II1 + JJ1 = M2%JJO_R(LL) ; JJ2 = JJ1 + SELECT CASE(M2%IOR_R(LL)) + CASE(-1) ; II2=II1+1 + CASE( 1) ; II2=II1-1 + CASE(-2) ; JJ2=JJ1+1 + CASE( 2) ; JJ2=JJ1-1 + END SELECT + PHI_LS_P(II1,JJ1) = M2%REAL_RECV_PKG14(NQT2*(LL-1)+1) + PHI_LS_P(II2,JJ2) = M2%REAL_RECV_PKG14(NQT2*(LL-1)+2) + M2%U_LS(II1,JJ1) = M2%REAL_RECV_PKG14(NQT2*(LL-1)+3) + M2%V_LS(II1,JJ1) = M2%REAL_RECV_PKG14(NQT2*(LL-1)+4) + M2%Z_LS(II1,JJ1) = M2%REAL_RECV_PKG14(NQT2*(LL-1)+5) + ENDDO UNPACK_REAL_RECV_PKG14 + T_USED(12) = T_USED(12) + CURRENT_TIME() - T_NOW_SUB ENDIF ! Unpack mass losses from OBST WALL cells in neighboring meshes @@ -3936,8 +3974,11 @@ SUBROUTINE MESH_EXCHANGE(CODE) T_USED(11)=T_USED(11) + CURRENT_TIME() - TNOW END SUBROUTINE MESH_EXCHANGE + ! Determine the maximum number of radiation angles that are to be received -SUBROUTINE ALLOCATE_RADIAITON_RECV_PKG() + +SUBROUTINE ALLOCATE_RADIATION_RECV_PKG() + INTEGER :: I,NM,NN,NOM,NRA,NRA_MAX,AIC,LL,N,SNODE,RNODE REAL(EB):: TNOW TNOW = CURRENT_TIME() @@ -3973,12 +4014,15 @@ SUBROUTINE ALLOCATE_RADIAITON_RECV_PKG() ENDIF ENDDO SENDING_MESH_LOOP ENDDO RECEIVING_MESH_LOOP + T_USED(11)=T_USED(11) + CURRENT_TIME() - TNOW -END SUBROUTINE ALLOCATE_RADIAITON_RECV_PKG +END SUBROUTINE ALLOCATE_RADIATION_RECV_PKG ! Determine the maximum number of radiation angles that are to be sent -SUBROUTINE ALLOCATE_RADIAITON_SEND_PKG() + +SUBROUTINE ALLOCATE_RADIATION_SEND_PKG() + INTEGER :: NM,NNN,NOM,NRA,NRA_MAX,AIC,LL,N,SNODE,RNODE,IERR REAL(EB):: TNOW TNOW = CURRENT_TIME() @@ -4010,10 +4054,9 @@ SUBROUTINE ALLOCATE_RADIAITON_SEND_PKG() ENDIF ENDDO RECEIVING_MESH_LOOP ENDDO SENDING_MESH_LOOP -T_USED(11)=T_USED(11) + CURRENT_TIME() - TNOW -END SUBROUTINE ALLOCATE_RADIAITON_SEND_PKG - +T_USED(11)=T_USED(11) + CURRENT_TIME() - TNOW +END SUBROUTINE ALLOCATE_RADIATION_SEND_PKG !> \brief Probe MPI communications until complete. Write error if the communication does not complete. @@ -4073,6 +4116,10 @@ SUBROUTINE DUMP_TIMERS CHARACTER(LEN=LINE_LENGTH+PADDING), DIMENSION(0:N_MPI_PROCESSES-1) :: LINE_ARRAY CHARACTER(30) :: FRMT +! T_USED(12) (PACK) is a subset of T_USED(11) (COMM). Separate them. + +T_USED(11) = T_USED(11) - T_USED(12) + ! T_USED_COPY(1) is the time spent in the main routine; i.e. the time not spent in a subroutine. ! T_USED_COPY so not overwriting T_USED(1) when multiple CPU dumps happen. @@ -4096,7 +4143,7 @@ SUBROUTINE DUMP_TIMERS ENDDO FN_CPU = TRIM(CHID)//'_cpu.csv' OPEN(LU_CPU,FILE=FN_CPU,STATUS='REPLACE',FORM='FORMATTED') - WRITE(LU_CPU,'(A)') 'Rank,MAIN,DIVG,MASS,VELO,PRES,WALL,DUMP,PART,RADI,FIRE,COMM,BLNK,HVAC,GEOM,VEGE,CHEM,Total T_USED (s)' + WRITE(LU_CPU,'(A)') 'Rank,MAIN,DIVG,MASS,VELO,PRES,WALL,DUMP,PART,RADI,FIRE,COMM,PACK,HVAC,GEOM,VEGE,CHEM,Total T_USED (s)' DO N=0,N_MPI_PROCESSES-1 WRITE(LU_CPU,'(A)') TRIM(LINE_ARRAY(N)) ENDDO diff --git a/Validation/SNL_Walls/FDS_Input_Files/concrete_wall.fds b/Validation/SNL_Walls/FDS_Input_Files/concrete_wall.fds index b6a202d1f2..b74748efb3 100644 --- a/Validation/SNL_Walls/FDS_Input_Files/concrete_wall.fds +++ b/Validation/SNL_Walls/FDS_Input_Files/concrete_wall.fds @@ -1,7 +1,7 @@ &HEAD CHID='concrete_wall', TITLE='SNL Concrete Wall experiment' / -&MESH XB=-0.0762,0.1905,-1.0668,-0.7112,-1.0668,-0.7112, IJK=21,28,28, MULT_ID='mesh' / -&MULT ID='mesh', DX=0.2667, DY=0.3556, DZ=0.3556, I_UPPER=1, J_UPPER=5, K_UPPER=5 / +&MESH XB=-0.08,0.48,-1.08,-0.54,-1.08,-0.54, IJK=56,54,54, MULT_ID='mesh' / +&MULT ID='mesh', DY=0.54, DZ=0.54, J_UPPER=3, K_UPPER=3 / &TIME T_END=5400, WALL_INCREMENT=1, DT=0.1, TIME_SHRINK_FACTOR=20 / @@ -283,22 +283,22 @@ &RAMP ID='S9', T=5400, F=1.009 / &RAMP ID='S9', T=5700, F=1.010 / -&OBST XB=-.0635,-.0508,-0.8128,-0.2032, 0.2032, 0.8128, SURF_ID6='INERT','Shroud Surface S1','INERT','INERT','INERT','INERT', COLOR='BLACK' / -&OBST XB=-.0635,-.0508,-0.2032, 0.2032, 0.2032, 0.8128, SURF_ID6='INERT','Shroud Surface S2','INERT','INERT','INERT','INERT', COLOR='BLACK' / -&OBST XB=-.0635,-.0508, 0.2032, 0.8132, 0.2032, 0.8128, SURF_ID6='INERT','Shroud Surface S3','INERT','INERT','INERT','INERT', COLOR='BLACK' / -&OBST XB=-.0635,-.0508,-0.8128,-0.2032,-0.2032, 0.2032, SURF_ID6='INERT','Shroud Surface S4','INERT','INERT','INERT','INERT', COLOR='BLACK' / -&OBST XB=-.0635,-.0508,-0.2032, 0.2032,-0.2032, 0.2032, SURF_ID6='INERT','Shroud Surface S5','INERT','INERT','INERT','INERT', COLOR='BLACK' / -&OBST XB=-.0635,-.0508, 0.2032, 0.8132,-0.2032, 0.2032, SURF_ID6='INERT','Shroud Surface S6','INERT','INERT','INERT','INERT', COLOR='BLACK' / -&OBST XB=-.0635,-.0508,-0.8128,-0.2032,-0.8128,-0.2032, SURF_ID6='INERT','Shroud Surface S7','INERT','INERT','INERT','INERT', COLOR='BLACK' / -&OBST XB=-.0635,-.0508,-0.2032, 0.2032,-0.8128,-0.2032, SURF_ID6='INERT','Shroud Surface S8','INERT','INERT','INERT','INERT', COLOR='BLACK' / -&OBST XB=-.0635,-.0508, 0.2032, 0.8132,-0.8128,-0.2032, SURF_ID6='INERT','Shroud Surface S9','INERT','INERT','INERT','INERT', COLOR='BLACK' / +&OBST XB=-.06,-.05,-0.80,-0.20, 0.20, 0.80, SURF_ID6='INERT','Shroud Surface S1','INERT','INERT','INERT','INERT', COLOR='BLACK' / +&OBST XB=-.06,-.05,-0.20, 0.20, 0.20, 0.80, SURF_ID6='INERT','Shroud Surface S2','INERT','INERT','INERT','INERT', COLOR='BLACK' / +&OBST XB=-.06,-.05, 0.20, 0.80, 0.20, 0.80, SURF_ID6='INERT','Shroud Surface S3','INERT','INERT','INERT','INERT', COLOR='BLACK' / +&OBST XB=-.06,-.05,-0.80,-0.20,-0.20, 0.20, SURF_ID6='INERT','Shroud Surface S4','INERT','INERT','INERT','INERT', COLOR='BLACK' / +&OBST XB=-.06,-.05,-0.20, 0.20,-0.20, 0.20, SURF_ID6='INERT','Shroud Surface S5','INERT','INERT','INERT','INERT', COLOR='BLACK' / +&OBST XB=-.06,-.05, 0.20, 0.80,-0.20, 0.20, SURF_ID6='INERT','Shroud Surface S6','INERT','INERT','INERT','INERT', COLOR='BLACK' / +&OBST XB=-.06,-.05,-0.80,-0.20,-0.80,-0.20, SURF_ID6='INERT','Shroud Surface S7','INERT','INERT','INERT','INERT', COLOR='BLACK' / +&OBST XB=-.06,-.05,-0.20, 0.20,-0.80,-0.20, SURF_ID6='INERT','Shroud Surface S8','INERT','INERT','INERT','INERT', COLOR='BLACK' / +&OBST XB=-.06,-.05, 0.20, 0.80,-0.80,-0.20, SURF_ID6='INERT','Shroud Surface S9','INERT','INERT','INERT','INERT', COLOR='BLACK' / -&OBST XB=-.0508,0.0000,-0.9398,0.9398,-0.9398,0.9398, SURF_ID='Wool Surface', MATL_ID='Mineral Wool Insulation', CELL_SIZE=0.002, COLOR='GREEN' / -&OBST XB=0.0000,0.4445,-1.0541,1.0541,-1.0541,1.0541, SURF_ID='Wool Surface', MATL_ID='Mineral Wool Insulation', CELL_SIZE=0.002, COLOR='PURPLE' / -&HOLE XB=-.0508,0.2032,-0.8128,0.8128,-0.8128,0.8128 / -&OBST XB=0.0000,0.0762,-0.8128,0.8128,-0.8128,0.8128, SURF_ID='Concrete Surface', MATL_ID='Concrete', CELL_SIZE=0.002, COLOR='GRAY 40', PERMIT_HOLE=F / -&OBST XB=0.0762,0.1270,-0.8128,0.8128,-0.8128,0.8128, SURF_ID='Wool Surface', MATL_ID='Mineral Wool Insulation', CELL_SIZE=0.002, COLOR='YELLOW', PERMIT_HOLE=F / -&OBST XB=0.1270,0.2032,-0.8128,0.8128,-0.8128,0.8128, SURF_ID='Concrete Surface', MATL_ID='Concrete', CELL_SIZE=0.002, COLOR='GRAY 40', PERMIT_HOLE=F / +&OBST XB=-.05,0.00,-0.94,0.94,-0.94,0.94, SURF_ID='Wool Surface', MATL_ID='Mineral Wool Insulation', CELL_SIZE=0.002, COLOR='GREEN' / +&OBST XB=0.00,0.44,-1.05,1.05,-1.05,1.05, SURF_ID='Wool Surface', MATL_ID='Mineral Wool Insulation', CELL_SIZE=0.002, COLOR='PURPLE' / +&HOLE XB=-.05,0.20,-0.80,0.80,-0.80,0.80 / +&OBST XB=0.00,0.08,-0.80,0.80,-0.80,0.80, SURF_ID='Concrete Surface', MATL_ID='Concrete', CELL_SIZE=0.002, COLOR='GRAY 40', PERMIT_HOLE=F / +&OBST XB=0.08,0.13,-0.80,0.80,-0.80,0.80, SURF_ID='Wool Surface', MATL_ID='Mineral Wool Insulation', CELL_SIZE=0.002, COLOR='YELLOW', PERMIT_HOLE=F / +&OBST XB=0.13,0.20,-0.80,0.80,-0.80,0.80, SURF_ID='Concrete Surface', MATL_ID='Concrete', CELL_SIZE=0.002, COLOR='GRAY 40', PERMIT_HOLE=F / &VENT MB='XMIN', SURF_ID='OPEN' / &VENT MB='XMAX', SURF_ID='OPEN' / @@ -315,11 +315,11 @@ &PROF XYZ=0,0,0, QUANTITY='TEMPERATURE', IOR=-1 / -&PROF ID='T_A', XYZ=0.0000,-0.3556, 0.3556, QUANTITY='TEMPERATURE', IOR=-1, DEPTHS=0.000,0.0191,0.0381,0.0572,0.0762,0.1270,0.1461,0.1651,0.1842,0.2033 / -&PROF ID='T_B', XYZ=0.0000, 0.3556, 0.3556, QUANTITY='TEMPERATURE', IOR=-1, DEPTHS=0.000,0.0191,0.0381,0.0572,0.0762,0.1270,0.1461,0.1651,0.1842,0.2033 / -&PROF ID='T_C', XYZ=0.0000, 0.0000, 0.0000, QUANTITY='TEMPERATURE', IOR=-1, DEPTHS=0.000,0.0191,0.0381,0.0572,0.0762,0.1270,0.1461,0.1651,0.1842,0.2033 / -&PROF ID='T_D', XYZ=0.0000,-0.3556,-0.3556, QUANTITY='TEMPERATURE', IOR=-1, DEPTHS=0.000,0.0191,0.0381,0.0572,0.0762,0.1270,0.1461,0.1651,0.1842,0.2033 / -&PROF ID='T_E', XYZ=0.0000, 0.3556,-0.3556, QUANTITY='TEMPERATURE', IOR=-1, DEPTHS=0.000,0.0191,0.0381,0.0572,0.0762,0.1270,0.1461,0.1651,0.1842,0.2033 / +&PROF ID='T_A', XYZ=0.00,-0.36, 0.36, QUANTITY='TEMPERATURE', IOR=-1, DEPTHS=0.000,0.0191,0.0381,0.0572,0.0762,0.1270,0.1461,0.1651,0.1842,0.2033 / +&PROF ID='T_B', XYZ=0.00, 0.36, 0.36, QUANTITY='TEMPERATURE', IOR=-1, DEPTHS=0.000,0.0191,0.0381,0.0572,0.0762,0.1270,0.1461,0.1651,0.1842,0.2033 / +&PROF ID='T_C', XYZ=0.00, 0.00, 0.00, QUANTITY='TEMPERATURE', IOR=-1, DEPTHS=0.000,0.0191,0.0381,0.0572,0.0762,0.1270,0.1461,0.1651,0.1842,0.2033 / +&PROF ID='T_D', XYZ=0.00,-0.36,-0.36, QUANTITY='TEMPERATURE', IOR=-1, DEPTHS=0.000,0.0191,0.0381,0.0572,0.0762,0.1270,0.1461,0.1651,0.1842,0.2033 / +&PROF ID='T_E', XYZ=0.00, 0.36,-0.36, QUANTITY='TEMPERATURE', IOR=-1, DEPTHS=0.000,0.0191,0.0381,0.0572,0.0762,0.1270,0.1461,0.1651,0.1842,0.2033 / &TAIL/ diff --git a/Validation/SNL_Walls/FDS_Input_Files/masonry_wall.fds b/Validation/SNL_Walls/FDS_Input_Files/masonry_wall.fds index c9d15b0ac4..ea7eeab74a 100644 --- a/Validation/SNL_Walls/FDS_Input_Files/masonry_wall.fds +++ b/Validation/SNL_Walls/FDS_Input_Files/masonry_wall.fds @@ -1,30 +1,46 @@ &HEAD CHID='masonry_wall', TITLE='SNL Masonry Wall experiment' / -&MESH XB=-0.0762,0.1905,-1.0668,-0.7112,-1.0668,-0.7112, IJK=21,28,28, MULT_ID='mesh' / -&MULT ID='mesh', DX=0.2667, DY=0.3556, DZ=0.3556, I_UPPER=1, J_UPPER=5, K_UPPER=5 / +&MESH XB=-0.08,0.48,-1.08,-0.54,-1.08,-0.54, IJK=56,54,54, MULT_ID='mesh' / +&MULT ID='mesh', DY=0.54, DZ=0.54, J_UPPER=3, K_UPPER=3 / &TIME T_END=6300, WALL_INCREMENT=1, DT=0.1, TIME_SHRINK_FACTOR=20 / -&MISC TMPA=19.8, SOLID_PHASE_ONLY=F / +&MISC TMPA=19.8, SOLID_PHASE_ONLY=F, VERBOSE=F / &MATL ID = 'Masonry' DENSITY = 1616 CONDUCTIVITY_RAMP = 'k_masonry' - SPECIFIC_HEAT = 1. / - -&RAMP ID='k_masonry', T= 26, F=0.27 / -&RAMP ID='k_masonry', T= 41, F=0.26 / -&RAMP ID='k_masonry', T= 66, F=0.27 / -&RAMP ID='k_masonry', T= 96, F=0.31 / -&RAMP ID='k_masonry', T=120, F=0.35 / -&RAMP ID='k_masonry', T=143, F=0.40 / -&RAMP ID='k_masonry', T=164, F=0.42 / -&RAMP ID='k_masonry', T=185, F=0.44 / -&RAMP ID='k_masonry', T=204, F=0.46 / -&RAMP ID='k_masonry', T=221, F=0.47 / -&RAMP ID='k_masonry', T=237, F=0.50 / -&RAMP ID='k_masonry', T=252, F=0.54 / -&RAMP ID='k_masonry', T=265, F=0.59 / + SPECIFIC_HEAT_RAMP = 'c_masonry' / + +&RAMP ID='k_masonry', T=26, F=0.217 / +&RAMP ID='k_masonry', T=41, F=0.207 / +&RAMP ID='k_masonry', T=66, F=0.220 / +&RAMP ID='k_masonry', T=96, F=0.257 / +&RAMP ID='k_masonry', T=120, F=0.290 / +&RAMP ID='k_masonry', T=143, F=0.335 / +&RAMP ID='k_masonry', T=164, F=0.358 / +&RAMP ID='k_masonry', T=185, F=0.380 / +&RAMP ID='k_masonry', T=204, F=0.403 / +&RAMP ID='k_masonry', T=221, F=0.416 / +&RAMP ID='k_masonry', T=237, F=0.446 / +&RAMP ID='k_masonry', T=252, F=0.478 / +&RAMP ID='k_masonry', T=265, F=0.527 / +&RAMP ID='k_masonry', T=400, F=0.691 / + +&RAMP ID='c_masonry', T=26, F=0.800 / +&RAMP ID='c_masonry', T=41, F=0.806 / +&RAMP ID='c_masonry', T=66, F=0.816 / +&RAMP ID='c_masonry', T=96, F=0.828 / +&RAMP ID='c_masonry', T=120, F=0.838 / +&RAMP ID='c_masonry', T=143, F=0.847 / +&RAMP ID='c_masonry', T=164, F=0.855 / +&RAMP ID='c_masonry', T=185, F=0.864 / +&RAMP ID='c_masonry', T=204, F=0.871 / +&RAMP ID='c_masonry', T=221, F=0.878 / +&RAMP ID='c_masonry', T=237, F=0.885 / +&RAMP ID='c_masonry', T=252, F=0.891 / +&RAMP ID='c_masonry', T=265, F=0.896 / +&RAMP ID='c_masonry', T=400, F=0.950 / &MATL ID = 'Perlite' DENSITY = 93 @@ -41,7 +57,7 @@ &RAMP ID='k_perlite', T=427, F=0.163 / &RAMP ID='k_perlite', T=538, F=0.214 / -&RAMP ID='c_perlite', T= 2, F=0.716 / +&RAMP ID='c_perlite', T= 2, F=0.761 / &RAMP ID='c_perlite', T= 25, F=0.802 / &RAMP ID='c_perlite', T=127, F=0.920 / &RAMP ID='c_perlite', T=177, F=0.966 / @@ -290,25 +306,25 @@ &RAMP ID='S9', T=6000, F=1.002 / &RAMP ID='S9', T=6300, F=1.001 / -&OBST XB=-.0635,-.0508,-0.8128,-0.2032, 0.2032, 0.8128, SURF_ID6='INERT','Shroud Surface S1','INERT','INERT','INERT','INERT', COLOR='BLACK' / -&OBST XB=-.0635,-.0508,-0.2032, 0.2032, 0.2032, 0.8128, SURF_ID6='INERT','Shroud Surface S2','INERT','INERT','INERT','INERT', COLOR='BLACK' / -&OBST XB=-.0635,-.0508, 0.2032, 0.8132, 0.2032, 0.8128, SURF_ID6='INERT','Shroud Surface S3','INERT','INERT','INERT','INERT', COLOR='BLACK' / -&OBST XB=-.0635,-.0508,-0.8128,-0.2032,-0.2032, 0.2032, SURF_ID6='INERT','Shroud Surface S4','INERT','INERT','INERT','INERT', COLOR='BLACK' / -&OBST XB=-.0635,-.0508,-0.2032, 0.2032,-0.2032, 0.2032, SURF_ID6='INERT','Shroud Surface S5','INERT','INERT','INERT','INERT', COLOR='BLACK' / -&OBST XB=-.0635,-.0508, 0.2032, 0.8132,-0.2032, 0.2032, SURF_ID6='INERT','Shroud Surface S6','INERT','INERT','INERT','INERT', COLOR='BLACK' / -&OBST XB=-.0635,-.0508,-0.8128,-0.2032,-0.8128,-0.2032, SURF_ID6='INERT','Shroud Surface S7','INERT','INERT','INERT','INERT', COLOR='BLACK' / -&OBST XB=-.0635,-.0508,-0.2032, 0.2032,-0.8128,-0.2032, SURF_ID6='INERT','Shroud Surface S8','INERT','INERT','INERT','INERT', COLOR='BLACK' / -&OBST XB=-.0635,-.0508, 0.2032, 0.8132,-0.8128,-0.2032, SURF_ID6='INERT','Shroud Surface S9','INERT','INERT','INERT','INERT', COLOR='BLACK' / - -&OBST XB=-.0508,0.0000,-0.9398,0.9398,-0.9398,0.9398, SURF_ID='Wool Surface', MATL_ID='Mineral Wool Insulation', CELL_SIZE=0.002, COLOR='GREEN' / -&OBST XB=0.0000,0.4445,-1.0541,1.0541,-1.0541,1.0541, SURF_ID='Wool Surface', MATL_ID='Mineral Wool Insulation', CELL_SIZE=0.002, COLOR='PURPLE' / -&HOLE XB=-.0508,0.2032,-0.8128,0.8128,-0.8128,0.8128 / -&OBST XB=0.0000,0.0254,-0.8128,0.8128,-0.8128,0.8128, SURF_ID='Masonry Surface', MATL_ID='Masonry', CELL_SIZE=0.002, COLOR='GRAY 40', PERMIT_HOLE=F / -&OBST XB=0.1778,0.2032,-0.8128,0.8128,-0.8128,0.8128, SURF_ID='Masonry Surface', MATL_ID='Masonry', CELL_SIZE=0.002, COLOR='GRAY 40', PERMIT_HOLE=F / -&OBST XB=0.0254,0.1778,-0.0127,0.0127,-0.8128,0.8128, SURF_ID='Masonry Surface', MATL_ID='Masonry', CELL_SIZE=0.002, COLOR='GRAY 40', PERMIT_HOLE=F, MULT_ID='flange' / -&MULT ID='flange', DY=0.2032, J_LOWER=-4, J_UPPER=4 / -&OBST XB=0.0254,0.1778, 0.0127,0.1905,-0.8128,0.8128, SURF_ID='Perlite Surface', MATL_ID='Perlite', CELL_SIZE=0.002, COLOR='BEIGE', PERMIT_HOLE=F, MULT_ID='hole' / -&MULT ID='hole', DY=0.2032, J_LOWER=-4, J_UPPER=3 / +&OBST XB=-.06,-.05,-0.80,-0.20, 0.20, 0.80, SURF_ID6='INERT','Shroud Surface S1','INERT','INERT','INERT','INERT', COLOR='BLACK' / +&OBST XB=-.06,-.05,-0.20, 0.20, 0.20, 0.80, SURF_ID6='INERT','Shroud Surface S2','INERT','INERT','INERT','INERT', COLOR='BLACK' / +&OBST XB=-.06,-.05, 0.20, 0.80, 0.20, 0.80, SURF_ID6='INERT','Shroud Surface S3','INERT','INERT','INERT','INERT', COLOR='BLACK' / +&OBST XB=-.06,-.05,-0.80,-0.20,-0.20, 0.20, SURF_ID6='INERT','Shroud Surface S4','INERT','INERT','INERT','INERT', COLOR='BLACK' / +&OBST XB=-.06,-.05,-0.20, 0.20,-0.20, 0.20, SURF_ID6='INERT','Shroud Surface S5','INERT','INERT','INERT','INERT', COLOR='BLACK' / +&OBST XB=-.06,-.05, 0.20, 0.80,-0.20, 0.20, SURF_ID6='INERT','Shroud Surface S6','INERT','INERT','INERT','INERT', COLOR='BLACK' / +&OBST XB=-.06,-.05,-0.80,-0.20,-0.80,-0.20, SURF_ID6='INERT','Shroud Surface S7','INERT','INERT','INERT','INERT', COLOR='BLACK' / +&OBST XB=-.06,-.05,-0.20, 0.20,-0.80,-0.20, SURF_ID6='INERT','Shroud Surface S8','INERT','INERT','INERT','INERT', COLOR='BLACK' / +&OBST XB=-.06,-.05, 0.20, 0.80,-0.80,-0.20, SURF_ID6='INERT','Shroud Surface S9','INERT','INERT','INERT','INERT', COLOR='BLACK' / + +&OBST XB=-.05,0.00,-0.94,0.94,-0.94,0.94, SURF_ID='Wool Surface', MATL_ID='Mineral Wool Insulation', CELL_SIZE=0.005, COLOR='GREEN' / +&OBST XB=0.00,0.44,-1.05,1.05,-1.05,1.05, SURF_ID='Wool Surface', MATL_ID='Mineral Wool Insulation', CELL_SIZE=0.005, COLOR='PURPLE' / +&HOLE XB=-.05,0.20,-0.80,0.80,-0.80,0.80 / +&OBST XB=0.00,0.04,-0.80,0.80,-0.80,0.80, SURF_ID='Masonry Surface', MATL_ID='Masonry', CELL_SIZE=0.005, COLOR='GRAY 40', PERMIT_HOLE=F / +&OBST XB=0.16,0.20,-0.80,0.80,-0.80,0.80, SURF_ID='Masonry Surface', MATL_ID='Masonry', CELL_SIZE=0.005, COLOR='GRAY 40', PERMIT_HOLE=F / +&OBST XB=0.04,0.16,-0.03,0.03,-0.80,0.80, SURF_ID='Masonry Surface', MATL_ID='Masonry', CELL_SIZE=0.005, COLOR='GRAY 40', PERMIT_HOLE=F, MULT_ID='flange' / +&MULT ID='flange', DY=0.20, J_LOWER=-4, J_UPPER=4 / +&OBST XB=0.04,0.16, 0.03,0.17,-0.80,0.80, SURF_ID='Perlite Surface', MATL_ID='Perlite', CELL_SIZE=0.005, COLOR='BEIGE', PERMIT_HOLE=F, MULT_ID='hole' / +&MULT ID='hole', DY=0.20, J_LOWER=-4, J_UPPER=3 / &VENT MB='XMIN', SURF_ID='OPEN' / &VENT MB='XMAX', SURF_ID='OPEN' / @@ -414,6 +430,10 @@ &DEVC ID='U-R9', XYZ= 0.0000, 0.5080, 0.3810, IOR=-1, QUANTITY='INSIDE WALL TEMPERATURE', DEPTH=0.1873 / &DEVC ID='U-R10', XYZ= 0.0000, 0.5937, 0.3810, IOR=-1, QUANTITY='INSIDE WALL TEMPERATURE', DEPTH=0.1873 / +&DEVC ID='RAM_01', XYZ=-0.0100,-0.9000,-0.9000, QUANTITY='RAM' / +&DEVC ID='RAM_31', XYZ= 0.2700,-0.5400,-0.5400, QUANTITY='RAM' / +&DEVC ID='RAM_32', XYZ= 0.4100,-0.5400,-0.5400, QUANTITY='RAM' / + &TAIL/ diff --git a/Validation/SNL_Walls/Run_All.sh b/Validation/SNL_Walls/Run_All.sh index e6b91322f7..c78aa059d7 100755 --- a/Validation/SNL_Walls/Run_All.sh +++ b/Validation/SNL_Walls/Run_All.sh @@ -5,7 +5,7 @@ export SVNROOT=`pwd`/../.. source $SVNROOT/Validation/Common_Run_All.sh -$QFDS $DEBUG $QUEUE -p 72 -d $INDIR concrete_wall.fds -$QFDS $DEBUG $QUEUE -p 72 -d $INDIR masonry_wall.fds +$QFDS $DEBUG $QUEUE -p 16 -d $INDIR concrete_wall.fds +$QFDS $DEBUG $QUEUE -p 16 -d $INDIR masonry_wall.fds echo FDS cases submitted