@@ -6540,7 +6540,7 @@ SUBROUTINE READ_PROP
65406540CHARACTER(LABEL_LENGTH) :: SMOKEVIEW_ID(SMOKEVIEW_OBJECTS_DIMENSION),QUANTITY='null',PART_ID='null',FLOW_RAMP='null', &
65416541 SPRAY_PATTERN_TABLE='null',SPEC_ID='null',&
65426542 PRESSURE_RAMP='null',SMOKEVIEW_PARAMETERS(SMOKEVIEW_OBJECTS_DIMENSION), &
6543- SPRAY_PATTERN_SHAPE='GAUSSIAN'
6543+ SPRAY_PATTERN_SHAPE='GAUSSIAN',SPECIFIC_HEAT_RAMP
65446544TYPE (PROPERTY_TYPE), POINTER :: PY
65456545
65466546NAMELIST /PROP/ ACTIVATION_OBSCURATION,ACTIVATION_TEMPERATURE,ALPHA_C,ALPHA_E,BETA_C,BETA_E,CALIBRATION_CONSTANT,&
@@ -6551,7 +6551,7 @@ SUBROUTINE READ_PROP
65516551 PARTICLES_PER_SECOND,PARTICLE_VELOCITY,PART_ID,PDPA_END,&
65526552 PDPA_INTEGRATE,PDPA_M,PDPA_N,PDPA_NORMALIZE,PDPA_RADIUS,&
65536553 PDPA_START,PRESSURE_RAMP,PROBE_DIAMETER,PX,PXX,QUANTITY,RTI,SMOKEVIEW_ID,SMOKEVIEW_PARAMETERS,SPARK,&
6554- SPEC_ID,SPECIFIC_HEAT,SPRAY_ANGLE,&
6554+ SPEC_ID,SPECIFIC_HEAT,SPECIFIC_HEAT_RAMP, SPRAY_ANGLE,&
65556555 SPRAY_PATTERN_BETA,SPRAY_PATTERN_MU,SPRAY_PATTERN_SHAPE,SPRAY_PATTERN_TABLE,TC,TIME_CONSTANT,VELOCITY_COMPONENT,&
65566556 VIEW_ANGLE
65576557
@@ -6600,7 +6600,16 @@ SUBROUTINE READ_PROP
66006600 PY%DIAMETER = DIAMETER
66016601 PY%EMISSIVITY = EMISSIVITY
66026602 PY%HEAT_TRANSFER_COEFFICIENT= HEAT_TRANSFER_COEFFICIENT
6603- PY%SPECIFIC_HEAT = SPECIFIC_HEAT*1000._EB/TIME_SHRINK_FACTOR
6603+ ALLOCATE(PY%SPECIFIC_HEAT(0:I_MAX_TEMP))
6604+ IF(SPECIFIC_HEAT > 0._EB) THEN
6605+ PY%SPECIFIC_HEAT = SPECIFIC_HEAT*1000._EB/TIME_SHRINK_FACTOR
6606+ ELSE
6607+ ! Type-K CP(20 C)=0.4515, CP(1200 C)=0.6010
6608+ DO J = 0,I_MAX_TEMP
6609+ PY%SPECIFIC_HEAT(J) = 0.4515_EB+0.001_EB*(REAL(MAX(20,MIN(1200,J)),EB)-20._EB)*(0.6010_EB-0.4515_EB)
6610+ ENDDO
6611+ ENDIF
6612+ IF (SPECIFIC_HEAT_RAMP /= 'null') CALL GET_RAMP_INDEX(SPECIFIC_HEAT_RAMP,'TEMPERATURE',PY%SPECIFIC_HEAT_RAMP_INDEX)
66046613 PY%C_FACTOR = C_FACTOR
66056614 PY%CHARACTERISTIC_VELOCITY = CHARACTERISTIC_VELOCITY
66066615 PY%GAUGE_EMISSIVITY = GAUGE_EMISSIVITY
@@ -6842,11 +6851,12 @@ SUBROUTINE SET_PROP_DEFAULTS
68426851BETA_C = -1.0_EB
68436852BETA_E = -1.0_EB
68446853CALIBRATION_CONSTANT = 0.93_EB
6845- DENSITY = 8908 ._EB ! kg/m3 (Nickel )
6854+ DENSITY = 8700 ._EB ! kg/m3 (Type-K )
68466855DIAMETER = 0.001 ! m
68476856EMISSIVITY = 0.85_EB
68486857HEAT_TRANSFER_COEFFICIENT= -1._EB ! W/m2/K
6849- SPECIFIC_HEAT = 0.44_EB ! kJ/kg/K (Nickel)
6858+ SPECIFIC_HEAT = -1._EB ! kJ/kg/K
6859+ SPECIFIC_HEAT_RAMP = 'null'
68506860C_FACTOR = 0.0_EB
68516861CHARACTERISTIC_VELOCITY = 1.0_EB ! m/s
68526862PARTICLE_VELOCITY = 0._EB ! m/s
@@ -6913,6 +6923,7 @@ END SUBROUTINE READ_PROP
69136923SUBROUTINE PROC_PROP
69146924
69156925USE DEVICE_VARIABLES
6926+ USE MATH_FUNCTIONS, ONLY: EVALUATE_RAMP
69166927REAL(EB) :: TOTAL_FLOWRATE, SUBTOTAL_FLOWRATE
69176928INTEGER :: N,NN,N_V_FACTORS,ILPC
69186929LOGICAL :: TABLE_NORMED(1:N_TABLE)
@@ -7011,7 +7022,21 @@ SUBROUTINE PROC_PROP
70117022 PY%V_FACTOR = PY%PARTICLE_VELOCITY/SQRT(PY%OPERATING_PRESSURE)
70127023 ENDIF
70137024 ENDIF
7025+
7026+ ! Check units of specific heat
70147027
7028+ IF (PY%SPECIFIC_HEAT_RAMP_INDEX > 0) THEN
7029+ IF (.NOT.RAMPS(PY%SPECIFIC_HEAT_RAMP_INDEX)%DEP_VAR_UNITS_CONVERTED) THEN
7030+ RAMPS(PY%SPECIFIC_HEAT_RAMP_INDEX)%INTERPOLATED_DATA(:) = &
7031+ RAMPS(PY%SPECIFIC_HEAT_RAMP_INDEX)%INTERPOLATED_DATA(:)*1000._EB/TIME_SHRINK_FACTOR
7032+ RAMPS(PY%SPECIFIC_HEAT_RAMP_INDEX)%DEP_VAR_UNITS_CONVERTED = .TRUE.
7033+ ENDIF
7034+ IF (RAMPS(PY%SPECIFIC_HEAT_RAMP_INDEX)%DEPENDENT_DATA(1) > 10._EB .AND. MY_RANK==0) &
7035+ WRITE(LU_ERR,'(A,A)') 'WARNING: SPECIFIC_HEAT units are kJ/kg/K check PROP ',TRIM(PY%ID)
7036+ DO I=0,I_MAX_TEMP
7037+ PY%SPECIFIC_HEAT(I)=EVALUATE_RAMP(REAL(I,EB),PY%SPECIFIC_HEAT_RAMP_INDEX)
7038+ ENDDO
7039+ ENDIF
70157040ENDDO PROP_LOOP
70167041
70177042END SUBROUTINE PROC_PROP
@@ -14161,8 +14186,7 @@ SUBROUTINE READ_DEVC
1416114186 DV%QUANTITY(1)=='GAUGE HEAT FLUX GAS' .OR. &
1416214187 DV%QUANTITY(1)=='RADIANCE' .OR. &
1416314188 DV%QUANTITY(1)=='ADIABATIC SURFACE TEMPERATURE GAS' .OR. &
14164- DV%QUANTITY(1)=='RADIOMETER GAS' .OR. &
14165- DV%QUANTITY(1)=='BI-DIRECTIONAL PROBE') THEN
14189+ DV%QUANTITY(1)=='RADIOMETER GAS') THEN
1416614190 IF (DV%ORIENTATION_INDEX==0) THEN
1416714191 WRITE(MESSAGE,'(3A)') 'ERROR(887): DEVC ',TRIM(ID),' must have an ORIENTATION.'
1416814192 CALL SHUTDOWN(MESSAGE) ; RETURN
@@ -14175,6 +14199,12 @@ SUBROUTINE READ_DEVC
1417514199 INIT_RESERVED(N_INIT_RESERVED)%DEVC_INDEX = N_DEVC
1417614200 INIT_RESERVED(N_INIT_RESERVED)%N_PARTICLES = POINTS
1417714201 ENDIF
14202+ ENDIF
14203+
14204+ ! Special case for QUANTITY='BI-DIRECTIONAL PROBE'
14205+ IF (DV%QUANTITY(1)=='BI-DIRECTIONAL PROBE' .AND. DV%ORIENTATION_INDEX==0) THEN
14206+ WRITE(MESSAGE,'(3A)') 'ERROR(887): DEVC ',TRIM(ID),' must have an ORIENTATION.'
14207+ CALL SHUTDOWN(MESSAGE) ; RETURN
1417814208 ENDIF
1417914209
1418014210 ! Miscellaneous actions taken based on specific device attributes
@@ -15161,7 +15191,7 @@ SUBROUTINE PROC_DEVC
1516115191 PY => PROPERTY(DV%PROP_INDEX)
1516215192 IF (PY%TIME_CONSTANT>0._EB) THEN ! Convert a specified TIME_CONSTANT into an equivalent bead DIAMETER
1516315193 IF (PY%HEAT_TRANSFER_COEFFICIENT>0._EB) THEN ! Calculate effective diameter directly
15164- PY%DIAMETER = 6._EB*PY%HEAT_TRANSFER_COEFFICIENT*PY%TIME_CONSTANT/(PY%DENSITY*PY%SPECIFIC_HEAT)
15194+ PY%DIAMETER = 6._EB*PY%HEAT_TRANSFER_COEFFICIENT*PY%TIME_CONSTANT/(PY%DENSITY*PY%SPECIFIC_HEAT(293) )
1516515195 ELSE ! Calculate effective diameter implicitly
1516615196 ZZ_G = 0._EB
1516715197 ZZ_G(1) = 1._EB
@@ -15171,13 +15201,13 @@ SUBROUTINE PROC_DEVC
1517115201 TOL = 1._EB
1517215202 RE = RHOA*UU*PY%DIAMETER/MU_G ! Make initial estimate of Re and Nu based on default bead diameter
1517315203 NU = 2._EB + 0.6_EB*SQRT(RE)*PR_AIR**ONTH
15174- PY%DIAMETER = SQRT(6._EB*K_G*NU*PY%TIME_CONSTANT/(PY%DENSITY*PY%SPECIFIC_HEAT))
15204+ PY%DIAMETER = SQRT(6._EB*K_G*NU*PY%TIME_CONSTANT/(PY%DENSITY*PY%SPECIFIC_HEAT(293) ))
1517515205 DO WHILE(TOL>1.E-5_EB)
1517615206 RE = RHOA*UU*PY%DIAMETER/MU_G
1517715207 NU = 2._EB + 0.6_EB*SQRT(RE)*PR_AIR**ONTH
15178- F = 6._EB*K_G*NU*PY%TIME_CONSTANT - PY%DENSITY*PY%SPECIFIC_HEAT*PY%DIAMETER**2
15208+ F = 6._EB*K_G*NU*PY%TIME_CONSTANT - PY%DENSITY*PY%SPECIFIC_HEAT(293) *PY%DIAMETER**2
1517915209 DFDD = 1.8_EB*K_G*PY%TIME_CONSTANT*PR_AIR**ONTH*RE**(-0.5)*RHOA*UU/MU_G - &
15180- 2._EB*PY%DENSITY*PY%SPECIFIC_HEAT*PY%DIAMETER
15210+ 2._EB*PY%DENSITY*PY%SPECIFIC_HEAT(293) *PY%DIAMETER
1518115211 PY%DIAMETER = PY%DIAMETER - F/DFDD
1518215212 TOL = ABS(F/DFDD)
1518315213 ENDDO
0 commit comments