source: TOOLS/MOSAIX/CreateWeightsMask.bash @ 3620

Last change on this file since 3620 was 3620, checked in by omamce, 3 years ago

O.M. : continue first commit

  • Property svn:executable set to *
File size: 20.0 KB
Line 
1#!/bin/bash
2#MSUB -r WeightsMask        # nom de la requete
3#MSUB -o Out_WeightsMask    # nom du fichier de sortie
4#MSUB -e Out_WeightsMask    # nom du fichier de sortie
5#MSUB -eo
6#MSUB -n 4              # Reservation des processeurs pour le job
7#MSUB -T 1800           # Limite temps (en secondes)
8#MSUB -q standard
9#MSUB -Q test
10#MSUB -p devcmip6
11
12### ===========================================================================
13###
14### Creates interpolation weights between ORCA and atmospher grids.
15### Interpolates ORCA mask to atmosphere grid.
16### Weight files are at OASIS-MCT format.
17###
18### Atmosphere grid may be lon/lat LMDZ or DYNAMICO icosahedron
19### ===========================================================================
20##
21##  Warning, to install, configure, run, use any of Olivier Marti's
22##  software or to read the associated documentation you'll need at least
23##  one (1) brain in a reasonably working order. Lack of this implement
24##  will void any warranties (either express or implied).
25##  O. Marti assumes no responsability for errors, omissions,
26##  data loss, or any other consequences caused directly or indirectly by
27##  the usage of his software by incorrectly or partially configured
28##  personal.
29##
30
31##
32## Configuration
33## ===========================================================================
34
35#
36# Defines models
37# ==============
38OCE=ORCA2.3
39#OCE=eORCA1.2
40#OCE=ORCA025
41
42ATM=ICO30
43#ATM=ICO40
44#ATM=ICO450
45#ATM=LMD9695
46#ATM=LMD144X142
47
48#
49# Defines OCE grids to handle
50# ===========================
51ListOCEGRID="T U V"
52Listorder="1st" # " 2nd
53
54## ===========================================================================
55##
56## You should not change anything below this line ....
57##
58## ===========================================================================
59SUBMIT_DIR=$(pwd)
60
61#
62# Defines computer
63# ================
64if [[ $(hostname) = curie* ]] ; then arch=curie ; center=tgcc ; fi
65if [[ $(hostname) = irene* ]] ; then arch=irene ; center=tgcc ; fi
66PROGRAM=$(basename ${0})
67
68case ${arch} in
69    ( curie | irene )
70    set +vx
71    module unload cdo nco ferret
72    module unload netcdf hdf5
73    module load python # /2.7.12
74    module load netcdf/4.3.3.1_hdf5_parallel # Version for XIOS
75    module load nco
76    R_IN=$(ccc_home -u igcmg --cccwork)/IGCM
77    TMPDIR=${SCRATCHDIR}/TMP
78    SUBMIT_DIR=${BRIDGE_MSUB_PWD:-${SUBMIT_DIR}}
79    PROGRAM=${BRIDGE_MSUB_REQNAME}
80    ;;
81    ( * )
82    exit -1
83    ;;
84esac
85
86set -x ; set -e
87
88mkdir -p ${TMPDIR}/${OCE}x${ATM} || exit 1
89cd       ${TMPDIR}/${OCE}x${ATM} || exit 1
90rm -f *
91
92#
93# Suffixes
94# ---------------------------------------------------------------------------
95Listocegrid=${ListOCEGRID~}
96
97case ${OCE} in
98    ( *ORC* )         oce=orc ; oce_domain_type=curvilinear   ;;
99esac
100case ${ATM} in
101    ( *dynamico*    ) atm=ico ; atm_domain_type=unstructured  ;;
102    ( *ICO*         ) atm=ico ; atm_domain_type=unstructured  ;;
103    ( *lmd* | *LMD* ) atm=lmd ; atm_domain_type=rectilinear   ;;
104esac
105
106#
107# Format for OASIS files : should be NetCDF3 classic or NetCDF3 64 bits
108# ---------------------------------------------------------------------------
109FL_FMT=64bit
110
111
112cp ${SUBMIT_DIR}/bin/interpol.exe                 .
113cp ${SUBMIT_DIR}/update_xml.py                    .
114
115##
116## NEMO T point towards ATM - 1st order
117## ===========================================================================
118cp ${R_IN}/OCE/NEMO/${OCE}/${OCE}_coordinates_mask.nc  .
119cp ${R_IN}/ATM/${ATM}/${ATM}_grid.nc .
120
121ln -s ${OCE}_coordinates_mask.nc  oce_grid.nc
122ln -s ${ATM}_grid.nc              atm_grid.nc
123
124echo ${Green}"${OCE} T toward ${ATM} - 1storder"${Norm}
125cp ${SUBMIT_DIR}/iodef_oce_to_atm.xml   iodef.xml
126
127python update_xml.py -i iodef.xml -n 'context[@id="interpol_read"]/file_definition/file[@id="file_src"]/field[@id="mask_src"]'   -k name  -v maskutil_T
128python update_xml.py -i iodef.xml -n 'context[@id="interpol_read"]/domain_definition/domain[@id="domain_src"]'                   -k type  -v ${oce_domain_type}
129python update_xml.py -i iodef.xml -n 'context[@id="interpol_read"]/domain_definition/domain[@id="domain_dst"]'                   -k type  -v ${atm_domain_type}
130python update_xml.py -i iodef.xml -n 'context[@id="interpol_run"]/file_definition/file[@id="file_src"]/field[@id="mask_source"]' -k name  -v maskutil_T
131python update_xml.py -i iodef.xml -n 'context[@id="interpol_run"]/file_definition/file[@id="dia"]'                               -k name  -v dia_t${oce}_to_t${atm}_1storder
132python update_xml.py -i iodef.xml -n 'context[@id="interpol_run"]/file_definition/file[@id="dia"]/variable[@name="title"]'       -t "${OCE} mask interpolated to ${ATM}"
133python update_xml.py -i iodef.xml -n 'context[@id="interpol_run"]/file_definition/file[@id="dia"]/variable[@name="source_grid"]' -t ${oce_domain_type}
134python update_xml.py -i iodef.xml -n 'context[@id="interpol_run"]/file_definition/file[@id="dia"]/variable[@name="dest_grid"]'   -t ${atm_domain_type}
135python update_xml.py -i iodef.xml -n 'context[@id="interpol_run"]/file_definition/file[@id="dia"]/variable[@name="order"]'       -t 1
136python update_xml.py -i iodef.xml -n 'context[@id="interpol_run"]/domain_definition/domain[@id="domain_src"]'                    -k type  -v ${oce_domain_type}
137python update_xml.py -i iodef.xml -n 'context[@id="interpol_run"]/domain_definition/domain[@id="domain_dst"]'                    -k type  -v ${atm_domain_type}
138python update_xml.py -i iodef.xml -n 'context[@id="interpol_run"]/domain_definition/domain[@id="domain_dst"]/interpolate_domain' -k weight_filename -v rmp_t${oce}_to_t${atm}_1storder.nc
139python update_xml.py -i iodef.xml -n 'context[@id="interpol_run"]/domain_definition/domain[@id="domain_dst"]/interpolate_domain' -k order -v 1
140
141cp iodef.xml iodef_t${oce}_to_t${atm}_1storder.xml
142
143time /usr/bin/time ccc_mprun ./interpol.exe --mask_src=yes --mask_dst=no
144
145##
146## Correct spurious values (extremes)
147## ===========================================================================
148cat <<EOF > correction_masque.nco
149where (OceFrac <   0.00001 )  OceFrac=OceFrac.get_miss() ;
150where (OceFrac >   0.99999 )  OceFrac=1.0 ;
151OceFrac.delete_miss() ;
152// Fill masked values to land values
153where (OceFrac >  1.0 )  OceFrac=0.0 ;
154where (OceFrac <  0.0 )  OceFrac=0.0 ;
155EOF
156ncap2 -h --overwrite --script-file correction_masque.nco dia_t${oce}_to_t${atm}_1storder.nc tmp_dia_t${oce}_to_t${atm}_1storder.nc ; mv tmp_dia_t${oce}_to_t${atm}_1storder.nc dia_t${oce}_to_t${atm}_1storder.nc
157ncatted -h -a missing_value,OceFrac,d,,"" -a _FillValue,OceFrac,d,,"" dia_t${oce}_to_t${atm}_1storder.nc
158
159##
160##  Creates mask on ATM grid
161## ===========================================================================
162cp dia_t${oce}_to_t${atm}_1storder.nc  dia_t${oce}_to_t${atm}_1storder_mask.nc
163ncks -h --overwrite -v OceFrac dia_t${oce}_to_t${atm}_1storder_mask.nc  ${ATM}_grid_maskFrom_${OCE}.nc
164ncks -h --append    -v aire    atm_grid.nc                              ${ATM}_grid_maskFrom_${OCE}.nc
165[[ ${atm} = *ico* ]] && ncks -h --append -v bounds_lon,bounds_lat atm_grid.nc                              ${ATM}_grid_maskFrom_${OCE}.nc
166
167cat <<EOF > creation_masque.nco
168where (OceFrac >  0.0 )  OceFrac=1 ;
169where (OceFrac <= 0.0 )  OceFrac=0 ;
170EOF
171ncap2 -h --overwrite --script-file creation_masque.nco dia_t${oce}_to_t${atm}_1storder_mask.nc tmp_dia_t${oce}_to_t${atm}_1storder_mask.nc ; mv tmp_dia_t${oce}_to_t${atm}_1storder_mask.nc dia_t${oce}_to_t${atm}_1storder_mask.nc
172ncrename -h -v OceFrac,OceMask dia_t${oce}_to_t${atm}_1storder_mask.nc
173
174ncks -h --append  -v OceMask dia_t${oce}_to_t${atm}_1storder_mask.nc   ${ATM}_grid_maskFrom_${OCE}.nc
175
176
177##
178## NEMO, other case, towards ATM
179## ===========================================================================
180for order in ${Listorder} ; do
181    case ${order} in
182        ( 1st ) num_order=1 ;;
183        ( 2nd ) num_order=2 ;;
184    esac
185   
186    for OCEGRID in ${ListOCEGRID} ; do
187        ocegrid=${OCEGRID~}
188
189        if [[ !( ${order} = 1st && ${OCEGRID} = T ) ]] ; then
190
191            echo ${Green}"${OCE} ${OCEGRID} toward ${ATM} - ${order}order"${Norm}
192
193            python update_xml.py -i iodef.xml -n 'context[@id="interpol_read"]/file_definition/file[@id="file_src"]/field[@id="mask_src"]'   -k name  -v maskutil_${OCEGRID}
194            python update_xml.py -i iodef.xml -n 'context[@id="interpol_read"]/domain_definition/domain[@id="domain_src"]'                   -k type  -v ${oce_domain_type}
195            python update_xml.py -i iodef.xml -n 'context[@id="interpol_read"]/domain_definition/domain[@id="domain_dst"]'                   -k type  -v ${atm_domain_type}
196            python update_xml.py -i iodef.xml -n 'context[@id="interpol_run"]/file_definition/file[@id="file_src"]/field[@id="mask_source"]' -k name  -v maskutil_${OCEGRID}
197            python update_xml.py -i iodef.xml -n 'context[@id="interpol_run"]/file_definition/file[@id="dia"]'                               -k name  -v dia_${ocegrid}${oce}_to_t${atm}_${order}order
198            python update_xml.py -i iodef.xml -n 'context[@id="interpol_run"]/file_definition/file[@id="dia"]/variable[@name="title"]'       -t "${OCE} mask interpolated to ${ATM}"
199            python update_xml.py -i iodef.xml -n 'context[@id="interpol_run"]/file_definition/file[@id="dia"]/variable[@name="source_grid"]' -t ${oce_domain_type}
200            python update_xml.py -i iodef.xml -n 'context[@id="interpol_run"]/file_definition/file[@id="dia"]/variable[@name="dest_grid"]'   -t ${atm_domain_type}
201            python update_xml.py -i iodef.xml -n 'context[@id="interpol_run"]/file_definition/file[@id="dia"]/variable[@name="order"]'       -t ${num_order}
202            python update_xml.py -i iodef.xml -n 'context[@id="interpol_run"]/domain_definition/domain[@id="domain_src"]'                    -k type  -v ${oce_domain_type}
203            python update_xml.py -i iodef.xml -n 'context[@id="interpol_run"]/domain_definition/domain[@id="domain_dst"]'                    -k type  -v ${atm_domain_type}
204            python update_xml.py -i iodef.xml -n 'context[@id="interpol_run"]/domain_definition/domain[@id="domain_dst"]/interpolate_domain' -k order -v ${num_order}
205            python update_xml.py -i iodef.xml -n 'context[@id="interpol_run"]/domain_definition/domain[@id="domain_dst"]/interpolate_domain' -k weight_filename -v rmp_${ocegrid}${oce}_to_t${atm}_${order}order.nc
206            cp iodef.xml iodef_${ocegrid}${oce}_t${atm}_${order}order.xml
207           
208            time /usr/bin/time ccc_mprun ./interpol.exe --mask_src=yes --mask_dst=yes
209        fi
210       
211    done
212done
213
214##
215## ATM towards NEMO points
216## ===========================================================================
217cp ${SUBMIT_DIR}/iodef_atm_to_oce.xml           iodef.xml
218
219python update_xml.py -i iodef.xml -n 'context[@id="interpol_read"]/domain_definition/domain[@id="domain_src"]'                   -k type  -v ${atm_domain_type}
220python update_xml.py -i iodef.xml -n 'context[@id="interpol_read"]/domain_definition/domain[@id="domain_dst"]'                   -k type  -v ${oce_domain_type}
221python update_xml.py -i iodef.xml -n 'context[@id="interpol_run"]/file_definition/file[@id="dia"]/variable[@name="title"]'       -t "${ATM} mask interpolated to ${OCE}"
222python update_xml.py -i iodef.xml -n 'context[@id="interpol_run"]/file_definition/file[@id="dia"]/variable[@name="source_grid"]' -t ${atm_domain_type}
223python update_xml.py -i iodef.xml -n 'context[@id="interpol_run"]/file_definition/file[@id="dia"]/variable[@name="dest_grid"]'   -t ${oce_domain_type}
224python update_xml.py -i iodef.xml -n 'context[@id="interpol_run"]/domain_definition/domain[@id="domain_src"]'                    -k type  -v ${atm_domain_type}
225python update_xml.py -i iodef.xml -n 'context[@id="interpol_run"]/domain_definition/domain[@id="domain_dst"]'                    -k type  -v ${oce_domain_type}
226           
227for order in ${Listorder} ; do
228    case ${order} in
229        ( 1st ) num_order=1 ;;
230        ( 2nd ) num_order=2 ;;
231    esac
232    python update_xml.py -i iodef.xml -n 'context[@id="interpol_run"]/domain_definition/domain[@id="domain_dst"]/interpolate_domain' -k order -v ${num_order}
233    python update_xml.py -i iodef.xml -n 'context[@id="interpol_run"]/file_definition/file[@id="dia"]/variable[@name="order"]'       -t ${num_order}   
234   
235    for OCEGRID in ${ListOCEGRID} ; do
236        ocegrid=${OCEGRID~}
237
238        echo ${Green}"${ATM} toward ${OCE} ${OCEGRID} - ${order}order"${Norm}
239        python update_xml.py -i iodef.xml -n 'context[@id="interpol_read"]/file_definition/file[@id="file_dst"]/field[@id="mask_dst"]'   -k name  -v mask_${OCEGRID}
240        python update_xml.py -i iodef.xml -n 'context[@id="interpol_run"]/file_definition/file[@id="file_dst"]/field[@id="mask_dest"]'   -k name  -v mask_${OCEGRID}
241        python update_xml.py -i iodef.xml -n 'context[@id="interpol_run"]/file_definition/file[@id="dia"]'                               -k name  -v dia_t${atm}_to_${ocegrid}${oce}_${order}order
242        python update_xml.py -i iodef.xml -n 'context[@id="interpol_run"]/domain_definition/domain[@id="domain_dst"]/interpolate_domain' -k weight_filename -v rmp_t${atm}_to_${ocegrid}${oce}_${order}order.nc
243        cp iodef.xml iodef_t${atm}_to_${ocegrid}${oce}_${order}order.xml
244       
245        time /usr/bin/time ccc_mprun ./interpol.exe --mask_src=yes --mask_dst=yes
246       
247    done
248done
249
250##
251## Change all NetCDF files to NetCDF 3 format (needed for OASIS)
252## ===========================================================================
253for InFile in *.nc ; do
254    if [[ $(ncdump -k ${InFile}) = *netCDF-4* ]] ; then
255        mv ${InFile} tmp_${InFile}
256        ncks --fl_fmt=${FL_FMT} -h  tmp_${InFile}  ${InFile}
257    fi
258done
259
260##
261## Add time axis and coordinates information
262## (needed if files need to be read by XIOS)
263## ===========================================================================
264if [[ ${atm} = ico ]] ; then
265    cat <<EOF > add_time.nco
266defdim("time_counter",1) ;
267OceFrac [time_counter,cell] = OceFrac (:) ;
268OceMask [time_counter,cell] = OceMask (:) ;
269EOF
270    ncap2 -O -h -S add_time.nco   ${ATM}_grid_maskFrom_${OCE}.nc tmp_${ATM}_grid_maskFrom_${OCE}.nc ; mv tmp_${ATM}_grid_maskFrom_${OCE}.nc ${ATM}_grid_maskFrom_${OCE}.nc
271    ncks -O --mk_rec time_counter ${ATM}_grid_maskFrom_${OCE}.nc tmp_${ATM}_grid_maskFrom_${OCE}.nc ; mv tmp_${ATM}_grid_maskFrom_${OCE}.nc ${ATM}_grid_maskFrom_${OCE}.nc
272    ncatted -h \
273            -a coordinates,OceFrac,c,c,"time_counter cell" \
274            -a coordinates,OceMask,c,c,"time_counter cell" \
275            -a coordinates,aire,c,c,"time_counter cell"    ${ATM}_grid_maskFrom_${OCE}.nc
276fi
277if [[ ${atm} = lmd ]] ; then
278    cat <<EOF > add_time.nco
279defdim("time_counter",1) ;
280OceFrac [time_counter,lat,lon] = OceFrac (:,:) ;
281OceMask [time_counter,lat,lon] = OceMask (:,:) ;
282EOF
283    ncap2 -O -h -S add_time.nco   ${ATM}_grid_maskFrom_${OCE}.nc tmp_${ATM}_grid_maskFrom_${OCE}.nc ; mv tmp_${ATM}_grid_maskFrom_${OCE}.nc ${ATM}_grid_maskFrom_${OCE}.nc
284    ncks -O --mk_rec time_counter ${ATM}_grid_maskFrom_${OCE}.nc tmp_${ATM}_grid_maskFrom_${OCE}.nc ; mv tmp_${ATM}_grid_maskFrom_${OCE}.nc ${ATM}_grid_maskFrom_${OCE}.nc
285    ncatted -h \
286            -a coordinates,OceFrac,c,c,"time_counter lat lon" \
287            -a coordinates,OceMask,c,c,"time_counter lat lon" \
288            -a coordinates,aire,c,c,"time_counter lat lon"    ${ATM}_grid_maskFrom_${OCE}.nc
289fi
290
291##
292## Add some information in file headers
293## ===========================================================================
294
295UUID=$(uuid)
296NCO="$(ncks --version |& tail -1|sed 's/ncks //')"
297PYTHON_VER=$( python -i -c "import sys ; print (sys.version.split(' ')[0])" )
298for InFile in *${oce}_to_*${atm}_*.nc *${atm}_to_*${oce}_*.nc ${ATM}_grid_maskFrom_${OCE}.nc ; do
299    ncatted -h \
300            --attribute uuid,global,d,,                                           \
301            --attribute LongName,global,d,,                                       \
302            --attribute nco_openmp_thread_number,global,d,,                       \
303            --attribute Conventions,global,o,c,"CF-1.6"                           \
304            --attribute source,global,o,c,"IPSL Earth system model"               \
305            --attribute group,global,o,c,"ICMC IPSL Climate Modelling Center"     \
306            --attribute Institution,global,o,c,"IPSL https://www.ipsl.fr"         \
307            --attribute Ocean,global,o,c,"${OCE} https://www.nemo-ocean.eu"       \
308            --attribute Atmosphere,global,o,c,"${ATM} http://lmdz.lmd.jussieu.fr" \
309            --attribute production,global,o,c,"$(finger ${LOGNAME} | head -1 | awk '{print $4, $5}') " \
310            --attribute originalFiles,global,o,c,"${OCE}_coordinates_mask.nc ${ATM}_grid_mask.nc"      \
311            --attribute associatedFiles,global,o,c,"grids_${OCE}x${ATM}.nc areas_${OCE}x${ATM}.nc masks_${OCE}x${ATM}.nc" \
312            --attribute directory,global,o,c,"$(pwd)"                             \
313            --attribute description,global,o,c,"Fields needed by OASIS-MCT"       \
314            --attribute title,global,o,c,"${InFile}.nc"                           \
315            --attribute Program,global,o,c,"Generated by ${PROGRAM}"              \
316            --attribute timeStamp,global,o,c,"$(date)"                            \
317            --attribute uuid,global,o,c,"${UUID}"                                 \
318            --attribute HOSTNAME,global,o,c,"$(hostname)"                         \
319            --attribute LOGNAME,global,o,c,"$(whoami)"                            \
320            --attribute NCO,global,o,c,"NCO netCDF Operator ${NCO} http://nco.sourceforge.net" \
321            --attribute Python,global,o,c,"Python version ${PYTHON_VER}"          \
322            --attribute OS,global,o,c,"$(uname -o)"                               \
323            --attribute release,global,o,c,"$(uname -r)"                          \
324            --attribute hardware,global,o,c,"$(uname -i)"                         \
325            --attribute directory,global,o,c,"$(pwd)"                             \
326            --attribute description,global,o,c,"Generated with XIOS http://forge.ipsl.jussieu.fr/ioserver" \
327            --attribute Comment,global,o,c,"Preliminary attempt - Do not trust !" \
328            ${InFile}
329done
330
331
332##
333## Update and complete weights file to fit OASIS requested format
334## ===========================================================================
335cat <<EOF > add_dim.nco
336defdim("num_wgts",1) ;
337weight[n_weight, num_wgts] = weight ;
338EOF
339
340for file in rmp_*${oce}_to_*${atm}_*.nc rmp_*${atm}_to_*${oce}_*.nc ; do
341    mv ${file} xios_${file}
342    ncap2 --fl_fmt=${FL_FMT} -h --script-file add_dim.nco xios_${file} ${file}
343   
344    ncrename -h --dimension n_weight,num_links   ${file}
345    ncrename -h --variable  src_idx,src_address  ${file}
346    ncrename -h --variable  dst_idx,dst_address  ${file}
347    ncrename -h --variable  weight,remap_matrix  ${file}
348    case ${file} in
349        ( *1storder.nc ) ncatted -h --attribute map_method,global,o,c,"Conservative Remapping - 1st order"  ${file} ;;
350        ( *2ndorder.nc ) ncatted -h --attribute map_method,global,o,c,"Conservative Remapping - 2nd order"  ${file} ;;
351    esac
352    ncatted -h --attribute conventions,global,o,c,"SCRIP"   ${file}
353    ncatted -h --attribute normalization,global,o,c,"none"  ${file}
354   
355    case ${file} in
356        ( rmp_*${oce}_to_t${atm}_* )
357        ncatted -h \
358                --attribute title,global,o,c,"Weights ${OCE} to ${ATM}" \
359                --attribute source_grid,global,o,c,"${oce_domain_type}" \
360                --attribute dest_grid,global,o,c,"${atm_domain_type}"   \
361                ${file} 
362        ;;
363        ( rmp_*${atm}_to_*${oce}_* )
364        ncatted -h \
365                --attribute title,global,o,c,"Weights ${ATM} to ${OCE}" \
366                --attribute source_grid,global,o,c,"${atm_domain_type}" \
367                --attribute dest_grid,global,o,c,"${oce_domain_type}"   \
368                ${file}
369        ;;
370    esac
371done
372
373##
374## Save results
375## ===========================================================================
376cp ${ATM}_grid_maskFrom_${OCE}.nc ${SUBMIT_DIR}
377for order in ${Listorder}
378do
379    cp dia_t${oce}_to_t${atm}_${order}order.nc ${SUBMIT_DIR}/dia_t${OCE}_to_t${ATM}_${order}order.nc
380    cp rmp_t${oce}_to_t${atm}_${order}order.nc ${SUBMIT_DIR}/rmp_t${OCE}_to_t${ATM}_${order}order.nc
381    for grid in ${Listocegrid} ; do
382        cp rmp_t${atm}_to_${grid}${oce}_${order}order.nc ${SUBMIT_DIR}/rmp_t${ATM}_to_${grid}${OCE}_${order}order.nc
383        cp dia_t${atm}_to_${grid}${oce}_${order}order.nc ${SUBMIT_DIR}/dia_t${ATM}_to_${grid}${OCE}_${order}order.nc
384    done
385done
386
387##
388## Creates and save auxiliary files for OASIS
389## ===========================================================================
390bash ${SUBMIT_DIR}/CreateOasisGrids.bash --oce ${OCE} --atm ${ATM}
391
392cp areas_${OCE}x${ATM}.nc ${SUBMIT_DIR}
393cp grids_${OCE}x${ATM}.nc ${SUBMIT_DIR}
394cp masks_${OCE}x${ATM}.nc ${SUBMIT_DIR}
395
396
397## ===========================================================================
398##
399##                               That's all folk's !!!
400##
401## ===========================================================================
402
Note: See TracBrowser for help on using the repository browser.