source: LMDZ4/branches/LMDZ4V5.0-dev/libf/cosp/read_cosp_output_nl.F90 @ 1376

Last change on this file since 1376 was 1318, checked in by yann meurdesoif, 15 years ago

YM : Parallelisation COSP MPI+OpenMP

File size: 7.0 KB
Line 
1!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2!--------------- SUBROUTINE READ_COSP_OUTPUT_NL -------------------------
3!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4 SUBROUTINE READ_COSP_OUTPUT_NL(cosp_nl,cfg)
5  USE MOD_COSP_CONSTANTS
6  USE MOD_COSP_TYPES
7  USE mod_phys_lmdz_para
8  character(len=*),intent(in) :: cosp_nl
9  type(cosp_config),intent(out) :: cfg
10  ! Local variables
11  integer :: i
12
13  logical, save ::   Lradar_sim,Llidar_sim,Lisccp_sim,Lmisr_sim,Lrttov_sim, &
14             Lalbisccp,Latb532,Lboxptopisccp,Lboxtauisccp,Lcfad_dbze94, &
15             Lcfad_lidarsr532,Lclcalipso2,Lclcalipso,Lclhcalipso,Lclisccp2,Lcllcalipso, &
16             Lclmcalipso,Lcltcalipso,Lcltlidarradar,Lctpisccp,Ldbze94,Ltauisccp,Ltclisccp, &
17             Llongitude,Llatitude,Lparasol_refl,LclMISR,Lmeantbisccp,Lmeantbclrisccp, &
18             Lfrac_out,Lbeta_mol532,Ltbrttov
19
20  namelist/COSP_OUTPUT/Lradar_sim,Llidar_sim,Lisccp_sim,Lmisr_sim,Lrttov_sim, &
21             Lalbisccp,Latb532,Lboxptopisccp,Lboxtauisccp,Lcfad_dbze94, &
22             Lcfad_lidarsr532,Lclcalipso2,Lclcalipso,Lclhcalipso,Lclisccp2, &
23             Lcllcalipso,Lclmcalipso,Lcltcalipso,Lcltlidarradar,Lctpisccp,Ldbze94,Ltauisccp, &
24             Ltclisccp,Llongitude,Llatitude,Lparasol_refl,LclMISR,Lmeantbisccp,Lmeantbclrisccp, &
25             Lfrac_out,Lbeta_mol532,Ltbrttov
26
27  do i=1,N_OUT_LIST
28    cfg%out_list(i)=''
29  enddo
30 
31  IF (is_master) THEN
32    open(10,file=cosp_nl,status='old')
33    read(10,nml=cosp_output)
34    close(10)
35  ENDIF
36 
37  CALL bcast(Lradar_sim)
38  CALL bcast(Llidar_sim)
39  CALL bcast(Lisccp_sim)
40  CALL bcast(Lmisr_sim)
41  CALL bcast(Lrttov_sim)
42  CALL bcast(Lalbisccp)
43  CALL bcast(Latb532)
44  CALL bcast(Lboxptopisccp)
45  CALL bcast(Lboxtauisccp)
46  CALL bcast(Lcfad_dbze94)
47  CALL bcast(Lcfad_lidarsr532)
48  CALL bcast(Lclcalipso2)
49  CALL bcast(Lclcalipso)
50  CALL bcast(Lclhcalipso)
51  CALL bcast(Lclisccp2)
52  CALL bcast(Lcllcalipso)
53  CALL bcast(Lclmcalipso)
54  CALL bcast(Lcltcalipso)
55  CALL bcast(Lcltlidarradar)
56  CALL bcast(Lctpisccp)
57  CALL bcast(Ldbze94)
58  CALL bcast(Ltauisccp)
59  CALL bcast(Ltclisccp)
60  CALL bcast(Llongitude)
61  CALL bcast(Llatitude)
62  CALL bcast(Lparasol_refl)
63  CALL bcast(LclMISR)
64  CALL bcast(Lmeantbisccp)
65  CALL bcast(Lmeantbclrisccp)
66  CALL bcast(Lfrac_out)
67  CALL bcast(Lbeta_mol532)
68  CALL bcast(Ltbrttov)
69!$OMP BARRIER
70
71!  print*,' Cles sorties cosp :'
72!  print*,' Lradar_sim,Llidar_sim,Lisccp_sim,Lmisr_sim,Lrttov_sim', &
73!           Lradar_sim,Llidar_sim,Lisccp_sim,Lmisr_sim,Lrttov_sim
74
75  ! Deal with dependencies
76  if (.not.Lradar_sim) then
77    Lcfad_dbze94   = .false.
78    Lclcalipso2    = .false.
79    Lcltlidarradar = .false.
80    Ldbze94        = .false.
81  endif
82  if (.not.Llidar_sim) then
83    Latb532 = .false.
84    Lcfad_lidarsr532 = .false.
85    Lclcalipso2      = .false.
86    Lclcalipso       = .false.
87    Lclhcalipso      = .false.
88    Lcllcalipso      = .false.
89    Lclmcalipso      = .false.
90    Lcltcalipso      = .false.
91    Lcltlidarradar   = .false.
92    Lparasol_refl    = .false.
93    Lbeta_mol532     = .false.
94  endif
95  if (.not.Lisccp_sim) then
96    Lalbisccp       = .false.
97    Lboxptopisccp   = .false.
98    Lboxtauisccp    = .false.
99    Lclisccp2       = .false.
100    Lctpisccp       = .false.
101    Ltauisccp       = .false.
102    Ltclisccp       = .false.
103    Lmeantbisccp    = .false.
104    Lmeantbclrisccp = .false.
105  endif
106  if (.not.Lmisr_sim) then
107    LclMISR = .false.
108  endif
109  if (.not.Lrttov_sim) then
110    Ltbrttov = .false.
111  endif
112  if ((.not.Lradar_sim).and.(.not.Llidar_sim).and. &
113      (.not.Lisccp_sim).and.(.not.Lmisr_sim)) then
114    Lfrac_out = .false.
115  endif
116
117  ! Diagnostics that use Radar and Lidar
118  if (((Lclcalipso2).or.(Lcltlidarradar)).and.((Lradar_sim).or.(Llidar_sim))) then
119    Lclcalipso2    = .true.
120    Lcltlidarradar = .true.
121    Llidar_sim     = .true.
122    Lradar_sim     = .true.
123  endif
124
125  cfg%Lstats = .false.
126  if ((Lradar_sim).or.(Llidar_sim).or.(Lisccp_sim)) cfg%Lstats = .true.
127
128  ! Copy instrument flags to cfg structure
129  cfg%Lradar_sim = Lradar_sim
130  cfg%Llidar_sim = Llidar_sim
131  cfg%Lisccp_sim = Lisccp_sim
132  cfg%Lmisr_sim  = Lmisr_sim
133  cfg%Lrttov_sim = Lrttov_sim
134
135  ! Flag to control output to file
136  cfg%Lwrite_output = .false.
137  if (cfg%Lstats.or.cfg%Lmisr_sim.or.cfg%Lrttov_sim) then
138    cfg%Lwrite_output = .true.
139  endif
140
141  ! Output diagnostics
142  i = 1
143  if (Lalbisccp)        cfg%out_list(i) = 'albisccp'
144  i = i+1
145  if (Latb532)          cfg%out_list(i) = 'atb532'
146  i = i+1
147  if (Lboxptopisccp)    cfg%out_list(i) = 'boxptopisccp'
148  i = i+1
149  if (Lboxtauisccp)     cfg%out_list(i) = 'boxtauisccp'
150  i = i+1
151  if (Lcfad_dbze94)     cfg%out_list(i) = 'cfad_dbze94'
152  i = i+1
153  if (Lcfad_lidarsr532) cfg%out_list(i) = 'cfad_lidarsr532'
154  i = i+1
155  if (Lclcalipso2)      cfg%out_list(i) = 'clcalipso2'
156  i = i+1
157  if (Lclcalipso)       cfg%out_list(i) = 'clcalipso'
158  i = i+1
159  if (Lclhcalipso)      cfg%out_list(i) = 'clhcalipso'
160  i = i+1
161  if (Lclisccp2)        cfg%out_list(i) = 'clisccp2'
162  i = i+1
163  if (Lcllcalipso)      cfg%out_list(i) = 'cllcalipso'
164  i = i+1
165  if (Lclmcalipso)      cfg%out_list(i) = 'clmcalipso'
166  i = i+1
167  if (Lcltcalipso)      cfg%out_list(i) = 'cltcalipso'
168  i = i+1
169  if (Lcltlidarradar)   cfg%out_list(i) = 'cltlidarradar'
170  i = i+1
171  if (Lctpisccp)        cfg%out_list(i) = 'ctpisccp'
172  i = i+1
173  if (Ldbze94)          cfg%out_list(i) = 'dbze94'
174  i = i+1
175  if (Ltauisccp)        cfg%out_list(i) = 'tauisccp'
176  i = i+1
177  if (Ltclisccp)        cfg%out_list(i) = 'tclisccp'
178  i = i+1
179  if (Llongitude)       cfg%out_list(i) = 'lon'
180  i = i+1
181  if (Llatitude)        cfg%out_list(i) = 'lat'
182  i = i+1
183  if (Lparasol_refl)    cfg%out_list(i) = 'parasol_refl'
184  i = i+1
185  if (LclMISR)          cfg%out_list(i) = 'clMISR'
186  i = i+1
187  if (Lmeantbisccp)     cfg%out_list(i) = 'meantbisccp'
188  i = i+1
189  if (Lmeantbclrisccp)  cfg%out_list(i) = 'meantbclrisccp'
190  i = i+1
191  if (Lfrac_out)        cfg%out_list(i) = 'frac_out'
192  i = i+1
193  if (Lbeta_mol532)     cfg%out_list(i) = 'beta_mol532'
194  i = i+1
195  if (Ltbrttov)         cfg%out_list(i) = 'tbrttov'
196
197  if (i /= N_OUT_LIST) then
198     print *, 'COSP_IO: wrong number of output diagnostics'
199     stop
200  endif
201
202  ! Copy diagnostic flags to cfg structure
203  cfg%Lalbisccp = Lalbisccp
204  cfg%Latb532 = Latb532
205  cfg%Lboxptopisccp = Lboxptopisccp
206  cfg%Lboxtauisccp = Lboxtauisccp
207  cfg%Lcfad_dbze94 = Lcfad_dbze94
208  cfg%Lcfad_lidarsr532 = Lcfad_lidarsr532
209  cfg%Lclcalipso2 = Lclcalipso2
210  cfg%Lclcalipso = Lclcalipso
211  cfg%Lclhcalipso = Lclhcalipso
212  cfg%Lclisccp2 = Lclisccp2
213  cfg%Lcllcalipso = Lcllcalipso
214  cfg%Lclmcalipso = Lclmcalipso
215  cfg%Lcltcalipso = Lcltcalipso
216  cfg%Lcltlidarradar = Lcltlidarradar
217  cfg%Lctpisccp = Lctpisccp
218  cfg%Ldbze94 = Ldbze94
219  cfg%Ltauisccp = Ltauisccp
220  cfg%Ltclisccp = Ltclisccp
221  cfg%Llongitude = Llongitude
222  cfg%Llatitude = Llatitude
223  cfg%Lparasol_refl = Lparasol_refl
224  cfg%LclMISR = LclMISR
225  cfg%Lmeantbisccp = Lmeantbisccp
226  cfg%Lmeantbclrisccp = Lmeantbclrisccp
227  cfg%Lfrac_out = Lfrac_out
228  cfg%Lbeta_mol532 = Lbeta_mol532
229  cfg%Ltbrttov = Ltbrttov
230
231 END SUBROUTINE READ_COSP_OUTPUT_NL
232
Note: See TracBrowser for help on using the repository browser.