Skip to content
Snippets Groups Projects
Commit 66f21068 authored by RODIER Quentin's avatar RODIER Quentin
Browse files

Quentin 17/06/2022: add KTEST 007_16janvier/turb3D and COLD_BUBBLE + adapt...

Quentin 17/06/2022: add KTEST 007_16janvier/turb3D and COLD_BUBBLE + adapt compare and check for 2D simulations
parent 14e846fe
No related branches found
No related tags found
No related merge requests found
...@@ -8,23 +8,27 @@ set -e ...@@ -8,23 +8,27 @@ set -e
# Repertoire où MNH-V5-5-0_PHYEX.tar.gz modifie pour accueillir PHYEX se trouve # Repertoire où MNH-V5-5-0_PHYEX.tar.gz modifie pour accueillir PHYEX se trouve
#TARGZDIR=$HOME #TARGZDIR=$HOME
availTests="007_16janvier/008_run2" availTests="007_16janvier/008_run2, 007_16janvier/008_run2_turb3D, COLD_BUBBLE/002_mesonh"
defaultTest="007_16janvier/008_run2" defaultTest="007_16janvier/008_run2"
separator='_' #- be carrefull, gmkpack (at least on belenos) has multiple allergies (':', '.', '@') separator='_' #- be carrefull, gmkpack (at least on belenos) has multiple allergies (':', '.', '@')
#- seprator must be in sync with prep_code.sh separator #- seprator must be in sync with prep_code.sh separator
PHYEXTOOLSDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" PHYEXTOOLSDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
function usage { function usage {
echo "Usage: $0 [-h] [-c] [-r] [-C] [-s] [--expand] commit reference" echo "Usage: $0 [-h] [-c] [-r] [-C] [-s] [--expand] [-t test] commit reference"
echo "commit commit hash (or a directory)" echo "commit commit hash (or a directory)"
echo "reference commit hash or a directory or nothing for ref" echo "reference commit hash or a directory or nothing for ref"
echo "-s suppress compilation pack" echo "-s suppress compilation pack"
echo "-c performs compilation" echo "-c performs compilation"
echo "-r runs the tests" echo "-r runs the tests"
echo "-C checks the result against the reference" echo "-C checks the result against the reference"
echo "-t comma separated list of tests to execute"
echo " or ALL to execute all tests"
echo "--expand use mnh_expand (code will use do loops)" echo "--expand use mnh_expand (code will use do loops)"
echo "" echo ""
echo "If nothing is asked (compilation, running, check) everything is done" echo "If nothing is asked (compilation, running, check) everything is done"
echo
echo "If no test is aked for, the default on ($defaultTest) is executed"
echo echo
echo "The directory (for commit only, not ref) can take the form server:directory" echo "The directory (for commit only, not ref) can take the form server:directory"
echo echo
...@@ -47,6 +51,7 @@ while [ -n "$1" ]; do ...@@ -47,6 +51,7 @@ while [ -n "$1" ]; do
'-c') compilation=1;; '-c') compilation=1;;
'-r') run=$(($run+1));; '-r') run=$(($run+1));;
'-C') check=1;; '-C') check=1;;
'-t') tests="$2"; shift;;
'--expand') useexpand=1;; '--expand') useexpand=1;;
#-b) param="$2"; shift ;; #-b) param="$2"; shift ;;
#--) shift; break ;; #--) shift; break ;;
...@@ -267,9 +272,19 @@ if [ $check -eq 1 ]; then ...@@ -267,9 +272,19 @@ if [ $check -eq 1 ]; then
for t in $(echo $tests | sed 's/,/ /g'); do for t in $(echo $tests | sed 's/,/ /g'); do
case=$(echo $t | cut -d / -f 1) case=$(echo $t | cut -d / -f 1)
exedir=$(echo $t | cut -d / -f 2) exedir=$(echo $t | cut -d / -f 2)
if [ $t == 007_16janvier/008_run2 ]; then
path_user=$path_user_beg/MY_RUN/KTEST/007_16janvier/008_run2$path_user_end
path_ref=$path_ref_beg/MY_RUN/KTEST/007_16janvier/008_run2$path_ref_end
elif [ $t == 007_16janvier/008_run2_turb3D ]; then
path_user=$path_user_beg/MY_RUN/KTEST/007_16janvier/008_run2_turb3D$path_user_end
path_ref=$path_ref_beg/MY_RUN/KTEST/007_16janvier/008_run2_turb3D$path_ref_end
elif [ $t == COLD_BUBBLE/002_mesonh ]; then
path_user=$path_user_beg/MY_RUN/KTEST/COLD_BUBBLE/002_mesonh$path_user_end
path_ref=$path_ref_beg/MY_RUN/KTEST/COLD_BUBBLE/002_mesonh$path_ref_end
else
echo "cas $t non reconnu"
fi
path_user=$path_user_beg/MY_RUN/KTEST/007_16janvier/008_run2$path_user_end
path_ref=$path_ref_beg/MY_RUN/KTEST/007_16janvier/008_run2$path_ref_end
if [ ! -d $path_user ]; then if [ ! -d $path_user ]; then
echo "$path_user is missing, please run the simulation" echo "$path_user is missing, please run the simulation"
exit 7 exit 7
...@@ -282,15 +297,17 @@ if [ $check -eq 1 ]; then ...@@ -282,15 +297,17 @@ if [ $check -eq 1 ]; then
if [ $case == 007_16janvier ]; then if [ $case == 007_16janvier ]; then
echo "Compare with python..." echo "Compare with python..."
# Compare variable of both Synchronous and Diachronic files with printing difference # Compare variable of both Synchronous and Diachronic files with printing difference
file1=$path_user/16JAN.1.12B18.001.nc
file2=$path_ref/16JAN.1.12B18.001.nc
file3=$path_user/16JAN.1.12B18.000.nc
file4=$path_ref/16JAN.1.12B18.000.nc
set +e set +e
$PHYEXTOOLSDIR/compare.py $path_user $path_ref $PHYEXTOOLSDIR/compare.py --f1 $file1 --f2 $file2 --f3 $file3 --f4 $file4
t=$? t=$?
set -e set -e
allt=$(($allt+$t)) allt=$(($allt+$t))
#Check bit-repro before date of creation of Synchronous file from ncdump of all values (pb with direct .nc file checks) #Check bit-repro before date of creation of Synchronous file from ncdump of all values (pb with direct .nc file checks)
file1=$path_user/16JAN.1.12B18.001.nc
file2=$path_ref/16JAN.1.12B18.001.nc
echo "Compare with ncdump..." echo "Compare with ncdump..."
if [ -f $file1 -a -f $file2 ]; then if [ -f $file1 -a -f $file2 ]; then
set +e set +e
...@@ -304,6 +321,32 @@ if [ $check -eq 1 ]; then ...@@ -304,6 +321,32 @@ if [ $check -eq 1 ]; then
allt=$(($allt+1)) allt=$(($allt+1))
fi fi
fi fi
if [ $case == COLD_BUBBLE ]; then
echo "Compare with python..."
# Compare variable of both Synchronous files with printing difference
file1=$path_user/BUBBL.1.CEN4T.001.nc
file2=$path_ref/BUBBL.1.CEN4T.001.nc
set +e
$PHYEXTOOLSDIR/compare.py --f1 $file1 --f2 $file2
t=$?
set -e
allt=$(($allt+$t))
#Check bit-repro before date of creation of Synchronous file from ncdump of all values (pb with direct .nc file checks)
echo "Compare with ncdump..."
if [ -f $file1 -a -f $file2 ]; then
set +e
diff <(ncdump $file1 | head -c 27350) <(ncdump $file2 | head -c 27350)
t=$?
set -e
allt=$(($allt+$t))
else
[ ! -f $file1 ] && echo " $file1 is missing"
[ ! -f $file2 ] && echo " $file2 is missing"
allt=$(($allt+1))
fi
fi
done done
if [ $allt -eq 0 ]; then if [ $allt -eq 0 ]; then
......
...@@ -2,12 +2,10 @@ ...@@ -2,12 +2,10 @@
import xarray as xr import xarray as xr
def compareFiles(path_user, path_ref): def compareBACKUPFiles(file_user, file_ref):
status = 0 status = 0
da = xr.open_dataset(file_user)
filen = '16JAN.1.12B18.001.nc' da2 = xr.open_dataset(file_ref)
da = xr.open_dataset(path_user + '/' + filen)
da2 = xr.open_dataset(path_ref + '/' + filen)
JPHEXT=1 JPHEXT=1
JPVEXT=1 JPVEXT=1
ni=len(da['ni']) ni=len(da['ni'])
...@@ -20,10 +18,18 @@ def compareFiles(path_user, path_ref): ...@@ -20,10 +18,18 @@ def compareFiles(path_user, path_ref):
ecart_min=float(da2[var][0,JPVEXT:nk-1-JPVEXT,JPHEXT:nj-1-JPHEXT,JPHEXT:ni-1-JPHEXT].min())-float(da[var][0,JPVEXT:nk-1-JPVEXT,JPHEXT:nj-1-JPHEXT,JPHEXT:ni-1-JPHEXT].min()) ecart_min=float(da2[var][0,JPVEXT:nk-1-JPVEXT,JPHEXT:nj-1-JPHEXT,JPHEXT:ni-1-JPHEXT].min())-float(da[var][0,JPVEXT:nk-1-JPVEXT,JPHEXT:nj-1-JPHEXT,JPHEXT:ni-1-JPHEXT].min())
ecart_moy=float(da2[var][0,JPVEXT:nk-1-JPVEXT,JPHEXT:nj-1-JPHEXT,JPHEXT:ni-1-JPHEXT].mean())-float(da[var][0,JPVEXT:nk-1-JPVEXT,JPHEXT:nj-1-JPHEXT,JPHEXT:ni-1-JPHEXT].mean()) ecart_moy=float(da2[var][0,JPVEXT:nk-1-JPVEXT,JPHEXT:nj-1-JPHEXT,JPHEXT:ni-1-JPHEXT].mean())-float(da[var][0,JPVEXT:nk-1-JPVEXT,JPHEXT:nj-1-JPHEXT,JPHEXT:ni-1-JPHEXT].mean())
ecart_max=float(da2[var][0,JPVEXT:nk-1-JPVEXT,JPHEXT:nj-1-JPHEXT,JPHEXT:ni-1-JPHEXT].max())-float(da[var][0,JPVEXT:nk-1-JPVEXT,JPHEXT:nj-1-JPHEXT,JPHEXT:ni-1-JPHEXT].max()) ecart_max=float(da2[var][0,JPVEXT:nk-1-JPVEXT,JPHEXT:nj-1-JPHEXT,JPHEXT:ni-1-JPHEXT].max())-float(da[var][0,JPVEXT:nk-1-JPVEXT,JPHEXT:nj-1-JPHEXT,JPHEXT:ni-1-JPHEXT].max())
elif da[var].ndim == 3: #Variables time, nj, ni elif da[var].ndim == 3 and da['L2D'] == 0: #Variables time, nj, ni
ecart_min=float(da2[var][0,JPHEXT:nj-1-JPHEXT,JPHEXT:ni-1-JPHEXT].min())-float(da[var][0,JPHEXT:nj-1-JPHEXT,JPHEXT:ni-1-JPHEXT].min()) ecart_min=float(da2[var][0,JPHEXT:nj-1-JPHEXT,JPHEXT:ni-1-JPHEXT].min())-float(da[var][0,JPHEXT:nj-1-JPHEXT,JPHEXT:ni-1-JPHEXT].min())
ecart_moy=float(da2[var][0,JPHEXT:nj-1-JPHEXT,JPHEXT:ni-1-JPHEXT].mean())-float(da[var][0,JPHEXT:nj-1-JPHEXT,JPHEXT:ni-1-JPHEXT].mean()) ecart_moy=float(da2[var][0,JPHEXT:nj-1-JPHEXT,JPHEXT:ni-1-JPHEXT].mean())-float(da[var][0,JPHEXT:nj-1-JPHEXT,JPHEXT:ni-1-JPHEXT].mean())
ecart_max=float(da2[var][0,JPHEXT:nj-1-JPHEXT,JPHEXT:ni-1-JPHEXT].max())-float(da[var][0,JPHEXT:nj-1-JPHEXT,JPHEXT:ni-1-JPHEXT].max()) ecart_max=float(da2[var][0,JPHEXT:nj-1-JPHEXT,JPHEXT:ni-1-JPHEXT].max())-float(da[var][0,JPHEXT:nj-1-JPHEXT,JPHEXT:ni-1-JPHEXT].max())
elif da[var].ndim == 3 and da['L2D'] == 1: #Variables time, level, nj or ni (2D simulation)
if da['ni'] > da['nj']:
nij=da['ni']
else:
nij=da['nj']
ecart_min=float(da2[var][0,JPVEXT:nk-1-JPVEXT,JPHEXT:nij-1-JPHEXT].min())-float(da[var][0,JPVEXT:nk-1-JPVEXT,JPHEXT:nij-1-JPHEXT].min())
ecart_moy=float(da2[var][0,JPVEXT:nk-1-JPVEXT,JPHEXT:nij-1-JPHEXT].mean())-float(da[var][0,JVHEXT:nk-1-JPVEXT,JPHEXT:nij-1-JPHEXT].mean())
ecart_max=float(da2[var][0,JPVEXT:nk-1-JPVEXT,JPHEXT:nij-1-JPHEXT].max())-float(da[var][0,JPVEXT:nk-1-JPVEXT,JPHEXT:nij-1-JPHEXT].max())
else: else:
ecart_min=float(da2[var].min())-float(da[var].min()) ecart_min=float(da2[var].min())-float(da[var].min())
ecart_moy=float(da2[var].mean())-float(da[var].mean()) ecart_moy=float(da2[var].mean())-float(da[var].mean())
...@@ -31,12 +37,15 @@ def compareFiles(path_user, path_ref): ...@@ -31,12 +37,15 @@ def compareFiles(path_user, path_ref):
if (ecart_min !=0 or ecart_moy !=0 or ecart_max !=0): if (ecart_min !=0 or ecart_moy !=0 or ecart_max !=0):
status += 1 status += 1
print(var, ecart_min, ecart_moy, ecart_max) print(var, ecart_min, ecart_moy, ecart_max)
nvar_tested+=1
except: except:
pass pass
return status
filen = '16JAN.1.12B18.000.nc'
da = xr.open_dataset(path_user + '/' + filen) def compareTSERIESFiles(file_user, file_ref):
da2 = xr.open_dataset(path_ref + '/' + filen) status = 0
da = xr.open_dataset(file_user)
da2 = xr.open_dataset(file_ref)
variables = list(da.keys()) variables = list(da.keys())
for var in variables: for var in variables:
try: try:
...@@ -48,16 +57,21 @@ def compareFiles(path_user, path_ref): ...@@ -48,16 +57,21 @@ def compareFiles(path_user, path_ref):
print(var, ecart_min, ecart_moy, ecart_max) print(var, ecart_min, ecart_moy, ecart_max)
except: except:
pass pass
return status return status
if __name__ == "__main__": if __name__ == "__main__":
import argparse import argparse
import sys import sys
parser = argparse.ArgumentParser(description='Compare toutes les variables si trouvées dans les deux fichiers') parser = argparse.ArgumentParser(description='Compare toutes les variables si trouvées dans les fichiers backup et time series')
value = argparse.ArgumentParser() value = argparse.ArgumentParser()
parser.add_argument('file1', metavar='file1', type=str, help="file1 user ") parser.add_argument('--f1', metavar='file1', type=str, help="Backup file1 user ")
parser.add_argument('file2', metavar='file2', type=str, help="file2 reference") parser.add_argument('--f2', metavar='file2', type=str, help="Backup file2 reference")
parser.add_argument('--f3', metavar='file3', type=str, help=".000 file1 user ")
parser.add_argument('--f4', metavar='file4', type=str, help=".000 file2 reference")
args = parser.parse_args() args = parser.parse_args()
sys.exit(compareFiles(args.file1, args.file2)) status1=compareBACKUPFiles(args.f1, args.f2)
print('status1 = ' + str(status1))
if args.f3:
status2=compareTSERIESFiles(args.f3, args.f4)
print('status2 = ' + str(status2))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment