#!/bin/bash # # Generate external parameters for HDCP2 simulations # using GLOBCOVER2009, FAO DSMW, ASTER, Lake Database # 06.2014 Daniel Klocke # Adapted for Blizzard by Anurag Dipankar # Adapted for mistral by Pavan Siligam #===================================== # slrum batch job parameters # these are specified in cylc suite.rc #------------------------------------- #SBATCH --account=bm0682 #SBATCH --job-name=extpar_icon_mistral.run #SBATCH --partition=compute2 #SBATCH --nodes=1 #SBATCH --threads-per-core=2 #SBATCH --output=LOG.extpar_icon_mistral.run.%j.o #SBATCH --error=LOG.extpar_icon_mistral.run.%j.o #SBATCH --exclusive # # #======================================== # GENERAL REMARKS (Guido) # Depending on the selection of globcover and orography things can get weird. # so please not the following: # -ASTER topography only goes to 35N, if you want to go south you won't get far # -GLOBCOVER HDCP2 only works for northern Europe # # REMOVE EVERYTHING FROM EXP FOLDER BEFORE LAUNCHING WHEN CHANGING GRID!!!! #----------------------------------------------------------------------------- # openmp environment variables # ---------------------------- export OMP_NUM_THREADS=24 export OMP_SCHEDULE=static,16 export OMP_DYNAMIC="false" export OMP_STACKSIZE=128M ulimit -s unlimited set -e SWROOT=/sw/rhel6-x64 GRIBROOT=${SWROOT}/grib_api/grib_api-1.13.0-intel14 export GRIB_DEFINITION_PATH=${GRIBROOT}/share/grib_api/definitions/:${GRIBROOT}/share/grib_api/definitions/grib2/localConcepts/edzw export GRIB_SAMPLE_PATH=${GRIBROOT}/share/grib_api/samples data_dir=/work/bm0834/k203095/pool/EXTPAR_INPUT #For input grid filename=hdcp2_R2B07-grid # #Where Binaries are progdir=/work/mh0731/m300382/extpar_lem/bin # workdir=/work/mh0731/m300382/extpar_lem/exp # #Grid dir #icon_grid_dir=/work/mh0731/m300382/icon-GridGenerator-dev/grids icon_grid_dir=/scratch/m/m300382/temp # # set target grid definition icon_grid_file=${filename}.nc if [[ ! -d ${workdir} ]] ; then mkdir -p ${workdir} fi cd ${workdir} pwd binary_extpar_consistency_check=extpar_consistency_check.exe binary_aot=extpar_aot_to_buffer.exe binary_tclim=extpar_cru_to_buffer.exe binary_lu=extpar_landuse_to_buffer.exe binary_topo=extpar_topo_to_buffer.exe binary_ndvi=extpar_ndvi_to_buffer.exe binary_soil=extpar_soil_to_buffer.exe binary_flake=extpar_flake_to_buffer.exe binary_alb=extpar_alb_to_buffer.exe cat > INPUT_grid_org << EOF_go &GRID_DEF igrid_type = 1, domain_def_namelist='INPUT_ICON_GRID' / EOF_go cat > INPUT_ICON_GRID << EOF5 &icon_grid_info icon_grid_dir='${icon_grid_dir}', icon_grid_nc_file ='${filename}.nc' / EOF5 #--- grib_output_filename="extpar_${filename}.g2" netcdf_output_filename="extpar_${filename}.nc" grib_sample='GRIB2' echo $netcdf_output_filename echo $grib_output_filename #---- raw_data_alb='month_alb.nc' raw_data_alnid='month_alnid.nc' raw_data_aluvd='month_aluvd.nc' buffer_alb='month_alb_BUFFER.nc' output_alb='month_alb_extpar_ICON.nc' raw_data_aot='aerosol_optical_thickness.nc' buffer_aot='extpar_aot_BUFFER.nc' output_aot='aot_extpar_ICON.nc' raw_data_tclim_coarse='absolute_hadcrut3.nc' raw_data_tclim_fine='CRU_T2M_SURF_clim.nc' buffer_tclim='crutemp_climF_extpar_BUFFER.nc' output_tclim='crutemp_climF_extpar_ICON.nc' raw_data_glc2000='glc2000_byte.nc' buffer_glc2000='extpar_landuse_BUFFER.nc' output_glc2000='extpar_landuse_ICON.nc' raw_data_glcc='glcc_usgs_class_byte.nc' buffer_glcc='glcc_landuse_BUFFER.nc' output_glcc='glcc_landuse_ICON.nc' raw_data_globcover_0='GLOBCOVER_0_16bit.nc' raw_data_globcover_1='GLOBCOVER_1_16bit.nc' raw_data_globcover_2='GLOBCOVER_2_16bit.nc' raw_data_globcover_3='GLOBCOVER_3_16bit.nc' raw_data_globcover_4='GLOBCOVER_4_16bit.nc' raw_data_globcover_5='GLOBCOVER_5_16bit.nc' raw_data_globcover='GLOBCOVER_USERSPECIF_HDCP2.nc' buffer_lu='extpar_landuse_BUFFER.nc' output_lu='extpar_landuse_ICON.nc' raw_data_globe_A10='GLOBE_A10.nc' raw_data_globe_B10='GLOBE_B10.nc' raw_data_globe_C10='GLOBE_C10.nc' raw_data_globe_D10='GLOBE_D10.nc' raw_data_globe_E10='GLOBE_E10.nc' raw_data_globe_F10='GLOBE_F10.nc' raw_data_globe_G10='GLOBE_G10.nc' raw_data_globe_H10='GLOBE_H10.nc' raw_data_globe_I10='GLOBE_I10.nc' raw_data_globe_J10='GLOBE_J10.nc' raw_data_globe_K10='GLOBE_K10.nc' raw_data_globe_L10='GLOBE_L10.nc' raw_data_globe_M10='GLOBE_M10.nc' raw_data_globe_N10='GLOBE_N10.nc' raw_data_globe_O10='GLOBE_O10.nc' raw_data_globe_P10='GLOBE_P10.nc' buffer_topo='topography_BUFFER.nc' output_topo='topography_ICON.nc' raw_data_ndvi='NDVI_1998_2003.nc' buffer_ndvi='NDVI_BUFFER.nc' output_ndvi='ndvi_extpar_ICON.nc' raw_data_soil_FAO='FAO_DSMW_DP.nc' raw_data_soil_HWSD='HWSD0_30_texture_2.nc' raw_data_deep_soil='HWSD30_100_texture_2.nc' buffer_soil='SOIL_BUFFER.nc' output_soil='SOIL_ICON.nc' raw_lookup_table_HWSD='LU_TAB_HWSD_UF.data' raw_HWSD_data='HWSD_DATA_COSMO.data' raw_HWSD_data_deep='HWSD_DATA_COSMO_S.data' raw_HWSD_data_extpar='HWSD_DATA_COSMO_EXTPAR.asc' raw_data_flake='lakedepth.nc' buffer_flake='flake_BUFFER.nc' output_flake='ext_par_flake_ICON.nc' # create input namelists cat > INPUT_AOT << EOF_aot &aerosol_raw_data raw_data_aot_path='', raw_data_aot_filename='${raw_data_aot}' / &aerosol_io_extpar aot_buffer_file='${buffer_aot}', aot_output_file='${output_aot}' / EOF_aot #--- cat > INPUT_TCLIM << EOF_tclim &t_clim_raw_data raw_data_t_clim_path='', raw_data_t_clim_filename='${raw_data_tclim_coarse}' raw_data_t_id = 2 / &t_clim_io_extpar t_clim_buffer_file='crutemp_climC_extpar_BUFFER.nc', t_clim_output_file='crutemp_climC_extpar_ICON.nc' / EOF_tclim #--- # &lu_raw_data # raw_data_lu_path='', # raw_data_lu_filename='${raw_data_globcover}', # i_landuse_data=1, # ilookup_table_lu=1, # ntiles_globcover=1 # / cat > INPUT_LU << EOF_lu &lu_raw_data raw_data_lu_path='', raw_data_lu_filename='${raw_data_globcover_0}' '${raw_data_globcover_1}' '${raw_data_globcover_2}' '${raw_data_globcover_3}' '${raw_data_globcover_4}' '${raw_data_globcover_5}', i_landuse_data=1, ilookup_table_lu=1, ntiles_globcover=6 / &lu_io_extpar lu_buffer_file='${buffer_lu}', lu_output_file='${output_lu}' / &glcc_raw_data raw_data_glcc_path='', raw_data_glcc_filename='${raw_data_glcc}' / &glcc_io_extpar glcc_buffer_file='${buffer_glcc}', glcc_output_file='${output_glcc}' / EOF_lu #--- #cat > INPUT_ORO << EOF_oro #&orography_io_extpar #orography_buffer_file='${buffer_topo}', #orography_output_file='${output_topo}' #/ #&orography_raw_data #itopo_type = 2 #lsso_param = .TRUE., #raw_data_orography_path='', #ntiles_column = 2, #ntiles_row = 4, #topo_files = 'topo.ASTER_orig_T006.nc' 'topo.ASTER_orig_T007.nc' 'topo.ASTER_orig_T018.nc' 'topo.ASTER_orig_T019.nc' 'topo.ASTER_orig_T030.nc' 'topo.ASTER_orig_T031.nc ' 'topo.ASTER_orig_T042.nc' 'topo.ASTER_orig_T043.nc' #/ #EOF_oro cat > INPUT_ORO << EOF_oro &orography_io_extpar orography_buffer_file='${buffer_topo}', orography_output_file='${output_topo}' / &orography_raw_data itopo_type = 1 lsso_param = .TRUE., raw_data_orography_path='', ntiles_column = 4, ntiles_row = 4, topo_files = ${raw_data_globe_A10} ${raw_data_globe_B10} ${raw_data_globe_C10} ${raw_data_globe_D10} ${raw_data_globe_E10} ${raw_data_globe_F10} ${raw_data_globe_G10} ${raw_data_globe_H10} ${raw_data_globe_I10} ${raw_data_globe_J10} ${raw_data_globe_K10} ${raw_data_globe_L10} ${raw_data_globe_M10} ${raw_data_globe_N10} ${raw_data_globe_O10} ${raw_data_globe_P10} / EOF_oro #---- cat > INPUT_OROSMOOTH << EOF_orosmooth &orography_smoothing lfilter_oro=.FALSE. / EOF_orosmooth #--- cat > INPUT_RADTOPO << EOF_rad &radtopo lradtopo=.FALSE., nhori=24, / EOF_rad #--- #--- cat > INPUT_NDVI << EOF_ndvi &ndvi_raw_data raw_data_ndvi_path='', raw_data_ndvi_filename='${raw_data_ndvi}' / &ndvi_io_extpar ndvi_buffer_file='${buffer_ndvi}', ndvi_output_file='${output_ndvi}' / EOF_ndvi #--- cat > INPUT_SOIL << EOF_soil &soil_raw_data isoil_data = 2, ldeep_soil = .false., raw_data_soil_path='', raw_data_soil_filename='${raw_data_soil_HWSD}' raw_data_deep_soil_filename='${raw_data_deep_soil}' / &soil_io_extpar soil_buffer_file='${buffer_soil}', soil_output_file='${output_soil}' / &HWSD_index_files path_HWSD_index_files='', lookup_table_HWSD='${raw_lookup_table_HWSD}', HWSD_data='${raw_HWSD_data}', HWSD_data_deep='${raw_HWSD_data_deep}', HWSD_data_extpar='${raw_HWSD_data_extpar}' / EOF_soil #--- cat > INPUT_FLAKE << EOF_flake &flake_raw_data raw_data_flake_path='', raw_data_flake_filename='${raw_data_flake}' / &flake_io_extpar flake_buffer_file='${buffer_flake}' flake_output_file='${output_flake}' / EOF_flake #--- cat > INPUT_ALB << EOF_alb &alb_raw_data raw_data_alb_path='', raw_data_alb_filename='${raw_data_alb}' / &alnid_raw_data raw_data_alb_path='', raw_data_alnid_filename='${raw_data_alnid}' / &aluvd_raw_data raw_data_alb_path='', raw_data_aluvd_filename='${raw_data_aluvd}' / &alb_io_extpar alb_buffer_file='${buffer_alb}', alb_output_file='${output_alb}' / &alb_source_file alb_source='al' alnid_source='alnid' aluvd_source='aluvd' / EOF_alb # consistency check cat > INPUT_CHECK << EOF_check &extpar_consistency_check_io grib_output_filename='${grib_output_filename}', netcdf_output_filename='${netcdf_output_filename}', orography_buffer_file='${buffer_topo}', soil_buffer_file='${buffer_soil}', lu_buffer_file='${buffer_lu}', glcc_buffer_file='${buffer_glcc}', flake_buffer_file='${buffer_flake}', ndvi_buffer_file='${buffer_ndvi}', t_clim_buffer_file='${buffer_tclim}', aot_buffer_file='${buffer_aot}', alb_buffer_file='${buffer_alb}', i_lsm_data=1, land_sea_mask_file="", number_special_points=0 / EOF_check # link raw data files to local workdir ln -s -f ${data_dir}/${raw_data_alb} ln -s -f ${data_dir}/${raw_data_alnid} ln -s -f ${data_dir}/${raw_data_aluvd} ln -s -f ${data_dir}/${raw_data_aot} ln -s -f ${data_dir}/${raw_data_tclim_coarse} ln -s -f ${data_dir}/${raw_data_tclim_fine} ln -s -f ${data_dir}/${raw_data_glc2000} ln -s -f ${data_dir}/${raw_data_glcc} ln -s -f ${data_dir}/${raw_data_globcover_0} ln -s -f ${data_dir}/${raw_data_globcover_1} ln -s -f ${data_dir}/${raw_data_globcover_2} ln -s -f ${data_dir}/${raw_data_globcover_3} ln -s -f ${data_dir}/${raw_data_globcover_4} ln -s -f ${data_dir}/${raw_data_globcover_5} ln -s -f ${data_dir}/${raw_data_globcover} ln -s -f ${data_dir}/${raw_data_globe_A10} ln -s -f ${data_dir}/${raw_data_globe_B10} ln -s -f ${data_dir}/${raw_data_globe_C10} ln -s -f ${data_dir}/${raw_data_globe_D10} ln -s -f ${data_dir}/${raw_data_globe_E10} ln -s -f ${data_dir}/${raw_data_globe_F10} ln -s -f ${data_dir}/${raw_data_globe_G10} ln -s -f ${data_dir}/${raw_data_globe_H10} ln -s -f ${data_dir}/${raw_data_globe_I10} ln -s -f ${data_dir}/${raw_data_globe_J10} ln -s -f ${data_dir}/${raw_data_globe_K10} ln -s -f ${data_dir}/${raw_data_globe_L10} ln -s -f ${data_dir}/${raw_data_globe_M10} ln -s -f ${data_dir}/${raw_data_globe_N10} ln -s -f ${data_dir}/${raw_data_globe_O10} ln -s -f ${data_dir}/${raw_data_globe_P10} ln -s -f ${data_dir}/topo.ASTER_orig_T006.nc ln -s -f ${data_dir}/topo.ASTER_orig_T007.nc ln -s -f ${data_dir}/topo.ASTER_orig_T008.nc ln -s -f ${data_dir}/topo.ASTER_orig_T018.nc ln -s -f ${data_dir}/topo.ASTER_orig_T019.nc ln -s -f ${data_dir}/topo.ASTER_orig_T020.nc ln -s -f ${data_dir}/topo.ASTER_orig_T030.nc ln -s -f ${data_dir}/topo.ASTER_orig_T031.nc ln -s -f ${data_dir}/topo.ASTER_orig_T032.nc ln -s -f ${data_dir}/topo.ASTER_orig_T042.nc ln -s -f ${data_dir}/topo.ASTER_orig_T043.nc ln -s -f ${data_dir}/topo.ASTER_orig_T044.nc #ln -s -f ${data_dir}/topo.ASTER_orig_T054.nc #ln -s -f ${data_dir}/topo.ASTER_orig_T055.nc ln -s -f ${data_dir}/${raw_data_ndvi} ln -s -f ${data_dir}/${raw_data_soil_FAO} ln -s -f ${data_dir}/${raw_data_soil_HWSD} ln -s -f ${data_dir}/${raw_data_deep_soil} ln -s -f ${data_dir}/${raw_lookup_table_HWSD} ln -s -f ${data_dir}/${raw_HWSD_data} ln -s -f ${data_dir}/${raw_HWSD_data_deep} ln -s -f ${data_dir}/${raw_data_flake} ln -s -f ${icon_grid_dir}/${icon_grid_file} # run the programs # the next seven programs can run independent of each other time ${progdir}/${binary_tclim} #--- cat > INPUT_TCLIM << EOF_tclim &t_clim_raw_data raw_data_t_clim_path='', raw_data_t_clim_filename='${raw_data_tclim_fine}', raw_data_t_id = 1 / &t_clim_io_extpar t_clim_buffer_file='${buffer_tclim}', t_clim_output_file='${output_tclim}' / EOF_tclim time ${progdir}/${binary_lu} time ${progdir}/${binary_tclim} time ${progdir}/${binary_alb} time ${progdir}/${binary_aot} time ${progdir}/${binary_topo} time ${progdir}/${binary_ndvi} time ${progdir}/${binary_soil} time ${progdir}/${binary_flake} printenv | grep GRIB_ cat > INPUT_TCLIM_FINAL << EOF_tclim &t_clim_raw_data raw_data_t_clim_path='', raw_data_t_clim_filename='${raw_data_tclim_fine}', raw_data_t_id = 1 / &t_clim_io_extpar t_clim_buffer_file='crutemp_climF_extpar_BUFFER.nc', t_clim_output_file='crutemp_climC_extpar_BUFFER.nc' / EOF_tclim time ${progdir}/${binary_extpar_consistency_check} echo 'External parameters for refinement grid of ICON model generated in' echo $workdir