!-------------------------------------------------------------------------------- !M+ ! NAME: ! NESDIS_SnowEM_ATMS_Parameters Module ! ! PURPOSE: ! Module containing the snow emissivity library ATMS channels. The library contain 16 ! pre-defined snow spectrum which characterize 16 basic snow types. This library is used ! together with a snow-typing algorithm to implement the library-based snow emissivity modeling. ! ! CATEGORY: ! Surface : MW Surface Snow Emissivity Model Parameters ! ! LANGUAGE: ! Fortran-95 ! ! CALLING SEQUENCE: ! USE SnowEM_Parameters Module ! ! MODULES: ! Type_Kinds: Module containing definitions for kinds of variable types. ! ! ! INCLUDE FILES: ! None. ! ! EXTERNALS: ! None. ! ! COMMON BLOCKS: ! None. ! ! FILES ACCESSED: ! None. ! ! CREATION HISTORY: ! Written by: Ming Chen,IMSG Inc., ming.chen@noaa.gov (04-28-2012) ! ! and Fuzhong Weng, NOAA/NESDIS/ORA, Fuzhong.Weng@noaa.gov ! ! ! Copyright (C) 2012 Fuzhong Weng and Ming Chen ! ! This program is free software; you can redistribute it and/or modify it under the terms of the GNU ! General Public License as published by the Free Software Foundation; either version 2 of the License, ! or (at your option) any later version. ! ! This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even ! the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ! License for more details. ! ! You should have received a copy of the GNU General Public License along with this program; if not, write ! to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. !M- !-------------------------------------------------------------------------------- MODULE NESDIS_ATMS_SeaIce_LIB USE Type_Kinds, ONLY: fp, ip IMPLICIT NONE INTEGER(ip), PUBLIC, PARAMETER :: N_FREQ_ATMS = 13 INTEGER(ip), PUBLIC, PARAMETER :: N_SEAICE_TYPES = 13 INTEGER(ip), PUBLIC, PARAMETER :: N_FREQ_AMSRE = 7 INTEGER(ip), PUBLIC, PARAMETER :: INVALID_SEAICE_TYPE = -1 CHARACTER(LEN=20),DIMENSION(N_SEAICE_TYPES), & PUBLIC, PARAMETER :: SEAICE_TYPE_NAMES=(/ & 'RS_ICE_A_EMISS ',& !1 'RS_ICE_B_EMISS ',& !2 'MIXED_NEWICE_SNOW_EM',& !3 'NARE_NEWICE_EMISS ',& !4 'BROKEN_ICE_EMISS ',& !5 'FIRST_YEAR_ICE_EMISS',& !6 'COMPOSITE_PACK_ICE ',& !7 'RS_ICE_C_EMISS ',& !8 'FAST_ICE_EMISS ',& !9 'RS_ICE_D_EMISS ',& !10 'RS_ICE_E_EMISS ',& !11 'RS_ICE_F_EMISS ',& !12 'GREASE_ICE_EMISS '/) !13 REAL(fp),PUBLIC,PARAMETER, DIMENSION(N_FREQ_ATMS) :: FREQUENCY_ATMS = & (/23.80_fp,31.40_fp,50.30_fp,51.76_fp,52.80_fp,53.60_fp,54.40_fp, & 54.90_fp,55.50_fp,57.30_fp,88.20_fp,165.50_fp,183.30_fp/) ! Define sixteen MW H-Pol emissivity spectra for ATMS ALGORITHMS REAL(fp),PUBLIC,PARAMETER,DIMENSION(N_FREQ_ATMS,N_SEAICE_TYPES) :: SEAICE_EMISS_ATMS_H = RESHAPE((/ & 0.94_fp,0.95_fp,0.94_fp,0.94_fp,0.94_fp,0.94_fp,0.94_fp,0.94_fp,0.94_fp,0.94_fp,0.92_fp,0.91_fp,0.91_fp,& !1 0.86_fp,0.87_fp,0.87_fp,0.87_fp,0.87_fp,0.87_fp,0.87_fp,0.87_fp,0.87_fp,0.87_fp,0.88_fp,0.87_fp,0.87_fp,& !2 0.85_fp,0.84_fp,0.83_fp,0.83_fp,0.83_fp,0.83_fp,0.83_fp,0.83_fp,0.83_fp,0.83_fp,0.82_fp,0.80_fp,0.79_fp,& !3 0.76_fp,0.77_fp,0.76_fp,0.76_fp,0.76_fp,0.76_fp,0.76_fp,0.76_fp,0.76_fp,0.75_fp,0.73_fp,0.73_fp,0.73_fp,& !4 0.77_fp,0.79_fp,0.78_fp,0.78_fp,0.78_fp,0.77_fp,0.77_fp,0.77_fp,0.77_fp,0.77_fp,0.72_fp,0.69_fp,0.68_fp,& !5 0.88_fp,0.87_fp,0.83_fp,0.83_fp,0.83_fp,0.83_fp,0.83_fp,0.82_fp,0.82_fp,0.82_fp,0.76_fp,0.66_fp,0.64_fp,& !6 0.82_fp,0.80_fp,0.76_fp,0.76_fp,0.75_fp,0.75_fp,0.75_fp,0.75_fp,0.75_fp,0.74_fp,0.67_fp,0.56_fp,0.53_fp,& !7 0.78_fp,0.73_fp,0.67_fp,0.66_fp,0.66_fp,0.66_fp,0.66_fp,0.66_fp,0.66_fp,0.65_fp,0.60_fp,0.56_fp,0.54_fp,& !8 0.76_fp,0.74_fp,0.69_fp,0.69_fp,0.68_fp,0.68_fp,0.68_fp,0.68_fp,0.68_fp,0.67_fp,0.60_fp,0.52_fp,0.50_fp,& !9 0.70_fp,0.70_fp,0.67_fp,0.67_fp,0.67_fp,0.66_fp,0.66_fp,0.66_fp,0.66_fp,0.66_fp,0.59_fp,0.53_fp,0.52_fp,& !10 0.61_fp,0.62_fp,0.63_fp,0.63_fp,0.64_fp,0.64_fp,0.64_fp,0.64_fp,0.64_fp,0.64_fp,0.67_fp,0.69_fp,0.70_fp,& !11 0.57_fp,0.59_fp,0.61_fp,0.61_fp,0.61_fp,0.61_fp,0.61_fp,0.61_fp,0.61_fp,0.62_fp,0.64_fp,0.65_fp,0.65_fp,& !12 0.45_fp,0.47_fp,0.50_fp,0.50_fp,0.51_fp,0.51_fp,0.51_fp,0.51_fp,0.51_fp,0.51_fp,0.54_fp,0.56_fp,0.57_fp & !13 /),(/N_FREQ_ATMS,N_SEAICE_TYPES/)) ! Define sixteen MW V-Pol emissivity spectra for ATMS ALGORITHMS REAL(fp),PUBLIC,PARAMETER,DIMENSION(N_FREQ_ATMS,N_SEAICE_TYPES) :: SEAICE_EMISS_ATMS_V = RESHAPE((/ & 0.99_fp,0.99_fp,0.99_fp,0.99_fp,0.99_fp,0.99_fp,0.99_fp,0.99_fp,0.99_fp,0.99_fp,0.98_fp,0.97_fp,0.97_fp,& !1 0.98_fp,0.97_fp,0.96_fp,0.96_fp,0.96_fp,0.96_fp,0.96_fp,0.96_fp,0.96_fp,0.96_fp,0.94_fp,0.93_fp,0.93_fp,& !2 0.94_fp,0.93_fp,0.92_fp,0.92_fp,0.91_fp,0.91_fp,0.91_fp,0.91_fp,0.91_fp,0.91_fp,0.88_fp,0.86_fp,0.85_fp,& !3 0.91_fp,0.91_fp,0.90_fp,0.90_fp,0.90_fp,0.90_fp,0.90_fp,0.90_fp,0.90_fp,0.90_fp,0.88_fp,0.88_fp,0.88_fp,& !4 0.91_fp,0.91_fp,0.90_fp,0.90_fp,0.90_fp,0.90_fp,0.90_fp,0.90_fp,0.90_fp,0.89_fp,0.87_fp,0.84_fp,0.83_fp,& !5 0.97_fp,0.96_fp,0.92_fp,0.92_fp,0.92_fp,0.91_fp,0.91_fp,0.91_fp,0.91_fp,0.91_fp,0.84_fp,0.74_fp,0.72_fp,& !6 0.93_fp,0.91_fp,0.85_fp,0.84_fp,0.84_fp,0.83_fp,0.83_fp,0.83_fp,0.83_fp,0.82_fp,0.72_fp,0.61_fp,0.58_fp,& !7 0.86_fp,0.79_fp,0.73_fp,0.72_fp,0.72_fp,0.72_fp,0.72_fp,0.72_fp,0.72_fp,0.71_fp,0.66_fp,0.62_fp,0.60_fp,& !8 0.91_fp,0.87_fp,0.81_fp,0.80_fp,0.80_fp,0.80_fp,0.80_fp,0.79_fp,0.79_fp,0.79_fp,0.69_fp,0.61_fp,0.59_fp,& !9 0.88_fp,0.88_fp,0.85_fp,0.85_fp,0.85_fp,0.84_fp,0.84_fp,0.84_fp,0.84_fp,0.84_fp,0.77_fp,0.71_fp,0.70_fp,& !10 0.82_fp,0.83_fp,0.85_fp,0.85_fp,0.85_fp,0.85_fp,0.85_fp,0.85_fp,0.85_fp,0.85_fp,0.86_fp,0.88_fp,0.89_fp,& !11 0.78_fp,0.80_fp,0.82_fp,0.82_fp,0.83_fp,0.83_fp,0.83_fp,0.83_fp,0.83_fp,0.83_fp,0.86_fp,0.87_fp,0.87_fp,& !12 0.72_fp,0.74_fp,0.78_fp,0.78_fp,0.78_fp,0.78_fp,0.78_fp,0.78_fp,0.78_fp,0.78_fp,0.82_fp,0.84_fp,0.85_fp & !13 /),(/N_FREQ_ATMS,N_SEAICE_TYPES/)) ! Define sixteen Mixed MW emissivity spectra for ATMS ALGORITHMS REAL(fp),PUBLIC,PARAMETER,DIMENSION(N_FREQ_ATMS,N_SEAICE_TYPES) :: SEAICE_EMISS_ATMS_LIB = RESHAPE((/ & 0.97_fp,0.97_fp,0.96_fp,0.96_fp,0.96_fp,0.96_fp,0.96_fp,0.96_fp,0.96_fp,0.96_fp,0.95_fp,0.94_fp,0.94_fp,& !1 0.92_fp,0.92_fp,0.92_fp,0.92_fp,0.92_fp,0.92_fp,0.92_fp,0.92_fp,0.92_fp,0.92_fp,0.91_fp,0.90_fp,0.90_fp,& !2 0.90_fp,0.89_fp,0.88_fp,0.87_fp,0.87_fp,0.87_fp,0.87_fp,0.87_fp,0.87_fp,0.87_fp,0.85_fp,0.83_fp,0.82_fp,& !3 0.84_fp,0.84_fp,0.83_fp,0.83_fp,0.83_fp,0.83_fp,0.83_fp,0.83_fp,0.83_fp,0.83_fp,0.81_fp,0.80_fp,0.80_fp,& !4 0.84_fp,0.85_fp,0.84_fp,0.84_fp,0.84_fp,0.84_fp,0.83_fp,0.83_fp,0.83_fp,0.83_fp,0.80_fp,0.76_fp,0.75_fp,& !5 0.93_fp,0.91_fp,0.88_fp,0.87_fp,0.87_fp,0.87_fp,0.87_fp,0.87_fp,0.87_fp,0.86_fp,0.80_fp,0.70_fp,0.68_fp,& !6 0.88_fp,0.85_fp,0.80_fp,0.80_fp,0.79_fp,0.79_fp,0.79_fp,0.79_fp,0.79_fp,0.78_fp,0.70_fp,0.58_fp,0.56_fp,& !7 0.82_fp,0.76_fp,0.70_fp,0.69_fp,0.69_fp,0.69_fp,0.69_fp,0.69_fp,0.69_fp,0.68_fp,0.63_fp,0.59_fp,0.57_fp,& !8 0.84_fp,0.81_fp,0.75_fp,0.74_fp,0.74_fp,0.74_fp,0.74_fp,0.74_fp,0.73_fp,0.73_fp,0.65_fp,0.57_fp,0.55_fp,& !9 0.79_fp,0.79_fp,0.76_fp,0.76_fp,0.76_fp,0.75_fp,0.75_fp,0.75_fp,0.75_fp,0.75_fp,0.68_fp,0.62_fp,0.61_fp,& !10 0.72_fp,0.72_fp,0.74_fp,0.74_fp,0.74_fp,0.74_fp,0.74_fp,0.74_fp,0.74_fp,0.74_fp,0.76_fp,0.79_fp,0.79_fp,& !11 0.68_fp,0.69_fp,0.72_fp,0.72_fp,0.72_fp,0.72_fp,0.72_fp,0.72_fp,0.72_fp,0.72_fp,0.75_fp,0.76_fp,0.76_fp,& !12 0.59_fp,0.61_fp,0.64_fp,0.64_fp,0.64_fp,0.64_fp,0.64_fp,0.64_fp,0.64_fp,0.65_fp,0.68_fp,0.70_fp,0.71_fp & !13 /),(/N_FREQ_ATMS,N_SEAICE_TYPES/)) CONTAINS FUNCTION SeaIceType_Name2Index(sname) RESULT(sindex) ! Arguments CHARACTER(LEN=*), INTENT(IN) :: sname ! Function result INTEGER :: sindex INTEGER :: Idx sindex=INVALID_SEAICE_TYPE DO Idx=1, N_SEAICE_TYPES IF(TRIM(sname) .EQ. TRIM(SeaIce_TYPE_NAMES(Idx))) THEN sindex=Idx EXIT ENDIF ENDDO RETURN END FUNCTION SeaIceType_Name2Index FUNCTION SeaIceType_Index2Name(sindex) RESULT(sname) ! Arguments INTEGER, INTENT(IN) :: sindex ! Function result CHARACTER(LEN=100) :: sname sname=TRIM(SeaIce_TYPE_NAMES(sindex)) RETURN END FUNCTION SeaIceType_Index2Name END MODULE NESDIS_ATMS_SeaIce_LIB