! $Id$ program process_clavrx use config_mod use sensor_mod use sat_mod use cloud_mask_mod use sfc_data_mod use nwp_data_mod use geo_mod, only: & lon_lat_index , geo_type use imp_mod use out_mod use prd_mod use data_write_tools use cr_file_mdl use rtm_mod implicit none type (conf_user_opt_type) :: conf type ( sfc_main_type ) :: sfc type ( nwp_main_type ) :: nwp type ( rtm_main_type ) , target :: rtm type ( sat_type ) :: sat type ( geo_type) :: geo type ( imp_type) :: imp type ( out_type) :: out type ( prd_main_type) :: prd type ( cr_data_type ) :: cld_mask type ( cr_file_type ) :: file integer :: i_file , i_seg , i , j character (len = 256) :: file_h5 print* print*, ' <============== CLAVR-x 2013 ===================>' print* ! - read in user wishes print*,'read in configuration....' print* call conf % set_config() loop_file: do i_file = 1 , conf % n_files ! ! - check modes for this file and update them call conf % update_modes ( i_file ) print*,' set config for this file....' call sat % initialize_sat ( conf , i_file ) print*,' '//trim(conf % file % infile(i_file)) print*,' determine channels ...' call determine_channels (sat % ETsensor, conf %updated_modes %dcomp_mode & , conf %updated_modes % acha_mode & , conf %updated_modes % mask_mode & , sat % chan_on ) print*,' populate NWP structure ...' call nwp % populate (sat %start_time , sat %end_time , conf % ancil_path) ! do segments loop_seg: do i_seg = 1 , sat % num_seg print* print '(" seg nr.",I2," from",I2," segs. file nr.",I2," from ",I2," files")' & ,i_seg,sat % num_seg, i_file, conf % n_files !- first we need the l1b data of this segment print*,' read level_1b data ....' call sat % read_l1b ( i_seg ) ! - intermediate products print*,' intermediate products' call populate_imp ( sat , imp) ! put the nwp now(!) in the sat structure (really(?)) print*,' some nwp to sat matching routines...' call lon_lat_index ( nwp%lat , nwp%lon, sat % geo%lat , sat % geo%lon , geo ) call nwp % assign_to_sat_grid ( geo) print*,' read surface properties....' call sfc % populate ( sat %start_time , sat % geo%lat , sat % geo%lon , conf, nwp = nwp ) ! - read nwp print*,' update surface properties from nwp....' call update_sfc_from_nwp ( sfc , nwp , geo ) ! - compute rtm print*,' compute rtm...' call compute_rtm( nwp, geo ,sfc, sat % geo % sat_zen , sat, rtm ) print*,' prepare output' call prd%populate_attributes( sat%num_pix, sat%num_elem) if (i_seg == 1) call cld_mask % init (nx_full = 3200 , ny_full = 768) ! -start retrievals print*,' cloud mask ... ' call cloud_mask ( conf , sat , sfc , imp , cld_mask ) call cld_mask % set_property(data=sat % geo%lat ) print*,' cloud height....' print*,' cloud phase ....' print*,' dcomp....' ! file_h5 = 'test3.h5' ! file % full_file =file_h5 ! if (i_seg == 1) call file % create() ! call cld_mask % set_property ( file = trim(file_h5) , name = 'Cloud_mask' ) !call cld_mask % write_to_h5 print*, ' write to level2 file' ! call out % write_seg (conf , prd ) ! call out % write_seg (conf , prd ) call prd % deallocate_data () call sat % deallocate_all () call sfc % deallocate_all () call geo % deallocate_all () call imp % deallocate_all () call nwp % deallocate_sat_grid() end do loop_seg print* print*,' finish this file: ', trim(conf % file % infile ( i_file)) end do loop_file print* print*,'All files completed!' print*,'CLAVRX 2013 completed all files' print*,'Thank You and Come Back! ' print* print* end program process_clavrx