#!/bin/ksh -x

########## config.fv3 ##########
# FV3 model resolution specific parameters
# e.g. time-step, processor layout, physics and dynamics parameters
# This config sets default variables for FV3 for a given resolution
# User can over-ride after sourcing this config file

if [ $# -ne 1 ]; then

    echo "Must specify an input resolution argument to set variables!"
    echo "argument can be any one of the following:"
    echo "C48 C96 C192 C384 C768 C1152 C3072"
    exit 1

fi

case_in=$1

echo "BEGIN: config.fv3"

export npe_node_max=128

# (Standard) Model resolution dependent variables
case $case_in in
    "C48")
        export DELTIM=450
        export layout_x=2
        export layout_y=4
        export layout_x_gfs=2
        export layout_y_gfs=4
        export npe_wav=14
        export npe_wav_gfs=14
        export nth_fv3=1
        export nth_fv3_gfs=1
        export cdmbgwd="0.071,2.1,1.0,1.0"  # mountain blocking, ogwd, cgwd, cgwd src scaling
        export WRITE_GROUP=1
        export WRTTASK_PER_GROUP=$npe_node_max
        export WRITE_GROUP_GFS=1
        export WRTTASK_PER_GROUP_GFS=$npe_node_max
        export WRTIOBUF="4M"
        ;;
    "C96")
        export DELTIM=450
        export layout_x=4
        export layout_y=4
        export layout_x_gfs=4
        export layout_y_gfs=4
        export npe_wav=14
        export npe_wav_gfs=14
        export nth_fv3=1
        export nth_fv3_gfs=1
        export cdmbgwd="0.14,1.8,1.0,1.0"  # mountain blocking, ogwd, cgwd, cgwd src scaling
        export WRITE_GROUP=1
        export WRTTASK_PER_GROUP=$npe_node_max
        export WRITE_GROUP_GFS=1
        export WRTTASK_PER_GROUP_GFS=$npe_node_max
        export WRTIOBUF="4M"
        ;;
    "C192")
        export DELTIM=450
        export layout_x=4
        export layout_y=6
        export layout_x_gfs=4
        export layout_y_gfs=6
        export npe_wav=21
        export npe_wav_gfs=21
        export nth_fv3=2
        export nth_fv3_gfs=2
        export cdmbgwd="0.23,1.5,1.0,1.0"  # mountain blocking, ogwd, cgwd, cgwd src scaling
        export WRITE_GROUP=1
        export WRTTASK_PER_GROUP=$npe_node_max
        export WRITE_GROUP_GFS=2
        export WRTTASK_PER_GROUP_GFS=$npe_node_max
        export WRTIOBUF="8M"
        ;;
    "C384")
        export DELTIM=200
        export layout_x=8
        export layout_y=8
        export layout_x_gfs=6
        export layout_y_gfs=6
        export npe_wav=35
        export npe_wav_gfs=35
        export nth_fv3=1
        export nth_fv3_gfs=1
        export cdmbgwd="1.1,0.72,1.0,1.0"  # mountain blocking, ogwd, cgwd, cgwd src scaling
        export WRITE_GROUP=2
        export WRTTASK_PER_GROUP=64
        export WRITE_GROUP_GFS=1
        export WRTTASK_PER_GROUP_GFS=64
        export WRTIOBUF="16M"
        ;;
    "C768")
        export DELTIM=150
        export layout_x=8
        export layout_y=12
        export layout_x_gfs=12
        export layout_y_gfs=24
        export npe_wav=140
        export npe_wav_gfs=448
        export nth_fv3=3
        export nth_fv3_gfs=5
        export cdmbgwd="4.0,0.15,1.0,1.0"  # mountain blocking, ogwd, cgwd, cgwd src scaling
        export WRITE_GROUP=2
        export WRTTASK_PER_GROUP=64
        export WRITE_GROUP_GFS=8
        export WRTTASK_PER_GROUP_GFS=64
        export WRTIOBUF="32M"
        ;;
    "C1152")
        export DELTIM=120
        export layout_x=8
        export layout_y=16
        export layout_x_gfs=8
        export layout_y_gfs=16
        export npe_wav=140
        export npe_wav_gfs=140
        export nth_fv3=4
        export nth_fv3_gfs=4
        export cdmbgwd="4.0,0.10,1.0,1.0"  # mountain blocking, ogwd, cgwd, cgwd src scaling
        export WRITE_GROUP=4
        export WRTTASK_PER_GROUP=$(echo "2*$npe_node_max" |bc)
        export WRITE_GROUP_GFS=4
        export WRTTASK_PER_GROUP_GFS=$(echo "2*$npe_node_max" |bc)
        export WRTIOBUF="48M"
        ;;
    "C3072")
        export DELTIM=90
        export layout_x=16
        export layout_y=32
        export layout_x_gfs=16
        export layout_y_gfs=32
        export npe_wav=140
        export npe_wav_gfs=140
        export nth_fv3=4
        export nth_fv3_gfs=4
        export cdmbgwd="4.0,0.05,1.0,1.0"  # mountain blocking, ogwd, cgwd, cgwd src scaling
        export WRITE_GROUP=4
        export WRTTASK_PER_GROUP=$(echo "3*$npe_node_max" |bc)
        export WRITE_GROUP_GFS=4
        export WRTTASK_PER_GROUP_GFS=$(echo "3*$npe_node_max" |bc)
        export WRTIOBUF="64M"
        ;;
    *)
        echo "grid $case_in not supported, ABORT!"
        exit 1
        ;;
esac

echo "END: config.fv3"