##
##  RUN - Part 1
##
##  Before starting this job-script replace "SUBMIT" with the submition-command of the local queing system.
##  Additional in the script submit_job the execution command has to be adjusted to the local machine.
##  
##
##  Script for Part 1 of the UEABS Benchmarksuite
##
#!/bin/bash

EXE=/ccc/cont005/home/unicy/finkenrj/run/part1/bench
## Set scaling-mode: Strong or Weak
sca_mode="Strong"
#sca_mode="OneNode"
#sca_mode="Weak"
## mode="Analysis"
mode="Run"

##	sbatch_on=1
exe_perm=1 ## use chmod to allow execution of submit_job_Nx_Gx.sh

## lattice size (size strong 1)
gx=64
gy=64
gz=64
gt=8
g=8        ##MPItaskperNODE
openmp=6   ##OMP
cpuptask=6 ## CPUPERTASK
## lattice size (size strong 2) - there is no other testcase yet
#gx=64
#gt=128
## lattice size (size weak 1)
#gx=48
#gt=24

## use smaller lattice size of weak scaling mode: like gx=24 gt=24
##

#gy=$gx
#gz=$gx

lt=$gt
lx=$gx
ly=$gy
lz=$gz

#for n in 1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384; do
#for n in 8; do
for n in 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768 65536 131072 262144 524288 1048576; do
#for n in 8;do
            px=$n
            py=1
            pz=1
            pt=1
            if [ $n -eq 16 ];then
	        py=2
                px=8
	    fi
	    if [ $n -eq 32 ];then
	        py=4
                px=8
	    fi
            if [ $n -eq 64 ];then
                pt=2
                py=4
                px=8
            fi
            if [ $n -eq 128 ];then
                pz=2
                py=8
                px=8
            fi
            if [ $n -eq 256 ];then
                pz=4
                py=8
                px=8
            fi
            if [ $n -eq 512 ];then
                pz=8
                py=8
                px=8
            fi
            if [ $n -eq 1024 ];then
                pz=8
	        py=8		
                px=8
                pt=2
            fi
            if [ $n -eq 2048 ];then
                pz=8
                py=8
                px=16
                pt=2
            fi
            if [ $n -eq 4096 ];then
                pz=8
                py=16
                px=16
                pt=2
            fi
            if [ $n -eq 8192 ];then
                pz=16
                py=16
                px=16
                pt=2
            fi
            if [ $n -eq 16384 ];then
                pz=16
                py=16
                px=16
                pt=4
            fi
            if [ $n -eq 32768 ];then
                px=16
                py=16
                pz=16
                pt=8
            fi 
            if [ $n -eq 65536 ];then
                px=16
                py=16
                pz=16
                pt=16
            fi
            if [ $n -eq 131072 ];then
                px=16
                py=16
                pz=16
                pt=32
            fi
            if [ $n -eq 262144 ];then
                px=16
                py=32
                pz=32
                pt=16
            fi
            if [ $n -eq 524288 ];then
                px=32
                py=32
                pz=32
                pt=16
            fi
            if [ $n -eq 1048576 ];then
                px=32
                py=32
                pz=32
                pt=32
            fi

            if [ $sca_mode = "Strong" ];then
                lt1=$((gt/pt))
                lx1=$((gx/px))
                ly1=$((gy/py))
                lz1=$((gz/pz))
            elif [ $sca_mode = "OneNode" ]; then
                lx1=$((gx*px))
                ly1=$((gy*py))
                lz1=$((gz*pz))
                lt1=$((gt*pt/g))
                n=$g
                lx=$((gx*px))
                ly=$((gy*py))
                lz=$((gz*pz))
                lt=$((gt*pt))
                px=1
                py=1
                pz=1
                pt=$g
            else
                lt1=$lt
                lx1=$lx
                ly1=$ly
                lz1=$lz

                lt=$((gt*pt))
                lx=$((gx*px))
                ly=$((gy*py))
                lz=$((gz*pz))
            fi
            node=$((n/g))
	    name=${sca_mode}_part1_${px}x${py}x${pz}x${pt}_${lx}x${ly}x${lz}x${lt}_${n}
            folder=N${node}_NtaskpN${g}_${lx}x${ly}x${lz}x${lt}
            if [ $mode != "Analysis" ];then
            	echo $name
	        mkdir $folder
         	submitscript=submit_job_part1_N${n}.sh
                  
		        ./prepare_submit_job_part1.sh '01:30:00' ${node} ${n} ${g} ${openmp} ${cpuptask} ${exe_perm} ${submitscript} ${folder} ${EXE} ${name}
                ./prepare_kernelE_input.sh ${lx} ${ly} ${lz} ${lt} ${px} ${py} ${pz} ${pt} $folder
                cd $folder
                echo sbatch $submitscript
         		ccc_msub ./$submitscript
                sleep 1
                cd ..
            ## Scaning the output and save the data in dat_nameif
      	    else   
                echo $name >> Part1_$mode.log
                less $folder/$name | grep "sec" >> Part1_$mode.log

            fi
    done

