source: LMDZ5/branches/AI-cosp/libf/phylmd/cosp/test_modis_simulator.F90.s @ 5068

Last change on this file since 5068 was 2432, checked in by idelkadi, 9 years ago

Correction : rajout de fichiers manquants pour les simulateurs Modis, Cloudsat, Misr et Isccp

File size: 7.2 KB
Line 
1! $Revision: 23 $, $Date: 2011-03-31 15:41:37 +0200 (jeu. 31 mars 2011) $
2! $URL: http://cfmip-obs-sim.googlecode.com/svn/stable/v1.4.0/MODIS_simulator/test_modis_simulator.F90 $
3program test_modis_simulator
4  use mod_modis_sim
5  implicit none
6  ! 
7  ! Tests cases for MODIS L2 (pixel) and L3 (grid-scale) simulators
8  !
9 
10  !
11  ! Inputs
12  !
13  integer, parameter :: nLayers = 6, nSubCols = 10
14  real, dimension(1, nLayers)    :: temp, pressureLayers
15  real, dimension(1, nLayers+1)  :: pressureLevels
16  real, dimension(1, nSubCols, nLayers) :: &
17                                    opticalThickness, cloudWater, cloudIce, waterSize, iceSize, &
18                                    liquid_opticalThickness, ice_opticalThickness
19  !
20  ! Pixel-scale retreivals
21  ! 
22  integer, dimension(1, nSubCols) :: retrievedPhase
23  real,    dimension(1, nSubCols) :: isccpTau, isccpCloudTopPressure, &
24                                  retrievedCloudTopPressure, retrievedTau, retrievedSize
25  integer :: i, k
26  character(len = 6) :: phase
27 
28  !
29  ! Grid mean properties
30  !
31  real, dimension(1) :: &
32    Cloud_Fraction_Total_Mean,       Cloud_Fraction_Water_Mean,       Cloud_Fraction_Ice_Mean,       &
33    Optical_Thickness_Total_Mean,    Optical_Thickness_Water_Mean,    Optical_Thickness_Ice_Mean,    &
34    Optical_Thickness_Total_LogMean, Optical_Thickness_Water_LogMean, Optical_Thickness_Ice_LogMean, &
35                                     Cloud_Particle_Size_Water_Mean,  Cloud_Particle_Size_Ice_Mean,  &
36    Cloud_Top_Pressure_Total_Mean,                                                                   &
37                                     Liquid_Water_Path_Mean,          Ice_Water_Path_Mean
38  real, dimension(1, numTauHistogramBins, numPressureHistogramBins) :: Optical_Thickness_vs_Cloud_Top_Pressure
39
40  ! ---------------------------------------------------------------------------------------------
41  pressureLevels(1, :) = (/   0., 200., 400., 600., 800., 1000., 1200. /) 
42  pressureLayers(1, :) = (pressureLevels(1, 2:) + pressureLevels(1, 1:nLayers)) / 2
43  temp(1, :) =           (/ 200., 220., 240., 260., 280., 300.0 /) 
44  isccpCloudTopPressure(:, :) = 999. 
45 
46
47  !
48  ! Tests:  these 9 from Steve Platnick
49  !
50  ice_opticalThickness = 0.; liquid_opticalThickness = 0.
51  iceSize              = 0.; waterSize = 0. 
52 
53  ice_opticalThickness   (1, 1, 3) = 0.2
54  iceSize                (1, 1, 3) = 30
55 
56  ice_opticalThickness   (1, 2, 3) = 1.
57  iceSize                (1, 2, 3) = 30
58 
59  liquid_opticalThickness(1, 3, 5) = 0.2
60  waterSize              (1, 3, 5) = 10 
61
62  liquid_opticalThickness(1, 4, 5) = 1.
63  waterSize              (1, 4, 5) = 10 
64 
65  ice_opticalThickness   (1, 5, 3) = 0.2
66  iceSize                (1, 5, 3) = 30
67  liquid_opticalThickness(1, 5, 5) = 5.
68  waterSize              (1, 5, 5) = 10 
69
70  ice_opticalThickness   (1, 6, 3) = 1. 
71  iceSize                (1, 6, 3) = 30
72  liquid_opticalThickness(1, 6, 5) = 5.
73  waterSize              (1, 6, 5) = 10
74 
75  ice_opticalThickness   (1, 7, 3) = 10. 
76  iceSize                (1, 7, 3) = 30
77  liquid_opticalThickness(1, 7, 5) = 5.
78  waterSize              (1, 7, 5) = 10
79 
80  ice_opticalThickness   (1, 8, 2) = 1. 
81  iceSize                (1, 8, 2) = 15.
82  ice_opticalThickness   (1, 8, 3) = 1. 
83  iceSize                (1, 8, 3) = 30.
84  ice_opticalThickness   (1, 8, 4) = 1. 
85  iceSize                (1, 8, 4) = 60.
86 
87  liquid_opticalThickness(1, 9, 4) = 1. 
88  waterSize              (1, 9, 4) = 15
89  liquid_opticalThickness(1, 9, 5) = 3. 
90  waterSize              (1, 9, 5) = 10.
91  liquid_opticalThickness(1, 9, 6) = 1. 
92  waterSize              (1, 9, 6) = 50.
93 
94  call modis_l2_simulator(temp(1,:), pressureLayers(1,:), pressureLevels(1,:),                       &
95                         liquid_opticalThickness(1,:, :), ice_opticalThickness(1,:, :), &
96                         waterSize(1,:, :), iceSize(1,:, :), &
97                         isccpTau(1, :), isccpCloudTopPressure(1, :),                            &
98                         retrievedPhase(1, :), retrievedCloudTopPressure(1, :), retrievedTau(1, :), retrievedSize(1, :))
99  do i = 1, nSubcols
100    print * 
101    print *, "Profile ", i
102    if(any(ice_opticalThickness(1, i, :) > 0.) .or. any(liquid_opticalThickness(1, i, :) > 0.)) & 
103      print *, "center p  ice: tau   size    water: tau    size" 
104    do k = 1, nLayers
105      if(ice_opticalThickness(1, i, k) > 0. .or. liquid_opticalThickness(1, i, k) > 0.) &
106        write(*, '(3x, f5.0, 7x, 2(f4.1, 3x, f4.1, 10x))'), &
107          pressureLayers(1, k), ice_opticalThickness(1, i, k), iceSize(1, i, k), liquid_opticalThickness(1, i, k), waterSize(1, i, k)
108    end do
109    select case(retrievedPhase(1, i)) 
110      case(phaseIsNone) 
111        phase = "None" 
112      case(phaseIsIce) 
113        phase = "Ice" 
114      case(phaseIsLiquid)
115        phase = "Liquid" 
116      case(phaseIsUndetermined)
117        phase = "Undet."
118      case default
119        phase = "???" 
120    end select
121    print *, "Retrievals" 
122    write(*, '("  Phase: ", a6, 2x, "CTP: ", f5.0, ", tau = ", f4.1, ", size = ", f4.1)') &
123          phase, retrievedCloudTopPressure(1, i), retrievedTau(1, i), retrievedSize(1, i)
124  end do
125 
126  call modis_L3_simulator(retrievedPhase, retrievedCloudTopPressure, retrievedTau, retrievedSize,            &
127       Cloud_Fraction_Total_Mean,       Cloud_Fraction_Water_Mean,       Cloud_Fraction_Ice_Mean,       &
128       Optical_Thickness_Total_Mean,    Optical_Thickness_Water_Mean,    Optical_Thickness_Ice_Mean,    &
129       Optical_Thickness_Total_LogMean, Optical_Thickness_Water_LogMean, Optical_Thickness_Ice_LogMean, &
130                                        Cloud_Particle_Size_Water_Mean,  Cloud_Particle_Size_Ice_Mean,  &
131       Cloud_Top_Pressure_Total_Mean,                                                                   &
132                                        Liquid_Water_Path_Mean,          Ice_Water_Path_Mean,           &   
133       Optical_Thickness_vs_Cloud_Top_Pressure)
134
135  print *; print *; print *, "Grid means" 
136  do i = 1, nSubcols
137    write(*, '("  Phase: ", i2, 2x, "CTP: ", f5.0, ", tau = ", f4.1, ", size = ", f4.1)') &
138          retrievedPhase(1, i), retrievedCloudTopPressure(1, i), retrievedTau(1, i), retrievedSize(1, i)
139  end do
140  print *, "         Total    Liquid     Ice" 
141  write(*, '("Fraction: ", 3(f4.3, 6x))') Cloud_Fraction_Total_Mean,       Cloud_Fraction_Water_Mean,       Cloud_Fraction_Ice_Mean
142  write(*, '("Tau:      ", 3(f4.1, 6x))')  Optical_Thickness_Total_Mean,    Optical_Thickness_Water_Mean,    Optical_Thickness_Ice_Mean
143  write(*, '("TauLog:   ", 3(f4.1, 6x))')  Optical_Thickness_Total_LogMean, Optical_Thickness_Water_LogMean, Optical_Thickness_Ice_LogMean
144  write(*, '("Size:     ", 10x, 2(f4.1, 6x))')  Cloud_Particle_Size_Water_Mean,  Cloud_Particle_Size_Ice_Mean
145  write(*, '("WaterPath:",  9x, 2(f5.1, 5x))')  Liquid_Water_Path_Mean,          Ice_Water_Path_Mean
146  write(*, '("CTP:      ", f5.1)') Cloud_Top_Pressure_Total_Mean
147  print *; print *, "Histogram" 
148  write(*, '(8x, 7(f4.1, 3x))')  tauHistogramBoundaries(:)
149  do k = 1, numPressureHistogramBins
150     write(*, '(f5.0, 3x, 7(f4.2, 3x))') pressureHistogramBoundaries(k), Optical_Thickness_vs_Cloud_Top_Pressure(1, :, k)
151  end do
152  print *, "Total fraction from histogram:", sum(Optical_Thickness_vs_Cloud_Top_Pressure(1, :, :))
153end program   test_modis_simulator
154
Note: See TracBrowser for help on using the repository browser.