Changeset 520 for configs


Ignore:
Timestamp:
01/15/17 01:03:04 (7 years ago)
Author:
dubos
Message:

Update to testing

Location:
configs/testing
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • configs/testing/bash/X64_CURIE.sh

    r510 r520  
    55# create_runs.sh and submit.sh 
    66 
    7 # NB : we must the queue 'normal' because there seems to be a limit 
     7# NB : we must use the queue 'normal' because there seems to be a limit 
    88# on the number of jobs that can be submitted to queue 'test' 
    99 
     
    1818function split_mpi_80() { 
    1919    setvar nbp 81 nsplit_i 4 nsplit_j 2 
     20} 
     21function split_mpi_omp_40() { 
     22    setvar nbp 41 nsplit_i 2 nsplit_j 2 omp_level_size 4 
    2023} 
    2124 
     
    3336#------------------------------ job_XXX ----------------------------- 
    3437 
     38# Serial jobs 
    3539function job_serial() { # EXP_NAME 
    36     job_X64_CURIE $1 1 ""  
     40    job_X64_CURIE $1 1 1 "./gcm.exe" 
    3741} 
    3842function job_serial_40() { # EXP_NAME 
     
    4044} 
    4145 
     46# MPI jobs 
    4247function job_mpi() { #EXP_NAME NB_MPI 
    43     job_X64_CURIE $1 $2 ccc_mprun 
     48    job_X64_CURIE $1 $2 1 "ccc_mprun ./gcm.exe" 
    4449} 
    4550function job_mpi_40() { # EXP_NAME 
     
    5055} 
    5156 
    52 function job_X64_CURIE() { # EXP_NAME MPI_TASKS MPIRUN 
     57# MPI-OMP jobs 
     58function job_mpi_omp() { #EXP_NAME NB_MPI NB_OMP 
     59    job_X64_CURIE $1 $2 $3 "ccc_mprun ./gcm.exe" 
     60} 
     61function job_mpi_omp_40() { # EXP_NAME 
     62    job_mpi_omp $1 40 4 
     63} 
     64 
     65# Generic 
     66function job_X64_CURIE() { # EXP_NAME MPI_TASKS OMP_TASKS MPIRUN 
    5367    cat <<EOF 
    5468#!/bin/bash 
     
    6074## Number of tasks (=MPI processes) to use 
    6175#MSUB -n $2 
     76## Number of OpenMP threads 
     77#MSUB -c $3 
    6278## Elapsed time limit in seconds 
    6379#MSUB -T 600 
     
    6581#MSUB -Q normal 
    6682 
    67 export OMP_NUM_THREADS=1 
     83export OMP_NUM_THREADS=$3 
    6884cd \${BRIDGE_MSUB_PWD}  
    6985 
     
    7389date > gcm.log 
    7490ulimit -s unlimited 
    75 $3 ./gcm.exe >> gcm.log 
     91$4 ./gcm.exe >> gcm.log 
    7692date >> gcm.log 
    7793 
  • configs/testing/bash/create_runs.sh

    r512 r520  
    1212    cd $EXPDIR 
    1313    ln -sf $ROOT/bin/icosa_${EXEC}.exe gcm.exe 
    14     ln -sf $ROOT/python/post_${EXP}.py post.py 
     14    cp $ROOT/python/common.py post.py 
     15    echo "post_${EXP}()" >> post.py 
     16#    ln -sf $ROOT/python/post_${EXP}.py post.py 
    1517    rundef_$EXP $* > tmp.def 
    1618    sort tmp.def | cut -c 7- > run.def 
     
    103105    rundef_DCMIP $NBP 
    104106    setvar hydrostatic .FALSE. 
    105     setvar omega 0. llm 10 disvert ncar ncar_T0 300 ncar_p0 1e5 ncar_disvert_c 1 ncar_dz 1118  
     107    setvar omega 0. llm 10 disvert ncar ncar_T0 300 ncar_p0 1e5 ncar_disvert_c 1 ncar_dz 1118 
    106108    setvar tau_graddiv $TAU tau_gradrot $TAU tau_divgrad $TAU  
    107109    setvar scale_factor 125 write_period 7500 run_length 4.5e5 etat0 dcmip3 
     
    139141} 
    140142 
    141 #----------------------------- END ---------------------------- 
     143#------------------------------------- OTHER --------------------------------- 
     144 
     145function rundef_bubble() { # NBP TAU 
     146    NBP=$1 ; TAU=$2 
     147    rundef_all 
     148    set_nbp_$NBP 
     149    setvar llm 50 disvert ncar ncar_dz 20 ncar_T0 300 ncar_p0 1e5 
     150#    setvar time_scheme ARK2.3 
     151    setvar nitergdiv 2 nitergrot 2 niterdivgrad 2 tau_graddiv $TAU tau_gradrot $TAU tau_divgrad $TAU 
     152    setvar radius 5e6 scale_factor 10000  g 9.80616 kappa 0.2857143 cpp 1004.5 preff 1e5 omega 0. 
     153} 
     154function job_bubble() { # EXEC NBP 
     155    job_$1_$2 Bubble_$1 
     156} 
     157 
     158function rundef_held_suarez() { # NBP TAU 
     159    NBP=$1 ; TAU=$2 
     160    rundef_DCMIP $NBP 
     161    setvar llm 19 disvert std write_period 86400 run_length 2592000 etat0 held_suarez # physics held_suarez 
     162    setvar time_scheme RK2.5 
     163    setvar nitergdiv 2 nitergrot 2 niterdivgrad 2 tau_graddiv $TAU tau_gradrot $TAU tau_divgrad $TAU 
     164} 
     165function job_held_suarez() { # EXEC NBP 
     166    job_$1_$2 HS94_$1 
     167} 
     168 
     169 
     170#-------------------------------- END TEST CASES ----------------------------- 
    142171 
    143172function basic() 
     
    154183    create_exp mpi DCMIP41 two_degree 24h 40 10000 # nbp tau  
    155184#    create_exp mpi DCMIP51 one_degree 2h  80 10000 # nbp tau  
     185# Other 
     186    create_exp mpi_omp held_suarez two_degree 24h 40 10000 # nbp tau  
    156187} 
    157188 
     
    162193    order 100 radius omega g cpp kappa preff scale_factor 
    163194    order 200 boussinesq hydrostatic 
    164     order 300 nbp optim_it nsplit_i nsplit_j llm disvert ncar_disvert_c ncar_dz ncar_T0 ncar_p0 
     195    order 300 nbp optim_it nsplit_i nsplit_j llm omp_level_size disvert ncar_disvert_c ncar_dz ncar_T0 ncar_p0 
    165196    order 400 caldyn_eta time_scheme caldyn_conserv dt nqtot itau_adv 
    166197    order 500 nitergdiv tau_graddiv nitergrot tau_gradrot niterdivgrad tau_divgrad rayleigh_friction_type rayleigh_friction_tau 
  • configs/testing/bash/post.sh

    • Property svn:executable set to *
  • configs/testing/python/common.py

    r504 r520  
    1919    plt.yticks(np.arange(-90,91,30)) 
    2020 
     21def slice_lon(nlon,llm,lon,Phi): 
     22    lon2, z = np.zeros((llm,nlon)), np.zeros((llm,nlon)) 
     23    for lev in range(llm): 
     24        # average from interfaces to full levels 
     25        z[lev,:] = (.5/g)*(Phi[lev,:]+Phi[lev+1,:])  
     26        lon2[lev,:] = lon[:] 
     27    return lon2, z 
     28 
     29#--------------------------- DCMIP21 --------------------------- 
     30 
     31def post_DCMIP21(): 
     32    def plot_var(nlon,nlat,llm, lon,Phi,var,varname): 
     33        # vertical slice at final time 
     34        print 'Reading data ...' 
     35        var, Phi = var[-1,:,nlat/2,:], Phi[-1,:,nlat/2,:] 
     36        print '... done.' 
     37        lon2, z = slice_lon(nlon,llm,lon,Phi) 
     38        plt.figure(figsize=(12,6)) 
     39        plt.contourf(lon2,z,var) 
     40        plt.colorbar()  
     41        plt.title('%s at final time'%varname) 
     42        axis_longitude() 
     43        plt.ylabel('z (m)') 
     44        #        plt.yticks(np.arange(0, 10001, 1000)) 
     45        plt.savefig('%s.png'%varname) 
     46    lon, lat, Omega,T,u,Phi = getvars(nc, 'lon','lat','OMEGA', 'T', 'U', 'PHI') 
     47    plot_var(nlon,nlat,llm, lon,Phi,Omega,'Omega') 
     48    plot_var(nlon,nlat,llm, lon,Phi,u,'u') 
     49    plot_var(nlon,nlat,llm, lon,Phi,T,'T') 
     50 
     51#--------------------------- DCMIP31 --------------------------- 
     52 
     53def post_DCMIP31(): 
     54     
     55    def plot_T850(lon,lat,T850):  # T850 at final time 
     56        print 'Reading data ...' 
     57        lon, lat, T850 = lon[:], lat[:], T850[-1, :, :] 
     58        print '... done.' 
     59        plt.figure(figsize=(12,6)) 
     60        plt.contourf(lon,lat,T850) 
     61        plt.colorbar()  
     62        plt.title('T850') 
     63        axis_longitude() 
     64        axis_latitude() 
     65        plt.savefig('T850.png') 
     66         
     67    def plot_dT(nlon,nlat,llm, lon,T,p,Phi): # perturbation temp, final time 
     68        # vertical slice at final time 
     69        print 'Reading data ...' 
     70        T,p, Phi = T[-1,:,nlat/2,:], p[-1,:,nlat/2,:], Phi[-1,:,nlat/2,:] 
     71        print '... done.' 
     72        N, Teq, peq = 0.01, 300., 1e5 
     73        N2, g2 = N*N, g*g 
     74        G = g2/(N2*Cpd) 
     75 
     76        lon2, z = slice_lon(nlon,llm,lon,Phi) 
     77        theta = T*((peq/p)**kappa) 
     78        Thetab = Teq*np.exp(N2*z/g) 
     79        plt.figure(figsize=(12,6)) 
     80        plt.contourf(lon2,z,theta-Thetab, levels=np.arange(-0.12,0.12,0.02) ) 
     81        plt.colorbar()  
     82        plt.title('$\\Theta\'$') 
     83        axis_longitude() 
     84        plt.ylabel('z (m)') 
     85        plt.yticks(np.arange(0, 10001, 1000)) 
     86        plt.savefig('dT.png') 
     87 
     88    lon, lat, T850, T, Phi, p = getvars(nc, 'lon','lat','T850', 'T', 'PHI','P') 
     89    plot_dT(nlon,nlat,llm, lon,T,p,Phi) 
     90    plot_T850(lon,lat,T850) 
     91 
     92#--------------------------- DCMIP41 --------------------------- 
     93 
     94def post_DCMIP41(): 
     95    def plot_T850(day, lon,lat,T850):  # T850 at final time 
     96        print 'Reading data ...' 
     97        lon, lat, T850 = lon[:], lat[:], T850[day-1, :, :] 
     98        print '... done.' 
     99        plt.figure(figsize=(12,5)) 
     100        plt.contourf(lon,lat,T850) 
     101        plt.colorbar()  
     102        plt.title('T850 at day %d'%day) 
     103        axis_longitude() 
     104        axis_latitude() 
     105        plt.savefig('T850_day%02d.png'%day) 
     106 
     107    lon, lat, T850, T, Phi = getvars(nc, 'lon','lat','T850', 'T', 'PHI')     
     108    plot_T850(7,lon,lat,T850) 
     109    plot_T850(10,lon,lat,T850) 
     110    plot_T850(30,lon,lat,T850) 
     111 
     112#------------------------ Held & Suarez ---------------------- 
     113 
     114post_held_suarez = post_DCMIP41 
     115     
     116#--------------------------- MAIN ---------------------------- 
     117 
     118gridfile = 'netcdf/output_dcmip2016_regular.nc' 
     119nc = cdf.Dataset(gridfile, "r") 
     120llm, nlon, nlat, ntime = getdims(nc, 'lev','lon','lat','time_counter') 
     121Cpd, kappa, g = 1004.5, 0.2857143, 9.80616 
     122 
     123# Now call a routine post_XXX() 
Note: See TracChangeset for help on using the changeset viewer.