subroutine set_soilveg(me,nlunit) use namelist_soilveg implicit none integer, intent(in) :: nlunit integer me cmy begin locals integer i REAL WLTSMC1,REFSMC1 C ---------------------------------------------------------------------- C SET TWO SOIL MOISTURE WILT, SOIL MOISTURE REFERENCE PARAMETERS C ---------------------------------------------------------------------- REAL SMLOW REAL SMLOW_DATA DATA SMLOW_DATA /0.5/ REAL SMHIGH REAL SMHIGH_DATA C changed in 2.6 from 3 to 6 on June 2nd 2003 C 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 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/) c RSMTBL =(/150.0, 100.0, 125.0, 150.0, 100.0, 70.0, c & 40.0, 300.0, 400.0, 150.0, 400.0, 40.0, c & 150.0, 0.0, 0.0, 0.0, 0.0, 0.0, c & 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, c & 0.0, 0.0, 0.0, 0.0, 0.0, 0.0/) Chelin new table ! RSMTBL =(/500.0, 300.0, 300.0, 300.0, 300.0, 100.0, ! RSMTBL =(/500.0, 175.0, 175.0, 300.0, 300.0, 70.0, RSMTBL =(/300.0, 175.0, 175.0, 300.0, 300.0, 70.0, & 45.0, 225.0, 225.0, 225.0, 400.0, 45.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/) C changed for version 2.6 on June 2nd 2003 C DATA SNUPX /0.080, 0.080, 0.080, 0.080, 0.080, 0.080, C & 0.040, 0.040, 0.040, 0.040, 0.025, 0.040, C & 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/) 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/) C !!!!!!!!!!!!!! The following values in the table are NOT used C !!!!!!!!!!!!!! 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/) C !!!!!!!!!!!!!! The following values in the table are NOT used C !!!!!!!!!!!!!! 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/) C C ---------------------------------------------------------------------- C THE FOLLOWING 5 PARAMETERS ARE DERIVED LATER IN REDPRM.F FROM THE SOIL C DATA, AND ARE JUST GIVEN HERE FOR REFERENCE AND TO FORCE STATIC C STORAGE ALLOCATION. -DAG LOHMANN, FEB. 2001 C ---------------------------------------------------------------------- C DATA REFSMC/0.283, 0.387, 0.412, 0.312, 0.338, 0.382, C & 0.315, 0.329, 0.283, 0.000, 0.000, 0.000, C !!!!!!!!!!!!!! The following values in the table are NOT used C !!!!!!!!!!!!!! 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/) C ---------------------------------------------------------------------- C SOIL TEXTURE-RELATED ARRAYS. C ---------------------------------------------------------------------- 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/) C !!!!!!!!!!!!!! The following values in the table are NOT used C !!!!!!!!!!!!!! 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/) C !!!!!!!!!!!!!! The following values in the table are NOT used C !!!!!!!!!!!!!! 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/) LPARAM =.TRUE. C changed for version 2.5.2 C DATA ZBOT_DATA /-3.0/ ZBOT_DATA =-8.0 C changed for version 2.6 June 2nd 2003 C 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 BARE =11 C ---------------------------------------------------------------------- C NUMBER OF DEFINED SOIL-, VEG-, AND SLOPETYPS USED. C ---------------------------------------------------------------------- DEFINED_VEG=13 DEFINED_SOIL=9 DEFINED_SLOPE=9 FXEXP_DATA =2.0 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/) REFKDT_DATA =3.0 C ---------------------------------------------------------------------- C VEGETATION CLASS-RELATED ARRAYS C ---------------------------------------------------------------------- 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.035, & 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/) C changed in version 2.6 June 2nd 2003 C DATA CZIL_DATA /0.2/ CZIL_DATA =0.075 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/) C DATA CSOIL_DATA /1.26E+6/ CSOIL_DATA =2.00E+6 C ---------------------------------------------------------------------- C READ NAMELIST FILE TO OVERRIDE DEFAULT PARAMETERS ONLY ONCE. C NAMELIST_NAME must be 50 characters or less. C ---------------------------------------------------------------------- Clu: namelist is set up in run script if (me .eq. 0) WRITE(*,*) 'READ NAMELIST SOIL_VEG' c$$$ READ(5, SOIL_VEG) rewind(nlunit) READ(nlunit, SOIL_VEG) !* WRITE(6, SOIL_VEG) C OPEN(58, FILE = 'namelist_filename.txt') C READ(58,'(A)') NAMELIST_NAME C CLOSE(58) C WRITE(*,*) 'Namelist Filename is ', NAMELIST_NAME C OPEN(59, FILE = NAMELIST_NAME) C 50 CONTINUE C READ(59, SOIL_VEG, END=100) C IF (LPARAM) GOTO 50 C 100 CONTINUE C CLOSE(59) IF (DEFINED_SOIL .GT. MAX_SOILTYP) THEN WRITE(*,*) 'Warning: DEFINED_SOIL too large in namelist' STOP 222 ENDIF IF (DEFINED_VEG .GT. MAX_VEGTYP) THEN WRITE(*,*) 'Warning: DEFINED_VEG too large in namelist' STOP 222 ENDIF IF (DEFINED_SLOPE .GT. MAX_SLOPETYP) THEN WRITE(*,*) 'Warning: DEFINED_SLOPE too large in namelist' STOP 222 ENDIF SMLOW = SMLOW_DATA SMHIGH = SMHIGH_DATA DO I = 1,DEFINED_SOIL SATDW(I) = BB(I)*SATDK(I)*(SATPSI(I)/MAXSMC(I)) F11(I) = ALOG10(SATPSI(I)) + BB(I)*ALOG10(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 C ---------------------------------------------------------------------- C CURRENT VERSION DRYSMC VALUES THAT EQUATE TO WLTSMC. C FUTURE VERSION COULD LET DRYSMC BE INDEPENDENTLY SET VIA NAMELIST. C ---------------------------------------------------------------------- DRYSMC(I) = WLTSMC(I) END DO ! if (me.eq.0) write(6,soil_veg) return end