Skip to content

Commit 863b436

Browse files
authored
Merge pull request #14710 from drjfloyd/master
FDS Source: Add localized leakage to GEOM
2 parents 85ba042 + d6e36fa commit 863b436

File tree

3 files changed

+40
-8
lines changed

3 files changed

+40
-8
lines changed

Source/geom.f90

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23745,6 +23745,16 @@ SUBROUTINE READ_GEOM
2374523745
G%GEOM_BOX(HIGH_IND,X1AXIS) = MAX(G%GEOM_BOX(HIGH_IND,X1AXIS),G%VERTS(MAX_DIM*(IVERT-1)+X1AXIS))
2374623746
ENDDO
2374723747
ENDDO
23748+
23749+
! Check for duct nodes
23750+
23751+
DO J = 1,G%N_FACES
23752+
IF (SURFACE(G%SURFS(J))%NODE_ID/='null') THEN
23753+
G%HAVE_NODE = .TRUE.
23754+
EXIT
23755+
ENDIF
23756+
ENDDO
23757+
2374823758
ENDDO
2374923759

2375023760
IF(ALLOCATED(VOLUS)) DEALLOCATE(VOLUS)

Source/hvac.f90

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,8 @@ SUBROUTINE READ_HVAC
118118
LOGICAL :: DAMPER !< Flag indicating that a damper is present in a DUCT.
119119
LOGICAL :: REVERSE !< Flag indicating that a specfied flow or FAN in a DUCT is from the second to the first node.
120120
LOGICAL :: AMBIENT !< Flag indicating a DUCTNODE is connected to the ambient.
121-
LOGICAL :: GEOM !< Flag indicating a DUCTNODE is connected to GEOM.
121+
LOGICAL :: GEOM !< Flag indicating a DUCTNODE or LEAKAGE VENT_ID is connected to GEOM.
122+
LOGICAL :: GEOM2 !< Flag indicating LEAKAGE VENT2_ID is connected to GEOM.
122123
LOGICAL :: LEAK_ENTHALPY !< Flag indicating that the boundary condition for a LEAKAGE duct should preserve enthalpy.
123124
LOGICAL :: INITIALIZED_HVAC_MASS_TRANSPORT !< Flag indicating DUCTs with N_CELLS>1 have been initiazed.
124125
LOGICAL :: DUCT_QUANTITY_DEFINED=.FALSE. !< Flag indicating a DUCT_QUANTITY list has alreayd been defined
@@ -145,7 +146,7 @@ SUBROUTINE READ_HVAC
145146
TYPE(HVAC_QUANTITY_TYPE), POINTER :: HQT !< Pointer to a DUCT_ or NODE_QUANTITY_ARRAY
146147
NAMELIST /HVAC/ AIRCOIL_ID,AMBIENT,AREA,CLEAN_LOSS,COOLANT_SPECIFIC_HEAT,COOLANT_MASS_FLOW,COOLANT_TEMPERATURE,CTRL_ID,&
147148
DAMPER,DEBUG,DEVC_ID,DIAMETER,DISCHARGE_COEFFICIENT,DUCT_ID,&
148-
EFFICIENCY,FAN_ID,FILTER_ID,FIXED_Q,GEOM,ID,LEAK_ENTHALPY,LEAK_PRESSURE_EXPONENT,LEAK_REFERENCE_PRESSURE,&
149+
EFFICIENCY,FAN_ID,FILTER_ID,FIXED_Q,GEOM,GEOM2,ID,LEAK_ENTHALPY,LEAK_PRESSURE_EXPONENT,LEAK_REFERENCE_PRESSURE,&
149150
LENGTH,LOADING,LOADING_MULTIPLIER,LOSS,&
150151
MASS_FLOW,MAX_FLOW,MAX_PRESSURE,N_CELLS,NETWORK_ID,NODE_ID,PERIMETER,QUANTITY,QUANTITY_SPEC_ID,&
151152
RAMP_ID,RAMP_LOSS,REVERSE,ROUGHNESS,ROUND,SPEC_ID,SQUARE,TAU_AC,TAU_FAN,TAU_VF,TRANSPORT_PARTICLES,&
@@ -590,12 +591,21 @@ SUBROUTINE READ_HVAC
590591
WRITE(MESSAGE,'(A,I5)') 'ERROR(527): Localized leakage has no ID, HVAC line number:',NN
591592
CALL SHUTDOWN(MESSAGE); RETURN
592593
ENDIF
593-
DN%VENT_ID = VENT_ID
594-
DN%VENT=.TRUE.
594+
IF (GEOM) THEN
595+
DN%GEOM = .TRUE.
596+
IF (TRIM(DN%VENT_ID)=='AMBIENT') THEN
597+
WRITE(MESSAGE,'(A,A,A,I5)') 'ERROR(yyy): VENT_ID for leakage cannot be AMBIENT if GEOM is set. Leak ID:',TRIM(ID),&
598+
', HVAC line number:',NN
599+
CALL SHUTDOWN(MESSAGE); RETURN
600+
ENDIF
601+
ELSE
602+
DN%VENT_ID = VENT_ID
603+
DN%VENT=.TRUE.
604+
ENDIF
595605
DN%NETWORK_ID='LEAK'
596606
DN%READ_IN = .FALSE.
597607
DN%TRANSPORT_PARTICLES = TRANSPORT_PARTICLES
598-
IF (TRIM(DN%VENT_ID)=='null') THEN
608+
IF (TRIM(DN%VENT_ID)=='null' .AND. .NOT. GEOM) THEN
599609
WRITE(MESSAGE,'(A,A,A,I5)') 'ERROR(528): Leakage path must have VENT_ID defined. Leak ID:',TRIM(ID),&
600610
', HVAC line number:',NN
601611
CALL SHUTDOWN(MESSAGE); RETURN
@@ -614,12 +624,22 @@ SUBROUTINE READ_HVAC
614624
NODE_FILTER_A(I_DUCTNODE) = 'null'
615625
DN => DUCTNODE(I_DUCTNODE)
616626
DN%ID = VENT2_ID
617-
DN%VENT_ID = VENT2_ID
627+
IF (GEOM2) THEN
628+
DN%GEOM = .TRUE.
629+
IF (TRIM(DN%VENT_ID)=='AMBIENT') THEN
630+
WRITE(MESSAGE,'(A,A,A,I5)') 'ERROR(yyy): VENT2_ID for leakage cannot be AMBIENT if GEOM2 is set. Leak ID:',&
631+
TRIM(ID),', HVAC line number:',NN
632+
CALL SHUTDOWN(MESSAGE); RETURN
633+
ENDIF
634+
ELSE
635+
DN%VENT_ID = VENT2_ID
636+
DN%VENT=.TRUE.
637+
ENDIF
618638
DN%VENT=.TRUE.
619639
DN%NETWORK_ID='LEAK'
620640
DN%READ_IN = .FALSE.
621641
DN%TRANSPORT_PARTICLES = TRANSPORT_PARTICLES
622-
IF (TRIM(VENT2_ID)=='null') THEN
642+
IF (TRIM(VENT2_ID)=='null' .AND. .NOT. GEOM2) THEN
623643
WRITE(MESSAGE,'(A,A,A,I2)') 'ERROR(530): Leakage path must have VENT2_ID defined. Leak ID:',TRIM(ID),&
624644
', HVAC line number:',NN
625645
CALL SHUTDOWN(MESSAGE); RETURN
@@ -749,6 +769,7 @@ SUBROUTINE SET_HVAC_DEFAULTS
749769
FIXED_Q = -1.E10_EB
750770
FILTER_ID = 'null'
751771
GEOM = .FALSE.
772+
GEOM2 = .FALSE.
752773
LEAK_ENTHALPY = .FALSE.
753774
LEAK_PRESSURE_EXPONENT = 0.5_EB
754775
LEAK_REFERENCE_PRESSURE = 4._EB
@@ -1045,6 +1066,7 @@ SUBROUTINE PROC_HVAC
10451066
CF_Z = 0._EB
10461067
NODE_GEOM_LOOP: DO NG=1,N_GEOMETRY
10471068
G=>GEOMETRY(NG)
1069+
IF (.NOT. G%HAVE_NODE) CYCLE
10481070
FACES_LOOP: DO NF=1,G%N_FACES
10491071
SF=>SURFACE(G%SURFS(NF))
10501072
IF (SF%NODE_INDEX==0) CYCLE FACES_LOOP

Source/type.f90

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1146,7 +1146,7 @@ MODULE TYPES
11461146
CHARACTER(LABEL_LENGTH), ALLOCATABLE, DIMENSION(:) :: SURF_ID,VENT_ID
11471147
CHARACTER(LABEL_LENGTH) :: GEOC_FILENAME='null',TEXTURE_MAPPING
11481148
LOGICAL :: COMPONENT_ONLY,IS_DYNAMIC=.TRUE.,HAVE_SURF,HAVE_MATL,HIDDEN,REMOVEABLE,SHOW_BNDF=.TRUE., &
1149-
READ_BINARY=.FALSE.,IS_TERRAIN=.FALSE.
1149+
READ_BINARY=.FALSE.,IS_TERRAIN=.FALSE.,HAVE_NODE=.FALSE.
11501150
INTEGER :: N_VERTS_BASE,N_FACES_BASE,N_VOLUS_BASE,N_VERTS,N_EDGES,N_FACES,N_VOLUS,NSUB_GEOMS,GEOM_TYPE,IJK(3),N_LEVELS,&
11511151
DEVC_INDEX=-1,CTRL_INDEX=-1,PROP_INDEX=-1,DEVC_INDEX_O=-1,CTRL_INDEX_O=-1,MATL_INDEX=-1,&
11521152
CYLINDER_NSEG_THETA,CYLINDER_NSEG_AXIS,CELL_BLOCK_IOR=0

0 commit comments

Comments
 (0)