- Timestamp:
- 01/15/17 01:03:04 (7 years ago)
- Location:
- configs/testing
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
configs/testing/bash/X64_CURIE.sh
r510 r520 5 5 # create_runs.sh and submit.sh 6 6 7 # NB : we must the queue 'normal' because there seems to be a limit7 # NB : we must use the queue 'normal' because there seems to be a limit 8 8 # on the number of jobs that can be submitted to queue 'test' 9 9 … … 18 18 function split_mpi_80() { 19 19 setvar nbp 81 nsplit_i 4 nsplit_j 2 20 } 21 function split_mpi_omp_40() { 22 setvar nbp 41 nsplit_i 2 nsplit_j 2 omp_level_size 4 20 23 } 21 24 … … 33 36 #------------------------------ job_XXX ----------------------------- 34 37 38 # Serial jobs 35 39 function job_serial() { # EXP_NAME 36 job_X64_CURIE $1 1 ""40 job_X64_CURIE $1 1 1 "./gcm.exe" 37 41 } 38 42 function job_serial_40() { # EXP_NAME … … 40 44 } 41 45 46 # MPI jobs 42 47 function job_mpi() { #EXP_NAME NB_MPI 43 job_X64_CURIE $1 $2 ccc_mprun48 job_X64_CURIE $1 $2 1 "ccc_mprun ./gcm.exe" 44 49 } 45 50 function job_mpi_40() { # EXP_NAME … … 50 55 } 51 56 52 function job_X64_CURIE() { # EXP_NAME MPI_TASKS MPIRUN 57 # MPI-OMP jobs 58 function job_mpi_omp() { #EXP_NAME NB_MPI NB_OMP 59 job_X64_CURIE $1 $2 $3 "ccc_mprun ./gcm.exe" 60 } 61 function job_mpi_omp_40() { # EXP_NAME 62 job_mpi_omp $1 40 4 63 } 64 65 # Generic 66 function job_X64_CURIE() { # EXP_NAME MPI_TASKS OMP_TASKS MPIRUN 53 67 cat <<EOF 54 68 #!/bin/bash … … 60 74 ## Number of tasks (=MPI processes) to use 61 75 #MSUB -n $2 76 ## Number of OpenMP threads 77 #MSUB -c $3 62 78 ## Elapsed time limit in seconds 63 79 #MSUB -T 600 … … 65 81 #MSUB -Q normal 66 82 67 export OMP_NUM_THREADS= 183 export OMP_NUM_THREADS=$3 68 84 cd \${BRIDGE_MSUB_PWD} 69 85 … … 73 89 date > gcm.log 74 90 ulimit -s unlimited 75 $ 3./gcm.exe >> gcm.log91 $4 ./gcm.exe >> gcm.log 76 92 date >> gcm.log 77 93 -
configs/testing/bash/create_runs.sh
r512 r520 12 12 cd $EXPDIR 13 13 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 15 17 rundef_$EXP $* > tmp.def 16 18 sort tmp.def | cut -c 7- > run.def … … 103 105 rundef_DCMIP $NBP 104 106 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 106 108 setvar tau_graddiv $TAU tau_gradrot $TAU tau_divgrad $TAU 107 109 setvar scale_factor 125 write_period 7500 run_length 4.5e5 etat0 dcmip3 … … 139 141 } 140 142 141 #----------------------------- END ---------------------------- 143 #------------------------------------- OTHER --------------------------------- 144 145 function 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 } 154 function job_bubble() { # EXEC NBP 155 job_$1_$2 Bubble_$1 156 } 157 158 function 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 } 165 function job_held_suarez() { # EXEC NBP 166 job_$1_$2 HS94_$1 167 } 168 169 170 #-------------------------------- END TEST CASES ----------------------------- 142 171 143 172 function basic() … … 154 183 create_exp mpi DCMIP41 two_degree 24h 40 10000 # nbp tau 155 184 # 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 156 187 } 157 188 … … 162 193 order 100 radius omega g cpp kappa preff scale_factor 163 194 order 200 boussinesq hydrostatic 164 order 300 nbp optim_it nsplit_i nsplit_j llm disvert ncar_disvert_c ncar_dz ncar_T0 ncar_p0195 order 300 nbp optim_it nsplit_i nsplit_j llm omp_level_size disvert ncar_disvert_c ncar_dz ncar_T0 ncar_p0 165 196 order 400 caldyn_eta time_scheme caldyn_conserv dt nqtot itau_adv 166 197 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 19 19 plt.yticks(np.arange(-90,91,30)) 20 20 21 def 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 31 def 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 53 def 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 94 def 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 114 post_held_suarez = post_DCMIP41 115 116 #--------------------------- MAIN ---------------------------- 117 118 gridfile = 'netcdf/output_dcmip2016_regular.nc' 119 nc = cdf.Dataset(gridfile, "r") 120 llm, nlon, nlat, ntime = getdims(nc, 'lev','lon','lat','time_counter') 121 Cpd, 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.