1 | #!/bin/ksh |
---|
2 | |
---|
3 | # Convert ESMF weight file in OASIS format |
---|
4 | echo -e "--\nConvert ESMF weight file in OASIS format" |
---|
5 | |
---|
6 | output_weightdir="." |
---|
7 | mkdir $output_weightdir |
---|
8 | |
---|
9 | sgrid=$1 |
---|
10 | dgrid=$2 |
---|
11 | method=$3 |
---|
12 | |
---|
13 | case $method in |
---|
14 | bilinear) meth_convname=BILINEAR ;; |
---|
15 | patch) meth_convname=PATCH ;; |
---|
16 | neareststod) meth_convname=DISTWGT_1 ;; |
---|
17 | conserve_destarea) meth_convname=CONSERV_DESTAREA ;; |
---|
18 | conserve2nd_destarea) meth_convname=CONS2ND_DESTAREA ;; |
---|
19 | conserve_fracarea) meth_convname=CONSERV_FRACAREA ;; |
---|
20 | conserve2nd_fracarea) meth_convname=CONS2ND_FRACAREA ;; |
---|
21 | esac |
---|
22 | fweights_oasis=rmp_${sgrid}_to_${dgrid}_esmf_${meth_convname}.nc |
---|
23 | rm -f ${fweights_oasis} |
---|
24 | ncap2 -h -s 'remap_matrix[$n_s,$num_wgts]=S' ESMFweights.nc work.nc # create variable remap_matrix from S with one more dimension |
---|
25 | ncks -h -x -v S,yc_a,yc_b,xc_a,xc_b,yv_a,yv_b,xv_a,xv_b,area_a,area_b,frac_a,frac_b,src_grid_dims,dst_grid_dims work.nc ${fweights_oasis} |
---|
26 | ncrename -h -d n_a,src_grid_size ${fweights_oasis} |
---|
27 | ncrename -h -d n_b,dst_grid_size ${fweights_oasis} |
---|
28 | ncrename -h -d n_s,num_links ${fweights_oasis} |
---|
29 | ncrename -h -v mask_a,src_grid_imask ${fweights_oasis} |
---|
30 | ncrename -h -v mask_b,dst_grid_imask ${fweights_oasis} |
---|
31 | ncrename -h -v col,src_address ${fweights_oasis} |
---|
32 | ncrename -h -v row,dst_address ${fweights_oasis} |
---|
33 | rm -f work.nc |
---|
34 | ln -sf ${fweights_oasis} rmp_${sgrid}_${dgrid}.nc |
---|
35 | #mv ${fweights_oasis} ${output_weightdir} |
---|
36 | |
---|