ttest_13.sh - pism - [fork] customized build of PISM, the parallel ice sheet model (tillflux branch)
 (HTM) git clone git://src.adamsgaard.dk/pism
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) LICENSE
       ---
       ttest_13.sh (1497B)
       ---
            1 #!/bin/bash
            2 
            3 PISM_PATH=$1
            4 MPIEXEC=$2
            5 
            6 # Test name:
            7 echo "Test #13: enthalpy symmetry near the base (pisms -energy enthalpy)."
            8 # The list of files to delete when done.
            9 files="simp_exper-13.nc"
           10 
           11 rm -f $files
           12 # run pisms
           13 $MPIEXEC -n 2 $PISM_PATH/pisms -y 10e3 -Lz 5000 -Mx 12 -My 12 -o_size big -energy enthalpy -o simp_exper-13.nc
           14 
           15 ncpdq -a z,y,x -O simp_exper-13.nc simp_exper-13.nc
           16 
           17 /usr/bin/env python3 <<EOF
           18 from netCDF4 import Dataset as NC
           19 from numpy import abs, arange
           20 from sys import exit
           21 
           22 nc = NC("simp_exper-13.nc", 'r')
           23 var = nc.variables['enthalpy']
           24 n = 12; m = 12; tol = 1e-3
           25 
           26 for k in [0, 1, 2]:
           27     v = var[0,k,:,:]        # time,z,y,x
           28     for i in arange((n-1)/2, dtype=int):
           29         for j in arange((m-1)/2, dtype=int):
           30             ii = (n-1) - i
           31             jj = (m-1) - j
           32 
           33             delta = abs(v[i,j] - v[ii,j])
           34             if (delta >= tol):
           35                 print("X-symmetry failure at (%d,%d),(%d,%d) level %d (delta = %2.2e)" % (i,j,ii,j,k,delta))
           36                 exit(1)
           37 
           38             delta = abs(v[i,j] - v[i,jj])
           39             if (delta >= tol):
           40                 print("Y-symmetry failure at (%d,%d),(%d,%d) level %d (delta = %2.2e)" % (i,j,i,jj,k,delta))
           41                 exit(1)
           42                 
           43             delta = abs(v[i,j] - v[ii,jj])
           44             if (delta >= tol):
           45                 print("Radial symmetry failure at (%d,%d),(%d,%d) level %d (delta = %2.2e)" % (i,j,ii,jj,k,delta))
           46                 exit(1)
           47 exit(0)
           48 EOF
           49 
           50 if [ $? != 0 ];
           51 then
           52     exit 1
           53 fi
           54 
           55 rm -f $files; exit 0
           56