diff --git a/cmake/Fortran.cmake b/cmake/Fortran.cmake index 69ea51c9a74..c3761db6220 100644 --- a/cmake/Fortran.cmake +++ b/cmake/Fortran.cmake @@ -102,12 +102,14 @@ elseif(UNIX) if(CMAKE_Fortran_COMPILER MATCHES "ifort") target_compile_options(fortran_project_options INTERFACE -fpp) target_link_options(fortran_project_options INTERFACE -static-intel) + target_compile_options(fortran_project_options INTERFACE $<$:-traceback>) else() if(NOT "Ninja" STREQUAL ${CMAKE_GENERATOR}) target_compile_options(fortran_project_options INTERFACE -cpp) endif() set(FORTRAN_STATIC_EXE TRUE) target_link_options(fortran_project_options INTERFACE -static) + target_compile_options(fortran_project_options INTERFACE $<$:-fbacktrace -ffpe-trap=zero,overflow,underflow>) endif() else() # Windows set(FORTRAN_STATIC_EXE TRUE) diff --git a/idd/BasementGHT.idd b/idd/BasementGHT.idd index 08b14c0675b..d33de81aea8 100644 --- a/idd/BasementGHT.idd +++ b/idd/BasementGHT.idd @@ -371,6 +371,7 @@ ManualGrid, \required-field N4, \field NZBG: Number of cells in Z direction. below grade: 10-35] \minimum 1 + \maximum 100 \required-field N5, \field IBASE: X direction cell indicator of slab edge: 5-20] \required-field diff --git a/src/Basement/3DBasementHT.f90 b/src/Basement/3DBasementHT.f90 index 01c6a55eb8b..7c7613697ec 100644 --- a/src/Basement/3DBasementHT.f90 +++ b/src/Basement/3DBasementHT.f90 @@ -1008,7 +1008,7 @@ SUBROUTINE GetSimParams(RUNID) SimParams%F=.1d0 ENDIF SimParams%IYRS =NumArray(2) - + ! Override with environment variable for quicker testing CALL GET_ENVIRONMENT_VARIABLE("CI_BASEMENT_NUMYEARS", EnvVarNumYearsString, EnvVarNumYearsStringLength, EnvVarNumYearsStatus) SELECT CASE (EnvVarNumYearsStatus) @@ -1026,7 +1026,7 @@ SUBROUTINE GetSimParams(RUNID) SimParams%IYRS = EnvVarNumYears END IF END SELECT - + IF (SimParams%IYRS <= 0.d0) THEN CALL ShowSevereError('GetSimParams: Entered "IYRS: Maximum number of yearly iterations:" '// & 'choice is not valid.'// & @@ -2266,6 +2266,7 @@ SUBROUTINE BasementSimulator(RUNID,NMAT,CVG,XDIM,YDIM,ZDIM,TG) REAL(r64) Elapsed_Time INTEGER IHrStart INTEGER IHrEnd + INTEGER CI_BAIL_EARLY_STATUS CALL CPU_TIME(Time_Start) @@ -2589,6 +2590,12 @@ SUBROUTINE BasementSimulator(RUNID,NMAT,CVG,XDIM,YDIM,ZDIM,TG) !*** Echo input data CALL PrelimOutput(ACEIL,AFLOOR,ARIM,ASILL,AWALL,PERIM,RUNID,TDBH,TDBC) + CALL GET_ENVIRONMENT_VARIABLE("CI_BAIL_EARLY", status=CI_BAIL_EARLY_STATUS) + IF (CI_BAIL_EARLY_STATUS == 0) THEN + print *, 'Exiting early because envionment variable CI_BAIL_EARLY was found' + CALL EXIT(0) + END IF + !*** Initialize temperatures in 3-D domain !*** T(X,Y,Z)=TG(Z) READ (GroundTemp,*) RSKY,HHEAT,HMASS,DODPG,(TG(COUNT1), COUNT1=0,NZBGM1) @@ -9634,7 +9641,7 @@ SUBROUTINE CalcTearth(IEXT,JEXT,DZ,DZP,TG,CVG) !*** DECLARATIONS: - REAL(r64) A(50), B(50), C(50), R(50), X(50), ALB, ALBEDO(2), & + REAL(r64) A(100), B(100), C(100), R(100), X(100), ALB, ALBEDO(2), & & AVGWND, CG, CONST(0:100,2), CPA, DH, DODPG, DW, & & DZ(-35:100), DZP(-35:100), ELEV, EPS, EPSLN(2), & & GOFT, GOLD, HRAT(24), IEXT, JEXT, LAT, LONG, MSTD, PBAR(24), & @@ -11425,6 +11432,8 @@ END SUBROUTINE InitializeTemps !******************************** AUTOGRIDDING *************************************** SUBROUTINE AutoGridding USE BasementSimData +USE DataGlobals, ONLY: ShowSevereError,ShowContinueError,ShowFatalError +USE General, ONLY: RoundSigDigits IMPLICIT NONE ! THIS PROGRAM WILL ESTABLISH THE SIMULATION GRID FOR A BASEMENT FOUNDATION ! WHOSE DIMENSIONS ARE INPUT BY THE USER @@ -11767,6 +11776,13 @@ SUBROUTINE AutoGridding NZ6=7 ! To the edge of the domain, cells are spaced at 2m NZBG=NZ1+NZ2+NZ3+NZ4+NZ5+NZ6 + IF(NZBG.GT.100) THEN + CALL ShowSevereError('AutoGrid BaseDepth is too high, reduce it below 17.0 meters') + CALL ShowContinueError('BaseDepth=['//trim(RoundSigDigits(BaseDepth,4))//'], '& + 'resulting NZBG=['//trim(RoundSigDigits(NZBG,0))//'] (max 100).') + CALL ShowFatalError('Program terminates due to preceding condition(s).') + END IF + ZFACEINIT(-NZAG+3)=-ConcAGHeight ZFACEINIT(-NZAG+2)=ZFACEINIT(-NZAG+3)-SillPlateHeight ZFACEINIT(-NZAG+1)=ZFACEINIT(-NZAG+2)-RimJoistHeight diff --git a/src/Basement/CMakeLists.txt b/src/Basement/CMakeLists.txt index 98285f5ae24..4ef987d1bbc 100644 --- a/src/Basement/CMakeLists.txt +++ b/src/Basement/CMakeLists.txt @@ -59,7 +59,7 @@ set(CMAKE_SKIP_RPATH ${FORTRAN_SKIP_RPATH}) set(SKIP_BUILD_RPATH TRUE) add_executable(Basement ${SRC}) -target_compile_options(Basement PRIVATE -O1) +target_compile_options(Basement PRIVATE $<$:-O1>) set_target_properties(Basement PROPERTIES FOLDER Auxiliary) if(NOT UNIX) # Need to reinclude it on Windows @@ -80,3 +80,31 @@ if(APPLE AND CPACK_CODESIGNING_DEVELOPPER_ID_APPLICATION) include("${CMAKE_CURRENT_SOURCE_DIR}/../../cmake/CodeSigning.cmake") register_install_codesign_target(Basement PreProcess/GrndTempCalc) endif() + +if(BUILD_TESTING) + + macro(basement_test GHT_IN_IDF_NAME) + set(TEST_DIR "${PROJECT_BINARY_DIR}/tst/${GHT_IN_IDF_NAME}") # build/src/Basement/tst + set(IDF_FILE "${PROJECT_SOURCE_DIR}/tests/${GHT_IN_IDF_NAME}.idf") + + file(MAKE_DIRECTORY ${TEST_DIR}) + file(COPY "${PROJECT_SOURCE_DIR}/../../idd/BasementGHT.idd" DESTINATION "${TEST_DIR}") + configure_file("${PROJECT_SOURCE_DIR}/../../weather/USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw" "${TEST_DIR}/in.epw" COPYONLY) + configure_file(${IDF_FILE} "${TEST_DIR}/BasementGHTIn.idf" COPYONLY) + + set(TEST_NAME "Basement.${GHT_IN_IDF_NAME}") + add_test(NAME "${TEST_NAME}" + COMMAND $ + WORKING_DIRECTORY ${TEST_DIR} + ) + set_tests_properties("${TEST_NAME}" PROPERTIES + FAIL_REGULAR_EXPRESSION "Terminated;Error(s) Detected" + ENVIRONMENT "CI_BAIL_EARLY=1" + ) + endmacro() + + basement_test(AutoGriddingDepthIsHigh) + basement_test(AutoGriddingDepthIsLowish) + basement_test(AutoGriddingDepthIsTooHigh) + set_tests_properties(Basement.AutoGriddingDepthIsTooHigh PROPERTIES WILL_FAIL TRUE) +endif() diff --git a/src/Basement/tests/AutoGriddingDepthIsHigh.idf b/src/Basement/tests/AutoGriddingDepthIsHigh.idf new file mode 100644 index 00000000000..e9c1419e574 --- /dev/null +++ b/src/Basement/tests/AutoGriddingDepthIsHigh.idf @@ -0,0 +1,79 @@ +! EquivAutoGrid BaseDepth is too high, cf #10847 + +SimParameters, + 0.1, !- F: Multiplier for the ADI solution + 15; !- IYRS: Maximum number of yearly iterations: + +MatlProps, + 3, !- NMAT: Number of materials in this domain + 2500, !- Density for Foundation Wall {kg/m3} + 2500, !- density for Floor Slab {kg/m3} + 2500, !- density for Ceiling {kg/m3} + 1500, !- density for Soil {kg/m3} + 2000, !- density for Gravel {kg/m3} + 449, !- density for Wood {kg/m3} + 880, !- Specific heat for foundation wall {J/kg-K} + 880, !- Specific heat for floor slab {J/kg-K} + 880, !- Specific heat for ceiling {J/kg-K} + 2000, !- Specific heat for soil {J/kg-K} + 720, !- Specific heat for gravel {J/kg-K} + 1530, !- Specific heat for wood {J/kg-K} + 2.3, !- Thermal conductivity for foundation wall {W/m-K} + 2.3, !- Thermal conductivity for floor slab {W/m-K} + 2.3, !- Thermal conductivity for ceiling {W/m-K} + 1.5, !- thermal conductivity for soil {W/m-K} + 1.9, !- thermal conductivity for gravel {W/m-K} + 0.12; !- thermal conductivity for wood {W/m-K} + +Insulation, + 5, !- REXT: R Value of any exterior insulation {m2-K/W} + True; !- INSFULL: Flag: Is the wall fully insulated? + +SurfaceProps, + 0.4, !- ALBEDO: Surface albedo for No snow conditions + 0.4, !- ALBEDO: Surface albedo for snow conditions + 0.94, !- EPSLN: Surface emissivity No Snow + 0.86, !- EPSLN: Surface emissivity with Snow + 6, !- VEGHT: Surface roughness No snow conditions {cm} + 0.25, !- VEGHT: Surface roughness Snow conditions {cm} + True; !- PET: Flag, Potential evapotranspiration on? + +BldgData, + 0.72, !- DWALL: Wall thickness {m} + 0.25, !- DSLAB: Floor slab thickness {m} + 0.3, !- DGRAVXY: Width of gravel pit beside basement wall {m} + 0.2, !- DGRAVZN: Gravel depth extending above the floor slab {m} + 0.3; !- DGRAVZP: Gravel depth below the floor slab {m} + +Interior, + True, !- COND: Flag: Is the basement conditioned? + 0.92, !- HIN: Downward convection only heat transfer coefficient {W/m2-K} + 4.04, !- HIN: Upward convection only heat transfer coefficient {W/m2-K} + 3.08, !- HIN: Horizontal convection only heat transfer coefficient {W/m2-K} + 6.13, !- HIN: Downward combined (convection and radiation) heat transfer coefficient {W/m2-K} + 9.26, !- HIN: Upward combined (convection and radiation) heat transfer coefficient {W/m2-K} + 8.29; !- HIN: Horizontal combined (convection and radiation) heat transfer coefficient {W/m2-K} + +ComBldg, + 19.112521, !- January average temperature {C} + 19.3265, !- February average temperature {C} + 19.639847, !- March average temperature {C} + 20.215454, !- April average temperature {C} + 20.415274, !- May average temperature {C} + 21.524396, !- June average temperature {C} + 21.880071, !- July average temperature {C} + 21.659116, !- August average temperature {C} + 21.114287, !- September average temperature {C} + 20.383342, !- October average temperature {C} + 19.553359, !- November average temperature {C} + 19.233107, !- December average temperature {C} + ; !- Daily variation sine wave amplitude {deltaC} + +EquivSlab, + 20.045326, !- APRatio: The area to perimeter ratio for this slab {m} + TRUE; !- EquivSizing: Flag + +EquivAutoGrid, + 15, !- CLEARANCE: Distance from outside of wall to edge of 3-D ground domain {m} + 0.25, !- SlabDepth: Thickness of the floor slab {m} + 10.3; !- BaseDepth: Depth of the basement wall below grade {m} diff --git a/src/Basement/tests/AutoGriddingDepthIsLowish.idf b/src/Basement/tests/AutoGriddingDepthIsLowish.idf new file mode 100644 index 00000000000..aaff243c015 --- /dev/null +++ b/src/Basement/tests/AutoGriddingDepthIsLowish.idf @@ -0,0 +1,79 @@ +! Regular Auto Grid case, not exceeding any bounds + +SimParameters, + 0.1, !- F: Multiplier for the ADI solution + 15; !- IYRS: Maximum number of yearly iterations: + +MatlProps, + 3, !- NMAT: Number of materials in this domain + 2500, !- Density for Foundation Wall {kg/m3} + 2500, !- density for Floor Slab {kg/m3} + 2500, !- density for Ceiling {kg/m3} + 1500, !- density for Soil {kg/m3} + 2000, !- density for Gravel {kg/m3} + 449, !- density for Wood {kg/m3} + 880, !- Specific heat for foundation wall {J/kg-K} + 880, !- Specific heat for floor slab {J/kg-K} + 880, !- Specific heat for ceiling {J/kg-K} + 2000, !- Specific heat for soil {J/kg-K} + 720, !- Specific heat for gravel {J/kg-K} + 1530, !- Specific heat for wood {J/kg-K} + 2.3, !- Thermal conductivity for foundation wall {W/m-K} + 2.3, !- Thermal conductivity for floor slab {W/m-K} + 2.3, !- Thermal conductivity for ceiling {W/m-K} + 1.5, !- thermal conductivity for soil {W/m-K} + 1.9, !- thermal conductivity for gravel {W/m-K} + 0.12; !- thermal conductivity for wood {W/m-K} + +Insulation, + 5, !- REXT: R Value of any exterior insulation {m2-K/W} + True; !- INSFULL: Flag: Is the wall fully insulated? + +SurfaceProps, + 0.4, !- ALBEDO: Surface albedo for No snow conditions + 0.4, !- ALBEDO: Surface albedo for snow conditions + 0.94, !- EPSLN: Surface emissivity No Snow + 0.86, !- EPSLN: Surface emissivity with Snow + 6, !- VEGHT: Surface roughness No snow conditions {cm} + 0.25, !- VEGHT: Surface roughness Snow conditions {cm} + True; !- PET: Flag, Potential evapotranspiration on? + +BldgData, + 0.72, !- DWALL: Wall thickness {m} + 0.25, !- DSLAB: Floor slab thickness {m} + 0.3, !- DGRAVXY: Width of gravel pit beside basement wall {m} + 0.2, !- DGRAVZN: Gravel depth extending above the floor slab {m} + 0.3; !- DGRAVZP: Gravel depth below the floor slab {m} + +Interior, + True, !- COND: Flag: Is the basement conditioned? + 0.92, !- HIN: Downward convection only heat transfer coefficient {W/m2-K} + 4.04, !- HIN: Upward convection only heat transfer coefficient {W/m2-K} + 3.08, !- HIN: Horizontal convection only heat transfer coefficient {W/m2-K} + 6.13, !- HIN: Downward combined (convection and radiation) heat transfer coefficient {W/m2-K} + 9.26, !- HIN: Upward combined (convection and radiation) heat transfer coefficient {W/m2-K} + 8.29; !- HIN: Horizontal combined (convection and radiation) heat transfer coefficient {W/m2-K} + +ComBldg, + 19.112521, !- January average temperature {C} + 19.3265, !- February average temperature {C} + 19.639847, !- March average temperature {C} + 20.215454, !- April average temperature {C} + 20.415274, !- May average temperature {C} + 21.524396, !- June average temperature {C} + 21.880071, !- July average temperature {C} + 21.659116, !- August average temperature {C} + 21.114287, !- September average temperature {C} + 20.383342, !- October average temperature {C} + 19.553359, !- November average temperature {C} + 19.233107, !- December average temperature {C} + ; !- Daily variation sine wave amplitude {deltaC} + +EquivSlab, + 20.045326, !- APRatio: The area to perimeter ratio for this slab {m} + TRUE; !- EquivSizing: Flag + +EquivAutoGrid, + 15, !- CLEARANCE: Distance from outside of wall to edge of 3-D ground domain {m} + 0.25, !- SlabDepth: Thickness of the floor slab {m} + 2.4; !- BaseDepth: Depth of the basement wall below grade {m} diff --git a/src/Basement/tests/AutoGriddingDepthIsTooHigh.idf b/src/Basement/tests/AutoGriddingDepthIsTooHigh.idf new file mode 100644 index 00000000000..5c6d37f4f49 --- /dev/null +++ b/src/Basement/tests/AutoGriddingDepthIsTooHigh.idf @@ -0,0 +1,79 @@ +! EquivAutoGrid BaseDepth is WAY too high > 17 meters + +SimParameters, + 0.1, !- F: Multiplier for the ADI solution + 15; !- IYRS: Maximum number of yearly iterations: + +MatlProps, + 3, !- NMAT: Number of materials in this domain + 2500, !- Density for Foundation Wall {kg/m3} + 2500, !- density for Floor Slab {kg/m3} + 2500, !- density for Ceiling {kg/m3} + 1500, !- density for Soil {kg/m3} + 2000, !- density for Gravel {kg/m3} + 449, !- density for Wood {kg/m3} + 880, !- Specific heat for foundation wall {J/kg-K} + 880, !- Specific heat for floor slab {J/kg-K} + 880, !- Specific heat for ceiling {J/kg-K} + 2000, !- Specific heat for soil {J/kg-K} + 720, !- Specific heat for gravel {J/kg-K} + 1530, !- Specific heat for wood {J/kg-K} + 2.3, !- Thermal conductivity for foundation wall {W/m-K} + 2.3, !- Thermal conductivity for floor slab {W/m-K} + 2.3, !- Thermal conductivity for ceiling {W/m-K} + 1.5, !- thermal conductivity for soil {W/m-K} + 1.9, !- thermal conductivity for gravel {W/m-K} + 0.12; !- thermal conductivity for wood {W/m-K} + +Insulation, + 5, !- REXT: R Value of any exterior insulation {m2-K/W} + True; !- INSFULL: Flag: Is the wall fully insulated? + +SurfaceProps, + 0.4, !- ALBEDO: Surface albedo for No snow conditions + 0.4, !- ALBEDO: Surface albedo for snow conditions + 0.94, !- EPSLN: Surface emissivity No Snow + 0.86, !- EPSLN: Surface emissivity with Snow + 6, !- VEGHT: Surface roughness No snow conditions {cm} + 0.25, !- VEGHT: Surface roughness Snow conditions {cm} + True; !- PET: Flag, Potential evapotranspiration on? + +BldgData, + 0.72, !- DWALL: Wall thickness {m} + 0.25, !- DSLAB: Floor slab thickness {m} + 0.3, !- DGRAVXY: Width of gravel pit beside basement wall {m} + 0.2, !- DGRAVZN: Gravel depth extending above the floor slab {m} + 0.3; !- DGRAVZP: Gravel depth below the floor slab {m} + +Interior, + True, !- COND: Flag: Is the basement conditioned? + 0.92, !- HIN: Downward convection only heat transfer coefficient {W/m2-K} + 4.04, !- HIN: Upward convection only heat transfer coefficient {W/m2-K} + 3.08, !- HIN: Horizontal convection only heat transfer coefficient {W/m2-K} + 6.13, !- HIN: Downward combined (convection and radiation) heat transfer coefficient {W/m2-K} + 9.26, !- HIN: Upward combined (convection and radiation) heat transfer coefficient {W/m2-K} + 8.29; !- HIN: Horizontal combined (convection and radiation) heat transfer coefficient {W/m2-K} + +ComBldg, + 19.112521, !- January average temperature {C} + 19.3265, !- February average temperature {C} + 19.639847, !- March average temperature {C} + 20.215454, !- April average temperature {C} + 20.415274, !- May average temperature {C} + 21.524396, !- June average temperature {C} + 21.880071, !- July average temperature {C} + 21.659116, !- August average temperature {C} + 21.114287, !- September average temperature {C} + 20.383342, !- October average temperature {C} + 19.553359, !- November average temperature {C} + 19.233107, !- December average temperature {C} + ; !- Daily variation sine wave amplitude {deltaC} + +EquivSlab, + 20.045326, !- APRatio: The area to perimeter ratio for this slab {m} + TRUE; !- EquivSizing: Flag + +EquivAutoGrid, + 15, !- CLEARANCE: Distance from outside of wall to edge of 3-D ground domain {m} + 0.25, !- SlabDepth: Thickness of the floor slab {m} + 17.01; !- BaseDepth: Depth of the basement wall below grade {m}