LMDZ
read_cosp_output_nl.F90
Go to the documentation of this file.
1 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2 !--------------- SUBROUTINE READ_COSP_OUTPUT_NL -------------------------
3 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4  SUBROUTINE read_cosp_output_nl(cosp_nl,cfg)
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 
!IM Implemente en modes sequentiel et parallele CALL rlon_glo CALL bcast(rlon_glo)!$OMP MASTER if(is_mpi_root) then!zstophy
integer, parameter n_out_list
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL false
Definition: calcul_STDlev.h:26
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL ulevSTD CALL &zphi philevSTD CALL &zx_rh rhlevSTD!DO klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon du jour ou toutes les read_climoz CALL true
subroutine read_cosp_output_nl(cosp_nl, cfg)