@@ -2333,7 +2333,7 @@ SUBROUTINE READ_DUMP
23332333 RAMP_PART,RAMP_PL3D,RAMP_PROF,RAMP_RADF,RAMP_RESTART,RAMP_SLCF,RAMP_SL3D,RAMP_SMOKE3D,RAMP_UVW,&
23342334 RAMP_TMP,RAMP_SPEC
23352335NAMELIST /DUMP/ BINGEOM_DIR,CFL_FILE,CLIP_RESTART_FILES,COLUMN_DUMP_LIMIT,CTRL_COLUMN_LIMIT,DEVC_COLUMN_LIMIT,&
2336- DIAGNOSTICS_INTERVAL,&
2336+ DECIMAL_SPECIFIER, DIAGNOSTICS_INTERVAL,&
23372337 DT_BNDF,DT_CPU,DT_CTRL,DT_DEVC,DT_FLUSH,DT_HRR,DT_HVAC,DT_ISOF,DT_MASS,DT_PART,DT_PL3D,DT_PROF,&
23382338 DT_RADF,DT_RESTART,DT_SL3D,DT_SLCF,DT_SMOKE3D,DT_UVW,DT_TMP,DT_SPEC,&
23392339 FLUSH_FILE_BUFFERS,GET_CUTCELLS_VERBOSE,HRRPUV_MAX_SMV,MASS_FILE,MAXIMUM_PARTICLES,MMS_TIMER,&
@@ -2454,6 +2454,14 @@ SUBROUTINE READ_DUMP
24542454! Set format of real number output
24552455
24562456WRITE(FMT_R,'(A,I2.2,A,I2.2,A,I1.1)') 'ES',SIG_FIGS+SIG_FIGS_EXP+4,'.',SIG_FIGS-1,'E',SIG_FIGS_EXP
2457+ IF (DECIMAL_SPECIFIER=='COMMA') THEN
2458+ SEPARATOR = ';'
2459+ ELSE
2460+ SEPARATOR = ','
2461+ ENDIF
2462+ WRITE(REAL_LIST,'(6A)') "(",FMT_R,",'",SEPARATOR,"'),",FMT_R
2463+ WRITE(CHAR_LIST,'(6A)') "(","A",",'",SEPARATOR,"'),","A"
2464+ WRITE(INTG_LIST,'(6A)') "(","I0",",'",SEPARATOR,"'),","I0"
24572465
24582466! Check Plot3D QUANTITIES
24592467
@@ -11402,15 +11410,7 @@ SUBROUTINE READ_OBST(QUICK_READ)
1140211410 IF (OB%I1==OB%I2) THEN ; OBT%X1=OB%X1 ; OBT%X2=OB%X2 ; ENDIF
1140311411 IF (OB%J1==OB%J2) THEN ; OBT%Y1=OB%Y1 ; OBT%Y2=OB%Y2 ; ENDIF
1140411412 IF (OB%K1==OB%K2) THEN ; OBT%Z1=OB%Z1 ; OBT%Z2=OB%Z2 ; ENDIF
11405- IF (OB%BULK_DENSITY > 0._EB .AND. OB%MASS<1.E5_EB) THEN
11406- OBT%MASS = OB%BULK_DENSITY*(OBT%X2-OBT%X1)*(OBT%Y2-OBT%Y1)*(OBT%Z2-OBT%Z1)
11407- IF (OB%I1==OB%I2 .AND. OB%UNDIVIDED_INPUT_LENGTH(1)<0.5_EB*DX(OB%I1)) &
11408- OBT%MASS = OB%BULK_DENSITY*OB%UNDIVIDED_INPUT_LENGTH(1)*(OBT%Y2-OBT%Y1)*(OBT%Z2-OBT%Z1)
11409- IF (OB%J1==OB%J2 .AND. OB%UNDIVIDED_INPUT_LENGTH(2)<0.5_EB*DY(OB%J1)) &
11410- OBT%MASS = OB%BULK_DENSITY*(OBT%X2-OBT%X1)*OB%UNDIVIDED_INPUT_LENGTH(2)*(OBT%Z2-OBT%Z1)
11411- IF (OB%K1==OB%K2 .AND. OB%UNDIVIDED_INPUT_LENGTH(3)<0.5_EB*DZ(OB%K1)) &
11412- OBT%MASS = OB%BULK_DENSITY*(OBT%X2-OBT%X1)*(OBT%Y2-OBT%Y1)*OB%UNDIVIDED_INPUT_LENGTH(3)
11413- ENDIF
11413+ IF (OB%BULK_DENSITY > 0._EB .AND. OB%MASS<1.E5_EB) OBT%MASS = OB%MASS/N_NEW_OBST
1141411414 ENDDO
1141511415 ENDDO
1141611416 ENDDO
@@ -11574,7 +11574,7 @@ SUBROUTINE READ_HOLE
1157411574USE MISC_FUNCTIONS, ONLY: PROCESS_MESH_NEIGHBORHOOD
1157511575CHARACTER(LABEL_LENGTH) :: DEVC_ID,CTRL_ID,MULT_ID
1157611576CHARACTER(25) :: COLOR
11577- INTEGER :: NM,N_HOLE,NN,NDO,N,I1,I2,J1,J2,K1,K2,RGB(3),N_HOLE_NEW,N_HOLE_O,II,JJ,KK,NNN,DEVC_INDEX_O,CTRL_INDEX_O
11577+ INTEGER :: NM,N_HOLE,NN,NDO,N,I1,I2,J1,J2,K1,K2,RGB(3),N_HOLE_NEW,N_HOLE_O,II,JJ,KK,NNN,NNNN, DEVC_INDEX_O,CTRL_INDEX_O
1157811578REAL(EB) :: X1,X2,Y1,Y2,Z1,Z2,TRANSPARENCY
1157911579NAMELIST /HOLE/ COLOR,CTRL_ID,DEVC_ID,FYI,ID,MULT_ID,RGB,TRANSPARENCY,XB
1158011580REAL(EB), ALLOCATABLE, DIMENSION(:,:) :: TEMP_XB
@@ -11853,7 +11853,13 @@ SUBROUTINE READ_HOLE
1185311853 NEW_OBST_IF: IF (NDO>0) THEN
1185411854 CALL RE_ALLOCATE_OBST(NM,N_OBST,NDO)
1185511855 OBSTRUCTION=>M%OBSTRUCTION
11856- OBSTRUCTION(N_OBST+1:N_OBST+NDO) = TEMP_OBST(1:NDO)
11856+ DO NNNN = 1,NDO
11857+ OB => OBSTRUCTION(N_OBST+NNNN)
11858+ OB = TEMP_OBST(NNNN)
11859+ IF (OB%BULK_DENSITY > 0._EB) &
11860+ OB%MASS = OB%BULK_DENSITY*(TEMP_OBST(NNNN)%X2-TEMP_OBST(NNNN)%X1)*&
11861+ (TEMP_OBST(NNNN)%Y2-TEMP_OBST(NNNN)%Y1)*(TEMP_OBST(NNNN)%Z2-TEMP_OBST(NNNN)%Z1)
11862+ ENDDO
1185711863 N_OBST = N_OBST + NDO
1185811864 ENDIF NEW_OBST_IF
1185911865
@@ -11863,6 +11869,9 @@ SUBROUTINE READ_HOLE
1186311869
1186411870 OBSTRUCTION(NN) = TEMP_OBST(0)
1186511871 OB => OBSTRUCTION(NN)
11872+ IF (OB%BULK_DENSITY > 0._EB) &
11873+ OB%MASS = OB%BULK_DENSITY*(TEMP_OBST(0)%X2-TEMP_OBST(0)%X1)*&
11874+ (TEMP_OBST(0)%Y2-TEMP_OBST(0)%Y1)*(TEMP_OBST(0)%Z2-TEMP_OBST(0)%Z1)
1186611875 OB%DEVC_INDEX_O = DEVC_INDEX_O
1186711876 OB%CTRL_INDEX_O = CTRL_INDEX_O
1186811877 OB%DEVC_ID = DEVC_ID
@@ -14889,7 +14898,7 @@ SUBROUTINE PROC_DEVC
1488914898USE DEVICE_VARIABLES, ONLY: DEVICE_TYPE,SUBDEVICE_TYPE,DEVICE,N_DEVC,PROPERTY,PROPERTY_TYPE,MAX_HISTOGRAM_NBINS,&
1489014899 N_HISTOGRAM
1489114900
14892- INTEGER :: N,NN,NNN,NS,MAXCELLS,I,J,K,NOM,NR,II,JJ,KK
14901+ INTEGER :: N,NN,NNN,NS,MAXCELLS,I,J,K,NOM,NR,II,JJ,KK,COMMA_POSITION
1489314902REAL(EB) :: XX,YY,ZZ,DISTANCE,SCANDISTANCE,DX,DY,DZ,XI,YJ,ZK,F,DFDD,NU,UU,TOL,RE,ZZ_G(1:N_TRACKED_SPECIES),MU_G,K_G
1489414903TYPE (DEVICE_TYPE), POINTER :: DV
1489514904TYPE (SUBDEVICE_TYPE), POINTER :: SDV
@@ -14903,6 +14912,14 @@ SUBROUTINE PROC_DEVC
1490314912
1490414913 DV => DEVICE(N)
1490514914
14915+ ! Check if the ID has a comma (or semi-colon)
14916+
14917+ COMMA_POSITION = INDEX(DV%ID,SEPARATOR)
14918+ IF (COMMA_POSITION>0) THEN
14919+ WRITE(MESSAGE,'(4A)') 'ERROR(899): DEVC ',TRIM(DV%ID),' should not contain a ',SEPARATOR
14920+ CALL SHUTDOWN(MESSAGE) ; RETURN
14921+ ENDIF
14922+
1490614923 ! Check for HVAC outputs with no HVAC inputs
1490714924
1490814925 IF ((DV%DUCT_ID/='null' .OR. DV%NODE_ID(1)/='null') .AND. .NOT. HVAC_SOLVE) THEN
0 commit comments