diff --git a/run/jobscripts/compilejob.ksh b/run/jobscripts/compilejob.ksh deleted file mode 100644 index 027c087e944751812bb448e6f6dc99f73ea5640d..0000000000000000000000000000000000000000 --- a/run/jobscripts/compilejob.ksh +++ /dev/null @@ -1,78 +0,0 @@ -#!/bin/ksh - -# ON ECGB: -# start with ecaccess-job-submit -queueName ecgb NAME_OF_THIS_FILE on gateway server -# start with sbatch NAME_OF_THIS_FILE directly on machine - -#SBATCH --workdir=/scratch/ms/at/km4a -#SBATCH --qos=normal -#SBATCH --job-name=flex_ecmwf -#SBATCH --output=flex_ecmwf.%j.out -#SBATCH --error=flex_ecmwf.%j.out -#SBATCH --mail-type=FAIL -#SBATCH --time=12:00:00 - -## CRAY specific batch requests -##PBS -N flex_ecmwf -##PBS -q ns -##PBS -S /usr/bin/ksh -# -o /scratch/ms/no/sbc/flex_ecmwf.$Jobname.$Job_ID.out -# job output is in .ecaccess_DO_NOT_REMOVE -##PBS -j oe -##PBS -V -##PBS -l EC_threads_per_task=1 -##PBS -l EC_memory_per_task=3200MB - -set -x -export VERSION=7.1 -case $HOST in - *ecg*) - module load python - module unload grib_api - module unload emos - module load grib_api/1.14.5 - module load emos/437-r64 -export FLEXPART_ROOT_SCRIPTS=${HOME} -export MAKEFILE=Makefile.gfortran - ;; - *cca*) - module switch PrgEnv-cray PrgEnv-intel - module load grib_api - module load emos - module load python - echo ${GROUP} - echo ${HOME} - echo $HOME | awk -F / '{print $1, $2, $3, $4}' - export GROUP=`echo $HOME | awk -F / '{print $4}'` - export SCRATCH=/scratch/ms/${GROUP}/${USER} -export FLEXPART_ROOT_SCRIPTS=${HOME} -export MAKEFILE=Makefile.gfortran - ;; -esac - -mkdir -p $FLEXPART_ROOT_SCRIPTS/flex_extract_v$VERSION -cd $FLEXPART_ROOT_SCRIPTS/flex_extract_v$VERSION # if FLEXPART_ROOT is not set this means cd to the home directory -tar -xvf $HOME/flex_extract_v$VERSION.tar -cd src -\rm *.o *.mod CONVERT2 -make -f $MAKEFILE >flexcompile 2>flexcompile - -ls -l CONVERT2 >>flexcompile -if [ $? -eq 0 ]; then - echo 'SUCCESS!' >>flexcompile - mail -s flexcompile.$HOST.$$ $USER <flexcompile -else - echo Environment: >>flexcompile - env >> flexcompile - mail -s "ERROR! flexcompile.$HOST.$$" $USER <flexcompile -fi - - - - - - - - - - diff --git a/source/python/_config.py b/source/python/_config.py index 3ce4c735631c38e0f089a3f1cc928c3d1e502db3..05f1eccb9dffd9fede145cf5428eaee7150b632a 100644 --- a/source/python/_config.py +++ b/source/python/_config.py @@ -37,10 +37,11 @@ TEMPFILE_USER_ENVVARS = 'ECMWF_ENV.template' FILE_USER_ENVVARS = 'ECMWF_ENV' TEMPFILE_INSTALL_COMPILEJOB = 'compilejob.template' FILE_INSTALL_COMPILEJOB = 'compilejob.ksh' -TEMPFILE_INSTALL_JOB = 'job.temp.o' +TEMPFILE_INSTALL_JOB = 'job.template' TEMPFILE_JOB = 'job.temp' FILE_JOB_OD = 'job.ksh' FILE_JOB_OP = 'jopoper.ksh' +TEMPFILE_NAMELIST = 'convert.nl' FILE_NAMELIST = 'fort.4' FILE_GRIB_INDEX = 'date_time_stepRange.idx' FILE_GRIBTABLE = 'ecmwf_grib1_table_128' diff --git a/source/python/classes/EcFlexpart.py b/source/python/classes/EcFlexpart.py index eece37d8b9d351fb191429159375c1423082e9b5..b90c8ecfe033c4b34d450f23e3f7ee82ea86859d 100644 --- a/source/python/classes/EcFlexpart.py +++ b/source/python/classes/EcFlexpart.py @@ -657,7 +657,7 @@ class EcFlexpart(object): return - def write_namelist(self, c, filename): + def write_namelist(self, c): ''' @Description: Creates a namelist file in the temporary directory and writes @@ -682,6 +682,13 @@ class EcFlexpart(object): <nothing> ''' + from genshi.template.text import NewTextTemplate + from genshi.template import TemplateLoader + + loader = TemplateLoader(_config.PATH_TEMPLATES, auto_reload=False) + compile_template = loader.load(_config.TEMPFILE_NAMELIST, + cls=NewTextTemplate) + self.inputdir = c.inputdir area = np.asarray(self.area.split('/')).astype(float) grid = np.asarray(self.grid.split('/')).astype(float) @@ -691,27 +698,30 @@ class EcFlexpart(object): maxl = int((area[3] - area[1]) / grid[1]) + 1 maxb = int((area[0] - area[2]) / grid[0]) + 1 - with open(self.inputdir + '/' + filename, 'w') as f: - f.write('&NAMGEN\n') - f.write(',\n '.join(['maxl = ' + str(maxl), 'maxb = ' + str(maxb), - 'mlevel = ' + str(self.level), - 'mlevelist = ' + '"' + str(self.levelist) - + '"', - 'mnauf = ' + str(self.resol), - 'metapar = ' + '77', - 'rlo0 = ' + str(area[1]), - 'rlo1 = ' + str(area[3]), - 'rla0 = ' + str(area[2]), - 'rla1 = ' + str(area[0]), - 'momega = ' + str(c.omega), - 'momegadiff = ' + str(c.omegadiff), - 'mgauss = ' + str(c.gauss), - 'msmooth = ' + str(c.smooth), - 'meta = ' + str(c.eta), - 'metadiff = ' + str(c.etadiff), - 'mdpdeta = ' + str(c.dpdeta)])) - - f.write('\n/\n') + stream = compile_template.generate( + maxl = str(maxl), + maxb = str(maxb), + mlevel = str(self.level), + mlevelist = str(self.levelist), + mnauf = str(self.resol), + metapar = '77', + rlo0 = str(area[1]), + rlo1 = str(area[3]), + rla0 = str(area[2]), + rla1 = str(area[0]), + momega = str(c.omega), + momegadiff = str(c.omegadiff), + mgauss = str(c.gauss), + msmooth = str(c.smooth), + meta = str(c.eta), + metadiff = str(c.etadiff), + mdpdeta = str(c.dpdeta) + ) + + namelistfile = os.path.join(self.inputdir, _config.FILE_NAMELIST) + + with open(namelistfile, 'w') as f: + f.write(stream.render('text')) return diff --git a/source/python/install.py b/source/python/install.py index b624592438cb3fdddb3ea8c6e0a105cdc7299ecf..cbef5713bf303f85dd937957ed906c4b30400651 100755 --- a/source/python/install.py +++ b/source/python/install.py @@ -395,8 +395,8 @@ def mk_compilejob(makefile, target, ecuid, ecgid, fp_root): fp_root = '$HOME' stream = compile_template.generate( - username = ecuid, usergroup = ecgid, + username = ecuid, version_number = _config._VERSION_STR, fp_root_scripts = fp_root, makefile = makefile, @@ -409,36 +409,6 @@ def mk_compilejob(makefile, target, ecuid, ecgid, fp_root): with open(compilejob, 'w') as f: f.write(stream.render('text')) - - # template = os.path.join(_config.PATH_REL_TEMPLATES, - # _config.TEMPFILE_INSTALL_COMPILEJOB) - # with open(template) as f: - # fdata = f.read().split('\n') - - - # with open(compilejob, 'w') as fo: - # for data in fdata: - # if 'MAKEFILE=' in data: - # data = 'export MAKEFILE=' + makefile - # elif 'FLEXPART_ROOT_SCRIPTS=' in data: - # if fp_root != '../': - # data = 'export FLEXPART_ROOT_SCRIPTS=' + fp_root - # else: - # data = 'export FLEXPART_ROOT_SCRIPTS=$HOME' - # elif target.lower() != 'local': - # if '--workdir' in data: - # data = '#SBATCH --workdir=/scratch/ms/' + \ - # ecgid + '/' + ecuid - # elif '##PBS -o' in data: - # data = '##PBS -o /scratch/ms/' + ecgid + '/' + ecuid + \ - # 'flex_ecmwf.$Jobname.$Job_ID.out' - # elif 'FLEXPART_ROOT_SCRIPTS=' in data: - # if fp_root != '../': - # data = 'export FLEXPART_ROOT_SCRIPTS=' + fp_root - # else: - # data = 'export FLEXPART_ROOT_SCRIPTS=$HOME' - # fo.write(data + '\n') - return def mk_job_template(ecuid, ecgid, gateway, destination, fp_root): @@ -469,27 +439,30 @@ def mk_job_template(ecuid, ecgid, gateway, destination, fp_root): @Return: <nothing> ''' - fp_root_path_to_python = os.path.join(fp_root, _config.FLEXEXTRACT_DIRNAME, - _config.PATH_REL_PYTHON) - - template = os.path.join(_config.PATH_REL_TEMPLATES, - _config.TEMPFILE_INSTALL_JOB) - with open(template) as f: - fdata = f.read().split('\n') - - jobfile_temp = os.path.join(_config.PATH_REL_TEMPLATES, - _config.TEMPFILE_JOB) - with open(jobfile_temp, 'w') as fo: - for data in fdata: - if '--workdir' in data: - data = '#SBATCH --workdir=/scratch/ms/' + ecgid + '/' + ecuid - elif '##PBS -o' in data: - data = '##PBS -o /scratch/ms/' + ecgid + '/' + \ - ecuid + 'flex_ecmwf.$Jobname.$Job_ID.out' - elif 'export PATH=${PATH}:' in data: - data += fp_root_path_to_python - - fo.write(data + '\n') + from genshi.template.text import NewTextTemplate + from genshi.template import TemplateLoader + + loader = TemplateLoader(_config.PATH_TEMPLATES, auto_reload=False) + compile_template = loader.load(_config.TEMPFILE_INSTALL_JOB, + cls=NewTextTemplate) + + fp_root_path_to_python = os.path.join(fp_root, + _config.FLEXEXTRACT_DIRNAME, + _config.PATH_REL_PYTHON) + + stream = compile_template.generate( + usergroup = ecgid, + username = ecuid, + version_number = _config._VERSION_STR, + fp_root_path = fp_root_path_to_python, + ) + + tempjobfile = os.path.join(_config.PATH_TEMPLATES, + _config.TEMPFILE_JOB) + + with open(tempjobfile, 'w') as f: + f.write(stream.render('text')) + return def delete_convert_build(src_path): diff --git a/source/python/mods/prepare_flexpart.py b/source/python/mods/prepare_flexpart.py index a3ca22b042321c85c54eb36eaa8ec44d5b0bd654..c45c32fcbddd9aaacc692c186417008917ba0028 100755 --- a/source/python/mods/prepare_flexpart.py +++ b/source/python/mods/prepare_flexpart.py @@ -159,7 +159,7 @@ def prepare_flexpart(ppid, c): # deaccumulate the flux data flexpart = EcFlexpart(c, fluxes=True) - flexpart.write_namelist(c, _config.FILE_NAMELIST) + flexpart.write_namelist(c) flexpart.deacc_fluxes(inputfiles, c) # get a list of all files from the root inputdir diff --git a/source/pythontest/TestData/CONTROL.temp b/source/pythontest/TestData/CONTROL.temp index c3d097411cfc71a179dc87df88c0407b6f026d7c..d5f4137f69a9180c44ce9dda8cbd7fd1298b2bcd 100644 --- a/source/pythontest/TestData/CONTROL.temp +++ b/source/pythontest/TestData/CONTROL.temp @@ -8,7 +8,7 @@ CLASS EI STREAM OPER NUMBER OFF EXPVER 1 -GRID 5000 +GRID 1000 LEFT -15000 LOWER 30000 UPPER 75000 diff --git a/source/pythontest/TestData/compilejob.test b/source/pythontest/TestData/compilejob.test index 8ae61bff4614182a0efa8c4a8b173f4b96b7e6a6..9f9a5a1408656336350903200abeae414d2cbc34 100644 --- a/source/pythontest/TestData/compilejob.test +++ b/source/pythontest/TestData/compilejob.test @@ -16,7 +16,7 @@ ##PBS -N flex_ecmwf ##PBS -q ns ##PBS -S /usr/bin/ksh -##PBS -o /scratch/ms/testgroup/testuser/flex_ecmwf.$Jobname.$Job_ID.out +##PBS -o /scratch/ms/testgroup/testuser/flex_ecmwf.${Jobname}.${Job_ID}.out # job output is in .ecaccess_DO_NOT_REMOVE ##PBS -j oe ##PBS -V @@ -25,7 +25,7 @@ set -x export VERSION=7.1 -case $HOST in +case ${HOST} in *ecg*) module load python module unload grib_api @@ -42,27 +42,27 @@ case $HOST in module load python echo ${GROUP} echo ${HOME} - echo $HOME | awk -F / '{print $1, $2, $3, $4}' - export GROUP=`echo $HOME | awk -F / '{print $4}'` + echo ${HOME} | awk -F / '{print $1, $2, $3, $4}' + export GROUP=`echo ${HOME} | awk -F / '{print $4}'` export SCRATCH=/scratch/ms/${GROUP}/${USER} - export FLEXPART_ROOT_SCRIPTS=p_root_test_path + export FLEXPART_ROOT_SCRIPTS=fp_root_test_path export MAKEFILE=Makefile.TEST ;; esac -mkdir -p $FLEXPART_ROOT_SCRIPTS/flex_extract_v$VERSION -cd $FLEXPART_ROOT_SCRIPTS/flex_extract_v$VERSION # if FLEXPART_ROOT is not set this means cd to the home directory -tar -xvf $HOME/flex_extract_v$VERSION.tar +mkdir -p ${FLEXPART_ROOT_SCRIPTS}/flex_extract_v${VERSION} +cd ${FLEXPART_ROOT_SCRIPTS}/flex_extract_v${VERSION} # if FLEXPART_ROOT is not set this means cd to the home directory +tar -xvf ${HOME}/flex_extract_v${VERSION}.tar cd src \rm *.o *.mod CONVERT2 -make -f $MAKEFILE >flexcompile 2>flexcompile +make -f ${MAKEFILE} >flexcompile 2>flexcompile ls -l CONVERT2 >>flexcompile if [ $? -eq 0 ]; then echo 'SUCCESS!' >>flexcompile - mail -s flexcompile.$HOST.$$ $USER <flexcompile + mail -s flexcompile.${HOST}.$$ ${USER} <flexcompile else echo Environment: >>flexcompile env >> flexcompile - mail -s "ERROR! flexcompile.$HOST.$$" $USER <flexcompile -fi \ No newline at end of file + mail -s "ERROR! flexcompile.${HOST}.$$" ${USER} <flexcompile +fi diff --git a/source/pythontest/TestData/convert.nl.test b/source/pythontest/TestData/convert.nl.test new file mode 100644 index 0000000000000000000000000000000000000000..6134989413cdb76683d7f2c06c99dfd14b6fa56c --- /dev/null +++ b/source/pythontest/TestData/convert.nl.test @@ -0,0 +1,19 @@ +&NAMGEN + maxl = 61, + maxb = 46, + mlevel = 60, + mlevelist = "55/to/60", + mnauf = 63, + metapar = 77, + rlo0 = -15.0, + rlo1 = 45.0, + rla0 = 30.0, + rla1 = 75.0, + momega = 0, + momegadiff = 0, + mgauss = 1, + msmooth = 0, + meta = 0, + metadiff = 0, + mdpdeta = 1 +/ diff --git a/templates/job.temp b/source/pythontest/TestData/job.temp.test similarity index 57% rename from templates/job.temp rename to source/pythontest/TestData/job.temp.test index 43becc4fd06f4aa513688b7a579e56daff3c276c..4103775ffeeacb62a2487c86b1b44c09919ee3a2 100644 --- a/templates/job.temp +++ b/source/pythontest/TestData/job.temp.test @@ -4,7 +4,7 @@ # start with ecaccess-job-submit -queueName ecgb NAME_OF_THIS_FILE on gateway server # start with sbatch NAME_OF_THIS_FILE directly on machine -#SBATCH --workdir=/scratch/ms/at/km4a +#SBATCH --workdir=/scratch/ms/testgroup/testuser #SBATCH --qos=normal #SBATCH --job-name=flex_ecmwf #SBATCH --output=flex_ecmwf.%j.out @@ -16,7 +16,7 @@ ##PBS -N flex_ecmwf ##PBS -q np ##PBS -S /usr/bin/ksh -## -o /scratch/ms/spatlh00/lh0/flex_ecmwf.$PBS_JOBID.out +## -o /scratch/ms/testgroup/testuser/flex_ecmwf.${PBS_JOBID}.out ## job output is in .ecaccess_DO_NOT_REMOVE ##PBS -j oe ##PBS -V @@ -25,52 +25,52 @@ set -x export VERSION=7.1 -case $HOST in +case ${HOST} in *ecg*) module load python module unload grib_api module unload emos module load grib_api/1.14.5 module load emos/437-r64 - export PATH=${PATH}:${HOME}/flex_extract_v7.1/source/python + export PATH=${PATH}:fp_root_test_path/flex_extract_v7.1/source/python ;; *cca*) module switch PrgEnv-cray PrgEnv-intel module load grib_api module load emos module load python - export SCRATCH=$TMPDIR - export PATH=${PATH}:${HOME}/flex_extract_v7.1/source/python + export SCRATCH=${TMPDIR} + export PATH=${PATH}:fp_root_test_path/flex_extract_v7.1/source/python ;; esac -cd $SCRATCH +cd ${SCRATCH} mkdir -p python$$ cd python$$ export CONTROL=CONTROL -cat >$CONTROL<<EOF +cat >${CONTROL}<<EOF EOF -submit.py --controlfile=$CONTROL --inputdir=./work --outputdir=./work 1> prot 2>&1 +submit.py --controlfile=${CONTROL} --inputdir=./work --outputdir=./work 1> prot 2>&1 if [ $? -eq 0 ] ; then l=0 - for muser in `grep -i MAILOPS $CONTROL`; do - if [ $l -gt 0 ] ; then - mail -s flex.${HOST}.$$ $muser <prot + for muser in `grep -i MAILOPS ${CONTROL}`; do + if [ ${l} -gt 0 ] ; then + mail -s flex.${HOST}.$$ ${muser} <prot fi - l=$(($l+1)) + l=$((${l}+1)) done else l=0 - for muser in `grep -i MAILFAIL $CONTROL`; do - if [ $l -gt 0 ] ; then - mail -s "ERROR! flex.${HOST}.$$" $muser <prot + for muser in `grep -i MAILFAIL ${CONTROL}`; do + if [ ${l} -gt 0 ] ; then + mail -s "ERROR! flex.${HOST}.$$" ${muser} <prot fi - l=$(($l+1)) + l=$((${l}+1)) done fi diff --git a/source/pythontest/TestEcFlexpart.py b/source/pythontest/TestEcFlexpart.py index e1b7a9c4b633272a0bef67f0047bcde7d8ae4281..49f5161fa598159d230bc9894f54f3387e97d1a6 100644 --- a/source/pythontest/TestEcFlexpart.py +++ b/source/pythontest/TestEcFlexpart.py @@ -3,23 +3,44 @@ import sys +import os +import inspect import pytest sys.path.append('../python') +import _config from classes.EcFlexpart import EcFlexpart +from classes.ControlFile import ControlFile +from mods.tools import silent_remove class TestEcFlexpart(): ''' ''' - def test_init(self): - # create an instance of EcFlexpart and get a dictionary of the - # class attributes, compare this dict with an expected dict! - assert True == True - def test_write_namelist(self): - # simple - assert True == True + import filecmp + + control_file = os.path.join(_config.PATH_TEST_DIR, + 'TestData', + 'CONTROL.temp') + c = ControlFile(control_file) + flexpart = EcFlexpart(c) + + c.inputdir = 'TestData' + + # comparison file + testfile = os.path.join(_config.PATH_TEST_DIR, + 'TestData', + 'convert.nl.test') + + # create + flexpart.write_namelist(c) + + finalfile = os.path.join(c.inputdir, _config.FILE_NAMELIST) + assert filecmp.cmp(testfile, finalfile, shallow=False) + + # delete test file + silent_remove(finalfile) def test_retrieve(self): # not sure how to check diff --git a/source/pythontest/TestInstall.py b/source/pythontest/TestInstall.py index ddb3b2d5ca270037689b68c89ff01dacf6f05067..c6995d25c6dc9c6b9f772dd6a9ad7fd7d5cb4bd7 100644 --- a/source/pythontest/TestInstall.py +++ b/source/pythontest/TestInstall.py @@ -24,8 +24,8 @@ class TestTools(): #! - mk_tarball #! - un_tarball #! - mk_env_vars - # - mk_compilejob - # - mk_job_template + #! - mk_compilejob + #! - mk_job_template # - delete_convert_build # - make_convert_build @@ -154,3 +154,25 @@ class TestTools(): # delete test file silent_remove(finalfile) + + def test_mk_job_template(self): + import filecmp + + # comparison file + testfile = os.path.join(_config.PATH_TEST_DIR, + 'TestData', + 'job.temp.test') + + # create + install.mk_job_template('testuser', + 'testgroup', + 'gateway.test.ac.at', + 'dest@generic', + 'fp_root_test_path') + + finalfile = os.path.join(_config.PATH_TEMPLATES, + _config.TEMPFILE_JOB) + assert filecmp.cmp(testfile, finalfile, shallow=False) + + # delete test file + silent_remove(finalfile) \ No newline at end of file diff --git a/templates/compilejob.temp b/templates/compilejob.temp deleted file mode 100644 index 715308b3d361e2b0f5c088b344ecde539d74243e..0000000000000000000000000000000000000000 --- a/templates/compilejob.temp +++ /dev/null @@ -1,77 +0,0 @@ -#!/bin/ksh - -# ON ECGB: -# start with ecaccess-job-submit -queueName ecgb NAME_OF_THIS_FILE on gateway server -# start with sbatch NAME_OF_THIS_FILE directly on machine - -#SBATCH --workdir=/scratch/ms/spatlh00/lh0 -#SBATCH --qos=normal -#SBATCH --job-name=flex_ecmwf -#SBATCH --output=flex_ecmwf.%j.out -#SBATCH --error=flex_ecmwf.%j.out -#SBATCH --mail-type=FAIL -#SBATCH --time=12:00:00 - -## CRAY specific batch requests -##PBS -N flex_ecmwf -##PBS -q ns -##PBS -S /usr/bin/ksh -# -o /scratch/ms/no/sbc/flex_ecmwf.$Jobname.$Job_ID.out -# job output is in .ecaccess_DO_NOT_REMOVE -##PBS -j oe -##PBS -V -##PBS -l EC_threads_per_task=1 -##PBS -l EC_memory_per_task=3200MB - -set -x -export VERSION=7.1 -case $HOST in - *ecg*) - module load python - module unload grib_api - module unload emos - module load grib_api/1.14.5 - module load emos/437-r64 - export FLEXPART_ROOT_SCRIPTS= - export MAKEFILE=Makefile.gfortran - ;; - *cca*) - module switch PrgEnv-cray PrgEnv-intel - module load grib_api - module load emos - module load python - echo ${GROUP} - echo ${HOME} - echo $HOME | awk -F / '{print $1, $2, $3, $4}' - export GROUP=`echo $HOME | awk -F / '{print $4}'` - export SCRATCH=/scratch/ms/${GROUP}/${USER} - export FLEXPART_ROOT_SCRIPTS= - export MAKEFILE=Makefile.CRAY - ;; -esac - -mkdir -p $FLEXPART_ROOT_SCRIPTS/flex_extract_v$VERSION -cd $FLEXPART_ROOT_SCRIPTS/flex_extract_v$VERSION # if FLEXPART_ROOT is not set this means cd to the home directory -tar -xvf $HOME/flex_extract_v$VERSION.tar -cd src -\rm *.o *.mod CONVERT2 -make -f $MAKEFILE >flexcompile 2>flexcompile - -ls -l CONVERT2 >>flexcompile -if [ $? -eq 0 ]; then - echo 'SUCCESS!' >>flexcompile - mail -s flexcompile.$HOST.$$ $USER <flexcompile -else - echo Environment: >>flexcompile - env >> flexcompile - mail -s "ERROR! flexcompile.$HOST.$$" $USER <flexcompile -fi - - - - - - - - - diff --git a/templates/compilejob.template b/templates/compilejob.template index bb1348ec8b40310369402949a950c121f6c96063..e75a9aa380dff7be55467746baf3f4e7bab50195 100644 --- a/templates/compilejob.template +++ b/templates/compilejob.template @@ -16,7 +16,7 @@ ##PBS -N flex_ecmwf ##PBS -q ns ##PBS -S /usr/bin/ksh -##PBS -o /scratch/ms/$usergroup/$username/flex_ecmwf.$Jobname.$Job_ID.out +##PBS -o /scratch/ms/$usergroup/$username/flex_ecmwf.$${Jobname}.$${Job_ID}.out # job output is in .ecaccess_DO_NOT_REMOVE ##PBS -j oe ##PBS -V @@ -25,7 +25,7 @@ set -x export VERSION=$version_number -case $HOST in +case $${HOST} in *ecg*) module load python module unload grib_api @@ -40,29 +40,29 @@ case $HOST in module load grib_api module load emos module load python - echo ${GROUP} - echo ${HOME} - echo $HOME | awk -F / '{print $1, $2, $3, $4}' - export GROUP=`echo $HOME | awk -F / '{print $4}'` - export SCRATCH=/scratch/ms/${GROUP}/${USER} + echo $${GROUP} + echo $${HOME} + echo $${HOME} | awk -F / '{print $1, $2, $3, $4}' + export GROUP=`echo $${HOME} | awk -F / '{print $4}'` + export SCRATCH=/scratch/ms/$${GROUP}/$${USER} export FLEXPART_ROOT_SCRIPTS=$fp_root_scripts export MAKEFILE=$makefile ;; esac -mkdir -p $FLEXPART_ROOT_SCRIPTS/flex_extract_v$VERSION -cd $FLEXPART_ROOT_SCRIPTS/flex_extract_v$VERSION # if FLEXPART_ROOT is not set this means cd to the home directory -tar -xvf $HOME/flex_extract_v$VERSION.tar +mkdir -p $${FLEXPART_ROOT_SCRIPTS}/flex_extract_v$${VERSION} +cd $${FLEXPART_ROOT_SCRIPTS}/flex_extract_v$${VERSION} # if FLEXPART_ROOT is not set this means cd to the home directory +tar -xvf $${HOME}/flex_extract_v$${VERSION}.tar cd src \rm *.o *.mod $fortran_program -make -f $MAKEFILE >flexcompile 2>flexcompile +make -f $${MAKEFILE} >flexcompile 2>flexcompile ls -l $fortran_program >>flexcompile -if [ $? -eq 0 ]; then +if [ $$? -eq 0 ]; then echo 'SUCCESS!' >>flexcompile - mail -s flexcompile.$HOST.$$ $USER <flexcompile + mail -s flexcompile.$${HOST}.$$$$ $${USER} <flexcompile else echo Environment: >>flexcompile env >> flexcompile - mail -s "ERROR! flexcompile.$HOST.$$" $USER <flexcompile -fi \ No newline at end of file + mail -s "ERROR! flexcompile.$${HOST}.$$$$" $${USER} <flexcompile +fi diff --git a/templates/convert.nl b/templates/convert.nl new file mode 100644 index 0000000000000000000000000000000000000000..c0c8fa4812e066d3cb2ee0df616c927106afd64c --- /dev/null +++ b/templates/convert.nl @@ -0,0 +1,19 @@ +&NAMGEN + maxl = $maxl, + maxb = $maxb, + mlevel = $mlevel, + mlevelist = "$mlevelist", + mnauf = $mnauf, + metapar = $metapar, + rlo0 = $rlo0, + rlo1 = $rlo1, + rla0 = $rla0, + rla1 = $rla1, + momega = $momega, + momegadiff = $momegadiff, + mgauss = $mgauss, + msmooth = $msmooth, + meta = $meta, + metadiff = $metadiff, + mdpdeta = $mdpdeta +/ diff --git a/templates/job.temp.o b/templates/job.template similarity index 55% rename from templates/job.temp.o rename to templates/job.template index fbdbd81aa1ea7100a84ac0858ed29804526e98a5..16e016e0705553e86606c0957aee4effccbed20c 100644 --- a/templates/job.temp.o +++ b/templates/job.template @@ -4,7 +4,7 @@ # start with ecaccess-job-submit -queueName ecgb NAME_OF_THIS_FILE on gateway server # start with sbatch NAME_OF_THIS_FILE directly on machine -#SBATCH --workdir=/scratch/ms/spatlh00/lh0 +#SBATCH --workdir=/scratch/ms/$usergroup/$username #SBATCH --qos=normal #SBATCH --job-name=flex_ecmwf #SBATCH --output=flex_ecmwf.%j.out @@ -16,7 +16,7 @@ ##PBS -N flex_ecmwf ##PBS -q np ##PBS -S /usr/bin/ksh -## -o /scratch/ms/spatlh00/lh0/flex_ecmwf.$PBS_JOBID.out +## -o /scratch/ms/$usergroup/$username/flex_ecmwf.$${PBS_JOBID}.out ## job output is in .ecaccess_DO_NOT_REMOVE ##PBS -j oe ##PBS -V @@ -24,52 +24,53 @@ ##PBS -l EC_memory_per_task=32000MB set -x -export VERSION=7.1 -case $HOST in +export VERSION=$version_number +case $${HOST} in *ecg*) module load python module unload grib_api module unload emos module load grib_api/1.14.5 module load emos/437-r64 - export PATH=${PATH}: + export PATH=$${PATH}:$fp_root_path ;; *cca*) module switch PrgEnv-cray PrgEnv-intel module load grib_api module load emos module load python - export SCRATCH=$TMPDIR - export PATH=${PATH}: + export SCRATCH=$${TMPDIR} + export PATH=$${PATH}:$fp_root_path ;; esac -cd $SCRATCH -mkdir -p python$$ -cd python$$ +cd $${SCRATCH} +mkdir -p python$$$$ +cd python$$$$ export CONTROL=CONTROL -cat >$CONTROL<<EOF +cat >$${CONTROL}<<EOF EOF -submit.py --controlfile=$CONTROL --inputdir=./work --outputdir=./work 1> prot 2>&1 +submit.py --controlfile=$${CONTROL} --inputdir=./work --outputdir=./work 1> prot 2>&1 if [ $? -eq 0 ] ; then l=0 - for muser in `grep -i MAILOPS $CONTROL`; do - if [ $l -gt 0 ] ; then - mail -s flex.${HOST}.$$ $muser <prot + for muser in `grep -i MAILOPS $${CONTROL}`; do + if [ $${l} -gt 0 ] ; then + mail -s flex.$${HOST}.$$$$ $${muser} <prot fi - l=$(($l+1)) + l=$(($${l}+1)) done else l=0 - for muser in `grep -i MAILFAIL $CONTROL`; do - if [ $l -gt 0 ] ; then - mail -s "ERROR! flex.${HOST}.$$" $muser <prot + for muser in `grep -i MAILFAIL $${CONTROL}`; do + if [ $${l} -gt 0 ] ; then + mail -s "ERROR! flex.$${HOST}.$$$$" $${muser} <prot fi - l=$(($l+1)) + l=$(($${l}+1)) done fi +