module_radiance.f90
References to this file elsewhere.
1 module module_radiance
2
3 !---------------------------------------------------------------------------
4 ! Purpose: module for radiance data assimilation.
5 !---------------------------------------------------------------------------
6
7 use da_control, only : pi, use_landem
8 use da_reporting, only : da_error,message
9
10 #ifdef RTTOV
11 use rttov_const, only : &
12 errorstatus_success, &
13 platform_name , &
14 inst_name , &
15 gas_id_watervapour ,&
16 gas_unit_specconc ,&
17 gas_unit_ppmv, sensor_id_mw
18 use rttov_types
19 #endif
20
21 #ifdef CRTM
22 ! -- Modules to define CRTM constants etc.
23 USE CRTM_Parameters, only : INVALID_WMO_SENSOR_ID
24 !USE Type_Kinds
25 !USE Error_Handler
26 !USE CRTM_Utility
27
28 ! -- CRTM RT_models modules
29 USE CRTM_Module, only : graupel_cloud, rain_cloud, snow_cloud,crtm_adjoint, &
30 crtm_allocate_atmosphere, crtm_allocate_surface, crtm_assign_atmosphere, &
31 crtm_assign_surface,crtm_destroy_atmosphere,crtm_destroy_surface, &
32 crtm_forward,crtm_init,crtm_k_matrix,crtm_set_channelinfo, &
33 crtm_tangent_linear, grass_soil, h2o_id,hail_cloud,ice_cloud,new_snow, &
34 o3_id, water_cloud, crtm_rtsolution_type, crtm_channelinfo_type, &
35 crtm_atmosphere_type, crtm_surface_type, crtm_geometryinfo_type, &
36 crtm_zero_surface, crtm_zero_atmosphere
37
38 USE CRTM_SensorInfo
39 #endif
40
41 use gsi_kinds , only : r_kind,r_double,i_kind,r_single
42 use gsi_constants , only : deg2rad, rad2deg, &
43 init_constants_derived, &
44 one, three, zero, half, &
45 one_tenth, two, four
46
47 ! use irsse_model, only: forward_irsse
48 implicit none
49
50 real, parameter :: q2ppmv = 1.60771704e+6
51
52 Character (len=8), Parameter :: rttov_platform_name(1:20) = &
53 (/ 'noaa ', 'dmsp ', 'meteosat', 'goes ', 'gms ', &
54 'fy2 ', 'trmm ', 'ers ', 'eos ', 'metop ', &
55 'envisat ', 'msg ', 'fy1 ', 'adeos ', 'mtsat ', &
56 'coriolis', 'npoess ', 'gifts ', 'xxxxxxxx', 'xxxxxxxx'/)
57
58 ! List of instruments !!!! HIRS is number 0
59 Character (len=8), Dimension(0:34) :: rttov_inst_name = &
60 & (/ 'hirs ', 'msu ', 'ssu ', 'amsua ', 'amsub ', &
61 & 'avhrr ', 'ssmi ', 'vtpr1 ', 'vtpr2 ', 'tmi ', &
62 & 'ssmis ', 'airs ', 'hsb ', 'modis ', 'atsr ', &
63 & 'mhs ', 'iasi ', 'amsr ', 'imager ', 'atms ', &
64 & 'mviri ', 'seviri ', 'imager ', 'sounder ', 'imager ', &
65 & 'vissr ', 'mvisr ', 'cris ', 'cmis ', 'viirs ', &
66 & 'windsat ', 'gifts ', 'xxxxxxxx', 'airs ', 'xxxxxxxx' /)
67
68 ! n=noaa; f=dmsp; g=goes; c=npoess; eos-1/2=aqua/terra;
69 character(len=8), parameter :: crtm_platform_name(1:20) = &
70 (/ 'n ', 'f ', 'meteosat', 'g ', 'gms ', &
71 'fy2 ', 'trmm ', 'ers ', 'eos ', 'metop ', &
72 'envisat ', 'msg ', 'fy1 ', 'adeos ', 'mtsat ', &
73 'coriolis', 'c ', 'gifts ', 'xxxxxxxx', 'xxxxxxxx'/)
74
75 ! List of instruments !!!! HIRS is number 0
76 Character (len=8), Dimension(0:34) :: crtm_sensor_name = &
77 & (/ 'hirs ', 'msu ', 'ssu ', 'amsua ', 'amsub ', &
78 & 'avhrr ', 'ssmi ', 'vtpr1 ', 'vtpr2 ', 'tmi ', &
79 & 'ssmis ', 'airs ', 'hsb ', 'modis ', 'atsr ', &
80 & 'mhs ', 'iasi ', 'amsre ', 'imager ', 'atms ', &
81 & 'mviri ', 'seviri ', 'imgr ', 'sndr ', 'imager ', &
82 & 'vissr ', 'mvisr ', 'cris ', 'cmis ', 'viirs ', &
83 & 'windsat ', 'gifts ', 'amsre ', 'xxxxxxxx', 'xxxxxxxx' /)
84
85 integer :: n_scatt_coef
86 character(len=5), pointer :: coefs_scatt_instname(:)
87 real, pointer :: time_slots(:)
88 #ifdef RTTOV
89 type( rttov_coef ), pointer :: coefs(:) ! RTTOV8_5 coefficients
90 type( rttov_scatt_coef ), pointer :: coefs_scatt(:)
91 #endif
92
93 type satinfo_type
94 integer, pointer :: ichan(:) ! channel index
95 integer, pointer :: iuse (:) ! usage flag (-1: not use) from GSI info file
96 real , pointer :: error(:) ! error Standard Deviation from GSI info file
97 real , pointer :: polar(:) ! polarisation (0:ver; 1:hori) from GSI info file
98 real , pointer :: error_factor(:) ! error tuning factor ! from error tuning file
99 ! new air mass bias correction coefs.
100 real , pointer :: scanbias(:,:) ! scan bias without latitude band variation
101 real , pointer :: scanbias_b(:,:,:) ! scan bias with latitude band variation
102 real , pointer :: bcoef(:,:) ! airmass predictor bias coefficients
103 real , pointer :: bcoef0(:) ! airmass constant coefficient
104 real , pointer :: error_std(:) ! error standard deviation
105 end type satinfo_type
106
107 type (satinfo_type), pointer :: satinfo(:)
108
109 #ifdef RTTOV
110 CHARACTER( 80 ), pointer :: Sensor_Descriptor(:)
111 #endif
112
113 contains
114
115 #include "gsi_emiss.inc"
116 #include "emiss_ssmi.inc"
117 #include "iceem_amsu.inc"
118 #include "siem_ats.inc"
119 #include "siem_bts.inc"
120 #include "siem_interpolate.inc"
121 #include "landem.inc"
122 #include "snwem_amsu.inc"
123 #include "seaem.inc"
124 #include "ossmem.inc"
125
126 end module module_radiance
127