#!/bin/sh
set -e
# 1. mask the ocean fields in lat dimention for global, arc-atl and ind-pac;
# 2. combine basins global, arc-atl and ind-pac into one file,
# indicated by ibuf(7)=0(global), 1(arc-atl),2(ind-pac).

if [ $# -ne 6 ] ; then
  echo "Error in $0: invalid number of arguments $#"
  exit 1
fi

pfx=$1
inp1=$2
inp2=$3
inp3=$4
desc=$5
out=$6

access inp1 ${pfx}_${inp1}
access inp2 ${pfx}_${inp2}
access inp3 ${pfx}_${inp3}
access desc ${pfx}_${desc}

# prepare the relevant fields
nm=`ggstat inp1 | grep ZONL | awk '{print $4}' | head -1`
echo "C*SELECT   STEP         0 999999999    1     -900199999 NAME $nm" | ccc select inp1 inp10
echo "C*SELECT   STEP         0 999999999    1     -900199999 NAME $nm" | ccc select inp2 inp20
echo "C*SELECT   STEP         0 999999999    1     -900199999 NAME $nm" | ccc select inp3 inp30
echo "C*SELECT   STEP         0 999999999    1     -900199999 NAME  LAT" | ccc select desc lat
grido desc betao dao dx dy dz

# get the 2D masks
echo "C*RCOPY            1         1" | ccc rcopy betao glbmask
echo "            ATL" | ccc masko desc atlreg
sub glbmask atlreg pacreg
echo "C* FMSKPLT        -1 NEXT   GE      -30.    1        0.    1" | ccc fmskplt atlreg atlmask lat
echo "C* FMSKPLT        -1 NEXT   GE      -30.    1        0.    1" | ccc fmskplt pacreg pacmask lat

# get the lat masks
zonint glbmask dx glblatmask
zonint atlmask dx atllatmask
zonint pacmask dx paclatmask

# get the masked fields
echo "C* FMSKPLT        -1 NEXT   NE        0.                   1    1" | ccc fmskplt inp10 inp11 glblatmask
echo "C* FMSKPLT        -1 NEXT   NE        0.                   1    1" | ccc fmskplt inp20 inp21 atllatmask
echo "C* FMSKPLT        -1 NEXT   NE        0.                   1    1" | ccc fmskplt inp30 inp31 paclatmask

# relabl the fields 
echo "                                                 0
C*                                               0" | ccc relabl inp11 inp12
echo "                                                 0
C*                                               1" | ccc relabl inp21 inp22
echo "C*                                               0
C*                                               2" | ccc relabl inp31 inp32

# combine 3 basins
#ryj on July 06, 2015: adjust the output order (from 123 into 231) so as to be consistent with cmor
rmerge ${pfx}_${out} inp22 inp32 inp12

release inp1 inp2 inp3 desc
rm -f inp10 inp20 inp30 lat betao dao dx dy dz glbmask atlreg pacreg atlmask pacmask glblatmask atllatmask paclatmask inp11 inp21 inp31 inp12 inp22 inp32
