#!/usr/bin/bash
set ${MMTESTS_SH_DEBUG:-+x}

export SCRIPT=`basename $0 | sed -e 's/\./\\\./'`
export SCRIPTDIR=`echo $0 | sed -e "s/$SCRIPT//"`
cd $SCRIPTDIR/../configs || exit

# ABINIT
for TYPE in full; do
	sed -e 's/=openmpi3/=openmpi3-hpc/' config-hpc-abinit-tmbt-$TYPE > config-hpc-abinit-tmbt-hpcext-$TYPE
	sed -i -e '/ABINIT_MPI_PATH/d'    config-hpc-abinit-tmbt-hpcext-$TYPE
	sed -i -e '/ABINIT_MPI_LIBPATH/d' config-hpc-abinit-tmbt-hpcext-$TYPE
done

# bonnie
for FILE in `ls config-io-bonnie*-async`; do
	FSYNC_FILE=`echo $FILE | sed -e 's/-async$/-fsync/'`
	sed -e 's/FSYNC=no/FSYNC=yes/'		\
	    -e 's/asynchronous/synchronous/'	\
	    $FILE > $FSYNC_FILE
done

# coremark
cat config-workload-coremark | sed -e 's/COREMARK_THREADS=.*/COREMARK_THREADS=$NUMLLCS/' > config-workload-coremark-llcs

# dbench
cat config-io-dbench4-async | sed -e 's/async/fsync/' -e 's/DBENCH_FSYNC=.*/DBENCH_FSYNC=yes/' > config-io-dbench4-fsync

# FRONTISTR
sed 	-e 's/FRONTISTR_DOMAINS=.*/FRONTISTR_DOMAINS=$NUMCPUS/'		\
	-e 's/FRONTISTR_OMP_THREADS=.*/FRONTISTR_OMP_THREADS=1/'	\
	config-hpc-frontistr-hinge-full > config-hpc-frontistr-hinge-allproc-full
sed -e 's/=openmpi3/=openmpi3-hpc/' config-hpc-frontistr-hinge-full > config-hpc-frontistr-hinge-hpcext-full
sed -i -e '/_MPI_PATH/d'    config-hpc-frontistr-hinge-hpcext-full
sed -i -e '/_MPI_LIBPATH/d' config-hpc-frontistr-hinge-hpcext-full
sed -e 's/=openmpi3/=openmpi3-hpc/' config-hpc-frontistr-hinge-allproc-full > config-hpc-frontistr-hinge-allproc-hpcext-full
sed -i -e '/_MPI_PATH/d'    config-hpc-frontistr-hinge-allproc-hpcext-full
sed -i -e '/_MPI_LIBPATH/d' config-hpc-frontistr-hinge-allproc-hpcext-full

# filebench
for TYPE in varmail webproxy webserver; do
	head -6 config-io-filebench-oltp-small > config-io-filebench-$TYPE-small
	cat config-docs/config-io-filebench-$TYPE-small >> config-io-filebench-$TYPE-small
	grep -v "###" config-io-filebench-oltp-small  >> config-io-filebench-$TYPE-small
	sed -i -e "s/FILEBENCH_PERSONALITY=.*/FILEBENCH_PERSONALITY=$TYPE/" config-io-filebench-$TYPE-small
done

# o Sizes
for TYPE in oltp varmail webproxy webserver; do
	sed -e 's/20%/75%/' \
	    -e 's/FILEBENCH_WORKING_SET=.*/FILEBENCH_WORKING_SET=$((MEMTOTAL_BYTES*3\/4))/' \
		config-io-filebench-$TYPE-small > config-io-filebench-$TYPE-medium
done
# o OLTP directio
for SIZE in small medium; do
	sed -e 's/buffered/direct/' \
	    -e 's/FILEBENCH_DIRECT_IO=.*/FILEBENCH_DIRECT_IO=yes/' \
		config-io-filebench-oltp-$SIZE > config-io-filebench-oltp-directio-$SIZE
done

# Graph 500
for SIZE in kinder toy; do
	sed -e "s/WORKSET=.*/WORKSET=$SIZE/" config-hpc-graph500-omp-infant > config-hpc-graph500-omp-$SIZE
done

# Hackbench
sed -e 's/HACKBENCH_MAX_GROUPS=.*/HACKBENCH_MAX_GROUPS=1/' config-scheduler-unbound > config-scheduler-unbound-small

# hpcc
sed -e 's/WORKLOAD_SIZE=.*/WORKLOAD_SIZE=$((512*1048576))'/ config-hpc-hpcc-large-full > config-hpc-hpcc-small-full

# KVM start
cp config-workload-kvmstart-memhog config-workload-kvmstart-deployonly
sed -i -e 's/KVMSTART_MIN_MEMORY=.*/KVMSTART_MIN_MEMORY=\$((KVMSTART_MAX_MEMORY+1))/' config-workload-kvmstart-deployonly

# o fragmenting with single file
cp config-workload-kvmstart-memhog config-workload-kvmstart-memhog-frag-singlefile
cat >> config-workload-kvmstart-memhog-frag-singlefile <<EOF
export KVMSTART_PRETEST=fragment
export KVMSTART_PRETEST_METHOD="single-file"
export KVMSTART_PRETEST_PREPARE_ARGS="--filesize \$KVMSTART_MAX_MEMORY"
export KVMSTART_PRETEST_RUN_ARGS=
export KVMSTART_PRETEST_CLEANUP_ARGS=
EOF
# o fragmenting with single file, THP disabled
cp config-workload-kvmstart-memhog-frag-singlefile config-workload-kvmstart-memhog-frag-singlefile-nothp
cat >> config-workload-kvmstart-memhog-frag-singlefile-nothp <<EOF
echo never > /sys/kernel/mm/transparent_hugepage/enabled
EOF

# o fragmenting with fio
cp config-workload-kvmstart-memhog config-workload-kvmstart-memhog-frag-fio-randread
cat >> config-workload-kvmstart-memhog-frag-fio-randread <<EOF
export KVMSTART_PRETEST=fragment
export KVMSTART_PRETEST_METHOD="fio-random-reader-inefficient"
export KVMSTART_PRETEST_PREPARE_ARGS="--fio-threads 4 --fio-version 2.99 --fio-size \$((MEMTOTAL_BYTES*4/2))"
export KVMSTART_PRETEST_RUN_ARGS=\$KVMSTART_PRETEST_PREPARE_ARGS
export KVMSTART_PRETEST_CLEANUP_ARGS=
EOF

# John the Ripper
sed 	-e 's/JOHNRIPPER_MIN_THREADS=.*/JOHNRIPPER_MIN_THREADS=$((NUMCPUS\/2))/'	\
	-e 's/JOHNRIPPER_MAX_THREADS=.*/JOHNRIPPER_MAX_THREADS=$((NUMCPUS\/2))/'	\
	config-workload-johnripper > config-workload-johnripper-half
sed 	-e 's/JOHNRIPPER_MIN_THREADS=.*/JOHNRIPPER_MIN_THREADS=$NUMCPUS/'	\
	-e 's/JOHNRIPPER_MAX_THREADS=.*/JOHNRIPPER_MAX_THREADS=$NUMCPUS/'	\
	config-workload-johnripper > config-workload-johnripper-full

# MPAS
for MODEL in jwbaroclinic supercell; do
	sed -e 's/=openmpi3/=openmpi3-hpc/' config-hpc-mpas-atmosphere-$MODEL-full > config-hpc-mpas-atmosphere-$MODEL-hpcext-full
	sed -i -e '/MPAS_MPI_PATH/d'    config-hpc-mpas-atmosphere-$MODEL-hpcext-full
	sed -i -e '/MPAS_MPI_LIBPATH/d' config-hpc-mpas-atmosphere-$MODEL-hpcext-full
done

# NAS
for TYPE in omp mpi mpich; do
	sed -e 's/NAS_MAX_CPUS=.*/NAS_MAX_CPUS=$((NUMCPUS\/2))/' config-hpc-nas-$TYPE-full > config-hpc-nas-$TYPE-half
	sed -e 's/NAS_MAX_CPUS=.*/NAS_MAX_CPUS=$((NUMCPUS\/3))/' config-hpc-nas-$TYPE-full > config-hpc-nas-$TYPE-third
	sed -e 's/NAS_MAX_CPUS=.*/NAS_MAX_CPUS=$((NUMCPUS\/4))/' config-hpc-nas-$TYPE-full > config-hpc-nas-$TYPE-quarter
	sed -e 's/NAS_MAX_CPUS=.*/NAS_MAX_CPUS=2/' config-hpc-nas-$TYPE-full > config-hpc-nas-$TYPE-pair
	sed -e 's/NAS_MAX_CPUS=.*/NAS_MAX_CPUS=4/' config-hpc-nas-$TYPE-full > config-hpc-nas-$TYPE-quartet
done

# NAS Bind configs
for CONFIG in `ls config-hpc-nas-omp-* config-hpc-nas-mpi-* | grep -v -- -bind`; do
	BCONFIG=`echo $CONFIG | sed -e 's/-mpi/-mpi-bind/' -e 's/-omp/-omp-bind/'`
	cp $CONFIG $BCONFIG
	echo "export NAS_BIND=yes" >> $BCONFIG
done

# NAS mg.D only, many iterations
sed -e 's/NAS_ITERATIONS=.*/NAS_ITERATIONS=30/' \
    -e 's/NAS_CLASS=.*/NAS_CLASS=D/'		\
    -e 's/MMTESTS=.*/MMTESTS=nas-mpich-mg/'	\
    config-hpc-nas-mpich-quarter > config-hpc-nas-mpich-quarter-mgD-many

# Netperf binding configs
for TYPE in rr stream unix; do
	for BINDING in cross-ht cross-node cross-socket; do
		cp config-network-netperf-$TYPE-unbound config-network-netperf-$TYPE-$BINDING
		echo "export NETPERF_BINDING=$BINDING" >> config-network-netperf-$TYPE-$BINDING
	done
done

# Netperf c-state limiting
for TYPE in rr stream unix; do
	for BINDING in unbound cross-ht cross-node cross-socket; do
		cp config-network-netperf-$TYPE-$BINDING config-network-netperf-$TYPE-$BINDING-cstate
		echo "export CPUIDLE_CSTATE=C1" >> config-network-netperf-$TYPE-$BINDING-cstate
	done
done

# Netperf 4 clients
for CONFIG in `find -type f -name "config-network-netperf-*" | sort | grep -v 4clients`; do
	cp $CONFIG $CONFIG-4clients
	echo "export NETPERF_NR_PAIRS=4" >> $CONFIG-4clients
done

# Openfoam
for MODEL in motorbike-default motorbike-subdomains; do
	sed -e 's/=openmpi3/=openmpi3-hpc/' config-hpc-openfoam-$MODEL-full > config-hpc-openfoam-$MODEL-hpcext-full
	sed -i -e '/OPENFOAM_MPI_PATH/d'    config-hpc-openfoam-$MODEL-hpcext-full
	sed -i -e '/OPENFOAM_MPI_LIBPATH/d' config-hpc-openfoam-$MODEL-hpcext-full

	for CONFIG in config-hpc-openfoam-$MODEL-full config-hpc-openfoam-$MODEL-hpcext-full; do
		NEWCONFIG=`echo $CONFIG | sed -e "s/-$MODEL-/-$MODEL-large-/"`
		sed	-e 's/OPENFOAM_CELL_LEVELS=.*/OPENFOAM_CELL_LEVELS=40/'			\
			-e 's/OPENFOAM_ITERATIONS=.*/OPENFOAM_ITERATIONS=1/'			\
			-e 's/Solver:.*/Solver:  PCG/'						\
			-e 's/Faces:.*/Faces:   14.6 million/'					\
			$CONFIG > $NEWCONFIG
	done
done
rm -f config-hpc-openfoam-*-meshonly
for CONFIG in `ls config-hpc-openfoam-*`; do
	sed -e 's/Steps:.*/Steps:   Stops after the mesh is integrated/'		\
		$CONFIG > $CONFIG-meshonly
	echo 'export OPENFOAM_STOPAT_MESH="yes"' >> $CONFIG-meshonly
done

# Parsec
sed -e 's/PARSEC_THREADS=.*/PARSEC_THREADS=$((NUMCPUS\/2))/' config-hpc-parsec-pthreads-full > config-hpc-parsec-pthreads-half
sed -e 's/PARSEC_THREADS=.*/PARSEC_THREADS=$((NUMCPUS\/3))/' config-hpc-parsec-pthreads-full > config-hpc-parsec-pthreads-third
sed -e 's/PARSEC_THREADS=.*/PARSEC_THREADS=$((NUMCPUS\/4))/' config-hpc-parsec-pthreads-full > config-hpc-parsec-pthreads-quarter

# Paralleldd
cat config-io-paralleldd-read-small | \
	sed -e 's/small/large/' \
	    -e 's/PARALLELDD_SOURCESIZE=.*/PARALLELDD_SOURCESIZE=$MEMTOTAL_BYTES/' \
	    -e 's/PARALLELDD_ITERATIONS=.*/PARALLELDD_ITERATIONS=3/' \
		> config-io-paralleldd-read-large
for SIZE in small large; do
	cat config-docs/config-io-paralleldd-read-$SIZE-multi > config-io-paralleldd-read-$SIZE-multi
	grep -v "###" config-io-paralleldd-read-$SIZE >> config-io-paralleldd-read-$SIZE-multi
	echo "export PARALLELDD_SPLITINPUT=yes" >> config-io-paralleldd-read-$SIZE-multi
done

# PGBench
# o Generate size configs
for SIZE in small medium large; do
	head -3 config-db-pgbench-timed-ro-scale1 > config-db-pgbench-timed-ro-$SIZE
	cat config-docs/config-db-pgbench-timed-ro-$SIZE >> config-db-pgbench-timed-ro-$SIZE
	grep -v "###" config-db-pgbench-timed-ro-scale1  >> config-db-pgbench-timed-ro-$SIZE
	case $SIZE in
	small)
		sed -i -e 's/WORKLOAD_SIZE=.*/WORKLOAD_SIZE=$((OLTP_SHAREDBUFFERS*3\/5))/' \
		       -e 's/SCALE_FACTOR=.*/SCALE_FACTOR=$(((TARGET_WORKLOAD_SIZE-30*1048576)\/(15*1048576)))/' \
			config-db-pgbench-timed-ro-$SIZE
		;;
	medium)
		sed -i -e 's/WORKLOAD_SIZE=.*/WORKLOAD_SIZE=$((MEMTOTAL_BYTES*3\/5))/' \
		       -e 's/SCALE_FACTOR=.*/SCALE_FACTOR=$(((TARGET_WORKLOAD_SIZE-30*1048576)\/(15*1048576)))/' \
			config-db-pgbench-timed-ro-$SIZE
		;;
	large)
		sed -i -e 's/WORKLOAD_SIZE=.*/WORKLOAD_SIZE=$((MEMTOTAL_BYTES*6\/5))/' \
		       -e 's/SCALE_FACTOR=.*/SCALE_FACTOR=$(((TARGET_WORKLOAD_SIZE-30*1048576)\/(15*1048576)))/' \
			config-db-pgbench-timed-ro-$SIZE
		;;
	*)
		echo Unknown size $SIZE for pgbench
		;;
	esac
done

# o Generate rw configurations
for SIZE in scale1 small medium large; do
	sed -e 's/PGBENCH_READONLY=.*/PGBENCH_READONLY=no/' \
	    -e 's/read-only/read-write/' \
	    config-db-pgbench-timed-ro-$SIZE > config-db-pgbench-timed-rw-$SIZE
done

# o Generate tuned configurations
for TYPE in ro rw; do
	for SIZE in scale1 small medium large; do
		cp config-db-pgbench-timed-$TYPE-$SIZE config-db-pgbench-timed-$TYPE-$SIZE-tuned
		echo >> config-db-pgbench-timed-$TYPE-$SIZE-tuned
		echo "echo Setting cpufreq to performance"        >> config-db-pgbench-timed-$TYPE-$SIZE-tuned
		echo "cpupower frequency-set -g performance" >> config-db-pgbench-timed-$TYPE-$SIZE-tuned
	done
done

# Redis
sed -e 's/REDIS_KEYSPACE=.*/REDIS_KEYSPACE=500000/' config-memdb-redis-benchmark-small > config-memdb-redis-benchmark-medium
sed -e 's/REDIS_KEYSPACE=.*/REDIS_KEYSPACE=1500000/' config-memdb-redis-benchmark-small > config-memdb-redis-benchmark-large

# Redis memtier
sed -e 's/REDIS_MEMTIER_KEYSPACE_MAX=.*/REDIS_MEMTIER_KEYSPACE_MAX=500000/' config-memdb-redis-memtier-small > config-memdb-redis-memtier-medium
sed -e 's/REDIS_MEMTIER_KEYSPACE_MAX=.*/REDIS_MEMTIER_KEYSPACE_MAX=1500000/' config-memdb-redis-memtier-small > config-memdb-redis-memtier-large

# SALMON
for MODEL in omp; do
	sed -e 's/=openmpi3/=openmpi3-hpc/' config-hpc-salmon-classicem-$MODEL-full > config-hpc-salmon-classicem-$MODEL-hpcext-full
	sed -i -e '/SALMON_MPI_PATH/d'    config-hpc-salmon-classicem-$MODEL-hpcext-full
	sed -i -e '/SALMON_MPI_LIBPATH/d' config-hpc-salmon-classicem-$MODEL-hpcext-full
done

# Sockperf
for BINDING in cross-ht cross-socket; do
	cp config-network-sockperf-unbound config-network-sockperf-$BINDING
	echo "export SOCKPERF_BINDING=$BINDING" >> config-network-sockperf-$BINDING
done

for BINDING in unbound cross-ht cross-socket; do
	cp config-network-sockperf-$BINDING config-network-sockperf-$BINDING-cstate
	echo "export CPUIDLE_CSTATE=C1" >> config-network-sockperf-$BINDING-cstate
done

# SPECFEM3D
sed -e 's/SPECFEM3D_MODEL=.*/SPECFEM3D_MODEL=global_s362/' config-hpc-specfem3d-small-s362ani-mpi-full > config-hpc-specfem3d-global-s362ani-mpi-full
for MODEL in global small; do
	sed -e 's/=openmpi3/=openmpi3-hpc/' config-hpc-specfem3d-$MODEL-s362ani-mpi-full > config-hpc-specfem3d-$MODEL-s362ani-mpi-hpcext-full
	sed -i -e '/SPECFEM3D_MPI_PATH/d'    config-hpc-specfem3d-$MODEL-s362ani-mpi-hpcext-full
	sed -i -e '/SPECFEM3D_MPI_LIBPATH/d' config-hpc-specfem3d-$MODEL-s362ani-mpi-hpcext-full
done

# sqlite
sed -e 's/SQLITE_TOTALSIZE=.*/SQLITE_TOTALSIZE=$((1048576*2))'/ config-db-sqlite-insert-small > config-db-sqlite-insert-medium

# Stream
sed -e 's/STREAM_THREADS=.*/STREAM_THREADS=$((NUMCPUS*4))/' config-workload-stream-omp-nodes > config-workload-stream-omp-overload
sed -e 's/STREAM_THREADS=.*/STREAM_THREADS=$NUMCORES/'	    config-workload-stream-omp-nodes > config-workload-stream-omp-cores
for CONFIG in stream-omp-llcs stream-omp-2llcs stream-omp-nodes; do
	cp config-workload-$CONFIG   config-workload-$CONFIG-spread
	echo export OMP_PROC_BIND=SPREAD >> config-workload-$CONFIG-spread
done

# Stressng
rm -f *stressng-*-1k
rm -f *stressng-*-maxcpus*

sed -e 's/THREADS=.*/THREADS=1024/' config-workload-stressng-get > config-workload-stressng-get-1k
for CONFIG in `ls config-workload-stressng-*`; do
	cat $CONFIG | sed -e 's/_THREADS=.*/_THREADS=0/' > $CONFIG-maxcpus
done

# Sysbench
sed -e 's/SYSBENCHCPU_MAX_THREADS=.*/SYSBENCHCPU_MAX_THREADS=2/' config-scheduler-sysbench-cpu > config-scheduler-sysbench-cpu-small
sed -e 's/SYSBENCHCPU_MAX_THREADS=.*/SYSBENCHCPU_MAX_THREADS=2/' config-scheduler-sysbench-cpu > config-scheduler-sysbench-cpu-small
sed -e 's/SYSBENCHTHREAD_MAX_THREADS_MAX_THREADS=.*/SYSBENCHTHREAD_MAX_THREADS_MAX_THREADS=2/' config-scheduler-sysbench-thread > config-scheduler-sysbench-thread-small
sed -e 's/SYSBENCHTHREAD_MAX_THREADS_MAX_THREADS=.*/SYSBENCHTHREAD_MAX_THREADS_MAX_THREADS=2/' config-scheduler-sysbench-thread > config-scheduler-sysbench-thread-small

# Sysbench database
# o Generate size configs
for SIZE in medium; do
	head -7 config-db-sysbench-mariadb-oltp-ro-small > config-db-sysbench-mariadb-oltp-ro-medium
	cat config-docs/config-db-sysbench-mariadb-oltp-ro-medium >> config-db-sysbench-mariadb-oltp-ro-medium
	case $SIZE in
	medium)
		grep -v "###" config-db-sysbench-mariadb-oltp-ro-small    >> config-db-sysbench-mariadb-oltp-ro-medium
		sed -i -e 's/WORKLOAD_SIZE=.*/WORKLOAD_SIZE=$((MEMTOTAL_BYTES*3\/5))/' \
			config-db-sysbench-mariadb-oltp-ro-medium
		;;
	*)
		echo Unknown size $SIZE for sysbench
		;;
	esac
done

# o Generate rw configurations
for SIZE in small medium; do
	sed -e 's/SYSBENCH_READONLY=.*/SYSBENCH_READONLY=no/' \
	    -e 's/read-only/read-write/' \
		config-db-sysbench-mariadb-oltp-ro-$SIZE > config-db-sysbench-mariadb-oltp-rw-$SIZE
done

# o Generate postgres configs
for TYPE in ro rw; do
	for SIZE in small medium; do
		sed -e 's/SYSBENCH_DRIVER=.*/SYSBENCH_DRIVER=postgres/' config-db-sysbench-mariadb-oltp-$TYPE-$SIZE \
			> config-db-sysbench-postgres-oltp-$TYPE-$SIZE
	done
done

# THPChallenge/THPCompact
for CONFIG in config-workload-thpchallenge-fio config-workload-thpchallenge-kernel-build config-workload-thpcompact; do
	cp $CONFIG $CONFIG-defrag
	cat >> $CONFIG-defrag <<EOF

echo always > /sys/kernel/mm/transparent_hugepage/defrag
if [ \$? -ne 0 ]; then
       die "Failed to set defrag option for THP to always"
fi
EOF
done

for WORKLOAD in fio kernel-build; do
	cp config-workload-thpchallenge-$WORKLOAD config-workload-thpchallenge-$WORKLOAD-madvhugepage
	echo "export THPCHALLENGE_MADV_HUGEPAGE=yes" >> config-workload-thpchallenge-$WORKLOAD-madvhugepage
done
cp config-workload-thpcompact config-workload-thpcompact-madvhugepage
echo "export THPCOMPACT_MADV_HUGEPAGE=yes" >> config-workload-thpcompact-madvhugepage

# Trinity
for GROUP in vfs vm; do
	sed -e "s/TRINITY_GROUP=.*/TRINITY_GROUP=$GROUP/" config-functional-trinity > config-functional-trinity-$GROUP
done

# WRF
cp config-hpc-wrf-conus12km-hybrid-full config-hpc-wrf-conus12km-mpi-full
sed -i	\
	-e 's/WRF_PAR=.*/WRF_PAR="dmpar"/'		\
	-e 's/WRF_PROCESSES=.*/WRF_PROCESSES=$NUMCPUS/'	\
	-e 's/WRF_THREADS=.*/WRF_THREADS=1/'		config-hpc-wrf-conus12km-mpi-full
cp config-hpc-wrf-conus12km-hybrid-full config-hpc-wrf-conus12km-omp-full
sed -i	\
	-e 's/WRF_PAR=.*/WRF_PAR="smpar"/'		\
	-e 's/WRF_PROCESSES=.*/WRF_PROCESSES=1/'	\
	-e 's/WRF_THREADS=.*/WRF_THREADS=$NUMCPUS/'	config-hpc-wrf-conus12km-omp-full

PARMODEL=hybrid
for PARMODEL in hybrid mpi omp; do
	sed -e 's/=openmpi3/=openmpi3-hpc/' config-hpc-wrf-conus12km-$PARMODEL-full > config-hpc-wrf-conus12km-hpcext-$PARMODEL-full
	sed -i -e '/WRF_MPI_PATH/d'    config-hpc-wrf-conus12km-hpcext-$PARMODEL-full
	sed -i -e '/WRF_MPI_LIBPATH/d' config-hpc-wrf-conus12km-hpcext-$PARMODEL-full
done
