diff --git a/ccpp/driver/GFS_init.F90 b/ccpp/driver/GFS_init.F90 index 38cb95d33..7b210db79 100644 --- a/ccpp/driver/GFS_init.F90 +++ b/ccpp/driver/GFS_init.F90 @@ -127,13 +127,6 @@ subroutine GFS_initialize (Model, Statein, Stateout, Sfcprop, & !--- populate the grid components call GFS_grid_populate (Grid, Init_parm%xlon, Init_parm%xlat, Init_parm%area) -! DH* TODO - MOVE TO CCPP -! sfc_drv.f/lsm_noah_init and sfc_noahmp_drv.f/noahmpdrv_init; Note: This is -! automatically called during the CCPP physics initialization stage. - !--- initialize soil vegetation - call set_soilveg(Model%me, Model%isot, Model%ivegsrc, Model%nlunit) -! *DH - end subroutine GFS_initialize !------------------ diff --git a/ccpp/physics b/ccpp/physics index 469cb9051..2a8682de0 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 469cb905176e83bb01d9ecaaaaff1ab34d358cc3 +Subproject commit 2a8682de00fc7ff5c7b04f8fddbf86b12ef7a2b3 diff --git a/gfsphysics/CMakeLists.txt b/gfsphysics/CMakeLists.txt index 5d6244041..f516e4709 100644 --- a/gfsphysics/CMakeLists.txt +++ b/gfsphysics/CMakeLists.txt @@ -12,8 +12,6 @@ if(32BIT) endif() set(CCPP_SOURCES - physics/namelist_soilveg.f - physics/set_soilveg.f physics/noahmp_tables.f90 ) diff --git a/gfsphysics/physics/namelist_soilveg.f b/gfsphysics/physics/namelist_soilveg.f deleted file mode 100644 index cd4618af0..000000000 --- a/gfsphysics/physics/namelist_soilveg.f +++ /dev/null @@ -1,49 +0,0 @@ - module namelist_soilveg - implicit none - save - - INTEGER MAX_SLOPETYP - INTEGER MAX_SOILTYP - INTEGER MAX_VEGTYP - - PARAMETER(MAX_SLOPETYP = 30) - PARAMETER(MAX_SOILTYP = 30) - PARAMETER(MAX_VEGTYP = 30) - - REAL SLOPE_DATA(MAX_SLOPETYP) - REAL RSMTBL(MAX_VEGTYP) - REAL RGLTBL(MAX_VEGTYP) - REAL HSTBL(MAX_VEGTYP) - REAL SNUPX(MAX_VEGTYP) - REAL BB(MAX_SOILTYP) - REAL DRYSMC(MAX_SOILTYP) - REAL F11(MAX_SOILTYP) - REAL MAXSMC(MAX_SOILTYP) - REAL REFSMC(MAX_SOILTYP) - REAL SATPSI(MAX_SOILTYP) - REAL SATDK(MAX_SOILTYP) - REAL SATDW(MAX_SOILTYP) - REAL WLTSMC(MAX_SOILTYP) - REAL QTZ(MAX_SOILTYP) - LOGICAL LPARAM - REAL ZBOT_DATA - REAL SALP_DATA - REAL CFACTR_DATA - REAL CMCMAX_DATA - REAL SBETA_DATA - REAL RSMAX_DATA - REAL TOPT_DATA - REAL REFDK_DATA - REAL FRZK_DATA - INTEGER BARE - INTEGER DEFINED_VEG - INTEGER DEFINED_SOIL - INTEGER DEFINED_SLOPE - REAL FXEXP_DATA - INTEGER NROOT_DATA(MAX_VEGTYP) - REAL REFKDT_DATA - REAL Z0_DATA(MAX_VEGTYP) - REAL CZIL_DATA - REAL LAI_DATA(MAX_VEGTYP) - REAL CSOIL_DATA - end module namelist_soilveg diff --git a/gfsphysics/physics/set_soilveg.f b/gfsphysics/physics/set_soilveg.f deleted file mode 100644 index b4ef66493..000000000 --- a/gfsphysics/physics/set_soilveg.f +++ /dev/null @@ -1,409 +0,0 @@ - subroutine set_soilveg(me,isot,ivet,nlunit) - use namelist_soilveg - implicit none - - integer, intent(in) :: isot,ivet,nlunit - integer me -!my begin locals -!for 20 igbp veg type and 19 stasgo soil type - integer i - REAL WLTSMC1,REFSMC1 -! ---------------------------------------------------------------------- -! SET TWO SOIL MOISTURE WILT, SOIL MOISTURE REFERENCE PARAMETERS -! ---------------------------------------------------------------------- - REAL SMLOW - REAL SMLOW_DATA - DATA SMLOW_DATA /0.5/ - - REAL SMHIGH - REAL SMHIGH_DATA -! changed in 2.6 from 3 to 6 on June 2nd 2003 -! DATA SMHIGH_DATA /3.0/ - DATA SMHIGH_DATA /6.0/ - NAMELIST /SOIL_VEG/ SLOPE_DATA, RSMTBL, RGLTBL, HSTBL, SNUPX, - & BB, DRYSMC, F11, MAXSMC, REFSMC, SATPSI, SATDK, SATDW, - & WLTSMC, QTZ, LPARAM, ZBOT_DATA, SALP_DATA, CFACTR_DATA, - & CMCMAX_DATA, SBETA_DATA, RSMAX_DATA, TOPT_DATA, - & REFDK_DATA, FRZK_DATA, BARE, DEFINED_VEG, DEFINED_SOIL, - & DEFINED_SLOPE, FXEXP_DATA, NROOT_DATA, REFKDT_DATA, Z0_DATA, - & CZIL_DATA, LAI_DATA, CSOIL_DATA - -cmy end locals - if(ivet.eq.2) then - -!using umd veg table - slope_data =(/0.1, 0.6, 1.0, 0.35, 0.55, 0.8, - & 0.63, 0.0, 0.0, 0.0, 0.0, 0.0, - & 0.0 , 0.0, 0.0, 0.0, 0.0, 0.0, - & 0.0 , 0.0, 0.0, 0.0, 0.0, 0.0, - & 0.0 , 0.0, 0.0, 0.0, 0.0, 0.0/) - rsmtbl =(/300.0, 175.0, 175.0, 300.0, 300.0, 70.0, - & 20.0, 225.0, 225.0, 225.0, 400.0, 20.0, - & 150.0, 0.0, 0.0, 0.0, 0.0, 0.0, - & 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - & 0.0, 0.0, 0.0, 0.0, 0.0, 0.0/) -c----------------------------- - rgltbl =(/30.0, 30.0, 30.0, 30.0, 30.0, 65.0, - & 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, - & 100.0, 0.0, 0.0, 0.0, 0.0, 0.0, - & 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - & 0.0, 0.0, 0.0, 0.0, 0.0, 0.0/) - hstbl =(/41.69, 54.53, 51.93, 47.35, 47.35, 54.53, - & 36.35, 42.00, 42.00, 42.00, 42.00, 36.35, - & 42.00, 0.00, 0.00, 0.00, 0.00, 0.00, - & 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, - & 0.00, 0.00, 0.00, 0.00, 0.00, 0.00/) -! changed for version 2.6 on june 2nd 2003 -! data snupx /0.080, 0.080, 0.080, 0.080, 0.080, 0.080, -! & 0.040, 0.040, 0.040, 0.040, 0.025, 0.040, -! & 0.025, 0.000, 0.000, 0.000, 0.000, 0.000, - snupx =(/0.040, 0.040, 0.040, 0.040, 0.040, 0.040, - * 0.020, 0.020, 0.020, 0.020, 0.013, 0.020, - * 0.013, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000/) - - bare =11 - -c--------------------------------------------------------------------- -! number of defined veg used. -! ---------------------------------------------------------------------- - defined_veg=13 - nroot_data =(/4,4,4,4,4,4,3,3,3,2,3,3,2,0,0, - & 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0/) -! ---------------------------------------------------------------------- -! vegetation class-related arrays -! ---------------------------------------------------------------------- - z0_data =(/2.653, 0.826, 0.563, 1.089, 0.854, 0.856, - & 0.035, 0.238, 0.065, 0.076, 0.011, 0.125, - & 0.011, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000/) -clu: change to 3 or 2 oct 15, 2004 - lai_data =(/3.0, 3.0, 3.0, 3.0, 3.0, 3.0, - & 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, - & 3.0, 0.0, 0.0, 0.0, 0.0, 0.0, - & 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - & 0.0, 0.0, 0.0, 0.0, 0.0, 0.0/) -! use igbp table - elseif(ivet.eq.1)then - - SLOPE_DATA =(/1.0, 1.0, 1.0, 1.0, 1.0, 1.0, - & 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, - & 1.0 , 1.0, 1.0, 1.0, 1.0, 1.0, - & 1.0 , 1.0, 0.0, 0.0, 0.0, 0.0, - & 0.0 , 0.0, 0.0, 0.0, 0.0, 0.0/) - RSMTBL =(/300.0, 300.0, 70.0, 175.0, 175.0, 70.0, - & 70.0, 70.0, 70.0, 20.0, 40.0, 20.0, - & 400.0, 35.0, 200.0, 70.0, 100.0, 70.0, - & 150.0, 200.0, 0.0, 0.0,0.0, 0.0, - & 0.0, 0.0, 0.0, 0.0, 0.0, 0.0/) -c----------------------------- - RGLTBL =(/30.0, 30.0, 30.0, 30.0, 30.0, 100.0, - & 100.0, 65.0, 65.0, 100.0, 100.0, 100.0, - & 100.0, 100.0, 100.0,100.0,30.0, 100.0, - & 100.0, 100.0, 0.0,0.0,0.0,0.0, - & 0.0, 0.0, 0.0, 0.0, 0.0, 0.0/) - HSTBL =(/47.35, 41.69, 47.35, 54.53, 51.93, 42.00, - & 42.00, 42.00, 42.00, 36.35, 60.00, 36.25, - & 42.00, 36.25, 42.00, 42.00, 51.75, 42.00, - & 42.00, 42.00, 0.00, 0.00, 0.00, 0.00, - & 0.00, 0.00, 0.00, 0.00, 0.00, 0.00/) - SNUPX =(/0.080, 0.080, 0.080, 0.080, 0.080, 0.020, - * 0.020, 0.060, 0.040, 0.020, 0.010, 0.020, - * 0.020, 0.020, 0.013, 0.013, 0.010, 0.020, - & 0.020, 0.020, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000/) - - bare =16 - -!--------------------------------------------------------------------- -! number of defined veg used. -! ---------------------------------------------------------------------- - defined_veg=20 - - NROOT_DATA =(/4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 1, 3, 2, - & 3, 1, 3, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0/) -! & 3, 0, 3, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0/) ! Moorthi -! ---------------------------------------------------------------------- -! VEGETATION CLASS-RELATED ARRAYS -! ---------------------------------------------------------------------- - Z0_DATA =(/1.089, 2.653, 0.854, 0.826, 0.80, 0.05, - & 0.03, 0.856, 0.856, 0.15, 0.04, 0.13, - & 1.00, 0.25, 0.011, 0.011, 0.001, 0.076, - & 0.05, 0.03, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000/) - - lai_data =(/3.0, 3.0, 3.0, 3.0, 3.0, 3.0, - & 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, - & 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, - & 3.0, 3.0, 0.0, 0.0, 0.0, 0.0, - & 0.0, 0.0, 0.0, 0.0, 0.0, 0.0/) - -! end if veg table - endif - - if(isot.eq.0) then - - bb =(/4.26, 8.72, 11.55, 4.74, 10.73, 8.17, - & 6.77, 5.25, 4.26, 0.00, 0.00, 0.00, - & 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, - & 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, - & 0.00, 0.00, 0.00, 0.00, 0.00, 0.00/) -! !!!!!!!!!!!!!! the following values in the table are not used -! !!!!!!!!!!!!!! and are just given for reference - drysmc=(/0.029, 0.119, 0.139, 0.047, 0.100, 0.103, - & 0.069, 0.066, 0.029, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000/) -! !!!!!!!!!!!!!! the following values in the table are not used -! !!!!!!!!!!!!!! and are just given for reference - f11 =(/-0.999, -1.116, -2.137, -0.572, -3.201, -1.302, - & -1.519, -0.329, -0.999, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000/) - maxsmc=(/0.421, 0.464, 0.468, 0.434, 0.406, 0.465, - & 0.404, 0.439, 0.421, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000/) -! -! ---------------------------------------------------------------------- -! the following 5 parameters are derived later in redprm.f from the soil -! data, and are just given here for reference and to force static -! storage allocation. -dag lohmann, feb. 2001 -! ---------------------------------------------------------------------- -! data refsmc/0.283, 0.387, 0.412, 0.312, 0.338, 0.382, -! & 0.315, 0.329, 0.283, 0.000, 0.000, 0.000, -! !!!!!!!!!!!!!! the following values in the table are not used -! !!!!!!!!!!!!!! and are just given for reference - refsmc=(/0.248, 0.368, 0.398, 0.281, 0.321, 0.361, - & 0.293, 0.301, 0.248, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000/) -! ---------------------------------------------------------------------- -! soil texture-related arrays. -! ---------------------------------------------------------------------- - satpsi=(/0.04, 0.62, 0.47, 0.14, 0.10, 0.26, - & 0.14, 0.36, 0.04, 0.00, 0.00, 0.00, - & 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, - & 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, - & 0.00, 0.00, 0.00, 0.00, 0.00, 0.00/) - satdk =(/1.41e-5, 0.20e-5, 0.10e-5, 0.52e-5, 0.72e-5, - & 0.25e-5, 0.45e-5, 0.34e-5, 1.41e-5, 0.00, - & 0.00 , 0.00 , 0.00 , 0.00 , 0.00, - & 0.00 , 0.00 , 0.00 , 0.00 , 0.00, - & 0.00 , 0.00 , 0.00 , 0.00 , 0.00, - & 0.00 , 0.00 , 0.00 , 0.00 , 0.00/) - qtz =(/0.82, 0.10, 0.25, 0.60, 0.52, 0.35, - & 0.60, 0.40, 0.82, 0.00, 0.00, 0.00, - & 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, - & 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, - & 0.00, 0.00, 0.00, 0.00, 0.00, 0.00/) - -! !!!!!!!!!!!!!! the following values in the table are not used -! !!!!!!!!!!!!!! and are just given for reference - wltsmc=(/0.029, 0.119, 0.139, 0.047, 0.100, 0.103, - & 0.069, 0.066, 0.029, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000/) -! !!!!!!!!!!!!!! the following values in the table are not used -! !!!!!!!!!!!!!! and are just given for reference - satdw =(/5.71e-6, 2.33e-5, 1.16e-5, 7.95e-6, 1.90e-5, - & 1.14e-5, 1.06e-5, 1.46e-5, 5.71e-6, 0.00, - & 0.00 , 0.00 , 0.00 , 0.00 , 0.00, - & 0.00 , 0.00 , 0.00 , 0.00 , 0.00, - & 0.00 , 0.00 , 0.00 , 0.00 , 0.00, - & 0.00 , 0.00 , 0.00 , 0.00 , 0.00/) - -! ---------------------------------------------------------------------- -! number of defined soiltyps used. -! ---------------------------------------------------------------------- - - defined_soil=9 - - else - -! using stasgo table - BB =(/4.05, 4.26, 4.74, 5.33, 5.33, 5.25, - & 6.77, 8.72, 8.17, 10.73, 10.39, 11.55, - & 5.25, 4.26, 4.05, 4.26, 11.55, 4.05, - & 4.05, 0.00, 0.00, 0.00, 0.00, 0.00, - & 0.00, 0.00, 0.00, 0.00, 0.00, 0.00/) -! !!!!!!!!!!!!!! The following values in the table are NOT used -! !!!!!!!!!!!!!! and are just given for reference -! DRYSMC=(/0.023, 0.028, 0.047, 0.084, 0.084, 0.066, -! & 0.069, 0.120, 0.103, 0.100, 0.126, 0.135, -! & 0.069, 0.028, 0.012, 0.028, 0.135, 0.012, -! & 0.023, 0.000, 0.000, 0.000, 0.000, 0.000, -! & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000/) - DRYSMC=(/0.010, 0.025, 0.010, 0.010, 0.010, 0.010, - & 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, - & 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, - & 0.010, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000/) -! !!!!!!!!!!!!!! The following values in the table are NOT used -! !!!!!!!!!!!!!! and are just given for reference - F11 =(/-1.090, -1.041, -0.568, 0.162, 0.162, -0.327, - & -1.535, -1.118, -1.297, -3.211, -1.916, -2.258, - & -0.201, -1.041, -2.287, -1.041, -2.258, -2.287, - & -1.090, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000/) - MAXSMC=(/0.395, 0.421, 0.434, 0.476, 0.476, 0.439, - & 0.404, 0.464, 0.465, 0.406, 0.468, 0.457, - & 0.464, 0.421, 0.200, 0.421, 0.457, 0.200, - & 0.395, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000/) -! -! ---------------------------------------------------------------------- -! THE FOLLOWING 5 PARAMETERS ARE DERIVED LATER IN REDPRM.F FROM THE SOIL -! DATA, AND ARE JUST GIVEN HERE FOR REFERENCE AND TO FORCE STATIC -! STORAGE ALLOCATION. -DAG LOHMANN, FEB. 2001 -! ---------------------------------------------------------------------- -! DATA REFSMC/0.283, 0.387, 0.412, 0.312, 0.338, 0.382, -! & 0.315, 0.329, 0.283, 0.000, 0.000, 0.000, -! !!!!!!!!!!!!!! The following values in the table are NOT used -! !!!!!!!!!!!!!! and are just given for reference - REFSMC=(/0.236, 0.283, 0.312, 0.360, 0.360, 0.329, - & 0.315, 0.387, 0.382, 0.338, 0.404, 0.403, - & 0.348, 0.283, 0.133, 0.283, 0.403, 0.133, - & 0.236, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000/) -! ---------------------------------------------------------------------- -! SOIL TEXTURE-RELATED ARRAYS. -! ---------------------------------------------------------------------- - SATPSI=(/0.035, 0.0363, 0.1413, 0.7586, 0.7586, 0.3548, - & 0.1349, 0.6166, 0.2630, 0.0977, 0.3236, 0.4677, - & 0.3548, 0.0363, 0.0350, 0.0363, 0.4677, 0.0350, - & 0.0350, 0.00, 0.00, 0.00, 0.00, 0.00, - & 0.00, 0.00, 0.00, 0.00, 0.00, 0.00/) - SATDK =(/1.76e-4, 1.4078e-5, 5.2304e-6, 2.8089e-6, 2.8089e-6, - & 3.377e-6, 4.4518e-6, 2.0348e-6, 2.4464e-6, 7.2199e-6, - & 1.3444e-6, 9.7394e-7, 3.377e-6, 1.4078e-5, 1.4087e-05, - & 1.4078e-5, 9.7394e-7, 1.4078e-5, 1.760e-4, 0.00, - & 0.00 , 0.00 , 0.00 , 0.00 , 0.00, - & 0.00 , 0.00 , 0.00 , 0.00 , 0.00/) -! QTZ =(/0.92, 0.82, 0.60, 0.25, 0.10, 0.40, - QTZ =(/0.92, 0.82, 0.25, 0.15, 0.10, 0.20, - & 0.60, 0.10, 0.35, 0.52, 0.10, 0.25, - & 0.05, 0.25, 0.07, 0.25, 0.60, 0.52, - & 0.92, 0.00, 0.00, 0.00, 0.00, 0.00, - & 0.00, 0.00, 0.00, 0.00, 0.00, 0.00/) - -! !!!!!!!!!!!!!! The following values in the table are NOT used -! !!!!!!!!!!!!!! and are just given for reference - WLTSMC=(/0.023, 0.028, 0.047, 0.084, 0.084, 0.066, - & 0.069, 0.120, 0.103, 0.100, 0.126, 0.135, - & 0.069, 0.028, 0.012, 0.028, 0.135, 0.012, - & 0.023, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000/) -! !!!!!!!!!!!!!! The following values in the table are NOT used -! !!!!!!!!!!!!!! and are just given for reference - SATDW =(/0.6316e-4, 0.5171e-5, 0.8072e-5, 0.2386e-4, 0.2386e-4, - & 0.1433e-4, 0.1006e-4, 0.2358e-4, 0.1130e-4,0.1864e-04, - & 0.9658e-05,0.1151e-04,0.1356e-04,0.5171e-05,0.9978e-05, - & 0.5171e-05, 0.1151e-04, 0.9978e-05, 0.6316e-04, 0.00, - & 0.00 , 0.00 , 0.00 , 0.00 , 0.00, - & 0.00 , 0.00 , 0.00 , 0.00 , 0.00/) -! ---------------------------------------------------------------------- -! number of defined soiltyps used. -! ---------------------------------------------------------------------- - - defined_soil=19 -! end if soil table - endif - - -! the values shared by different veg/soil type data - -! PT 5/18/2015 - changed to FALSE to match atm_namelist setting -! PT LPARAM is not used anywhere -! LPARAM =.TRUE. - LPARAM =.FALSE. - -! changed for version 2.5.2 -! data zbot_data /-3.0/ - zbot_data =-8.0 -! changed for version 2.6 june 2nd 2003 -! data salp_data /2.6/ - salp_data =4.0 - cfactr_data =0.5 - cmcmax_data =0.5e-3 - sbeta_data =-2.0 - rsmax_data =5000.0 - topt_data =298.0 - refdk_data =2.0e-6 - frzk_data =0.15 - - defined_slope=9 - fxexp_data =2.0 - refkdt_data =3.0 -! changed in version 2.6 june 2nd 2003 -! data czil_data /0.2/ - czil_data =0.075 - -! DATA CSOIL_DATA /1.26E+6/ - CSOIL_DATA = 2.00E+6 -! ---------------------------------------------------------------------- -! READ NAMELIST FILE TO OVERRIDE DEFAULT PARAMETERS ONLY ONCE. -! NAMELIST_NAME must be 50 characters or less. -! ---------------------------------------------------------------------- -!lu: namelist is set up in run script -!PT if (me == 0) write(0,*) 'read namelist cwsoilvegSOIL_VEG' -!$$$ READ(5, SOIL_VEG) -!PT rewind(nlunit) -!PT READ(nlunit, SOIL_VEG) - -!* WRITE(6, SOIL_VEG) -! OPEN(58, FILE = 'namelist_filename.txt') -! READ(58,'(A)') NAMELIST_NAME -! CLOSE(58) -! WRITE(0,*) 'Namelist Filename is ', NAMELIST_NAME -! OPEN(59, FILE = NAMELIST_NAME) -! 50 CONTINUE -! READ(59, SOIL_VEG, END=100) -! IF (LPARAM) GOTO 50 -! 100 CONTINUE -! CLOSE(59) - - IF (DEFINED_SOIL .GT. MAX_SOILTYP) THEN - WRITE(0,*) 'Warning: DEFINED_SOIL too large in namelist' - STOP 222 - ENDIF - IF (DEFINED_VEG .GT. MAX_VEGTYP) THEN - WRITE(0,*) 'Warning: DEFINED_VEG too large in namelist' - STOP 222 - ENDIF - IF (DEFINED_SLOPE .GT. MAX_SLOPETYP) THEN - WRITE(0,*) 'Warning: DEFINED_SLOPE too large in namelist' - STOP 222 - ENDIF - - SMLOW = SMLOW_DATA - SMHIGH = SMHIGH_DATA - - DO I = 1,DEFINED_SOIL - if (satdk(i) /= 0.0 .and. bb(i) > 0.0) then - SATDW(I) = BB(I)*SATDK(I)*(SATPSI(I)/MAXSMC(I)) - F11(I) = LOG10(SATPSI(I)) + BB(I)*LOG10(MAXSMC(I)) + 2.0 - REFSMC1 = MAXSMC(I)*(5.79E-9/SATDK(I)) - & **(1.0/(2.0*BB(I)+3.0)) - REFSMC(I) = REFSMC1 + (MAXSMC(I)-REFSMC1) / SMHIGH - WLTSMC1 = MAXSMC(I) * (200.0/SATPSI(I))**(-1.0/BB(I)) - WLTSMC(I) = WLTSMC1 - SMLOW * WLTSMC1 - -! ---------------------------------------------------------------------- -! CURRENT VERSION DRYSMC VALUES THAT EQUATE TO WLTSMC. -! FUTURE VERSION COULD LET DRYSMC BE INDEPENDENTLY SET VIA NAMELIST. -! ---------------------------------------------------------------------- -! DRYSMC(I) = WLTSMC(I) - endif - END DO - -! if (me == 0) write(6,soil_veg) - return - end diff --git a/io/FV3GFS_io.F90 b/io/FV3GFS_io.F90 index 9fa3bca70..0620c9299 100644 --- a/io/FV3GFS_io.F90 +++ b/io/FV3GFS_io.F90 @@ -30,13 +30,6 @@ module FV3GFS_io_mod use diag_util_mod, only: find_input_field use constants_mod, only: grav, rdgas use physcons, only: con_tice !saltwater freezing temp (K) -! -!--- GFS physics modules -! DH* TO BE MOVED TO CCPP -!--- variables needed for calculating 'sncovr' - use namelist_soilveg, only: salp_data, snupx -! *DH - ! ! --- variables needed for Noah MP init ! @@ -1114,8 +1107,12 @@ subroutine sfc_prop_restart_read (Sfcprop, Atm_block, Model, fv_domain, warm_sta if (Model%rdlai) then Sfcprop(nb)%xlaixy(ix) = sfc_var2(i,j,nvar_s2m+29) endif - else if (Model%lsm == Model%lsm_ruc .and. Model%rdlai) then - Sfcprop(nb)%xlaixy(ix) = sfc_var2(i,j,nvar_s2m+19) + else if (Model%lsm == Model%lsm_ruc) then + ! Initialize RUC snow cover on ice from snow cover + Sfcprop(nb)%sncovr_ice(ix) = Sfcprop(nb)%sncovr(ix) + if (Model%rdlai) then + Sfcprop(nb)%xlaixy(ix) = sfc_var2(i,j,nvar_s2m+19) + end if elseif (Model%lsm == Model%lsm_noahmp) then !--- Extra Noah MP variables Sfcprop(nb)%snowxy(ix) = sfc_var2(i,j,nvar_s2m+19) @@ -1203,44 +1200,9 @@ subroutine sfc_prop_restart_read (Sfcprop, Atm_block, Model, fv_domain, warm_sta ! It has to be done after the weasd is available ! sfc_var2(1,1,32) is the first; we need this to allocate snow related fields -! DH* MOVE TO CCPP - all of it? some? need to check carefully what belongs here and what not - - ! Calculating sncovr does not belong into an I/O routine? - ! TODO? move to physics and stop building namelist_soilveg/set_soilveg - ! in the FV3/non-CCPP physics when the CCPP-enabled executable is built. - i = Atm_block%index(1)%ii(1) - isc + 1 j = Atm_block%index(1)%jj(1) - jsc + 1 - !--- if sncovr does not exist in the restart, need to create it - if (sfc_var2(i,j,32) < -9990.0_r8) then - if (Model%me == Model%master ) call mpp_error(NOTE, 'gfs_driver::surface_props_input - computing sncovr') - !--- compute sncovr from existing variables - !--- code taken directly from read_fix.f -!$omp parallel do default(shared) private(nb, ix, vegtyp, rsnow) - do nb = 1, Atm_block%nblks - do ix = 1, Atm_block%blksz(nb) - Sfcprop(nb)%sncovr(ix) = zero - if (Sfcprop(nb)%landfrac(ix) >= drythresh .or. Sfcprop(nb)%fice(ix) >= Model%min_seaice) then - vegtyp = Sfcprop(nb)%vtype(ix) - if (vegtyp == 0) vegtyp = 7 - rsnow = 0.001_r8*Sfcprop(nb)%weasd(ix)/snupx(vegtyp) - if (0.001_r8*Sfcprop(nb)%weasd(ix) < snupx(vegtyp)) then - Sfcprop(nb)%sncovr(ix) = one - (exp(-salp_data*rsnow) - rsnow*exp(-salp_data)) - else - Sfcprop(nb)%sncovr(ix) = one - endif - endif - enddo - enddo - !--- For RUC LSM: create sncovr_ice from sncovr - if (Model%lsm == Model%lsm_ruc) then - if (Model%me == Model%master ) call mpp_error(NOTE, 'gfs_driver::surface_props_input - fill sncovr_ice with sncovr') - do nb = 1, Atm_block%nblks - Sfcprop(nb)%sncovr_ice(:) = Sfcprop(nb)%sncovr(:) - end do - endif - endif ! if (Model%frac_grid) then