Newer
Older
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
ncap2 -s level_${varnew}="$cfulevel_number" ${output} -h -O ${output}
#
# Removing unnecessary attributes
#
for att in GRID_TYPE ; do
ncatted -O -h -a ${att},${varnew},d,c, ${output}
done
#
# Adding and modifying the {varnew}iable attributes
#
ncatted -O -h -a standard_name,${varnew},o,c,"$cfustandard_name" ${output} # {varnew}iable standard name
ncatted -O -h -a long_name,${varnew},o,c,"$cfulong_name" ${output} # {varnew}iable long name
ncatted -O -h -a cell_methods,${varnew},o,c,"$cfucell_methods" ${output} # {varnew}iable cell methods
ncatted -O -h -a data_type,level_${varnew},o,c,"$cfulevel_type" ${output} # {varnew}iable level type
ncatted -O -h -a units,level_${varnew},o,c,"$cfulevel_units" ${output} # {varnew}iable level units
ncatted -O -h -a coordinates,${varnew},o,c,"longitude latitude reftime leadtime time_bnd experiment_id source realization institution level_${varnew}" ${output}
#
# Adding variable axis
#
ncatted -O -h -a axis,longitude,o,c,"X" ${output} # variable longitude axis
ncatted -O -h -a axis,latitude,o,c,"Y" ${output} # variable latitude axis
ncatted -O -h -a axis,level_${varnew},o,c,"Z" ${output} # variable level axis
# delete history
ncatted -h -a history,global,d,, $output
# change institution name
ncatted -h -a institution,global,m,c,"IC3" $output
# create a script to change the EXPID, insitutution, ensember, source and realiazation
i=0 # index
for mem in ${LISTMEMB[@]}; do
cat>modify_ncvalue<<EOF
ncap2 -O -h -s 'experiment_id($i,0:3)="$EXPID";realization($i)=$MEM;institution($i,0:$(( ${#INSTITUTION} -1 )))="$INSTITUTION";source($i,0:$(( ${#SOURCE} -1 )))="$SOURCE"' \$1 \$1
EOF
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
cat modify_ncvalue
bash modify_ncvalue $output; rm modify_ncvalue
i=$((i+1))
done
##
save_final_output $varnew $output
done # loop for variables
}
#### End of the User Defined Functions ####
###################################
#### Main Part of the Script ####
###################################
# NCO and CDO must be available in $PATH
date
config_file=$1
check_args $@
#read config_file and initialize variables
#check config file syntaxis problems
sed -i -e 's/= /=/g' ${config_file}
pabretonniere
committed
export WORKDIR
FACTOR=$((NFRP*3600))
ENSEMBLE=${#MEM_LST[@]}
pabretonniere
committed
if [[ $ENSEMBLE -eq 0 ]]; then
MEM_LST=( $( ls ${DATADIR}/${EXPID}/${SDATE} ) )
ENSEMBLE=${#MEM_LST[@]}
echo "Warning: you passed an empty member list. By default, it will treat all the available members: " ${MEM_LST[@]}
fi
LISTMEMB=( $(echo ${MEM_LST[@]} | sed -e 's/fc//g') ) #member list without "fc"
echo ${MEM_LST[0]}
#LISTMEMB=( "$(echo ${MEM_LST[@]} | sed -e 's/fc//g')" ) #member list without "fc"
echo $LISTMEMB
echo ${LISTMEMB[0]}
echo ${LISTMEMB[${#LISTMEMB[@]}-1]}
echo ${#LISTMEMB[@]}
#rm -rf ${WORKDIR}
mkdir -p ${WORKDIR}
if [[ ! -d ${WORKDIR} ]]; then
exit 1
fi
cd ${WORKDIR}
base_path=${DATADIR}/${EXPID}/${SDATE}
mkdir -p ${SAVEDIR}/${EXPID}; # chmod -R 775 $SAVEDIR/${EXPID}
pabretonniere
committed
#exit stop
get_leadtime
header $SDATE
extract
echo "after extract"
if [ -z ${VAR_LST_2D[@]} ]; then
pabretonniere
committed
# GG=$(ls *GG* | head -1)
GG="$(find . -maxdepth 1 -name "*GG*" | head -1 | sed -e 's/\.\///g' )"
pabretonniere
committed
# SH=$(ls *SH* | head -1)
SH="$(find . -maxdepth 1 -name "*SH*" | head -1 | sed -e 's/\.\///g' )"
pabretonniere
committed
VAR_LST_2D=$(echo ${VAR_LST_2D_GG} ${VAR_LST_2D_SH})
echo $VAR_LST_2D >> /scratch/${USER}/pp/VAR_LST_2D.txt
pabretonniere
committed
VAR_LST_3D=$(echo ${VAR_LST_3D_GG} ${VAR_LST_3D_SH})
else
VAR_LST_3D_SH_DEFAULT='T U V W Z'
VAR_LST_3D_GG_DEFAULT='Q CC CIWC CLWC'
VAR_LST_2D_GG_DEFAULT='T2M D2M SSTK MSL PRECIP SSR STR TTR TSR TSRC TTRC SLHF SSHF U10M V10M SSRD CP SF E SSRU SSRC STRU STRD TCC'
#if list of variables read from config_file, separation between GG and SH variables
for var in ${VAR_LST_3D[@]}
do
for var_sh in ${VAR_LST_3D_SH_DEFAULT[@]}
do
pabretonniere
committed
[ $var == $var_sh ] && VAR_LST_3D_SH=$(echo $VAR_LST_3D_SH $var)
done
for var_gg in ${VAR_LST_3D_GG_DEFAULT[@]}
do
pabretonniere
committed
[ $var == $var_gg ] && VAR_LST_3D_GG=$(echo $VAR_LST_3D_GG $var)
done
done
for var in ${VAR_LST_2D[@]}
do
for var_gg in ${VAR_LST_2D_GG_DEFAULT[@]}
do
pabretonniere
committed
[ $var == $var_gg ] && VAR_LST_2D_GG=$(echo $VAR_LST_2D_GG $var)
echo $YEARF - $YEAR0 - $MONF - 10#$MONF - $MON0
echo "before surface"
echo "after surface"
combine_3d
regrid2x2
upper
if [[ ${#VAR_LST_MXMN[@]} > 0 ]]; then
maxmin
pabretonniere
committed
#else
# echo "" #empty line to avoid trap issue
fi
cd; rm -rf $WORKDIR # clean up
date
pabretonniere
committed
trap - EXIT
#### End of the Main Part of Script ####