123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- #!/bin/bash
- set -evx
- #
- # This script interpolates vertically ocean monthly mean temperature and
- # salinity, extrapolates them horizontally, fills up empty seas with
- # climatologies, and extrapolate vertically. These monthly mean temperature and
- # salinity are to be used as reference files for ocean nudging.
- #
- # History : Virginie Guemas - Initial version 2012
- # Virginie Guemas - ORAS4 + vertical extrapolation +
- # commenting and clarifying - July 2014
- #
- # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- monthly_in=$1 # Monthly mean netcdf file from the reanalysis to be interpolated
- # GLORYS2v1, GLOSEA5 or ORAS4
- varin=$2 # Input variable : 'votemper' or 'vosaline' - if this script
- # is extended to be used for other variables, a few lines need
- # to be changed below in the case varin loop.
- meshmaskin='/cfu/autosubmit/con_files/mesh_mask_nemo.nemovar_O1L42.nc'
- # Meshmask of the input reanalysis. Example:
- #'/cfu/autosubmit/con_files/mesh_mask_nemo.glorys2v1_O25L75.nc'
- confout='ORCA1L46' # output configuration
- vertgridout='/cfu/autosubmit/con_files/mesh_mask_nemo.Ec3.0_O1L46.nc'
- # Meshmask of the output grid, i.e. model and grid to be used in
- # the nudged simulation
- Ptoextrap='/cfu/pub/scripts/prep_restarts/auxfiles/masks/Tofill_ecearth.v3.0.ORCA1L46.extrap.oras4.outputs.nc'
- # Locations of the points where to extrapolate horizontally the outputs after
- # interpolation, = 1 in the netcdf file, 0 everywhere else. Locations
- # available for the tmask grid. If you don't know what is tmask,
- # read the NEMO documentation about the grid.
- # To obtain the Ptoextrap netcdf file, it is necessary to run once this script
- # without extrapolation and filling of the empty seas and compare the output
- # with the meshmask of the output grid. To do so, set 0 everywhere in
- # Ptoextrap and use build_Tofill.bash afterwards.
- Ptofillclim='/cfu/pub/scripts/prep_restarts/auxfiles/masks/Tofill_ecearth.v3.0.ORCA1L46.clim.nc'
- # Locations of the empty seas that need to be filled up with a climatology
- # after interpolation = 1 in the netcdf file, 0 everywhere else. Locations
- # available for the tmask grid. If you don't know what is tmask,
- # read the NEMO documentation about the grid.
- # To obtain the Ptofillclim netcdf file, it is necessary to run once this
- # script without extrapolation and filling of the empty seas and compare the
- # output with the meshmask of the output grid. To do so, set 0 everywhere in
- # Ptofillclim and use build_Tofill.bash afterwards.
- mon=$4 # Month of the restart on 2 digits MM
- monthly_out=$3 # Output netcdf file name
- cfutools='/home/vguemas/CFU_tools_new'
- # Location of the cfutools repository
- # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- source ${cfutools}/prep_restarts/library/library.bash
- cdo vertsum -selvar,tmask $meshmaskin mask2din.nc
- mask='tmask' ; varlon='glamt' ; varlat='gphit' ; fill='tmask'
- # The vertical interpolation is performed below
- python ${cfutools}/interpolation/interp_vert.py $monthly_in $varin $meshmaskin e3t_0 mask2din.nc $mask $vertgridout e3t_0 gdept_0 int_${monthly_in}
- # The function extrap extrapolates horizontally and fill in the empty seas with a climatology
- extrap int_${monthly_in} ${varin} ${meshmaskin} ${varlon} ${varlat} ${Ptoextrap} ${Ptofillclim} ${fill} int2_${monthly_in} 3d $cfutools $confout $mon
- # The vertical extrapolation to empty levels is performed below
- python ${cfutools}/interpolation/vertextrap.py int2_${monthly_in} ${varin} $vertgridout nav_lev int3_${monthly_in}
- # Apply the mask
- applymask $vertgridout $mask int3_${monthly_in} $varin $monthly_out
- # Add vertical levels
- ncrename -v z,nav_lev $monthly_out
- ncks -A -v gdepw_0 $vertgridout $monthly_out
- # Clean
- rm -f int_${monthly_in} int2_${monthly_in} int3_${monthly_in} mask2din.nc
|