6 subroutine phys_cosp( itap,dtime,freq_cosp, &
7 ok_mensuelcosp,ok_journecosp,ok_hfcosp, &
8 ecrit_mth,ecrit_day,ecrit_hf, ok_all_xml, &
9 nptslmdz,nlevlmdz,lon,lat,
presnivs,overlaplmdz,sunlit, &
10 ref_liq,ref_ice,fracterlic,u_wind,v_wind,
phis,phi,ph,p,skt,t, &
11 sh,rh,tca,cca,mr_lsliq,mr_lsice,fl_lsraini,fl_lssnowi, &
12 fl_ccraini,fl_ccsnowi,mr_ozone,dtau_s,dem_s)
84 character(len=64),
PARAMETER :: cosp_input_nl=
'cosp_input_nl.txt'
85 character(len=64),
PARAMETER :: cosp_output_nl=
'cosp_output_nl.txt'
86 integer,
save :: isccp_topheight,isccp_topheight_direction,overlap
87 integer,
save :: Ncolumns
88 integer,
save :: Npoints
90 integer,
save :: Nlevels
91 Integer :: Nptslmdz,Nlevlmdz
93 integer,
save :: Npoints_it
107 integer :: t0,t1,count_rate,count_max
108 integer :: Nlon,Nlat,geomode
109 real,
save :: radar_freq,k2,ZenAng,co2,ch4,n2o,co,emsfc_lw
111 integer,
dimension(RTTOV_MAX_CHANNELS),
save :: Channels
112 real,
dimension(RTTOV_MAX_CHANNELS),
save :: Surfem
113 integer,
save :: surface_radar,use_mie_tables,use_gas_abs,do_ray,melt_lay
114 integer,
save :: Nprmts_max_hydro,Naero,Nprmts_max_aero,lidar_ice_type
115 integer,
save :: platform,satellite,Instrument,Nchannels
116 logical,
save :: use_vgrid,csat_vgrid,use_precipitation_fluxes,use_reff
120 real :: ecrit_day,ecrit_hf,ecrit_mth
121 logical :: ok_mensuelCOSP,ok_journeCOSP,ok_hfCOSP, ok_all_xml
123 logical,
save :: debut_cosp=.
true.
127 integer :: overlaplmdz
128 real,
dimension(Nptslmdz,Nlevlmdz) :: height,phi,p,ph,T,sh,rh,tca,cca,mr_lsliq,mr_lsice,mr_ccliq,mr_ccice, &
129 fl_lsrain,fl_lssnow,fl_ccrain,fl_ccsnow,fl_lsgrpl, &
130 zlev,zlev_half,mr_ozone,radliq,radice,dtau_s,dem_s,ref_liq,ref_ice
131 real,
dimension(Nptslmdz,Nlevlmdz) :: fl_lsrainI,fl_lssnowI,fl_ccrainI,fl_ccsnowI
132 real,
dimension(Nptslmdz) :: lon,lat,skt,fracTerLic,u_wind,v_wind,phis,sunlit
133 real,
dimension(Nlevlmdz) :: presnivs
135 real :: dtime,freq_cosp
138 namelist/cosp_input/overlap,isccp_topheight,isccp_topheight_direction, &
139 npoints_it,ncolumns,use_vgrid,nlr,csat_vgrid, &
140 radar_freq,surface_radar,use_mie_tables, &
141 use_gas_abs,do_ray,melt_lay,k2,nprmts_max_hydro,naero,nprmts_max_aero, &
142 lidar_ice_type,use_precipitation_fluxes,use_reff, &
143 platform,satellite,instrument,nchannels, &
144 channels,surfem,zenang,co2,ch4,n2o,co
163 if (overlaplmdz.ne.overlap)
then
164 print*,
'Attention overlaplmdz different de overlap lu dans namelist '
166 print*,
'Fin lecture Namelists, debut_cosp =',debut_cosp
168 print*,
' Cles des differents simulateurs cosp :'
169 print*,
' Lradar_sim,Llidar_sim,Lisccp_sim,Lmisr_sim,Lrttov_sim', &
170 cfg%Lradar_sim,cfg%Llidar_sim,cfg%Lisccp_sim,cfg%Lmisr_sim,cfg%Lrttov_sim
179 print *,
'Allocating memory for gridbox type...'
181 call construct_cosp_gridbox(dble(itap),radar_freq,surface_radar,use_mie_tables,use_gas_abs,do_ray,melt_lay,k2, &
182 npoints,nlevels,ncolumns,
n_hydro,nprmts_max_hydro,naero,nprmts_max_aero,npoints_it, &
183 lidar_ice_type,isccp_topheight,isccp_topheight_direction,overlap,emsfc_lw, &
184 use_precipitation_fluxes,use_reff, &
185 platform,satellite,instrument,nchannels,zenang, &
186 channels(1:nchannels),surfem(1:nchannels),co2,ch4,n2o,co,gbx)
192 print *,
'Populating input structure...'
200 zlev_half(:,1) = phis(:)/9.81
203 zlev_half(ip,k) = phi(ip,k)/9.81 + &
204 (phi(ip,k)-phi(ip,k-1))/9.81 * (ph(ip,k)-p(ip,k)) / (p(ip,k)-p(ip,k-1))
207 gbx%zlev_half = zlev_half
220 if (fracterlic(ip).ge.0.5)
then
226 gbx%mr_ozone = mr_ozone
233 if (sunlit(ip).le.0.)
then
243 gbx%mr_hydro(:,:,
i_lscliq) = mr_lsliq
244 gbx%mr_hydro(:,:,
i_lscice) = mr_lsice
245 gbx%mr_hydro(:,:,
i_cvcliq) = mr_ccliq
246 gbx%mr_hydro(:,:,
i_cvcice) = mr_ccice
248 fl_lsrain = fl_lsraini + fl_ccraini
249 fl_lssnow = fl_lssnowi + fl_ccsnowi
250 gbx%rain_ls = fl_lsrain
251 gbx%snow_ls = fl_lssnow
256 gbx%grpl_ls = fl_lsgrpl
257 gbx%rain_cv = fl_ccrain
258 gbx%snow_cv = fl_ccsnow
260 gbx%Reff(:,:,
i_lscliq) = ref_liq*1e-6
261 gbx%Reff(:,:,
i_lscice) = ref_ice*1e-6
262 gbx%Reff(:,:,
i_cvcliq) = ref_liq*1e-6
263 gbx%Reff(:,:,
i_cvcice) = ref_ice*1e-6
277 print *,
'Defining new vertical grid...'
283 print *,
'Allocating memory for other types...'
296 print *,
' Open outpts files and define axis'
298 ok_mensuelcosp, ok_journecosp, ok_hfcosp, ok_all_xml, &
299 ecrit_mth, ecrit_day, ecrit_hf, use_vgrid, vgrid)
307 print *,
'Calling simulator...'
308 call cosp(overlap,ncolumns,cfg,vgrid,gbx,sgx,sgradar,sglidar,isccp,misr,stradar,stlidar)
312 print *,
'Calling write output'
314 cfg, gbx, vgrid, sglidar, stlidar, isccp)
319 print *,
'Deallocating memory...'
340 OPEN(10,file=cosp_input_nl,status=
'old')
341 READ(10,nml=cosp_input)
345 CALL bcast(isccp_topheight)
346 CALL bcast(isccp_topheight_direction)
347 CALL bcast(npoints_it)
349 CALL bcast(use_vgrid)
351 CALL bcast(csat_vgrid)
352 CALL bcast(radar_freq)
353 CALL bcast(surface_radar)
354 CALL bcast(use_mie_tables)
355 CALL bcast(use_gas_abs)
359 CALL bcast(nprmts_max_hydro)
361 CALL bcast(nprmts_max_aero)
362 CALL bcast(lidar_ice_type)
363 CALL bcast(use_precipitation_fluxes)
366 CALL bcast(satellite)
367 CALL bcast(instrument)
368 CALL bcast(nchannels)
!IM Implemente en modes sequentiel et parallele CALL rlon_glo CALL bcast(rlon_glo)!$OMP MASTER if(is_mpi_root) then!zstophy
subroutine construct_cosp_vgrid(gbx, Nlvgrid, use_vgrid, cloudsat, x)
integer, parameter parasol_nrefl
integer, parameter n_hydro
subroutine free_cosp_isccp(x)
subroutine free_cosp_radarstats(x)
subroutine free_cosp_lidarstats(x)
integer, parameter i_cvcliq
subroutine free_cosp_sglidar(x)
subroutine phys_cosp(itap, dtime, freq_cosp, ok_mensuelCOSP, ok_journeCOSP, ok_hfCOSP, ecrit_mth, ecrit_day, ecrit_hf, ok_all_xml, Nptslmdz, Nlevlmdz, lon, lat, presnivs, overlaplmdz, sunlit, ref_liq, ref_ice, fracTerLic, u_wind, v_wind, phis, phi, ph, p, skt, t, sh, rh, tca, cca, mr_lsliq, mr_lsice, fl_lsrainI, fl_lssnowI, fl_ccrainI, fl_ccsnowI, mr_ozone, dtau_s, dem_s)
subroutine construct_cosp_lidarstats(cfg, Npoints, Ncolumns, Nlevels, Nhydro, Nrefl, x)
!$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
subroutine read_cosp_input
subroutine cosp_output_write(Nlevlmdz, Npoints, Ncolumns, itap, dtime, freq_COSP, cfg, gbx, vgrid, sglidar, stlidar, isccp)
integer, parameter i_lscliq
integer, parameter i_lscice
!$Id ***************************************!ECRITURE DU phis
subroutine construct_cosp_gridbox(time, radar_freq, surface_radar, use_mie_tables, use_gas_abs, do_ray, melt_lay, k2,Npoints, Nlevels, Ncolumns, Nhydro, Nprmts_max_hydro, Naero, Nprmts_max_aero, Npoints_it,lidar_ice_type, isccp_top_height, isccp_top_height_direction, isccp_overlap, isccp_emsfc_lw,use_precipitation_fluxes, use_reff,
!$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 free_cosp_sgradar(x)
subroutine construct_cosp_subgrid(Npoints, Ncolumns, Nlevels, y)
subroutine free_cosp_gridbox(y, dglobal)
subroutine cosp_output_open(Nlevlmdz, Ncolumns, presnivs, dtime, freq_cosp, ok_mensuelCOSP, ok_journeCOSP, ok_hfCOSP, ok_all_xml, ecrit_mth, ecrit_day, ecrit_hf, use_vgrid, vgrid)
subroutine construct_cosp_sgradar(cfg, Npoints, Ncolumns, Nlevels, Nhydro, x)
subroutine construct_cosp_sglidar(cfg, Npoints, Ncolumns, Nlevels, Nhydro, Nrefl, x)
subroutine free_cosp_vgrid(x)
integer, parameter i_cvcice
subroutine read_cosp_output_nl(cosp_nl, cfg)
subroutine construct_cosp_isccp(cfg, Npoints, Ncolumns, Nlevels, x)
subroutine free_cosp_subgrid(y)
subroutine cosp(overlap, Ncolumns, cfg, vgrid, gbx, sgx, sgradar, sglidar, isccp, misr, stradar, stlidar)
subroutine free_cosp_misr(x)
subroutine construct_cosp_misr(cfg, Npoints, x)
subroutine construct_cosp_radarstats(cfg, Npoints, Ncolumns, Nlevels, Nhydro, x)